Table des matières

Quels sont les projets de développement de TeX?

Alors que Donald Knuth a déclaré que \TeX ne changera jamais de manière substantielle, il reste des fonctionnalités qui aurait pu être faites différemment ou être tout simplement implémentées. Celles-ci ont été explorées dans un certain nombre de moteurs, dont certains ont des histoires quelque peu complexes.

Le premier ensemble d'ajouts majeurs au \TeX de Donald Knuth a été fourni par le projet NTS avec ε-TeX: ces ajouts sont aujourd'hui disponibles dans tous les moteurs récents. Le programme pdfTeX a ajouté une gamme de nouvelles primitives et beaucoup d'entre elles ont également été reprises par d'autres moteurs.

Projets actifs

pdfTeX

Le programme pdfTeX a été développé par Hàn Thế Thành : il intègre la possibilité de créer une sortie PDF directement dans le moteur \TeX. Bien qu'à l'origine développé en parallèle, pdfTeX inclut aujourd'hui les extensions ε-\TeX en standard. Le développement de pdfTeX s'est en grande part arrêté : les changements courants sont en grande partie axés sur les corrections d'erreurs de code. Cependant, l'importance centrale de pdfTeX en tant que moteur « standard » dans les distributions \TeX modernes signifie que des changements ultérieurs pourraient survenir, en particulier dans le domaine de l'accessibilité.

Ce projet a commencé comme un sujet pour la thèse de maîtrise de Hàn Thế Thành et semble avoir été publié pour la première fois dans TUGboat 18 (4), en 1997 (bien qu'il ait été discuté lors de la conférence TUG'96 en Russie). Alors que le monde faisait bon usage des « pré-versions » de pdfTeX, Thành l'a utilisé comme banc d'essai pour la micro-typographie qui était le sujet de recherche principal de son doctorat. Depuis que Thành a obtenu son doctorat, la maintenance et le développement de pdfTeX ont été confiés à un groupe de mainteneurs (qui comprend Thành) qui a réussi à maintenir une plate-forme stable pour une utilisation générale.

XeTeX

XeTeX, développé à l'origine par Jonathan Kew, est un moteur Unicode \TeX capable de charger des polices système à l'aide de la bibliothèque HarfBuzz, ce qu'il obtient par une syntaxe étendue de la primitive \font. Il s'appuie sur ε-\TeX et ajoute également une gamme de nouvelles primitives utiles pour travailler avec des langues non latines. Par ailleurs, le processus de composition est essentiellement le même que celui de \TeX. Comme pour pdfTeX, il n'y a pas de développement majeur en cours sur le site du projet, bien que les corrections d'erreurs de code et la compatibilité croisée avec d'autres moteurs continuent.

LuaTeX

Comme détaillé ci-dessus, le développement de pdfTeX est « achevé ». Mais, alors que le développement de pdfTeX s'essoufflait, le développement d'un nouveau système, LuaTeX a commencé. Lua est un interpréteur conçu pour être intégré dans d'autres applications. LuaTeX consiste en un moteur de type \TeX avec un interpréteur Lua « intégré » en lui. L'interpréteur lua a accès à de nombreuses structures de données utilisées pour la composition, de sorte que le programmeur peut placer des morceaux de code Lua dans ses commandes \TeX ou \LaTeX, ou effectuer des « rappels » (call-backs) pour modifier le comportement de \TeX lorsqu'il effectue certaines opérations.

Cet arrangement offre la perspective d'un moteur de composition « assoupli » : il présente le comportement classique mais l'utilisateur peut redéfinir une fonctionnalité si besoin est — il n'est plus nécessaire de persuader le reste du monde puis de trouver un développeur disposé à travailler sur le sujet.

Le LuaTeX project a poursuivi des pistes que de nombreux autres projets avaient en vue, notamment les représentations de caractères Unicode et la prise en charge des polices OpenType. Cela incluait l'incorporation des extensions développées par Aleph (voir ci-dessous). L'actuel LuaTeX (v1.12.0 en 2020) est considéré comme presque complet par l'équipe de développement : il poursuit cependant son évolution.

Projets historiques

ε-TeX

Dans le cadre des travaux du projet NTS (voir ci-dessous), un certain nombre d'extensions au \TeX de Donald Knuth ont été développées. Beaucoup d'entre elles prennent en charge la programmation d'une manière qui rend possibles ou plus simples certaines tâches dans \TeX. D'autres étendent la gamme des registres disponibles dans \TeX ou mettent à disposition plus d'informations internes.

En fait, dans les distributions \TeX actuelles, les extensions ε-\TeX sont disponibles (et souramment utilisées) pour presque tous les formats autres que le format tex original de Donald Knuth.

Omega et Aleph

Omega (Ω) a été développé comme une extension de \TeX pour des textes multilingues utilisant une grande variété d'encodages en entrée. Omega utilisait des caractères 16 bits codés Unicode. Il a apporté de nombreux concepts innovants, dont notamment le « processus de traduction » qui prend un flux de caractères et le transforme selon différents processus qui peuvent être spécifiés en interne ou être un programme distinct.

Alors qu'Omega promettait beaucoup lors de son annonce au milieu des années 1990, ses progrès ont été lents et son développement est devenu moribond au moment où l'un des développeurs d'origine s'est retiré (emmenant avec lui un groupe d'étudiants en recherche).

Avant cet événement pénible, un courant de développement séparé avait déjà commencé afin de produire un programme appelé Aleph, qui fusionnait les fonctionnalités de ε-\TeX dans une base de code Omega stable et qui ajoutait d'autres extensions. Aleph s'est également avéré former une plate-forme attrayante pour de nombreuses personnes mais son développement s'est également arrêté.

Une partie du travail de ces projets a été incorporée dans LuaTeX.

New Typesetting System (NTS)

Le projet NTS a entrepris de produire un logiciel pour remplacer \TeX : ce New Typesetting System (nouveau système de composition) partagerait les objectifs de Donald Knuth, mais mettrait en œuvre le travail de manière moderne en tenant compte des leçons apprises avec \TeX. Le projet a été présenté aux journées GUTenberg 2000. Si une première mouture de NTS est apparue, elle n'était pas encore utilisable en pratique et le projet ne semble plus actif.

Parallèlement à ce travail, le NTS a développé un ensemble d'extensions qui peuvent être utilisées avec un système \TeX. Un système ainsi modifié est connu sous le nom de système ε-\TeX, et le concept s'est avéré être un succès.

EχTeX

Le projet EχTeX s'appuyait sur l'expérience de nombreux projets de développement et d'extension de \TeX pour développer un nouveau système semblable à \TeX. Le système a été développé en Java.

ExTeX a été conçu pour accepter des entrées Unicode et pour implémenter toutes les primitives de \TeX avec, pour certaines d'entre elles vues comme obsolètes, des alternatives modernes. Des extensions présentes avec ε-TeX, pdfTeX et Omega ont été identifiées pour y être incorporées.


Sources: