\engines{comparison}
LuaLaTeX frente a pdfLaTeX
Ambos motores producen PDF de alta calidad, pero LuaLaTeX añade un entorno de ejecución completo de scripting con Lua y una carga moderna de fuentes, a costa de la velocidad. Esta guía cubre todas las diferencias relevantes para que pueda elegir el motor adecuado para cada documento.
- La velocidad importa: el motor más rápido disponible
- Se requiere la máxima compatibilidad de paquetes
- Documentos de texto latino estándar
- Se necesita el kerning y la protrusión de Microtype
- Scripting con Lua para la generación de contenido dinámico
- Carga moderna de fuentes con fontspec
- Texto Unicode más allá del latino básico
- Composición algorítmica compleja
\section{Diferencias técnicas}
Diferencias técnicas
Entender la arquitectura subyacente le ayuda a predecir el comportamiento cuando los paquetes interactúan, se cargan fuentes o se ejecutan scripts.
Capacidad de scripting con Lua
LuaLaTeX incorpora un intérprete completo de Lua 5.3. Puede escribir código procedural, recorrer datos, llamar a tex.print() y manipular el motor de composición mediante programación. pdfLaTeX no tiene una capa de scripting equivalente.
Carga de fuentes
LuaLaTeX usa fontspec para cargar cualquier fuente OpenType o del sistema por su nombre, sin configuración manual de .tfm. pdfLaTeX depende del sistema de fuentes de TeX y requiere inputenc + fontenc para una codificación correcta.
Compatibilidad con Unicode
LuaLaTeX lee UTF-8 de forma nativa a nivel del motor. pdfLaTeX aproxima Unicode mediante el paquete inputenc, que cubre la mayoría de las escrituras latinas pero requiere soluciones alternativas para CJK, árabe o símbolos matemáticos avanzados.
Velocidad de compilación
pdfLaTeX es el motor LaTeX más rápido: normalmente de 0.6 a 1 segundo para un documento sencillo. LuaLaTeX inicializa la máquina virtual de Lua y un sistema de fuentes más grande, lo que lo hace de 2 a 3 veces más lento en promedio. Para pipelines de CI o vistas previas en vivo, esta diferencia es significativa.
\section{Comparación de características}
Comparación de características
| Característica | pdfLaTeX | LuaLaTeX |
|---|---|---|
| Entrada Unicode | Mediante inputenc | Nativa |
| Fuentes del sistema | No | Sí (fontspec) |
| Scripting con Lua | No | Sí (luacode) |
| Velocidad de compilación | Rápido (~0.8s) | Más lento (~2–3×) |
| Compat. de paquetes | Excelente | Buena |
| Microtype | Soporte completo | Parcial |
| Lenguajes de derecha a izquierda | Limitado | Sí (luabidi) |
| Uso de memoria | Bajo | Mayor (máquina virtual de Lua) |
\section{Ejemplos de código}
Ejemplos de código
Documentos mínimos lado a lado para cada motor.
% pdfLaTeX — fast, maximum compatibility
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{microtype}
\begin{document}
Standard pdfLaTeX document. Fast compilation, excellent package support.
$f(x) = \int_0^x t^2\, dt = \frac{x^3}{3}$
\end{document}% LuaLaTeX — Lua scripting, modern fonts
\documentclass{article}
\usepackage{fontspec}
\usepackage{luacode}
% Lua scripting inside LaTeX
\begin{luacode}
local n = 10
local sum = 0
for i = 1, n do sum = sum + i end
tex.print("Sum 1.." .. n .. " = " .. sum)
\end{luacode}
\begin{document}
LuaLaTeX natively handles Unicode and supports Lua scripts.
\end{document}\section{Cuándo usar LuaLaTeX}
Cuándo usar LuaLaTeX
LuaLaTeX es la opción adecuada en estos escenarios concretos.
Generación de contenido dinámico
Use bucles y condicionales de Lua para generar mediante programación filas de tablas repetitivas, listas de capítulos o salida estructurada dentro de LaTeX.
Renderizado de fuentes personalizadas
Cargue cualquier fuente OpenType o del sistema por su nombre con fontspec: ideal para informes de marca, tipografía personalizada o escrituras no latinas.
Algoritmos complejos
Incruste código Lua de cálculo directamente en su documento: estadísticas, transformaciones o formateo de datos antes de la composición.
Envíos modernos a arXiv
Algunas plantillas de revistas más recientes y envíos a arXiv exigen o prefieren explícitamente LuaLaTeX por su manejo moderno de fuentes y Unicode.
\section{Guía de migración}
Migrar de pdfLaTeX a LuaLaTeX
La mayoría de los documentos de pdfLaTeX se compilan con LuaLaTeX con unos pocos cambios en el preámbulo.
| Acción | Paquete / comando |
|---|---|
| Eliminar | \usepackage[utf8]{inputenc} |
| Eliminar | \usepackage[T1]{fontenc} |
| Añadir | \usepackage{fontspec} |
| Opcional | \usepackage{luacode} |
| Considerar | \usepackage{polyglossia} |
\api{FormaTeX}
Uso de LuaLaTeX mediante la API
Pase "engine": "lualatex" en su solicitud de compilación para seleccionar LuaLaTeX.
curl -X POST https://api.formatex.io/api/v1/compile \
-H "X-API-Key: $FORMATEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"engine": "lualatex",
"latex": "\\documentclass{article}\\usepackage{fontspec}\\begin{document}Hello\\end{document}"
}' \
--output document.pdf
