Le mpg-blog

LaTeX et autres geekeries

Sur l’avenir de (La)TeX

with one comment

Suite à une discussion récente sur fctt, je reformule ici quelques réflexions sur l’avenir de (La)TeX. La première remarque est qu’il faut bien distinguer LaTeX en lui-même, et plus particulièrement sa version actuelle, LaTeX2e, des outils basés sur TeX en général. Je crois fortement à l’avenir d’outils reprenant les points forts de TeX, mais à condition de révolutionner certains de leurs aspects, qui en particulier feraient sans doute voler en éclats le LaTeX2e que nous connaissons.

D’abord, quelques rappels historiques. TeX était sans doute le mieux qu’on puisse faire à l’époque où il a été créé, et peut-être encore 10 ans après. Aujourd’hui, il est vieux et porte les traces de l’époque de sa jeunesse : à ce moment, ni pdf, ni unicode, ni opentype n’existaient : en fait, postscript non plus, latin1 non plus, et sans doute aucun format vectoriel de police. Sur ces points, le retard est en train d’être rattrapé (voire de l’avance prise) par XeTeX, et une partie de LuaTeX.

Il est sans doute intéressant de noter que Microsoft a produit avec Word 2007 une police mathématique (Cambria Math) au format OpenType avec toutes les informations métriques voulues pour composer des maths correctement. Leurs algo de composition mathématique sont ouvertement calqués sur ceux de TeX et produisent un résultat de qualité comparable (pour les maths, le texte est encore largement à la traîne). Pour l’instant, ni XeTeX ni LuaTeX ne gèrent l’OpenType mathématique (mais ça ne va pas tarder à changer).

C’est à mon avis significatif sur le fait que TeX avait à une époque plusieurs longueurs d’avance, puisqu’on le copie presque 30 ans après. Par contre, en le copiant, on va un peu plus loin : il s’agit donc de ne pas se reposer sur ses lauriers si TeX doit garder un rôle de leader. Des progrès importants sont en cours dans ce sens avec XeTeX et LuaTeX.

Un autre point où TeX porte un peu la trace de son âge, c’est son manque d’intégration au reste du monde en général. On a déjà parlé des grands standards comme Pdf, PostScript, Unicode et OpenType, mais une foule d’autres détails existent, comme le problème des formats d’images et des modes de compilation, légitimement agaçants pour les utilisateurs.

Par ailleurs, on peut envisager et souhaiter des réformes profondes au niveau de l’interface utilisateur et programmeur de TeX, allant jusqu’à la disparition de TeX en tant que langage. En effet, ce dernier présente des particularités incontournables (dans le sens où on ne peut pas les cacher à l’utilisateur), comme le célèbre problème du verbatim dans les arguments de commandes, qui sont profondément ancrées dans la structure du langage.

La moins profonde des réformes qu’on peut envisager est déjà en cours avec le projet LuaTeX : il s’agit d’ouvrir certaines des routines internes de TeX au programmeur. En effet, celui-ci est parfois bloqué par quelques hypothèses codées en dur dans TeX, qui ne correspondent pas à la situation où il se trouve, tant il est vrai que même Knuth ne pouvait anticiper toutes les utilisations qu’on voudrait faire de TeX après le développement fabuleux qu’il a connu.

Pour le moment, il s’agit, à certains points judicieusement choisis du traitement d’un document par TeX, de rendre la main au programmeur. Ceci laisse en place le flot d’exécution normal prévu par TeX. Or celui-ci est parfois très contraignant, par exemple la notion de routine de sortie.

Au final, on aimerait donc dans l’idéal pourvoir complètement désosser TeX, et n’en garder que les parties les plus intéressantes : algorithmes de césure, de construction des paragraphes, de composition mathématique, structures de données particulièrement adaptées (listes, boîtes) éventuellement en les améliorant, mais en étant libre de les agencer comme on veut. C’est un travail particulièrement énorme, vu le caractère très monolithique de TeX tant dans sa conception que dans son implémentation.

On peut alors rêver d’un système en plusieurs couches comme suit : un cœur centré sur des composants de TeX liés entre eux de façon souple. Des back-end produisant un peu ce qu’on veut : Pdf (X)Html, MathML, etc. Un front-end en deux couches : l’une destinée au programmeur, l’autre à l’utilisateur final.

En effet, actuellement les deux disposent d’un langage commun qui ne satisfait réellement personne. Du point de vue des deux, il est trop complexe et parfois difficile à prévoir, et pour le programmeur il manque de la souplesse que savent fournir des langages modernes, sans même parler du concept de séparation lecture/développement/exécution qui est pour beaucoup dans la complexité du langage actuel.

Notons que cette séparation en couches était plus ou moins prévue dès le départ par Knuth avec la notion de format, et est aussi un des points importants du projet LaTeX3. Enfin, avec des efforts, un bonne conception de ces deux couches permettrait peut-être d’éviter que l’utilisateur de retrouve confronté à des messages d’erreurs que seul le programmeur expérimenté peut comprendre à défaut d’apprécier.

Après ce qui peut ressembler à un réquisitoire, quelques réflexions sur la place de TeX dans le paysage actuel. Il est le seul, parmi les outils destinés à produire des documents de bonne qualité typographique, à fonctionner comme un compilateur de documents, et à être réellement programmable. Ceci le rend très difficile à comparer à d’éventuels concurrents.

Ses atouts essentiels, conséquence des précédents, est qu’il peut automatiser de nombreuses tâches comme la gestion de des références au sens large, notes de bas de pages, etc, mais aussi trouver automatiquement l’optimum typographique sous des contraintes données dans de nombreuses circonstances, là où des outils comme Quark Xpress ou Adobe InDesign demandent une gestion et un ajustement manuel. Il peut aussi beaucoup plus facilement d’intégrer dans des flots de traitement automatisé de documents (penser XML, Docbook, texinfo).

Pour conclure, tant par la place à part qu’il occupe dans le paysage de la typographie assistée par ordinateur, l’intérêt constant de ses algorithmes typographiques, les projets existants visant à mieux l’insérer dans le monde informatique moderne, que par goût personnel, je crois fortement à l’avenir d’une forme de TeX.

Mais le monde de TeX a été très conservateur pendant une longue période, choisissant toujours la stabilité au détriment de l’innovation. Il a donc dans un sens du retard à rattraper, et je pense et espère que les évolutions en cours avec XeTeX et plus encore LuaTeX ne sont que le début d’une révolution, qui promet d’être excitante et riche.

Written by mpg

juin 5th, 2008 at 1:05

Posted in TeX et compagnie

Tagged with , ,

One Response to 'Sur l’avenir de (La)TeX'

  1. totalement d’accord !

    mxp2

    23 jan 11 at 11:41