Profitez des offres Memoirevive.ch!
XeLaTeX et LuaLaTeX, suite et fin : fontes mathématiques OpenType

Cher et estimé lecteur, je dois commencer par vous avertir selon les usages en vigueur pour ce genre d'articles : ce qui suit se destine à ceux qui s'intéressent au langage de composition de texte LaTeX, et qui en ont une certaine connaissance, même minimale. À toutes fins utiles, je rappelle que Fabien Conus et moi-même avons produit sur ce site même une Introduction à LaTeX sous Mac OS X, qui pourrait intéresser, au moins pour son premier chapitre, ceux qui parmi vous se demandent ce que diable peut être ce LaTeX, si ce n'est pas le caoutchouc.

Il y a deux ans environ j'avais fait une présentation des principales polices de caractères utilisables par LaTeX, et plus précisément par pdfLaTeX, la version de LaTeX la plus répandue aujourd'hui, qui tourne sur le « moteur » pdfTeX. Mes deux derniers articles, eux, présentaient les versions de LaTeX tournant sur des « moteurs » plus récents, XeTeX et LuaTeX, tous deux basés sur l'encodage de caractères Unicode et permettant l'utilisation directe des polices modernes (TrueType, OpenType, AAT…), aussi bien celles figurant dans la distribution TeX courante que celles du système d'exploitation : XeLaTeX et LuaLaTeX.

J'avais constaté à ce moment-là que pour les utilisateurs de fontes mathématiques, ces deux versions de LaTeX n'avaient encore guère d'intérêt, vu le peu de fontes mathématiques OpenType, le type de fontes texte le plus en vogue actuellement. Fontes que d'ailleurs je n'avais pas eu l'occasion de tester. Mais maintenant c'est fait, et je dois dire qu'elles offrent des perspectives très encourageantes !

En effet, certaines fontes OpenType complètes (texte + maths) existent déjà bien, et sont parfaitement utilisables. J'en ai recensé trois, dont deux gratuites : Asana Math (entièrement libre) et STIX (sous licence particulière). La troisième, Cambria Math, est livrée avec la suite Office et propriété de Micro$oft, et comme je refuse par principe d'avoir la suite Office sur mes bécanes, je n'ai pas pu la tester. Il n'est pas exclu que d'autres fontes mathématiques OpenType existent et m'aient échappé, n'hésitez pas à me le signaler le cas échéant !

Rappelons que la fonte de caractères utilisée par défaut par XeLaTeX et LuaLaTeX (via le package fontspec) est Latin Modern. C'est certes une fonte OpenType pour le texte courant, mais pas (pas encore) pour les mathématiques, pour lesquelles elle se rabat sur la bonne vieille fonte Computer Modern (sa version PostScript précisément), d'excellente qualité mais d'encodage désuet. Les concepteurs de la fonte Latin Modern prévoient bien à terme de passer également à l'OpenType pour la partie mathématique de leur fonte, mais ce n'est pas encore d'actualité.

Au juste, quel intérêt pratique présente une fonte OpenType pour les maths ? Pour ma part, je n'en vois encore qu'un seul, mais il est considérable : le nombre de commandes LaTeX à entrer pour obtenir les symboles est drastiquement diminué. Si le symbole en question existe sur votre clavier ou (moins pratique) dans votre palette de caractères, il suffit de l'entrer directement, et hop, LuaLaTeX ou XeLaTeX le reconnaît ! C'est en effet l'avantage des fontes OpenType, elles sont encodées Unicode, c'est-à-dire qu'elles peuvent contenir à peu près n'importe quel symbole…

Nous allons voir ce que cela donne sur deux exemples, exécutés ici avec LuaLaTeX et une version de TeX Live 2010 récemment mise à jour. Que ce soit avec LuaLaTeX ou avec XeLaTeX, il faut charger un paquet particulier pour utiliser une fonte mathématiques Opentype, quelle qu'elle soit : unicode-math. Ce paquet en charge également un autre, fontspec, dont je rappelle qu'il est indispensable dès qu'il s'agit d'utiliser les polices du système, ou, plus généralement, les polices TrueType, OpenType, AAT, etc, avec XeLaTeX ou LuaLaTeX.

Pour utiliser la fonte STIX, laquelle est adaptée à la fameuse fonte texte romane Times, il faut charger les paquets XITS pour le texte et XITS Math pour les maths (on l'aurait deviné). En fait, XITS est une version de STIX rendue compatible avec l'OpenType Math Table. Ne connaissant pas grand'chose aux tables OpenType, ce que j'en retiens est que XITS rend STIX compatible avec le paquet unicode-math :-). Apparemment l'auteur de XITS n'a pas pu employer directement le nom « STIX » pour d'obscures histoires de licences. On lira attentivement ceci pour plus de détails…

% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = LuaLaTeX
\documentclass[12pt]{article}
\usepackage{unicode-math}
\setmainfont{XITS}
\setmathfont{XITS Math}
\begin{document}
Un calcul de série entière :
\[
      ∑_{n=0}^\frac{α^n}{n!} = e^α
\]
\end{document}

Noter le nombre de commandes LaTeX réduit au minimum dans la partie maths. Plus de commandes \alpha, \sum, ou \infty, mais des symboles entrés directement, au clavier ou via la palette, ce qui rend le codage plus simple et surtout améliore grandement sa lisibilité ! Bien entendu, on peut toujours utiliser les commandes LaTeX en lieu et place des symboles, et c'est certainement plus rentable à la longue que de cliquer sans arrêt dans la palette de caractères, mais il est encore plus pratique d'entrer directement les symboles au clavier lorsque c'est possible !

Résultat de ce code :

image

Times étant une des polices les plus populaires au monde, la fonte STIX est quasi certainement destinée à être l'une des plus utilisées par les revues scientifiques du monde entier…

À noter que la fonte XITS, si elle est immédiatement utilisable avec LuaLaTeX, ne fonctionne avec XeLaTeX que lorsqu'elle est installée (par l'utilisateur) dans l'arborescence des fontes du système d'exploitation. Bizarrement, en effet, XeTeX ne parvient pas à la retrouver dans la distribution TeX Live 2010, alors qu'elle s'y trouve pourtant. Bug de XeTeX, ou bug du paquet XITS, mystère.

La fonte Asana Math, elle, est construite à partir de la fonte mathématique PXfonts conçue pour le LaTeX classique, et elle est donc adaptée comme PXfonts à la fonte de texte Palatino. J'ai donc, parallèlement à cette fonte, chargé la police TeX Gyre Pagella, qui est une version OpenType de Palatino. J'ai également présenté ces fontes LaTeX dans l'article cité plus haut.

% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = LuaLaTeX
\documentclass[12pt]{article}
\usepackage{unicode-math}
\setmainfont{TeX Gyre Pagella}
\setmathfont{Asana Math}
\begin{document}
Un calcul de série entière :
\[
      ∑_{n=0}^\frac{α^n}{n!} = e^α
\]
\end{document}

Résultat :

image

Le problème de cette fonte est qu'elle « reprend » les défauts de PXfonts, en particulier une écriture trop serrée. Voyez l'exponentielle ci-dessus pour vous en convaincre. Autrement, pour un papier ne devant pas être publié, cela reste une fonte tout-à-fait convenable.

À partir de ces deux programmes-canevas, il vous sera loisible de procéder à vos propres essais, pour voir si ces fontes vous agréent. N'hésitez pas à me faire part de vos remarques et éventuels problèmes : cela m'intéresserait beaucoup d'avoir des retour d'expérience sur ces polices, et également sur les Cambria Math que je n'ai pas pu tester.

Voilà qui termine cet article sur les fontes mathématiques actuellement disponibles en OpenType, article qui complète mes présentations de XeLaTeX et LuaLaTeX. J'espère que je vais pouvoir tester d'autres polices bientôt. Je peux en effet vous révéler en exclusivité mondiale (jouez hautbois, résonnez musettes !) que j'ai en projet de mettre à nouveau à jour et refondre l'Introduction à LaTeX sous Mac OS X de Fabien Conus et moi-même, en vue d'y inclure la plupart des articles sur LaTeX que j'ai présentés sur ce site. C'est un travail de longue haleine, et je me donne deux à trois mois pour l'effectuer. Bien entendu, XeLaTeX et LuaLaTeX auront une place de choix dans cette nouvelle version !

13 commentaires
1)
jpg
, le 06.07.2011 à 00:33
[modifier]

Un tout grand merci pour cette série d’articles fort utiles aux utilisateurs de LateX &Co. Nous attendons avec impatience (jouez au bois, raisonnez Muzette) la remise à jour de l’introduction à Latex.

2)
JPO1
, le 06.07.2011 à 07:33
[modifier]

bonjour je viens de lire rapidement votre article.

Vous avez résolu un problème que je rencontrais dans le essais de LuaLaTeX : une erreur lorsque j’utilisais $:$ pour écrire les heures comme 09:00. Unicode-math vient de me permettre cette écriture.

Merci ps : si j’ai le temps je commenterai l’écriture des mathématiques

3)
flup
, le 06.07.2011 à 08:20
[modifier]

Merci pour cet article (et tous les autres sur le sujet). De mon côté, j’espère avoir un peu de temps cet été pour poursuivre l’écriture d’un package permettant l’utilisation des polices musicales à l’intérieur du texte : les polices musicales sont habituellement de petite taille. Il faut donc les agrandir fortement, ce qui du coup agrandit l’interlignage. Il faut donc les intégrer au texte d’une autre façon, d’où la nécessité d’un package (sans compter que certains symboles musicaux sont une combinaison de plusieurs symboles de base).

4)
Guillôme
, le 06.07.2011 à 10:40
[modifier]

Si le symbole en question existe sur votre clavier ou (moins pratique) dans votre palette de caractères, il suffit de l’entrer directement, et hop, LuaLaTeX ou XeLaTeX le reconnaît !

Raah mais c’est révolutionnaire!

Bientôt, avec LaTeX, on pourra écrire son texte directement sans commandes spécifiques et l’aspect à l’écran sera presque pareil qu’à l’impression!

Quoi? Vous avez dit Word?

Mais non, je plaisante Franck :p

Merci pour cet article même si je ne me suis jamais aventuré hors du couple LaTeX / pdfTeX que je suis très loin de maitriser et qui suffit à mes besoins.

5)
Franck Pastor
, le 06.07.2011 à 10:57
[modifier]

Bientôt, avec LaTeX, on pourra écrire son texte directement sans commandes spécifiques et l’aspect à l’écran sera presque pareil qu’à l’impression!

Quoi? Vous avez dit Word?

Mais non, je plaisante Franck :pMerci pour cet article même si je ne me suis jamais aventuré hors du couple LaTeX / pdfTeX que je suis très loin de maitriser et qui suffit à mes besoins.

Ben oui, c’est révolutionnaire, Môssieur Mauvaise langue :-b parce que maintenant on peut avoir le meilleur des deux mondes : la lisibilité du code source et le parfait rendu du document produit.

Ce n’est pas un reproche que tu faisais à LaTeX, que les fichiers sources soient illisibles ? Hé bien maintenant c’est beaucoup moins le cas si tu utilises XITS ou Asana Math. Évidemment, il faut accepter dans ce cas de perdre du temps à chercher le bon symbole dans la Palette de caractères. Mais à chacun de voir comme il veut. Même en excluant la Palette de caractères, on a déjà un bon paquet de symboles accessibles directement par le clavier, il suffit d’apprendre où ils se trouvent, et une fois que c’est enregistré c’est déjà un sacré temps de gagné.

Je réalise que je n’ai pas parlé d’un autre avantage pratique, c’est que les copier-coller d’une formule mathématique d’un document Word-PDF-odt vers un document source LaTeX est considérablement simplifié !

Moi, dès que Latin Modern (ma fonte préférée) passe à l’Unicode pour ses fontes mathématiques, je vais certainement passer à XeLaTeX ou LuaLaTeX, plus probablement ce dernier en raison de son support de Microtype, son inclusion de Lua et de MetaPost.

À mon avis, si tu ne tiens pas particulièrement à Latin Modern, tu peux envisager de passer à XeLaTeX-LuaLaTeX et la fonte XITS pour tes nouveaux documents. Tes anciens fichiers, tu pourras toujours les composer tels quels ou presque, et tes nouveaux seront plus lisibles à la relecture.

6)
Renan Fuhrimann
, le 06.07.2011 à 13:54
[modifier]

Merci pour cet article encore une fois très intéressant.

Petite question hors sujet : la distribution MacTex 2010 est compatible avec Lion ? Où est-ce que je vais être bon pour faire une clean install en attendant la distribution 2011 ?

7)
Franck Pastor
, le 06.07.2011 à 14:09
[modifier]

Que MacTeX 2010 soit compatible Lion, je n’en sais rien a priori, mais ça m’étonnerait qu’elle ne le soit pas. Mais MacTeX 2011 le sera de toutes façons, et sa sortie comme celle de TeX Live 2011 sont imminentes. Comme il est dit sur cette page: 5jul11: deliver final images for the TeX Collection DVD. Il semblerait que je connaisse le sujet de mon prochain article :-)

9)
Guillôme
, le 06.07.2011 à 14:56
[modifier]

sa sortie comme celle de TeX Live 2011 sont imminentes

Bigre, et moi qui n’est toujours pas fait la mise à jour 2010… C’est grave docteur?

D’ailleurs, petite question bête, comment fait-on pour enlever les anciennes versions sans tout casser pour éviter d’avoir dans les préférences LaTeX, la liste MacTeX 1977, MacTeX 2009, MacTeX 2024…?

10)
Franck Pastor
, le 06.07.2011 à 15:34
[modifier]

D’ailleurs, petite question bête, comment fait-on pour enlever les anciennes versions sans tout casser pour éviter d’avoir dans les préférences LaTeX, la liste MacTeX 1977, MacTeX 2009, MacTeX 2024…?

On me la pose décidément souvent, cette question :-) Si je place une liste de FAQ quelque part dans la future version de l’Introduction à LaTeX, elle y sera sûrement !

Pour effacer les anciennes distributions TeX Live elles-mêmes, ça se fait par le Terminal. Par exemple, pour TeX Live 2009 :

sudo rm -r /usr/local/texlive/2009

Les autres applications sont automatiquement mises à jour (et donc leur ancienne version écrasée) lors de l’installation du nouveau MacTeX.

11)
Guillôme
, le 06.07.2011 à 16:37
[modifier]

ça se fait par le Terminal.

Pourquoi le terminal? On ne peut pas faire Aller à dans le finder avec le chemin usr/ puis supprimer le dossier 2009 dans /local/texlive/ ? (Os X demandant le password admin)

Ou mieux, en y allant directement si on a activé à visible dans le Finder les fichiers/répertoires cachés avec TinkerTools par exemple ;)

12)
Franck Pastor
, le 06.07.2011 à 19:27
[modifier]

Pourquoi le terminal? On ne peut pas faire Aller à dans le finder avec le chemin usr/ puis supprimer le dossier 2009 dans /local/texlive/ ? (Os X demandant le password admin)

Ou mieux, en y allant directement si on a activé à visible dans le Finder les fichiers/répertoires cachés avec TinkerTools par exemple ;)

Si, bien sûr, mais (sauf si on a vraiment la phobie du Terminal) ça ne simplifie pas particulièrement la tâche, et… c’est plus long à expliquer ;-)