Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/07253.jsonl.gz/1316

Tout utilisateur de LaTeX, ainsi que nous l'avons rappelé Fabien Conus et moi-même lors de notre cours sur LaTeX (très beau, pas cher) aura été confronté à deux handicaps gênants de ce formidable formateur de texte, hérités de son moteur TeX :
- Il faut utiliser des « paquets » spéciaux pour qu'il accepte de gérer les caractères accentués et les langues non latines ;
- Il ne peut pas utiliser directement les polices de votre système d'exploitation.
Mais depuis 2005, est sortie une version du moteur TeX, appelée XeTeX, créée par Jonathan Kew, qui résoud directement ces deux problèmes. Il est basé sur l'encodage de caractères Unicode, qui accepte à peu près tous les caractères et les langues de la création, permet d'utiliser les polices basées sur ce codage, et surtout les polices figurant sur votre système d'exploitation. Avec XeLaTeX, c'est-à-dire la version du langage LaTeX basée sur XeTeX, les connaisseurs du langage LaTeX ont pu quasi immédiatement après la sortie de XeTeX avoir accès à tous ces avantages.
J'ai déjà présenté brièvement XeLaTeX dans la sixième partie de notre cours sur LaTeX, dont je suppose que vous l'avez lue (ou bien que vous vous êtes « débrouillé » en LaTeX), et vais approfondir un peu le sujet dans l'article d'aujourd'hui.
Utiliser XeLaTeX depuis TeXShop
Pour rappel donc, un préambule minimal typique d'un programme XeLaTeX ressemble à ceci si on utilise TeXShop comme interface graphique :
|%!TEX encoding = UTF-8 Unicode

%!TEX TS-program = xelatex
\documentclass{article}
\usepackage{xltxtra}
\usepackage[frenchb]{babel}
\setmainfont{Zapfino}
\begin{document}
Zapfino, c'est chouette !
\end{document}
Ce qui donne ceci après composition :
La première ligne du programme spécifie l'encodage source du texte à TeXShop : il n'y en a que deux possibles avec XeTeX, UTF-8 Unicode et UTF-16 Unicode. C'est le premier le plus largement utilisé, parce qu'il est compatible avec l'ancien standard, ASCII.
Il n'y a guère intérêt à utiliser XeLaTeX avec un autre encodage qu'Unicode. C'est même théoriquement impossible, mais on peut demander au moteur XeTeX de convertir en Unicode un texte avec un ancien encodage, au moyen de la commande \XeTeXinputencoding. Par exemple, si votre programme est en Latin 1, tapez
|\XeTeXinputencoding{iso-8859-1}|
en préambule. Si vous voulez entrer un texte en Mac OS Roman, alors remplacez iso-8859-1 par mac.
La deuxième ligne du programme indique à TeXShop de compiler avec le moteur XeLaTeX. On peut également se servir du menu « Composition » ou configurer les Préférences de TeXShop pour que ce choix soit systématique, mais l'emploi de cette ligne de commande est plus souple, et je le recommande.
On voit également qu'on a chargé le paquet xltxtra : c'est un paquet « magique » fournissant plusieurs commandes, notamment \XeTeX et \XeLaTeX pour imprimer correctement les logos de ces deux programmes, mais son rôle principal est de faire appel à deux autres programmes qu'on peut charger également à part : xunicode qui fournit quelques caractères Unicode supplémentaires (voir ici), et surtout fontspec, de Will Robertson !
Utiliser les polices du système : fontspec
Disons-le tout de suite : utiliser XeLaTeX sans fontspec ne présente aucun intérêt. C'est en effet ce paquet qui permet l'utilisation des polices du système d'exploitation. On en voit un exemple dans notre programme : la commande \setmainfont{Zapfino} permet de charger la fonte Zapfino qui sera la principale fonte du programme.
Mais on peut raffiner ces appels de fontes, par exemple en chargeant distinctement une fonte romane, une fonte sans serif et une fonte à chasse fixe. Supposons que nous voulons utiliser la fonte romane Times New Roman avec la fonte sans serif Helvetica Neue et la fonte à chasse fixe Courier, nous le ferons avec les commandes \setromanfont{Times New Roman}, \setsansfont{Helvetica Neue} et \setmonofont{Courier} à placer en préambule.
Pour que ça marche, il suffit que ces fontes soient installées dans votre système d'exploitation, sous les noms donnés en argument des commandes, dans les arborescences prévues par Mac OS X pour elles (i.e. les différents dossiers « Fonts » de vos « Bibliothèques »). À vérifier si nécessaire !
Pour plus de détails sur les nombreuses commandes fournies par fontspec, je vous renvoie à son excellente documentation, en anglais.
Si vous chargez fontspec sans utiliser une de ses commandes de chargement de fontes, ce seront les fontes LaTeX classiques Latin Modern qui seront chargées, ou plus précisément les versions Unicode de celles-ci, qui se trouvent dans votre installation LaTeX (je présume qu'il s'agit de MacTeX). Un excellent choix par défaut, qui fournit par ailleurs de très bonnes polices mathématiques en complément.
Cas particulier des polices de caractères mathématiques
Mais nous arrivons ici à une des lacunes de XeLaTeX : son traitement des fontes mathématiques. En chargeant fontspec, je l'ai dit, on se retrouve par défaut avec les fontes mathématiques des fontes Latin Modern. Ce qui sera encore le cas si, par exemple, vous chargez Times New Roman comme fonte de texte de base. Le problème est qu'un texte en Times et des maths en Latin Modern, ça ne « rend » pas très bien. Il faut donc trouver des fontes mathématiques « kivonbien » avec Times. Mais voilà, elles doivent être des fontes Unicode.
À ma connaissance, il n'y a qu'un seul ensemble de fontes Unicode comprenant Times et contenant un ensemble complet de symbole mathématiques : les fontes Stix. Les seuls autres ensembles Unicode (outre Latin Modern bien sûr) fournissant un accompagnement mathématique acceptable sont les fontes Cambria Math (de Microsoft, sous-ensemble des fontes complètes Cambria) et leur alternative libre Asana Math. Je n'ai pu tester aucune de ces fontes moi-même pour le moment. C'est le paquet unicode-math de Will Robertson (encore lui) qui est censé permettre l'utilisation de ces fontes mathématiques. Je serai ravi d'avoir des retours d'expérience sur ce paquet et ces fontes, comme celui-ci !
Bref, pour ceux qui veulent profiter de la richesse des ensembles cohérents de fontes textes+maths existant pour « l'ancien » LaTeX (voir cet article), il vous faudra soit utiliser XeLaTeX sans Fontspec (ce qui n'a rien d'intéressant), soit revenir justement au LaTeX standard, c'est-à-dire pdfLaTeX.
Gestion des langues : polyglossia versus babel
Dans l'échantillon de programme donné plus haut, nous avons également chargé le paquet standard babel avec l'option frenchb pour avoir un traitement cohérent du texte en français. Mais le paquet babel n'a pas du tout été prévu pour XeLaTeX ! D'expérience, cependant, il fonctionne bien avec XeLaTeX pour toute langue utilisant l'alphabet latin. Mais rien ne garantit que ce sera le cas pour une langue utilisant un autre alphabet ou un autre sens d'écriture, tel l'hébreu, le russe, le mandarin ou l'arabe… Dans ce cas il est indiqué d'utiliser le paquet polyglossia, dont voici un lien vers la documentation.
Lacune : microtypographie limitée
Nous arrivons ici à LA lacune de XeLaTeX : l'absence par défaut de traitement de la microtypographie, c'est-à-dire de traitement typographique ultra-précis du texte visant à améliorer son « gris typographique » (en gros, l'occupation optimale de la zone de texte sur la feuille).
Deux exemples de propriétés microtypographiques sont la « protrusion » et « l'expansion » des fontes. La protrusion augmente très légèrement les espaces inter-mots sur une ligne de façon à ce que chaque ponctuation se trouvant en fin de ligne soit légèrement décalée vers la droite et déborde tout aussi légèrement dans la marge. L'expansion de fontes s'occupe d'agrandir ou de rétrécir localement la place en largeur prise par chaque caractère, à une échelle indétectable à l'œil, mais de façon à réduire ou augmenter d'éventuels espaces inter-mots trop grandes ou trop courtes selon les canons typographiques. Ce qui permet également de réduire le nombre de mots coupés en fin de ligne. Ces deux propriétés améliorent considérablement le gris typographique d'un document de texte dense.
La protrusion et l'expansion de fontes (et d'autres propriétés microtypographiques) sont rendues accessibles par le moteur pdfTeX utilisé par pdfLaTeX, et c'est le paquet microtype qui permet à l'utilisateur de pdfLaTeX de les utiliser. Un simple chargement de ce paquet permet d'utiliser la protrusion et l'expansion de fontes dans votre texte. Essayez, simplement en introduisant la ligne
|\usepackage{microtype}|
dans un de vos programmes pdfLaTeX contenant un texte suffisamment important, et vous verrez la différence… Je vous recommande chaudement de lire la documentation de ce paquet (en anglais), claire et passionnante.
Hélas, XeTeX ne permet pas, par défaut, ces propriétés microtypographiques, et donc microtype, tel quel, ne fonctionnera pas avec XeLaTeX. D'après ce que j'ai pu comprendre (un vrai expert me corrigera si besoin), contrairement à pdfLaTeX où c'est le moteur pdfTeX qui se charge de l'essentiel des propriétés microtypographiques, ce traitement est surtout l'apanage des fontes elles-mêmes avec XeTeX, et jusqu'il y a peu ce dernier ne savait pas les stimuler en ce sens. Il semblerait cependant que la dernière version de XeTeX permette la protrusion de caractères (voyez ce sujet de discussion), mais je n'ai pas encore vérifié où cela en est.
Quel avenir ?
Au moment de sa sortie, XeTeX et XeLaTeX étaient attendus depuis très longtemps par la communauté TeX : enfin une version de (La)TeX permettant d'utiliser n'importe quel caractère et n'importe quelle langue, et toutes les polices du système ! Seule l'absence d'ensembles de fontes Unicode texte+maths cohérents et de traitement microtypographique pouvait représenter un frein à son adoption, mais on l'a vu, cela est en train de changer. Et son utilisation s'est popularisée dernièrement, particulièrement dans le milieu des linguistes et des utilisateurs de langues à alphabet non latin.
Mais un concurrent très sérieux se présente à XeTeX : il s'agit de LuaTeX, un nouveau moteur destiné à remplacer pdfTeX, et déjà utilisable avec MacTeX 2010. LuaTeX utilise également Unicode, permet également l'utilisation des polices du système, et last but not least présente déjà un traitement microtypographique très complet. Ce sera l'objet d'un prochain article…
En attendant, ceux qui veulent tout savoir de XeTeX et XeLaTeX devront se pencher, outre sur le manuel de fontspec déjà évoqué, sur le XeTeX Companion de Michel Goossens, en cours de rédaction, mais déjà très intéressant !