# XeTeX

XeTeX est un logiciel de mise en page dérivé de TeX qui utilise Unicode et les technologies modernes de polices de caractères telles que OpenType et Apple Advanced Typography. Initialement développé pour Mac OS X, il est maintenant multiplate-forme. Les fichiers sources sont, par défaut, en UTF-8.

## Historique

XeTeX est publié initialement seulement pour Mac OS X en avril 2004, avec l’implémentation du support pour Unicode et AAT. En 2005, le support pour OpenType est rajouté. Durant la conférence BachoTeX 2006, une version pour Linux est annoncée, qui est portée pour Windows par Akira Kakuto quelques mois plus tard.
XeTeX est inclus dans la distribution TeX Live 2007 pour les principales plateformes, ainsi que dans MiKTeX à partir de la version 2.7. Lors de l’inclusion dans TeXLive, XeTeX est compatible avec la plupart des macro des paquets LaTeX, et les polices de caractères OpenType, TrueType et PostScript, sans configuration particulière. La version 0.998, annoncée lors de BachoTeX 2008, apporte le support de la normalisation Unicode via la macro \XeTeXinputnormalization. La version 0.9999 sort en mai 2013, et change quitte le moteur de rendu ICU au profit de HarfBuzz pour les rendus OpenType, Graphite2 pour les rendus Graphite, et choisit Core Text pour remplacer ATSUI sur Mac OS X.

## Mode de fonctionnement

XeTeX génère le document de sortie, au format PDF, en deux étapes à partir du fichier source LaTeX. Au cours de la première partie du traitement, un fichier DVI est créé, qui est ensuite converti en PDF par un pilote.
Dans le cas du fonctionnement par défaut, le fichier DVI est envoyé directement au pilote PDF, sans produire de fichiers intermédiaires consultables par l’utilisateur. Il est possible d’exécuter seulement la première étape et de sauvegarder le DVI.
Pour générer le PDF dans la seconde étape, deux pilotes sont disponibles :
* xdv2pdf, basé sur les frameworks ATSUI et QuickTime, qui fonctionne uniquement avec Mac OS X,
* xdvipdfmx, une version modifiée de dvipdfmx utilisant FreeType, et qui fonctionne sur toutes les plateformes.
À partir de la version 0.997, le pilote par défaut est xdvipdfmx pour toutes les plateformes. Puis, à partir de la version 0.9999, xdv2pdf n’est plus supporté, car son développement a cessé.
XeTeX fonctionne avec les macros LaTeX et ConTeXt. Pour LaTeX, la commande associée est xelatex. Le paquet fontspec est généralement appelé pour sélectionner la police du document, et permettre aux polices choisies d’être nommées et réutilisées. Ce paquet permet également d’utiliser différents types de ligatures typographiques. L’utilisation du paquet arabxetexpermet le rendu des langues s’écrivant de droite à gauche.

## Exemple

Ceci est un exemple de source XeLaTeX avec le rendu. La police utilisée est Linux Libertine.
| \documentclass[11pt]{article} \usepackage{fontspec} \usepackage{xltxtra} \setmainfont[Mapping=tex-text]{Linux Libertine O} \begin{document} \section{Unicode support} \subsection{English} All human beings are born free and equal in dignity and rights. \subsection{Íslenska} Hver maður er borinn frjáls og jafn öðrum að virðingu og réttindum. \subsection{Русский} Все люди рождаются свободными и равными в своем достоинстве и правах. \subsection{Tiếng Việt} Tất cả mọi người sinh ra đều được tự do và bình đẳng về nhân phẩm và quyền lợi. \subsection{Ελληνικά} Ὅλοι οἱ ἄνθρωποι γεννιοῦνται ἐλεύθεροι καὶ ἴσοι στὴν ἀξιοπρέπεια καὶ τὰ δικαιώματα. \section{Legacy syntax} When he goes---``Hello World!''\\ She replies—“Hello dear!” \section{Ligatures} \fontspec[Ligatures={Common, Historic}]{Linux Libertine O Italic} \fontsize{12pt}{18pt}\selectfont Questo è strano assai! \section{Numerals} \fontspec[Numbers={OldStyle}]{Linux Libertine O}Old style: 1234567\\ \fontspec[Numbers={Lining}]{Linux Libertine O}Lining: 1234567 \end{document} | Le texte compilé. |
À noter que le package xltxtra est désormais considéré comme redondant par rapport au package fontspenc notamment, qui permet de gérer les différents typographies comme Open Type ou Apple Advanced Typography.

### Ligatures historiques

Un autre exemple, avec des ligatures à l'ancienne :