\engines{comparison}

XeLaTeX ou pdfLaTeX

Les deux moteurs produisent des PDF de haute qualité, mais avec des compromis différents. Ce guide couvre toutes les différences significatives pour que vous choisissiez le bon moteur pour chaque document.

pdfLaTeX— rapide et universelXeLaTeX— Unicode et polices système
Utilisez pdfLaTeX quand…
  • La vitesse compte (moteur le plus rapide)
  • Texte latin standard
  • Vous avez besoin d'une compatibilité maximale avec les paquets
  • Le crénage/la protrusion microtype est requis
Utilisez XeLaTeX quand…
  • Texte Unicode / non latin (arabe, chinois, grec…)
  • Vous avez besoin de polices système ou OpenType
  • Polices mathématiques modernes (XITS Math, Libertinus)
  • Mise en page de texte RTL ou bidirectionnelle

\section{Différences techniques}

Ce qui diffère vraiment sous le capot

Unicode et encodage des entrées

pdfLaTeX

pdfLaTeX est antérieur à Unicode et traite les fichiers source comme des flux d'octets 8 bits. Vous devez déclarer \usepackage[utf8]{inputenc} pour gérer l'entrée UTF-8, et \usepackage[T1]{fontenc} pour un encodage de sortie correct. Les caractères hors de l'encodage T1 nécessitent des paquets supplémentaires.

XeLaTeX

XeLaTeX repose sur un moteur Unicode. Il lit l'UTF-8 nativement : aucune déclaration inputenc ou fontenc n'est nécessaire. Tous les caractères Unicode sont disponibles dès lors que la police choisie couvre le point de code.

Chargement des polices

pdfLaTeX

pdfLaTeX utilise des métriques de police TeX (fichiers .tfm) et des polices Type 1 ou OTF préinstallées dans la distribution TeX. Vous ne pouvez pas charger une police système arbitraire par son nom : seules les polices empaquetées pour TeX sont accessibles.

XeLaTeX

XeLaTeX accède aux polices via l'API de polices du système d'exploitation. Avec fontspec, vous pouvez charger n'importe quelle police installée par son nom : \setmainfont{Fira Sans} . Les fonctionnalités OpenType (ligatures, petites capitales, axes variables) sont directement accessibles.

Vitesse de compilation

pdfLaTeX est systématiquement le moteur le plus rapide, environ 2 fois plus rapide que XeLaTeX sur des documents équivalents. L'écart se réduit sur les gros documents très mathématiques et s'élargit sur les documents riches en polices, où XeLaTeX doit résoudre les chemins des polices système.

pdfLaTeX

~0.8s

document typique en une passe

XeLaTeX

~1.5s

document typique en une passe

Compatibilité des paquets

pdfLaTeX

Des décennies de paquets ont été écrits en prenant pdfLaTeX comme moteur de référence. Des paquets comme microtype, pdfpages et la majorité des paquets CTAN fonctionnent pleinement. Attendez-vous à une compatibilité quasi universelle.

XeLaTeX

La plupart des paquets fonctionnent avec XeLaTeX, mais certains ont une prise en charge limitée ou nulle, en particulier ceux qui s'accrochent aux composants internes de polices propres à pdfLaTeX. microtype fonctionne dans XeLaTeX mais perd la protrusion et l'expansion des caractères.

Mathématiques

Les deux moteurs produisent d'excellents résultats mathématiques. pdfLaTeX utilise la pile classique de polices mathématiques Computer Modern / AMS. XeLaTeX la prend aussi en charge, mais donne en plus accès aux polices mathématiques OpenType via unicode-math, dont XITS Math, Libertinus Math et STIX Two Math. Pour les documents mêlant caractères Unicode et mathématiques (par ex. des lettres grecques en ligne), XeLaTeX est le choix naturel.

\subsection{Matrice des fonctionnalités}

Comparaison côte à côte

Fonctionnalité
pdfLaTeX
XeLaTeX
Entrée Unicode
Via inputenc
Native
Polices système
Non
Oui (fontspec)
Vitesse de compilation
Rapide (~0.8s)
Modérée (~1.5s)
Compat. des paquets
Excellente
Bonne
Mathématiques OpenType
Non
Oui (unicode-math)
Langues RTL
Limitée
Oui (bidi)
Microtype
Prise en charge complète
Limitée
Par défaut dans la plupart des modèles
Oui
Non

\begin{examples}

Exemples minimaux fonctionnels

Les deux exemples se compilent avec FormaTeX. Essayez-les directement dans le 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}

Paquets clés pour chaque moteur

Paquets pdfLaTeX

inputenc

Encodage d'entrée (requis pour l'UTF-8 dans pdfLaTeX)

fontenc

Encodage des polices : T1 pour l'Europe occidentale

microtype

Améliorations microtypographiques ; meilleur avec pdfLaTeX

babel

Prise en charge multilingue et césure

Paquets XeLaTeX

fontspec

Charge n'importe quelle police système ou OpenType par son nom

unicode-math

Polices mathématiques Unicode (XITS Math, Libertinus Math)

polyglossia

Prise en charge multilingue moderne, remplace babel

bidi

Mise en page de texte bidirectionnelle (hébreu, arabe, etc.)

\section{Migration}

Passer de pdfLaTeX à XeLaTeX

La plupart des documents pdfLaTeX se compilent avec XeLaTeX après un petit ajustement du préambule. Avec FormaTeX, il suffit de modifier le paramètre "engine" dans votre appel d'API, puis d'adapter votre préambule en conséquence.

Supprimer
\usepackage[utf8]{inputenc}

XeLaTeX lit l'UTF-8 nativement : inputenc n'est pas nécessaire

Supprimer
\usepackage[T1]{fontenc}

fontenc est un paquet propre à pdfLaTeX

Ajouter
\usepackage{fontspec}

Requis pour charger les polices système dans XeLaTeX

Facultatif
\usepackage{unicode-math}

Active les polices mathématiques OpenType comme XITS Math

À envisager
\usepackage{polyglossia}

Remplace babel pour les documents multilingues

\subsection{Utilisation de l'API}

Choisir le moteur via l'API FormaTeX

Changer de moteur se fait en modifiant un seul champ. Les deux moteurs sont disponibles sur tous les plans, sans configuration supplémentaire.

Choix du moteur via l'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

Remplacez "engine": "xelatex" par "engine": "pdflatex" pour changer de moteur. Consultez le guide complet des moteurs pour les quatre moteurs pris en charge.

Changez de moteur à tout moment

Compilez avec n'importe quel moteur en quelques secondes

FormaTeX exécute pdfLaTeX, XeLaTeX, LuaLaTeX et latexmk. Une clé API, aucune infrastructure.