Elegir motor/formato

«¿Qué motor de LaTeX debo usar?» — esta es una guía de decisión para esa pregunta, con la respuesta por delante. En corto: pdflatex para texto occidental, xelatex o lualatex cuando hagan falta fuentes del sistema o Unicode, y uplatex o lualatex para japonés. Pero estos cuatro no son cuatro opciones equivalentes: todos ejecutan el mismo formato LaTeX; lo que cambia es el motor de debajo. A continuación, el duelo directo entre XeLaTeX y LuaLaTeX, la razón por la que la respuesta cambia en japonés, y qué se rompe de verdad al cambiar de motor.

La respuesta más breve, según el propósito

Para la mayoría, estas cuatro líneas bastan. Los nombres de abajo son combinaciones de un motor (el programa que se ejecuta) y un formato (LaTeX, el sistema de comandos), dados como el comando que uno teclea de verdad. En caso de duda, obedezca primero lo que exija la revista o la plantilla; las ramificaciones siguientes solo valen cuando no hay ninguna indicación.

  • Texto occidental (inglés y lenguas europeas), la vía más segurapdfLaTeX (pdflatex). Estándar de facto de LaTeX, con la mayor documentación y los más antecedentes, y el único motor donde funcionan todas las prestaciones microtipográficas.
  • Usar las fuentes del sistema, mezclar idiomas y mantener la configuración ligeraXeLaTeX (xelatex). Con fontspec basta un \setmainfont{...}.
  • Todo eso, más control programable de la composición y una apuesta por el futuroLuaLaTeX (lualatex). Se puede intervenir en la composición desde Lua, y las novedades del núcleo propias de un motor suelen aterrizar aquí primero: véanse las entradas sobre callbacks de LuaTeX en ltnews34.
  • JaponésupLaTeX (uplatex) es la corriente principal y estable; LuaLaTeX con luatexja, la vía moderna y nativa en Unicode. Aquí no se recomienda XeLaTeX; la razón viene después. La clase jlreq funciona con cualquiera de los dos primeros.

XeLaTeX o LuaLaTeX: cuál elegir

Estos dos coinciden hasta el punto de que «ambos manejan Unicode y fuentes del sistema», y por eso mismo la elección entre ellos es la que más se duda. Una línea la resuelve: XeLaTeX si quiere terminar con ligereza y rapidez el documento que tiene delante; LuaLaTeX si es un documento que hará crecer durante años. La diferencia no es un marcador de prestaciones sino el tipo de coste que se paga: XeLaTeX sale barato en configuración y espera; LuaLaTeX sale barato en pervivencia y extensibilidad. Lea la tabla siguiente con esa idea.

Punto de comparaciónXeLaTeXLuaLaTeX
fontspecDisponible; se le puede pasar directamente un nombre de fuente del sistema, así que probar nombres uno tras otro es rápidoDisponible; la resolución de fuentes pasa por luaotfload, y la forma de nombrar una fuente es más estricta
microtypeSolo protrusión. La expansión de fuentes, el ajuste del espacio entre palabras y el espaciado entre letras no hacen nadaProtrusión y expansión de fuentes, además del espaciado entre letras: el resultado occidental se acerca a pdfLaTeX
speedIntermedio; tanto el arranque como la composición son más ligeros que en LuaLaTeXEl más lento; en un documento grande puede tardar varias veces lo que pdfLaTeX
programmabilitySolo macros de TeX; no hay puerta hacia el motor mismoLua va embebido; \directlua y los callbacks permiten intervenir en el propio proceso de composición
output-routePasa por un .xdv intermedio, que el xdvipdfmx incorporado convierte en PDFEscribe el PDF directamente; no hay archivo intermedio
japaneseNo es una opción practicable; jlreq sencillamente no acepta XeLaTeXPlenamente viable mediante luatexja; jlreq lo admite con una opción lualatex
pstricksFunciona, porque la ruta pasa por una etapa de tipo DVI; la elección correcta si ya hay material en PSTricksEn general no funciona; las figuras de PSTricks hay que portarlas
developmentSe mantiene con regularidad, pero no es donde ocurren las novedadesLas incorporaciones del núcleo propias de un motor suelen aterrizar aquí primero

De esa tabla puede trazarse una línea práctica. Elija XeLaTeX cuando quiera nombrar una fuente de su máquina y componer de inmediato; cuando mezclar escrituras sea el objetivo y no le importe mucho la microtipografía occidental; cuando arrastre figuras de PSTricks ya hechas; y cuando recompile con tanta frecuencia que la espera se note. Elija LuaLaTeX cuando quiera afinar hasta el final el resultado occidental (hace falta la expansión de fuentes de microtype); cuando el japonés deba tratarse en Unicode; cuando quiera programar la propia composición, por ejemplo leer datos externos para construir tablas; y cuando el documento vaya a mantenerse durante años. Para el japonés, conviene señalarlo, XeLaTeX no entra en esta elección en absoluto.

Qué motor para el japonés, y por qué la respuesta cambia

Para el japonés la elección es entre uplatex y lualatex; XeLaTeX queda fuera. Los artículos en inglés suelen detenerse en «XeLaTeX o LuaLaTeX si hace falta Unicode y fuentes del sistema», pero esa ecuación no se sostiene en japonés. La razón es que la composición japonesa exige mucho más que poder emitir caracteres Unicode: reglas de corte kinsoku, el espacio de un cuarto de cuadratín entre japonés y texto occidental, escritura vertical, ruby y métricas de fuente propias del japonés (JFM). Hace falta una capa que implemente todo eso, y tal capa solo existe para la familia de motores pTeX y, en LuaTeX, en luatexja.

Los archivos de clase lo corroboran. jlreq, la clase de composición japonesa conforme a JIS X 4051, recibe el motor como opción, y jlreq.cls acepta exactamente tres: platex, uplatex y lualatex. xelatex no está entre ellos. No es que el japonés bajo XeLaTeX sea imposible; existen paquetes como zxjatype. Pero las clases japonesas principales y el cuerpo acumulado de documentación están con esos tres, y las plantillas japonesas que entrega una revista o una universidad casi siempre se mueven en ese ámbito. Conclusión práctica: si el documento contiene japonés, XeLaTeX no es el primer candidato.

Entonces, ¿uplatex o lualatex? La línea natural es: uplatex cuando hay material previo; lualatex al empezar de cero algo de larga vida. uplatex es rápido, sus reglas de composición japonesa están muy asentadas y la mayoría de las clases que distribuyen sociedades científicas y editoriales lo dan por supuesto. Su salida, eso sí, es siempre DVI: cadena en dos pasos vía dvipdfmx, y fuentes configuradas a la manera tradicional. lualatex con luatexja usa Unicode y fuentes del sistema tal cual, y luatexja-fontspec permite nombrar directamente las fuentes japonesas, pero el tiempo de composición crece de forma perceptible. Conviene notar que no es fontspec a secas lo que selecciona las fuentes japonesas.

Los ejes que deciden

Para cuando la respuesta rápida no encaja —o cuando se quiere saber por qué—, aquí están los ejes uno a uno. La mayoría se reducen al final a cómo trata el motor las fuentes y la codificación de caracteres.

Fuentes. pdfTeX usa el modelo de fuentes tradicional de TeX: TFM (TeX Font Metric) más fuentes Type1 o PK. No puede simplemente apuntar a una fuente instalada en el sistema operativo. Aquí es donde XeTeX y LuaTeX divergen con más nitidez: ambos pueden usar directamente las fuentes TrueType y OpenType ya presentes en el sistema, nombradas mediante el paquete fontspec como en \setmainfont{Times New Roman}. Al revés: fontspec exige XeTeX o LuaTeX y no funciona bajo pdfLaTeX.

Codificación de entrada. XeTeX y LuaTeX son nativos en Unicode internamente y aceptan la fuente UTF-8 tal cual. pdfTeX también usa UTF-8 como codificación de entrada por omisión desde la versión de LaTeX de 2018, de modo que \usepackage[utf8]{inputenc} ya no hace falta; pero internamente sigue proyectando sobre codificaciones de fuente de 8 bits como T1, así que qué caracteres salen depende de su fontenc y de su fuente, y no se puede teclear cualquier Unicode ni CJK sin más. Para escribir texto multilingüe y símbolos sin complicaciones, XeTeX y LuaTeX llevan ventaja.

Compatibilidad de paquetes. Este es el escollo que más se pasa por alto en la práctica. Algunos paquetes son específicos de un motor. fontspec y unicode-math son solo para XeTeX/LuaTeX. A la inversa, pstricks funciona bajo pdfLaTeX y XeLaTeX, que pasan por DVI, pero por regla general no bajo LuaLaTeX. La incompatibilidad va también en sentido contrario: una fuente escrita siguiendo un tutorial antiguo puede no compilar en un motor más nuevo. La regla de oro es comprobar antes que nada qué motor exige su plantilla o la clase de la revista.

Velocidad. La diferencia es real y se nota. El orden es pdfTeX el más rápido, XeTeX en medio, LuaTeX el más lento; pero la brecha se abre en la parte que crece con la cantidad de composición, no en el arranque. En un documento de una página casi vacía los tres son casi indistinguibles; a unos cientos de páginas, LuaLaTeX tarda varias veces lo que pdfLaTeX (las cifras medidas están en la página de LuaTeX). A lo largo de los cientos de recompilaciones de una sesión de escritura real, eso se acumula. Al revés: en un artículo de una docena de páginas no merece preocupación.

Microtipografía (microtype). Lo que eleva de forma fiable el aspecto del texto occidental son la protrusión de caracteres y la expansión de fuentes de microtype. Las diferencias entre motores son grandes aquí, y el propio README de microtype las declara sin rodeos: la protrusión funciona en los tres —pdfTeX, LuaTeX y XeTeX—, pero la expansión de fuentes solo con pdfTeX y LuaTeX, no con XeTeX. Además, el ajuste del espacio entre palabras y del interletraje adicional es exclusivo de pdfTeX, mientras que desactivar ligaduras y el espaciado entre letras requieren pdfTeX o LuaTeX. Si prima el acabado occidental, pdfLaTeX, con LuaLaTeX en segundo lugar, es la apuesta segura.

Gráficos y programabilidad. Importar PNG, JPEG y PDF se escribe prácticamente igual en todos los motores, mediante graphicx y \includegraphics (pdfLaTeX convierte EPS por usted). Lo que los separa es el control desde Lua propio de LuaTeX: se puede enganchar en las etapas de la composición o leer datos externos para construir una tabla, cosas incómodas de escribir como macros. Encaja además con el conjunto moderno de paquetes, incluidos fontspec y unicode-math, en lo que se apoya la idea de que está «preparado para el futuro».

Las cuatro opciones una al lado de otra

Aquí están las cuatro opciones principales dispuestas según los ejes decisivos; la primera columna es el comando que uno teclea de verdad, y microtype aparece dividido entre protrusión y expansión. Tome la tabla como guía, no como veredicto: pdfLaTeX junto con \usepackage[T1]{fontenc} y un paquete de fuentes occidentales adecuado compone muy bien muchas lenguas europeas, y la protrusión sigue aplicándose bajo XeLaTeX. Léala menos como un «puede / no puede» y más como un equilibrio entre esfuerzo y acabado.

ComandoUnicode / fuentes del sistemamicrotypeVelocidadUso principal
pdflatexNo (TFM/Type1; entrada UTF-8 posible pero proyectada a 8 bits)protrusión sí / expansión síEl más rápidoOpción occidental por defecto; máxima compatibilidad
xelatexSí (OpenType directamente con fontspec)protrusión sí / expansión noIntermedioMultilingüe y OpenType sin complicaciones
lualatexSí (fontspec, más control desde Lua)protrusión sí / expansión síEl más lentoModerno y de larga vida; japonés vía luatexja
uplatexJaponés mediante JFM por la ruta DVI; entrada UTF-8 posibleLimitado a la parte occidentalRápidoArtículos en japonés; el estándar estable

Decidir con un pequeño archivo de prueba

Antes de empezar a escribir, ejecute los motores candidatos sobre un archivo de prueba de una página. Cambiar de motor a mitad de una tesis o de un envío desplaza a la vez fuentes, figuras, bibliografía y cortes de línea, y oculta la causa de cualquier problema. Lo que se comprueba no es solo si compila. Mire los avisos del registro, la incrustación de fuentes en el PDF, cómo han salido las figuras y si un colaborador puede reproducir los mismos pasos: esos cuatro.

terminal
# Western candidates: same source, three engines.
$ pdflatex engine-test.tex
$ xelatex  engine-test.tex
$ lualatex engine-test.tex

# Japanese candidate: upLaTeX writes DVI, dvipdfmx makes the PDF.
$ uplatex   engine-test.tex
$ dvipdfmx  engine-test.dvi

# Then compare what actually came out.
$ pdffonts engine-test.pdf     # are all fonts embedded?
$ grep -i warning engine-test.log
  • Si existe una plantilla obligatoria, pruebe con esa plantilla. Que un archivo vacío compile no prueba nada sobre la configuración de envío.
  • Incluya una figura, una ecuación fuera de línea y una entrada bibliográfica. Un ensayo que no sea una miniatura del manuscrito real no prueba nada.
  • Compruebe a la vez las herramientas de bibliografía e índice. BibTeX o Biber, mendex o upmendex: de ello depende la configuración de latexmk. Fijar el motor no basta; si estas piezas no encajan, la compilación falla igualmente.
  • Una vez elegido, escriba el motor en .latexmkrc o en el README, para que luego nadie compile el proyecto con otro por descuido.
  • Compare los PDF. Si difieren los cortes de línea o las fuentes, deje dentro del proyecto la razón de la elección.

Qué se rompe al cambiar de motor

Una misma fuente puede dar un resultado distinto en cuanto cambia el motor. Estas son las cuatro minas que la gente pisa de verdad.

La configuración de fuentes y codificación cambia. Los clásicos de pdfLaTeX \usepackage[utf8]{inputenc} y \usepackage[T1]{fontenc} son innecesarios bajo XeLaTeX y LuaLaTeX y normalmente se omiten: esos motores son Unicode internamente. En su lugar se recurre a fontspec y \setmainfont. Trasladar sin más un preámbulo de pdfLaTeX puede producir avisos o errores relacionados con las fuentes.

latex
% For pdfLaTeX (traditional; both lines are optional on current LaTeX)
%   \usepackage[utf8]{inputenc}
%   \usepackage[T1]{fontenc}

% For XeLaTeX / LuaLaTeX: name an OS or TeX font instead
\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}

microtype actúa de otra manera. El mismo \usepackage{microtype} produce efectos distintos según el motor: bajo XeLaTeX, la expansión de fuentes está sencillamente desactivada. Una maquetación afinada en pdfLaTeX se desplaza, pues, ligeramente al migrar: cambian las longitudes de línea y los puntos de corte. En un documento de algunas decenas de páginas no es raro que el total de páginas varíe en una.

El conjunto de paquetes utilizables cambia. Algunos dejan de funcionar en el motor de destino y otros pasan a estar disponibles por primera vez. Las figuras dibujadas con PSTricks no funcionarán si se llevan a LuaLaTeX, que no admite pstricks; a la inversa, fontspec y unicode-math no están disponibles bajo pdfLaTeX. Las plantillas de revistas y editoriales suelen suponer un motor concreto, así que seguirlo primero es la jugada segura.

En japonés cambia por completo la configuración de fuentes CJK. upLaTeX (la familia pTeX) y LuaLaTeX con luatexja difieren tanto en cómo se nombran las fuentes japonesas como en cómo se incrustan. Presupueste más dolor para una migración japonesa que para una occidental. Las equivalencias concretas de comandos están reunidas en la página «Comandos de compilación».