XeTeX es un motor TeX que lee UTF-8 directamente y utiliza las fuentes ya instaladas en su sistema. Sin TFM ni configuración de archivos de mapas, simplemente nombra una fuente a través del paquete fontspec y las fuentes OpenType simplemente funcionan. Fue escrito por Jonathan Kew y normalmente lo invocas como xelatex.
¿Qué es XeTeX?
En los clásicos TeX y pdfTeX, usar una fuente significaba preparar un archivo de dimensiones TFM (TeX Font Metrics) y asignarlo a una fuente real a través de un archivo .map: un baile complicado. XeTeX elimina esa tarea: le permite nombrar cualquier fuente que el sistema operativo conozca (OpenType / TrueType y AAT en macOS) y usarla directamente. La entrada se interpreta como UTF-8 de forma predeterminada, por lo que puedes escribir letras japonesas, griegas o acentuadas como caracteres literales.
Jonathan Kew lo escribió originalmente para SIL International, creado en torno a la tecnología de composición tipográfica Mac de la época, AAT (Apple Advanced Typography); el primer lanzamiento se produjo en abril de 2004 solo para Mac OS X, y luego se convirtió en un motor multiplataforma que también se ejecuta en Windows y Linux. Internamente incluye el conjunto de extensiones e-TeX, por lo que todas las funciones que supone el LaTeX moderno están presentes.
El Xe en el nombre juega con el X final (el χ griego) de TeX invertido: un juego de palabras con "el reverso de TeX". En inglés se lee informalmente como “zee-tech” o “zi-tech”, aunque las pronunciaciones varían.
Un ejemplo mínimo
Aquí está el documento más pequeño que se compila con xelatex. Carga fontspec y establece la fuente del cuerpo con \setmainfont, nombrando la fuente como la conoce el sistema. Las fuentes incluidas, como Latin Modern o TeX Gyre, funcionan sin instalación adicional, pero una fuente OS como Hiragino Mincho ProN tiene el mismo nombre.
\documentclass{article}
\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}
\begin{document}
Hello, \XeTeX! こんにちは、世界。
\[ E = mc^2 \]
\end{document}El punto clave es que no cargues inputenc o fontenc. La entrada UTF-8 y las fuentes Unicode son la base, por lo que los encantamientos de codificación de caracteres que pdfLaTeX necesitaba simplemente desaparecen. Compila con un solo xelatex document.tex (dos veces si tiene referencias cruzadas).
Fuentes: fontspec es la estrella
En la práctica, se alcanza la potencia de fuente de XeTeX a través del paquete fontspec. Puede configurar las fuentes de cuerpo, sans-serif y monoespaciadas como se muestra a continuación, y también puede crear una nueva familia de fuentes para un propósito específico.
\usepackage{fontspec}
\setmainfont{TeX Gyre Pagella}
\setsansfont{TeX Gyre Heros}
\setmonofont{TeX Gyre Cursor}
\newfontfamily\headingfont{TeX Gyre Adventor}fontspec también expone las características de OpenType integradas en una fuente. A través de sus opciones podrás activar ligaduras históricas, versalitas o cifras antiguas, entre otras. Las características que la fuente no incluye simplemente no tienen ningún efecto.
\setmainfont{TeX Gyre Pagella}[
Ligatures = {Common, Historic},
Numbers = OldStyle,
SmallCapsFeatures = {Letters = SmallCaps},
]
% 生の OpenType / Graphite タグを直接指定:
\newfontfamily\swashfont{EB Garamond}[RawFeature = {+swsh}]Para un control más preciso, existen opciones como Renderer (elija el modelador HarfBuzz / AAT / Graphite) y RawFeature (pase directamente las etiquetas de características sin formato de una fuente). Para cambiar la codificación de entrada a mitad del documento, el motor proporciona el \XeTeXinputencoding incorporado. Y cuando desee una fuente matemática Unicode (STIX Two Math, Latin Modern Math,…), combine XeTeX con el paquete unicode-math.
La tubería: XDV a PDF
Donde pdfTeX escribe PDF directamente, XeTeX funciona en dos etapas. El motor primero emite un archivo intermedio XDV (DVI extendido; XeTeX independiente del dispositivo), que el controlador xdvipdfmx incluido convierte en PDF. Por su parte, una sola ejecución de xelatex hace todo, pero internamente estas dos etapas se ejecutan en secuencia (desde la versión 0.997, xdvipdfmx ha sido el controlador predeterminado en todas las plataformas).
Este diseño es importante para \special, opciones dependientes del controlador e inclusión de gráficos. Debido a que xdvipdfmx es lo que realmente produce PDF, cuando un paquete como graphicx necesita un controlador explícito, lo apunta a xetex (es decir, xdvipdfmx). La mayoría de los paquetes detectan automáticamente XeTeX, por lo que rara vez tienes que pensar en ello.
Al depurar, recuerde este proceso de dos etapas. Aunque haya escrito xelatex, los errores relacionados con imágenes, incrustación de fuentes o marcadores PDF a menudo terminan con un mensaje xdvipdfmx en el registro. Lea .log separando la primera línea de error TeX de la línea final del controlador; que le indica rápidamente si el problema es la sintaxis TeX o si el controlador no puede procesar un gráfico o una fuente.
Guiones multilingües y complejos
Una de las razones por las que XeTeX se usa tan ampliamente es su potencia con secuencias de comandos de derecha a izquierda (RTL) y complejas. El XeTeX moderno da forma a los glifos con HarfBuzz (adoptado en la versión 0.9999, en 2013, que reemplaza al antiguo LayoutEngine ICU), por lo que configura correctamente las uniones árabes y las secuencias de comandos ricas en ligaduras.
Para cambiar de idioma se utiliza el paquete polyglossia de la era XeTeX / LuaTeX (el reemplazo del clásico babel). La composición tipográfica RTL es manejada por el paquete bidi, y polyglossia carga bidi automáticamente cuando solicita árabe, hebreo y similares. El chino, el coreano y el japonés (CJK) se manejan con xeCJK, aunque para el japonés específicamente, muchos todavía prefieren LuaTeX-ja (luatexja) o upLaTeX para la escritura vertical y las reglas más precisas de la composición tipográfica japonesa.
XeTeX versus LuaTeX
XeTeX y LuaTeX comparten la misma base moderna (entrada Unicode más fuentes del sistema), pero tienen temperamentos diferentes. XeTeX es más simple y rápido: se adapta a “Solo quiero usar las fuentes OS con Unicode”, y años de uso lo han hecho estable y maduro. LuaTeX, por el contrario, incorpora el lenguaje Lua en el motor de composición tipográfica, lo que le permite programar su comportamiento con gran detalle a través de enlaces de bajo nivel.
La otra cara es que XeTeX no puede ejecutar Lua y tiene menos ganchos de bajo nivel. El desarrollo de nuevas tecnologías tipográficas y maquinaria tipográfica tiende a concentrarse en el lado LuaTeX. Como una división aproximada del trabajo: XeTeX para facilidad y estabilidad, LuaTeX para programabilidad y longevidad.
| Aspecto | XeTeX | LuaTeX |
|---|---|---|
Unicode 入力 | Sí (predeterminado UTF-8) | Sí (predeterminado UTF-8) |
システムフォント | Directamente, a través de fontspec | Directamente, a través de fontspec |
シェーピング | HarfBuzz / AAT / Grafito | HarfBuzz (luaotfload) |
PDF 化 | XDV → xdvipdfmx (dos etapas) | Salida directa |
スクリプト言語 | Ninguno | Lua integrado |
性格 | Sencillo, estable, maduro. | Programable, en evolución |
Cuándo alcanzar XeTeX
- Utilice las fuentes que ya están en su sistema. Nombra una fuente OpenType / TrueType y listo.
- Escribe Unicode literalmente. La entrada UTF-8 es la predeterminada; no se requiere configuración de codificación.
- Establece texto multilingüe/RTL. polyglossia + bidi lo hacen fuerte para árabe, hebreo y más.
- Póngase en marcha de forma rápida y confiable. Poca configuración y un historial largo y estable.
- Considere LuaTeX si necesita una personalización de nivel Lua, o upLaTeX / luatexja para una composición tipográfica japonesa precisa.
Un flujo de trabajo de selección de fuentes más seguro
Las fallas de XeLaTeX generalmente provienen de uno de dos lugares: el nombre de la fuente no es visible para OS, o las expectativas de composición tipográfica japonesa exceden lo que xeCJK debe manejar. Primero compile el documento mínimo con fuentes incluidas, como Latin Modern o TeX Gyre, luego reemplace una fuente a la vez. Si necesita escritura vertical japonesa, buen comportamiento de kinsoku o una clase de japonés proporcionada por el editor, pruebe upLaTeX o LuaLaTeX + LuaTeX-ja con anticipación.
- Para errores
font not found, sospeche de la resolución del nombre de fuente OS antes que TeX. - Para envíos exclusivos de PDF, siempre verifique la incrustación de fuentes.
- Para colaboración, no asuma que todos los OS tienen las mismas fuentes; considere fuentes incluidas como TeX Gyre.