Elegir motor/formato

pdfLaTeX, XeLaTeX, LuaLaTeX, upLaTeX: ¿cuál deberías usar? Esta página es una guía de decisión práctica para exactamente esa pregunta. Comienza con una recomendación, luego analiza los factores que impulsan la elección y termina con una tabla comparativa y notas para cambiar de motor.

La recomendación rápida

Antes de los detalles, aquí están las primeras selecciones por propósito: para la mayoría de las personas son suficientes. Recuerde de la página “formatos LaTeX” que cada nombre es un motor (el programa de procesamiento) combinado con un formato (LaTeX, el sistema de comando). A continuación se los proporcionamos mediante el comando que realmente escribe (pdflatex, etc.).

  • Texto occidental (inglés/idiomas europeos), la ruta más sencilla, máxima compatibilidad de paquetespdfLaTeX (pdflatex). Es el estándar de facto de LaTeX, con la mayor documentación y estado de la técnica.
  • Desea utilizar las fuentes OpenType del sistema, manejar Unicode/texto multilingüe y mantener las cosas simplesXeLaTeX (xelatex). fontspec facilita el trabajo multilingüe no japonés.
  • Fuentes del sistema y Unicode más control programable y detallado y preparación para el futuroLuaLaTeX (lualatex). Puede dar forma a la composición tipográfica desde Lua, y el equipo de LaTeX la trata como el estándar del futuro.
  • JaponésupLaTeX (uplatex) es la opción segura y convencional; LuaLaTeX + luatexja es la ruta moderna nativa de Unicode (pero más lenta). La clase jlreq funciona con cualquiera de los dos.

En una oración: pdfLaTeX para texto occidental, XeLaTeX o LuaLaTeX cuando necesite fuentes del sistema o Unicode, y upLaTeX o LuaLaTeX para japonés. Para un proyecto nuevo sin requisitos especiales, comenzar con pdfLaTeX (occidental) o upLaTeX (japonés) es la apuesta segura; Si desea que todo esté unificado en Unicode a largo plazo, vale la pena elegir LuaLaTeX.

Cinco controles antes de escribir

La elección del motor es más segura cuando trabaja hacia atrás desde el destino del envío y los materiales de origen, no según el gusto personal. Una tesis puede heredar una plantilla de laboratorio, un artículo de revista puede requerir un archivo de clase y un manual técnico puede ser compilado por CI o por una máquina lectora. Comprueba estos cinco puntos antes de escribir el primer párrafo real y evitarás reescribir decenas de páginas después.

  • Primero obedezca el objetivo de envío: si el archivo de clase o las instrucciones se denominan uplatex, pdflatex, lualatex u otro motor, utilícelo.
  • Decida cómo se manejará el japonés: las plantillas japonesas heredadas a menudo apuntan a upLaTeX; una nueva configuración Unicode/OpenType apunta hacia LuaLaTeX + luatexja.
  • Consulte la bibliografía y las herramientas de índice: BibTeX frente a Biber y mendex frente a upmendex afectan la configuración de latexmk.
  • Mire las figuras y las fuentes: EPS o PSTricks heredados favorecen una ruta DVI, mientras que las figuras PDF/PNG y las fuentes OpenType prefieren pdfLaTeX, LuaLaTeX o XeLaTeX.
  • Congele la compilación: escriba el comando en .latexmkrc o README para que los colaboradores y CI puedan reproducir el mismo PDF.

Los factores que impulsan la elección.

Para cuando la respuesta rápida no encaje –o cuando quieras saber por qué– aquí tienes los ejes uno por uno. La mayoría de ellos vuelven a cómo el motor maneja las fuentes y la codificación de caracteres.

Fuentes. pdfTeX utiliza el modelo de fuente tradicional de TeX: TFM (métrica de fuente TeX) más fuentes Type1/PK. No puede simplemente apuntar a una fuente normal instalada en su OS. XeTeX y LuaTeX difieren marcadamente aquí: pueden usar las fuentes TrueType / OpenType que ya están en el sistema directamente, nombradas a través del paquete fontspec, p.e. \setmainfont{Times New Roman}. fontspec requiere XeTeX o LuaTeX; no funciona bajo pdfLaTeX.

entrada Unicode. XeTeX y LuaTeX son Unicode-native internamente y toman la fuente UTF-8 tal como está. pdfTeX también, ya que la versión 2018 LaTeX usa UTF-8 como codificación de entrada predeterminada (por lo que \usepackage[utf8]{inputenc} ya no es necesario), pero internamente todavía se asigna a codificaciones de fuentes de 8 bits (T1 y similares), por lo que los caracteres que funcionan dependen de su fontenc y su fuente, y no puede escribir libremente Unicode o CJK directamente. Para escribir texto y símbolos multilingües sin problemas, XeTeX/LuaTeX tienen la ventaja.

Compatibilidad del paquete. Esta es la trampa práctica que la gente pasa por alto. Algunos paquetes son específicos del motor. fontspec y unicode-math, por ejemplo, son solo para XeTeX/LuaTeX. Por el contrario, pstricks funciona bajo pdfLaTeX y XeLaTeX enrutados por DVI pero, como regla general, no bajo LuaLaTeX. Partes de microtype (abajo) también se inclinan hacia pdfTeX/LuaTeX. La incompatibilidad también se da en sentido contrario: el código fuente escrito para seguir un tutorial antiguo puede no compilarse en un motor más nuevo. La regla fundamental es verificar qué motor exige su plantilla o clase de diario antes que nada.

Velocidad. La diferencia es real y notable. El orden habitual es pdfTeX más rápido, XeTeX en el medio, LuaTeX más lento. LuaTeX conlleva la sobrecarga de iniciar un Lua VM y dar forma a las fuentes a través de HarfBuzz, y en documentos grandes con muchas fuentes puede ejecutarse más de tres veces más lento que pdfLaTeX (en documentos simples la brecha es pequeña). A lo largo de los cientos de recompilaciones que implica una sesión de escritura real, eso se suma.

Microtipografía. La protrusión de caracteres y la expansión de fuente del paquete microtype realzan visiblemente el aspecto del texto occidental. Las diferencias de motor aquí son grandes: la protrusión funciona en los tres, pero la expansión de fuentes solo se admite en pdfTeX y LuaTeX, no en XeTeX. Los ajustes de espaciado entre palabras y kerning son solo para pdfTeX, la desactivación de ligaduras funciona en pdfTeX/LuaTeX y el espaciado entre letras funciona en los tres. Para obtener la mejor producción occidental, pdfLaTeX o LuaLaTeX es la opción segura.

Características y programabilidad de gráficos/PDF. Cada motor importa PNG, JPEG y PDF hasta graphicx, y \includegraphics se comporta de manera muy similar en todos ellos (pdfLaTeX convierte EPS automáticamente). La fortaleza distintiva de LuaTeX es el control a través de Lua: puede conectarse a pases de composición tipográfica o leer datos externos para crear tablas, cosas que son incómodas en las macros. También combina bien con la pila de paquetes modernos, incluidos fontspec y unicode-math, por lo que se le llama "preparado para el futuro".

El caso especial de CJK/japonés. Configurar el japonés correctamente (escritura vertical, reglas de salto de línea (kinsoku), espaciado entre texto japonés y occidental) necesita maquinaria dedicada. El predeterminado desde hace mucho tiempo es el motor de la familia pTeX (uplatex), que utiliza el japonés JFM (métricas de fuente) y es estable y rápido. La alternativa moderna, LuaLaTeX + luatexja, maneja todo en Unicode y le permite usar las fuentes del sistema libremente, pero como señala claramente TeX Wiki, la composición tipográfica lleva más tiempo que XeLaTeX, upLaTeX o pLaTeX (LuaJITTeX recompra aproximadamente 1,3 veces). Tenga en cuenta también que la selección directa de fuentes CJK utiliza luatexja-fontspec en lugar de fontspec simple. La clase jlreq (basada en los requisitos JIS para la composición tipográfica japonesa) se ejecuta en platex, uplatex o lualatex y detecta automáticamente el motor. La página japonesa dedicada cubre el resto.

Decidir con un pequeño expediente de prueba

Cambiar los motores dentro de una tesis o borrador de presentación puede mover fuentes, figuras, bibliografía y saltos de línea, todo a la vez, ocultando la causa del problema. En caso de duda, cree un archivo de prueba de una página antes de comenzar la escritura real y recopile los mismos materiales con los motores candidatos. Verifique no solo si se compila, sino también las advertencias en el registro, la incrustación de fuentes en PDF, el manejo de figuras y si los colaboradores pueden reproducir los pasos.

terminal
# 欧文の候補 / Western candidates
pdflatex engine-test.tex
lualatex engine-test.tex
xelatex engine-test.tex

# 日本語 upLaTeX の候補 / Japanese upLaTeX candidate
uplatex engine-test.tex
dvipdfmx engine-test.dvi
  • Si existe una plantilla de destino, pruebe con esa plantilla. Un archivo en blanco exitoso no prueba que la configuración del envío funcione.
  • Incluya una figura, una ecuación mostrada y un elemento bibliográfico, de modo que la prueba represente el manuscrito real en miniatura.
  • Una vez elegido, fije el motor en .latexmkrc o README y evite compilar casualmente el proyecto con un motor diferente.
  • Compare los archivos PDF; Si los saltos de línea o las fuentes difieren, deje el motivo de la elección dentro del proyecto.

tabla comparativa

Las cuatro opciones principales, dispuestas según los ejes decisivos. El nombre del comando es la columna más a la izquierda. Para microtype, la protrusión y la expansión se muestran por separado (un guión significa que no es compatible).

ComandoUnicode / fuentes del sistemamicrotypeVelocidadUso principal
pdflatexNo (TFM/Type1; entrada UTF-8 correcta pero asignada de 8 bits)protrusión sí / expansión síMás rápidodefault occidental; compatibilidad más amplia
xelatexSí (OpenType directamente a través de fontspec)protrusión sí / expansión noMedioFácil multilingüe / OpenType
lualatexSí (fontspec, más control Lua)protrusión sí / expansión símas lentoModerno/futuro; Japonés vía luatexja
uplatexJaponés a través de JFM (ruta DVI); entrada UTF-8Limitada, solo porción occidentalRápidoperiódicos japoneses; default estable

Trate la tabla como una guía, no como un veredicto. pdfLaTeX, combinado con \usepackage[T1]{fontenc} y un paquete de fuentes occidentales adecuado, configura maravillosamente muchos idiomas europeos; e incluso en XeLaTeX, la protrusión microtype todavía se aplica. Léalo menos como un binario de “puedo/no puedo” y más como un equilibrio entre esfuerzo y pulido.

Notas para cambiar de motor.

Cambiar de motor parcialmente puede cambiar el resultado incluso desde una fuente idéntica. Estos son los inconvenientes que la gente realmente enfrenta.

Cambios en la configuración de fuente y codificación. Las grapas pdfLaTeX \usepackage[utf8]{inputenc} y \usepackage[T1]{fontenc} son innecesarias en XeLaTeX/LuaLaTeX y normalmente se omiten (son Unicode internamente); en su lugar, busca fontspec y \setmainfont. Llevar un preámbulo de pdfLaTeX directamente a XeLaTeX puede producir advertencias o errores relacionados con las fuentes.

latex
% pdfLaTeX 向け(旧来)/ for pdfLaTeX (traditional)
%   \usepackage[utf8]{inputenc}
%   \usepackage[T1]{fontenc}

% XeLaTeX / LuaLaTeX 向け / for XeLaTeX / LuaLaTeX
\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}  % OS / TeX のフォントを名前で指定

microtype se comporta de manera diferente. El mismo \usepackage{microtype} produce diferentes efectos por motor; en XeLaTeX, la expansión de fuente simplemente está desactivada, por ejemplo. El diseño ajustado en pdfLaTeX puede cambiar ligeramente (longitudes de línea, posiciones de corte) una vez que se mueve a XeLaTeX.

Cambios en la disponibilidad de paquetes. Algunos paquetes dejan de funcionar (o pasan a estar disponibles por primera vez) en el motor de destino. Las figuras basadas en PSTricks no se ejecutarán si las mueves a LuaLaTeX (pstricks no es compatible allí); por el contrario, fontspec y unicode-math no están disponibles en pdfLaTeX. Las plantillas de revistas y editores generalmente asumen un motor específico, por lo que seguirlo primero es lo más seguro.

Para el japonés, cambia toda la configuración de la fuente CJK. upLaTeX (familia pTeX) y LuaLaTeX + luatexja difieren tanto en la forma de nombrar las fuentes japonesas como en la forma en que están incrustadas. Es de esperar que una migración de motores afecte más a los documentos japoneses que a los occidentales. Para conocer los equivalentes de comandos concretos, consulte la página "Compilar comandos".