\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.
- 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
- 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
\begin{examples}
Exemples minimaux fonctionnels
Les deux exemples se compilent avec FormaTeX. Essayez-les directement dans le playground.
% 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 — 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
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
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.
\usepackage[utf8]{inputenc}XeLaTeX lit l'UTF-8 nativement : inputenc n'est pas nécessaire
\usepackage[T1]{fontenc}fontenc est un paquet propre à pdfLaTeX
\usepackage{fontspec}Requis pour charger les polices système dans XeLaTeX
\usepackage{unicode-math}Active les polices mathématiques OpenType comme XITS Math
\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.
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.pdfRemplacez "engine": "xelatex" par "engine": "pdflatex" pour changer de moteur. Consultez le guide complet des moteurs pour les quatre moteurs pris en charge.
Compilez avec n'importe quel moteur en quelques secondes
FormaTeX exécute pdfLaTeX, XeLaTeX, LuaLaTeX et latexmk. Une clé API, aucune infrastructure.

