David Madore's WebLog: TeX + Unicode → Omega, Aleph, XeTeX, LuaTeX ?

Index of all entries / Index de toutes les entréesXML (RSS 1.0) • Recent comments / Commentaires récents

Entry #1451 [older|newer] / Entrée #1451 [précédente|suivante]:

(mardi)

TeX + Unicode → Omega, Aleph, XeTeX, LuaTeX ?

Comme les lecteurs réguliers de ce blog le savent bien, il m'arrive d'écrire des petits textes littéraires que j'appelle fragments littéraires gratuits. Et comme n'importe qui ayant lu quelques-uns d'entre eux l'aura forcément remarqué, je me gargarise prends un plaisir tout particulier à faire usage de courtes citations dans toutes sortes de langues — et en particulier dans toutes sortes d'alphabets non latins. (Je vois ça comme un hommage d'écrivain à la multiplicité des formes d'écriture inventés par l'Homme : que ceux qui ne savent pas lire cinquante langues se rassurent, moi non plus, et ce n'est jamais nécessaire pour comprendre le fragment.) Tant qu'il s'agit de faire de mes fragments littéraires une page HTML (lien ci-dessus), pas de difficulté : en HTML on peut librement utiliser le jeu de caractères universel Unicode, qui contient tous les alphabets dont j'ai envie (et bien d'autres), sauf le tengwar mais même pour ça on s'en sort en utilisant une région à usage privé — et c'est le boulot du navigateur qui est en face d'arriver à transformer le HTML que j'écris en quelque chose d'affichable à l'écran (notamment, c'est au lecteur qu'il appartient d'avoir les bonnes polices).

L'ennui, c'est que je veux aussi en générer (et si possible : de façon complètement automatisée) une version PDF, c'est-à-dire déjà mise en page et prête à l'impression, avec une typographie décente (voire, de qualité), avec une table des matières et tout et tout ; demander à un navigateur Web de faire le travail de mise en page (en imprimant vers du PDF) fournit, quel que soit le navigateur utilisé, un truc inacceptable.

Pour mettre en page de jolis documents, la solution — malheureusement fort archaïque — qui semble encore la meilleure, c'est (La)TeX (le logiciel de mise en page universellement utilisé, notamment, dans le monde de l'édition mathématique). Hélas, TeX a été conçu bien des années avant qu'Unicode ne dissipe par sa lumière bienfaisante les ténèbres de la confusion qui régnaient sur le monde des jeux de caractères, et par conséquent il ne connaît rien de tout ça. Et il n'est vraiment pas prévu pour les écritures allant de droite à gauche. Bien entendu, des polices et des jeux de macros (packages) LaTeX ont été créés pour taper du russe, du japonais, du grec, et même du sanskrit, de l'arabe, de l'hébreu et encore quantité d'autres langues (dont, d'ailleurs, les hiéroglyphes égyptiens — qui ne sont pas dans Unicode et ne sont hélas pas près d'y entrer). Mais ces packages se mélangent mal entre eux et il ne faut pas espérer pouvoir faire facilement un document mélangeant toutes ces langues : or c'est précisément ce que j'ai envie de faire.

Heureusement, tout de même, le monde de TeX n'a pas l'intention de rester indéfiniment privé de la clarté d'Unicode. Il y a plusieurs projets (naturellement subtilement semblables et pourtant profondément incompatibles) qui prétendent enrichir TeX, soit en adaptant le moteur sous-jacent soit en lui ajoutant toute une couche de macros, pour le rendre plus « Unicode-aware ». Parmi ces projets, il y a Omega, ou plutôt, Aleph (c'est en gros la même chose, disons qu'Omega est plus ou moins mort et Aleph a rassemblé les morceaux pour faire quelque chose de vaguement utilisable), ce que j'utilisais jusqu'à présent (actuellement, voici la version PDF de mes fragments). L'idée en est fort intéressante et séduisante, puisqu'il s'agit de rajouter à TeX tout un système d'automates finis qu'on peut empiler et qui font le travail de conversion des différentes formes d'Unicode entre elles ou de création des ligatures, ou de tout ce qu'on voudra ; malheureusement, le système n'est quasiment pas documenté donc excessivement difficile à utiliser, il s'interface assez mal avec les packages LaTeX tels que Babel (d'ailleurs, depuis une mise à jour récente de ma distribution TeX ça a tout simplement cessé de marcher) et il a l'air un peu (seulement un peu ?) à l'abandon.

Plus récemment, un autre projet est apparu qui semble à la fois plus simple (quoique moins puissant sur certains plans) et donc plus utilisable : il s'agit de XeTeX (le nom tend à rappeler qu'il sait écrire de droite à gauche). À la différence de TeX et Omega/Aleph, XeTeX prend le parti d'utiliser le même mécanisme de polices vectorielles qui est maintenant quasi universel en informatique : les polices TrueType (qui, elles aussi, sont bien postérieures à la conception de TeX et de son mécanisme de polices génériques pré-rastérisées, Metafont). C'est plutôt une bonne chose, parce qu'on a d'excellentes polices TrueType couvrant de larges régions d'Unicode. On m'a suggéré d'utiliser XeTeX plutôt qu'Aleph pour mettre en page mes fragments littéraires gratuits, et c'est ce que je vais faire.

Pour l'instant j'ai fait un essai (source ici) qui est assez concluant[#] : je ne sais pas faire correctement les ligatures requises par les langues indiennes, mais comme je n'ai pas encore cité de sanskrit ou de tamoul dans mes fragments ce n'est pas grave dans l'immédiat.

Ceci dit, si on en croit les nouvelles qui nous proviennent du futur, l'avenir de TeX devrait résider dans un moteur appelé LuaTeX, successeur de l'actuel PDFTeX, qui incorporerait également les extensions d'Aleph en rajoutant aux automates finis la possibilité d'interface avec le langage de programmation Lua : il ne reprendrait pas la suite de XeTeX mais devrait être capable de réaliser les fonctionnalités de celui-ci. Bon, ça c'est ce qu'on nous promet : je ne sais pas pour quand ce sera (if ever) ; en attendant cette merveille, XeTeX a l'air de ne pas être mal.

[#] J'attire notamment l'attention sur la citation en hébreu (ונפקחו עיניכם והייתם כאלהים), qui a été coupée correctement sur deux lignes, c'est-à-dire avec le début (ונפקחו עיניכם והייתם) sur une ligne, évidemment écrit de droite à gauche, et le dernier mot (כאלהים) sur la ligne suivante. Il ne suffit évidemment pas d'inverser l'ordre des caractères et de les écrire de gauche à droite, pour mettre correctement en page de l'hébreu (à l'intérieur d'un texte français) !

↑Entry #1451 [older|newer] / ↑Entrée #1451 [précédente|suivante]

Recent entries / Entrées récentesIndex of all entries / Index de toutes les entrées