\compare{xelatex-vs-lualatex}
XeLaTeX frente a LuaLaTeX
Ambos motores hablan Unicode de forma nativa y cargan fuentes del sistema mediante fontspec. La diferencia real es el motor de scripting Lua integrado en LuaLaTeX y su canal superior de conformado de texto. Esta guía cubre todas las distinciones relevantes.
- La velocidad de compilación es una prioridad
- Necesita fuentes del sistema con funciones OpenType
- Escrituras RTL (árabe, hebreo) con el paquete bidi
- No necesita scripting con Lua en tiempo de compilación
- Necesita scripting con Lua dentro de su documento
- Necesita conformado de texto avanzado (HarfBuzz)
- Generación de tablas dinámicas o contenido calculado
- Necesita las funciones de luacolor o luatextra
\section{Diferencias técnicas}
Qué difiere realmente por dentro
Motor de scripting Lua
XeLaTeX
XeLaTeX no tiene lenguaje de scripting integrado. La lógica del documento debe expresarse íntegramente con macros o paquetes de TeX. Es suficiente para casi todas las tareas de composición, pero limita la generación de contenido dinámico en tiempo de compilación.
LuaLaTeX
LuaLaTeX integra un intérprete completo de Lua 5.3 accesible desde el propio documento mediante luacode. Puede calcular valores, iterar sobre datos, llamar a bibliotecas externas de Lua e incorporar los resultados al flujo de composición de TeX en tiempo de compilación.
Conformado de texto y escrituras complejas
XeLaTeX
XeLaTeX usa las bibliotecas de conformado de texto ICU y SIL a través del motor XeTeX. Las escrituras complejas (árabe, devanagari, tailandés) se admiten mediante los paquetes bidi y polyglossia. En la práctica, esto cubre la mayoría de los requisitos de composición multilingüe.
LuaLaTeX
LuaLaTeX integra HarfBuzz (mediante LuaHarfBuzz), el mismo motor de conformado que usan los navegadores, Android y macOS. HarfBuzz ofrece una cobertura de escrituras más amplia y una aplicación más precisa de las funciones OpenType, lo que lo convierte en la mejor opción para documentos con requisitos de escrituras complejas o sustitución avanzada de glifos.
Velocidad de compilación
XeLaTeX es sistemáticamente más rápido que LuaLaTeX. La diferencia se debe a la sobrecarga de inicialización de la máquina virtual de Lua en LuaLaTeX y al canal de conformado de HarfBuzz. En documentos sencillos la diferencia es pequeña; en documentos grandes y con muchas fuentes, LuaLaTeX puede ser entre un 30 % y un 50 % más lento.
XeLaTeX
~1.5s
documento típico de una sola pasada
LuaLaTeX
~2.0s
documento típico de una sola pasada
Compatibilidad de paquetes
XeLaTeX
La mayoría de los paquetes de CTAN que funcionan con pdfLaTeX también funcionan con XeLaTeX, salvo los paquetes de bajo nivel específicos de pdfLaTeX. Los paquetes fontspec y unicode-math son ciudadanos de primera clase.
LuaLaTeX
LuaLaTeX ofrece la misma compatibilidad de paquetes que XeLaTeX, además de acceso al ecosistema de Lua. Paquetes como luacode, luacolor y luatextra son exclusivos de LuaLaTeX.
\subsection{Matriz de funciones}
Comparación lado a lado
\section{Recommendations}
¿Qué motor para qué tipo de documento?
El motor adecuado depende de sus requisitos concretos, no de una clasificación universal.
Artículo académico (texto latino)
XeLaTeXCompilación más rápida, excelente compatibilidad con fontspec y unicode-math completo para fuentes matemáticas modernas.
Informe multilingüe (escrituras complejas)
LuaLaTeXEl conformado de HarfBuzz gestiona el árabe, el devanagari y el tailandés con más precisión que el motor ICU de XeLaTeX.
Generación automatizada de informes
LuaLaTeXEl scripting con Lua permite recorrer datos y generar tablas o secciones en tiempo de compilación, sin preprocesamiento externo.
Tesis / disertación
XeLaTeXIteración más rápida al escribir, amplia compatibilidad con plantillas y fontspec cubre todos los requisitos habituales de fuentes.
Libro o documento extenso
LuaLaTeXLos callbacks de Lua permiten una personalización microtipográfica más allá de lo que permiten las macros de TeX. HarfBuzz mejora la calidad de los glifos con fuentes personalizadas.
Currículum
XeLaTeXDocumento corto, compilación rápida y fontspec gestiona todas las fuentes de marca personalizadas que pueda necesitar.
\begin{examples}
Ejemplos mínimos funcionales
Ambos ejemplos se compilan con FormaTeX. Pruébelos directamente en el playground.
% XeLaTeX — Unicode native, system fonts via fontspec
\documentclass{article}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmainfont{Linux Libertine O}
\setmathfont{XITS Math}
\begin{document}
XeLaTeX handles Unicode natively: α β γ — no inputenc needed.
Arabic: \textarabic{مرحبا} \quad Greek: Αλφαβητικό
$\int_0^\infty e^{-x^2}\, dx = \frac{\sqrt{\pi}}{2}$
\end{document}% LuaLaTeX — Lua scripting + modern font loading
\documentclass{article}
\usepackage{fontspec}
\usepackage{luacode}
\setmainfont{Linux Libertine O}
% Generate content with Lua at compile time
\begin{luacode*}
local items = {"Introduction", "Methods", "Results", "Discussion"}
for i, v in ipairs(items) do
tex.print(i .. ". " .. v .. "\\\\")
end
\end{luacode*}
\begin{document}
LuaLaTeX: Unicode + Lua scripting in a single engine.
$f(x) = \sum_{n=0}^{\infty} \frac{f^{(n)}(a)}{n!}(x-a)^n$
\end{document}\section{FAQ}
Preguntas frecuentes
Compile con el motor que prefiera
FormaTeX ejecuta XeLaTeX, LuaLaTeX, pdfLaTeX y latexmk. Cambie de motor modificando un solo campo de la API, sin infraestructura.

