\engines{comparison}

XeLaTeX frente a pdfLaTeX

Ambos motores producen PDF de alta calidad, pero toman decisiones de diseño distintas. Esta guía cubre todas las diferencias relevantes para que pueda elegir el adecuado para cada documento.

pdfLaTeX— rápido y universalXeLaTeX— Unicode y fuentes del sistema
Use pdfLaTeX cuando…
  • La velocidad importa (el motor más rápido)
  • Usa texto latino estándar
  • Necesita la máxima compatibilidad de paquetes
  • Se requiere el kerning o la protrusión de Microtype
Use XeLaTeX cuando…
  • Texto Unicode o no latino (árabe, chino, griego…)
  • Necesita fuentes del sistema u OpenType
  • Fuentes matemáticas modernas (XITS Math, Libertinus)
  • Composición de texto de derecha a izquierda o bidireccional

\section{Diferencias técnicas}

Qué cambia realmente por dentro

Unicode y codificación de entrada

pdfLaTeX

pdfLaTeX es anterior a Unicode y trata los archivos fuente como flujos de bytes de 8 bits. Debe declarar \usepackage[utf8]{inputenc} para manejar la entrada UTF-8 y \usepackage[T1]{fontenc} para una codificación de salida correcta. Los caracteres fuera de la codificación T1 requieren paquetes adicionales.

XeLaTeX

XeLaTeX está construido sobre un motor Unicode. Lee UTF-8 de forma nativa, sin necesidad de declarar inputenc ni fontenc. Todo carácter Unicode está disponible siempre que la fuente elegida cubra ese punto de código.

Carga de fuentes

pdfLaTeX

pdfLaTeX usa métricas de fuentes de TeX (archivos .tfm) y fuentes Type 1 u OTF preinstaladas en la distribución de TeX. No se puede cargar una fuente arbitraria del sistema por su nombre: solo son accesibles las fuentes que se han empaquetado para TeX.

XeLaTeX

XeLaTeX accede a las fuentes a través de la API de fuentes del sistema operativo. Con fontspec puede cargar cualquier fuente instalada por su nombre: \setmainfont{Fira Sans} . Las características de OpenType (ligaduras, versalitas, ejes variables) son accesibles directamente.

Velocidad de compilación

pdfLaTeX es sistemáticamente el motor más rápido, aproximadamente el doble que XeLaTeX en documentos equivalentes. La diferencia se reduce en documentos grandes con muchas matemáticas y aumenta en documentos con muchas fuentes, donde XeLaTeX debe resolver las rutas de las fuentes del sistema.

pdfLaTeX

~0.8s

documento típico de una sola pasada

XeLaTeX

~1.5s

documento típico de una sola pasada

Compatibilidad de paquetes

pdfLaTeX

Décadas de paquetes se escribieron asumiendo pdfLaTeX como motor. Paquetes como microtype, pdfpages y la mayoría de los paquetes de CTAN funcionan por completo. Espere una compatibilidad casi universal.

XeLaTeX

La mayoría de los paquetes funcionan con XeLaTeX, pero algunos tienen un soporte limitado o nulo, en particular los que se enganchan a elementos internos de fuentes específicos de pdfLaTeX. microtype funciona en XeLaTeX, pero pierde las funciones de protrusión y expansión de caracteres.

Matemáticas

Ambos motores producen una excelente salida matemática. pdfLaTeX usa la pila clásica de fuentes matemáticas Computer Modern / AMS. XeLaTeX también la admite, pero además habilita fuentes matemáticas OpenType mediante unicode-math, incluidas XITS Math, Libertinus Math y STIX Two Math. Para documentos que mezclan caracteres Unicode con matemáticas (por ejemplo, letras griegas en línea), XeLaTeX es la opción natural.

\subsection{Matriz de características}

Comparación lado a lado

Característica
pdfLaTeX
XeLaTeX
Entrada Unicode
Mediante inputenc
Nativa
Fuentes del sistema
No
Sí (fontspec)
Velocidad de compilación
Rápido (~0.8s)
Moderado (~1.5s)
Compat. de paquetes
Excelente
Buena
Matemáticas OpenType
No
Sí (unicode-math)
Lenguajes de derecha a izquierda
Limitado
Sí (bidi)
Microtype
Soporte completo
Limitado
Predeterminado en la mayoría de las plantillas
Sí
No

\begin{examples}

Ejemplos mínimos funcionales

Ambos ejemplos se compilan con FormaTeX. Pruébelos directamente en el playground.

pdfLaTeX
% pdfLaTeX — fastest, widest package support
\documentclass{article}
\usepackage[utf8]{inputenc}   % required for pdfLaTeX
\usepackage[T1]{fontenc}
\usepackage{microtype}        % works best with pdfLaTeX

\begin{document}
Hello, World! Standard Latin text compiles in milliseconds.
$E = mc^2$
\end{document}
XeLaTeX
% XeLaTeX — Unicode native, system fonts
\documentclass{article}
\usepackage{fontspec}          % system font loading
\usepackage{unicode-math}      % Unicode math support

\setmainfont{Linux Libertine O}
\setmathfont{XITS Math}

\begin{document}
XeLaTeX natively handles Unicode: α β γ δ — no inputenc needed.
Greek: Αλφαβητικό σύστημα
$∫₀^∞ e^{−x²} dx = √π/2$
\end{document}

\subsection{Packages}

Paquetes clave de cada motor

Paquetes de pdfLaTeX

inputenc

Codificación de entrada (necesaria para UTF-8 en pdfLaTeX)

fontenc

Codificación de fuentes: T1 para europeo occidental

microtype

Mejoras microtipográficas; funciona mejor con pdfLaTeX

babel

Soporte multilingüe y separación silábica

Paquetes de XeLaTeX

fontspec

Cargue cualquier fuente del sistema u OpenType por su nombre

unicode-math

Fuentes matemáticas Unicode (XITS Math, Libertinus Math)

polyglossia

Soporte multilingüe moderno, reemplaza a babel

bidi

Composición de texto bidireccional (hebreo, árabe, etc.)

\section{Migration}

Cambiar de pdfLaTeX a XeLaTeX

La mayoría de los documentos de pdfLaTeX se compilan con XeLaTeX tras un pequeño ajuste del preámbulo. Con FormaTeX, solo tiene que cambiar el parámetro "engine" en su llamada a la API y luego actualizar su preámbulo en consecuencia.

Eliminar
\usepackage[utf8]{inputenc}

XeLaTeX lee UTF-8 de forma nativa: no se necesita inputenc

Eliminar
\usepackage[T1]{fontenc}

fontenc es un paquete específico de pdfLaTeX

Añadir
\usepackage{fontspec}

Necesario para cargar fuentes del sistema en XeLaTeX

Opcional
\usepackage{unicode-math}

Habilita fuentes matemáticas OpenType como XITS Math

Considerar
\usepackage{polyglossia}

Reemplaza a babel en documentos multilingües

\subsection{Uso de la API}

Selección del motor mediante la API de FormaTeX

Cambiar de motor es modificar un solo campo. Ambos motores están disponibles en todos los planes, sin configuración adicional.

Selección del motor mediante la API
curl -X POST https://api.formatex.io/api/v1/compile \
  -H "X-API-Key: $FORMATEX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "engine": "xelatex",
    "latex": "\\documentclass{article}\\usepackage{fontspec}\\begin{document}Hello\\end{document}"
  }' \
  --output document.pdf

Cambie "engine": "xelatex" por "engine": "pdflatex" para cambiar de motor. Consulte la guía completa de motores para ver los cuatro motores admitidos.

Cambie de motor en cualquier momento

Compile con cualquier motor en segundos

FormaTeX ejecuta pdfLaTeX, XeLaTeX, LuaLaTeX y latexmk. Una clave de API, sin infraestructura.