Formatos de LaTeX

pdflatex, lualatex, platex... los nombres de los comandos se parecen y generan confusión, pero cada uno es en realidad una combinación de un “formato” y un “motor”. Un formato es un paquete precompilado de macros; un motor es el programa que realmente lo ejecuta. LaTeX es uno de esos formatos y se ejecuta en varios motores diferentes. Esta página clasifica LaTeX2e, pLaTeX/upLaTeX, LuaLaTeX y XeLaTeX exactamente a lo largo de ese eje.

Formato versus motor

Un motor es el ejecutable que lee un archivo .tex y lo compone (TeX, pdfTeX, XeTeX, LuaTeX, e-pTeX, etc.). Un formato, por el contrario, es una enorme colección de macros (\documentclass, \section y el resto) leídas con anticipación y precompiladas en un solo volcado (un archivo .fmt). Al iniciar, el motor carga ese .fmt en un instante, evitándose tener que redefinir cada macro en cada ejecución.

Entonces “LaTeX” es el nombre de un formato, no de un motor. El mismo formato LaTeX se puede ejecutar en diferentes motores, y el comando que escriba codifica qué motor + formato desea. pdflatex significa “motor pdfTeX + formato LaTeX”; lualatex significa "motor LuaTeX + formato LaTeX".

LaTeX no es el único formato. Los básicos plain TeX y ConTeXt de Knuth son formatos completamente diferentes. Esta página se limita a la más utilizada, LaTeX, y recorre los principales motores en los que puede ejecutarla.

LaTeX (2e)

Hoy en día “LaTeX” significa, casi sin excepción, LaTeX2e. Es la versión actual de las macros LaTeX de Leslie Lamport, ahora mantenida por el Proyecto LaTeX, y llegó en 1994. El 2e estaba destinado a señalar una “pequeña revisión” del LaTeX 2.09 anterior, un paso intermedio en el camino hacia el LaTeX3 planeado desde hace mucho tiempo.

Pero LaTeX3 nunca se materializó como un nuevo núcleo independiente; en cambio, su trabajo se superpuso a LaTeX2e como expl3 (la capa de programación LaTeX3). Desde 2020, expl3 se carga como parte del formato de forma predeterminada y se utiliza cada vez más dentro del kernel para implementar nuevas funciones. El resultado: todavía ejecutamos LaTeX2e simple día a día, pero sus componentes internos se siguen modernizando con la tecnología LaTeX3.

El kernel LaTeX2e ahora se actualiza con una cadencia regular dos veces al año (aproximadamente junio y noviembre). La versión estable más reciente es 2025-11-01 (disponible en noviembre de 2025) y ya está circulando para pruebas una versión preliminar en desarrollo de la próxima, 2026-06-01. El modelo de creación es consistente: elija una clase de documento con \documentclass en la parte superior, cargue y configure el paquete en el preámbulo hasta \begin{document}, luego escriba el cuerpo: el familiar modelo “clase + preámbulo”.

Ejecutar este formato en el motor pdfTeX es el emparejamiento estándar más clásico. El mismo pdfTeX se divide en dos comandos según el destino de salida: latex ejecuta pdfTeX en modo DVI y emite el formato intermedio DVI (convertido a PDF más tarde mediante una herramienta independiente), mientras que pdflatex hace que pdfTeX emita PDF directamente. Para los documentos de texto, en su mayoría occidentales, pdflatex es el valor predeterminado de facto.

pLaTeX / upLaTeX

pLaTeX y upLaTeX colocan el formato LaTeX en motores creados para la composición tipográfica japonesa. El trabajo específico de Japón (escritura vertical, rubí (furigana), composición de líneas japonesas) está a cargo de la familia de motores pTeX, originalmente ampliada en ASCII Corporation. En el TeX Live actual, tanto platex como uplatex se ejecutan en una base e-upTeX, pero platex conserva el manejo de caracteres compatible con pLaTeX, mientras que uplatex se ejecuta como el formato upLaTeX orientado a Unicode.

Esta familia siempre genera DVI, luego convierte el DVI con rodamiento japonés en PDF con dvipdfmx: una canalización de dos pasos (uplatex file.tex seguido de dvipdfmx file.dvi). Combínelo con upmendex para obtener un índice japonés. Para las clases de documentos, jsarticle/jsbook de Haruhiko Okumura (para pLaTeX) y sus homólogos Unicode como ujarticle son comunes, al igual que el más reciente, JIS X 4051 jlreq.

La diferencia entre platex y uplatex es menos la base ejecutable y más el manejo de caracteres a nivel de formato. platex conserva el comportamiento tradicional de estilo pTeX para compatibilidad con versiones anteriores de los activos pLaTeX. uplatex asume Unicode y maneja bien el japonés mezclado con Hangul o cirílico. Para los papeles japoneses nuevos, uplatex es la opción estándar.

Cuándo usarlo: cuando una sociedad o editorial japonesa ofrece una clase o estilo para pLaTeX, o cuando quieres la composición japonesa madura de pTeX (escritura vertical y similares), pLaTeX/upLaTeX es la elección sólida. Por el contrario, si desea utilizar las fuentes del sistema tal como están o agregar Unicode directamente, LuaLaTeX-ja (a continuación) se adapta mejor.

LuaLaTeX

LuaLaTeX coloca el formato LaTeX en el motor LuaTeX; el comando es lualatex. LuaTeX es un motor descendiente de pdfTeX que maneja la entrada Unicode directamente y puede cargar fuentes del sistema OpenType / TrueType instaladas en su OS a través del paquete fontspec. Produce PDF directamente, sin formato intermedio.

Como su nombre lo indica, su sello distintivo es que el lenguaje de scripting Lua está integrado en el motor. Con \directlua{...} puedes escribir Lua que llegue a las partes internas de TeX, haciendo que las extensiones que alguna vez fueron difíciles sean mucho más fáciles. La composición tipográfica japonesa se maneja mediante el paquete luatexja, que ofrece una composición a la par con pLaTeX manteniendo las fuentes del sistema y Unicode.

Esta modernidad es la razón por la que el equipo de LaTeX señala cada vez más a LuaLaTeX como el motor moderno y lo recomienda como predeterminado para nuevos proyectos. Su inconveniente es la velocidad: la compilación es más pesada que pdflatex o xelatex (a veces aproximadamente el doble de lenta que XeLaTeX). Si desea un motor que genere texto japonés, multilingüe, manejo elaborado de fuentes y composición tipográfica programática, LuaLaTeX es el primer candidato.

XeLaTeX

XeLaTeX coloca el formato LaTeX en el motor XeTeX; el comando es xelatex. Al igual que LuaLaTeX, admite entrada Unicode y uso directo de fuentes del sistema a través de fontspec. Para la salida, produce PDF a través de su xdvipdfmx incorporado (un controlador derivado de dvipdfmx).

La fortaleza de XeLaTeX es la simplicidad. Para "Solo quiero usar las fuentes de mi sistema", tiende a ser más liviano de configurar y más rápido de compilar que LuaLaTeX. Su selección de fuentes se parece mucho a la búsqueda de nombres de fuentes del propio sistema operativo, por lo que probar un nombre de fuente tras otro es sencillo. Por otro lado, carece de la profunda programabilidad de Lua y el centro de gravedad para nuevos desarrollos se ha ido desplazando hacia LuaTeX.

Hoja de trucos de comando

Incluso con el mismo formato LaTeX, el nombre del comando decide el motor detrás de él, el formato de salida y cómo funcionan las fuentes. En la siguiente tabla, lea de izquierda a derecha a partir del nombre del comando.

ComandomotorSalidaUnicode / fuentes del sistema
latexpdfTeX (modo DVI)DVI → necesita conversiónNo (necesita aportaciones, etc.)
pdflatexpdfTeXPDF (directo)No (necesita aportaciones, etc.)
platexe-upTeX (tiempo de ejecución de compatibilidad con pLaTeX)DVI → dvipdfmxjaponés; fuentes heredadas
uplatexe-upTeXDVI → dvipdfmxInterno Unicode; fuentes heredadas
lualatexLuaTeXPDF (directo)Sí - fontspec / luatexja
xelatexXeTeXPDF (vía xdvipdfmx)Sí - fontspec

En términos de los comandos reales, los motores que emiten PDF finalizan directamente en un solo paso, mientras que los basados en DVI agregan un paso de conversión.

terminal
# pdfTeX: PDF を直接出力 / emits PDF directly
$ pdflatex main.tex      # → main.pdf

# LuaTeX: PDF を直接出力 / emits PDF directly
$ lualatex main.tex      # → main.pdf

# upLaTeX: DVI を出力し、dvipdfmx で PDF へ変換
# upLaTeX emits DVI, then dvipdfmx converts to PDF
$ uplatex main.tex       # → main.dvi
$ dvipdfmx main.dvi      # → main.pdf

cual elegir

A continuación se ofrece una guía aproximada. Los criterios detallados (velocidad, compatibilidad del paquete, la situación japonesa, etc.) se exploran en la página "Elección de un motor".

  • Texto principalmente occidental, rápidamentepdflatex. El más maduro, con el soporte de paquetes más amplio.
  • Documentos japoneses/una clase existente requeridauplatex (o platex cuando sea necesario). DVI → dvipdfmx.
  • Un motor moderno que hace de todo, japonés incluidolualatex. Unicode + fuentes del sistema + luatexja.
  • Utilice fuentes del sistema con el mínimo esfuerzoxelatex. Ligero de configurar y más rápido de compilar.

Una vez elegido, congelarlo en el proyecto.

La elección del motor no es algo que deba cambiar según el estado de ánimo. Para una tesis, una vez que la página de título, el índice, las figuras, las tablas y la bibliografía se hayan compilado correctamente, congela el procedimiento de compilación en README o .latexmkrc. Mover un documento de lualatex a uplatex cambia a mitad de camino la selección de fuentes, el manejo del japonés, la ruta PDF y, a menudo, el procesamiento de la bibliografía, todo a la vez. Si cambia, pruebe cada característica en una pequeña muestra antes de regresar al manuscrito completo.

Al congelarlo, registre no solo el comando sino también la primera línea del registro. Líneas como This is LuaHBTeX ..., This is XeTeX ... o This is e-upTeX ... revelan el motor real y el año TeX Live. En colaboración, cuando “el mismo comando” genera resultados diferentes, comparar esa línea separa rápidamente los problemas de configuración del editor de TeX Live o diferencias de formato.