# La mise au point de TeX de 2021

Maxime Chupin

► To cite this version:

Maxime Chupin. La mise au point de TeX de 2021. La Lettre GUTenberg numéro 43, 2021. hal-03197188

HAL Id: hal-03197188

https://hal.science/hal-03197188v1

Submitted on 13 Apr 2021

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons CC0 1.0 - Universal - International License
LA MISE AU POINT DE TÊX DE 2021

*Le texte qui va suivre est une traduction par Maxime CHUPIN de l'article The TÊX tuneup of 2021 de Donald E. KNUTH à paraître dans le TUGboat volume 42, numéro 1 du printemps 2021.*

Ceci est la suite promise des précédents rapports de 2008 [1] et de 2014 [2]. Une fois de plus, je suis extrêmement reconnaissant à tous ceux qui ont contribué aux errata potentiels du « noyau » de TÊX et de METAFONT, et à la merveilleuse équipe d'experts — cette fois dirigée par Karl BERRY — qui a soigneusement vérifié les contributions et les a triées pour en extraire une liste de problèmes qui demandaient une réelle attention. Conformément à notre plan établi de longue date, j'ai reçu cette liste le 31 décembre 2020.

Karl écrira un article spécifique sur son rôle de filtrage des contributions. Permettez-moi juste de faire remarquer que, lorsque j'ai effectué la précédente série de maintenance il y a sept ans, j'ai dû faire face à « plus de deux douzaines de sujets potentiellement gênants » [2]. Cette fois-ci, leur nombre était supérieur à 250 (!).

Comme en 2008 et en 2014, TÊX et METAFONT ont tous les deux légèrement évolué et ont gagné de nouveaux chiffres dans leurs numéros de versions. Mais là encore, bonne nouvelle : les changements sont essentiellement invisibles. Je ne peux pas m'empêcher de citer une fois de plus [1] car cela reflète bien mon inébranlable philosophie (voir [3]):

> L'index de Digital Typography énumère onze pages où l'importance de la stabilité est soulignée, et j' invite instamment tous les mainte- neurs de TÊX et METAFONT à les relire tous les deux ou trois ans. Tout objet d'une certaine complexité est non-optimal, au sens où il peut être amélioré d'une manière ou d'une autre (tout en restant non-optimal); il y a donc toujours une raison de changer tout ce qui n'est pas trivial. Mais l'un des principaux avantages de TÊX est le fait qu'il ne change pas — excepté pour des défauts graves dont la correction n'affectera probablement qu'un très petit nombre de documents d'archives.

Les utilisateurs peuvent être assurés que je n'ai rien « cassé » dans cette série d'améliorations. Chacun pourra se mettre à jour ou non, comme bon lui semble.

TÊX : version 3.141592653

Venons-en aux détails. La nouvelle version 28 de TÊX diffère de l'ancienne de cinq façons non anecdotiques, la plupart ayant trait aux corrections concernant les tentatives de TÊX de se remettre des erreurs rencontrées.

Les deux premières de ces anomalies ont été découvertes par Xiaosa ZHANG et signalées l'été dernier sur [4, 5]. Il a découvert une combinaison sournoise de touches qui, avec le TÊX de l'année dernière, vous permettait de rentrer en \batchmode tout en continuant à interagir sur le terminal (!). De plus, il a découvert que l'option exit-and-edit de TÊX qui consiste à taper E en réponse à

<footnote n="28">28. NDT. À partir de la version 3, TÊX utilisa un système idiosyncrasique de numérotation de version, les mises à jour étant indiquées en ajoutant un chiffre supplémentaire après le point décimal, le numéro de version approchant ainsi asymptotiquement le nombre $\pi \approx 3,141592653589793$. Il en va de même pour METAFONT mais avec le nombre $e \approx 2,718281828459045$. La notation anglo-saxone du numéro des versions des programmes (point et non virgule comme séparateur décimal) a été préservée dans le texte principal pour respecter l'apparence originale de l'article.</footnote>
un message d'erreur, était parfois permise alors qu'elle n'aurait pas dû l'être
lorsqu'un fichier d'entrée n'était pas activement lu.

Ces deux bogues peuvent faire planter le système et ces deux failles sont donc
maintenant corrigées.

Une autre interaction étrange avait été remarquée en 2017 par Udo WERMUTH
qui a trouvé que le traçage de T<sub>EX</sub> pouvait sembler s'arrêter brutalement et
mystérieusement alors que \tracingparagraphs était actif. (La raison était que
T<sub>EX</sub> avait trouvé puis signalé une erreur et que ce message était allé dans le
fichier trace. T<sub>EX</sub> attendait alors silencieusement qu'Udo réponde à celui-ci,
ne réalisant pas que les messages n'étaient pas affichés dans le terminal de
l'utilisateur lorsque les paragraphes étaient tracés.) À l'avenir, T<sub>EX</sub> ne restera
pas silencieux, l'utilisateur verra le message d'erreur et sera invité à y répondre.

À la fin de l'année dernière, Udo a été touché par un autre type de bogue<fnref n="29" />.
Celui-ci n'a rien à voir avec l'interaction, et il est possible qu'il se soit produit à
d'autres personnes lors de certaines exécutions de T<sub>EX</sub> au cours des 35 dernières
années (bien que j'en doute) : les versions précédentes de T<sub>EX</sub> autorisaient par
erreur le <texte de remplacement> d'une macro à commencer juste après, par
exemple, #\bgroup, contrairement à une règle qui est clairement énoncée dans
les clauses imprimées en petits caractères du T<sub>EX</sub> Book [6, bas de la page 275].

Désormais, T<sub>EX</sub> appliquera rigoureusement cette règle. Toute personne ayant
précédemment écrit :

\def\cs#1#\bgroup hi#1}

recevra désormais un message d'erreur. Il faudra maintenant écrire :

\def\cs#1\bgroup{hi#1\bgroup}|}

pour reproduire l'ancien comportement.

Enfin, le 22 octobre 2020, Bruno LE FLOCH a signalé ce qui pourrait bien être le « dernier bogue de T<sub>EX</sub> »<fnref n="30" /> historique. Là encore, il s'agit de macros. Supposons que vous ayez demandé neuf paramètres, en les appelant un par un, de #1 à #9. Vous n'êtes pas censé réutiliser # avant d'avoir terminé le <texte du paramètre> de la commande, car #9 est la limite supérieure de T<sub>EX</sub>. Cependant, si vous ne respectez pas les règles et que vous tapez # de manière incorrecte, T<sub>EX</sub> se plaindra :

! You already have nine parameters.

Le message d'aide qui suivait disait alors :

I'm going to ignore the \char`\#\ sign you just used.

Ce qui était vrai. Mais dorénavant, le message d'aide énoncera la *nouvelle vérité*
qui est que T<sub>EX</sub> ignorera *aussi* la prochaine chose qui *suivra* le mauvais #. À
partir de maintenant, ce type de mauvaise utilisation ne pourra plus advenir et
tout gâcher.

<footnote n="29">29. NDT. D. E. KNUTH fait ici un jeu de mots jouant sur le fait que « bug » signifie insecte en anglais, et écrit qu'Udo a été piqué par un tout autre type d'insecte (« Udo was bitten by quite a different sort of bug »).</footnote>

<footnote n="30">30. NDT. Tout le monde est persuadé, depuis bien longtemps, qu'il n'existe plus beaucoup de bogues dans T<sub>EX</sub>, d'où cette référence au dernier bogue de T<sub>EX</sub>.</footnote>
Les cinq bogues mentionnés ci-dessus sont de grande valeur, valant 0x$80.00 (327.68 $) à la banque de San Serriffe [7], car ils ont mis en évidence de sérieuses déficiences (bien que rarement apparentes) dans l'implémentation de T<sub>EX</sub>. En outre, T<sub>EX</sub> 3.141592653 intègre également un certain nombre d'autres corrections de bogues relativement mineurs. Par exemple, avec les versions précédentes, vous pouviez vraiment gâcher la fin de votre fichier trace en écrivant \newlinechar=`p.

L'utilisation de *Plain T<sub>EX</sub>* a également été modifiée de façon mineure, dans un souci de cohérence : on s'assure désormais que \muskip255 et \toks255 sont disponibles en tant que « scratch registers » (jamais alloués par \newmuskip ou \newtoks). La nouvelle version définit \fmtversion comme 3.1415926535.

Les moins triviaux de ces changements additionnels sont notés dans les mises
à jour de T<sub>EX</sub> : *The Program* [8], qui est maintenant disponible sous forme
de PDF sur la page [9] et dans un fichier nommé errata.tex. Ils apparaissent
également dans les fichiers errorlog.tex, tex82.bug et plain.tex. Mais l'entièr e
vérité réside, comme toujours, dans la mise à jour du fichier source principal :
tex.web. Ces cinq fichiers clés continuent à être mis en ligne dans le répertoire
systems/knuth/dist de l'archive du CTAN [10].

Le journal des erreurs de T<sub>EX</sub> a commencé en 1978, et ses 14 premières années sont documentées dans [11, chapitre 10 et 11]. Les années suivantes sont couvertes dans [3, chapitre 34], et se terminent par le bogue numéro 933, daté du 10 mars 1995 et trouvé par Peter BREITENLOHNER. Et qui sait, le journal a peut-être enfin obtenu son entrée finale, le bogue numéro 957.

Pendant que je préparais cette série de mises au point, j'ai été ravi de voir à quel
point la philosophie de la programmation lettrée<fnref n="31" /> a tout facilité. Ce programme
aux multiples facettes a été écrit il y a 40 ans, et pourtant je peux toujours me
replonger sans problème dans les recoins les plus sombres de T<sub>EX</sub>, simplement
en relisant [8] et en utilisant ses index et mini-index! Je ne peux m'empêcher
d'attribuer la majeure partie du succès de T<sub>EX</sub> au fait qu'il a été conçu avec la
programmation lettrée.

METAFONT : version 2.71828182

Et qu'en est-il du partenaire de T<sub>EX</sub>? J'ai presque pensé que le numéro de version de METAFONT devait en rester à 2.7182818, car les résultats du programme nouvellement mis à jour ne diffèrent pas de ceux que l'on aurait obtenus l'année dernière, sauf sur des points triviaux. Par exemple, certains des messages d'aide sont maintenant légèrement différents.

Cependant, les deux bogues de T<sub>EX</sub> trouvés par Xiaosa ZHANG s'appliquent également à l'interaction avec METAFONT. Par conséquent, je crois maintenant, au vu de [5], que l'historique « bogue final dans METAFONT » a été trouvé le 3 juillet 2020, bien qu'il utilisait en fait T<sub>EX</sub>.

L'écosystème de T<sub>EX</sub> et METAFONT

J'ai fait des mises à jour mineures des fichiers web principaux pour plus d'une
douzaine d'autres programmes, principalement pour corriger des fautes d'ortho-

<footnote n="31">31. NDT. Ici, j'ai choisi « programmation lettrée » comme traduction de *literate programming* qui est un paradigme de programmation structuré que préconise Donald E. KNUTH. On trouve aussi les traductions *programmation littéraire* ou encore *programmation documentée*.</footnote>
graphe, ajouter des virgules d'Oxford<fnref n="32" /> et les rendre plus cohérentes entre elles. Doug MCKENNA et David FUCHS ont trouvé deux bogues obscurs dans TANGLE et WEAVE qui n'avaient pas été remarqués depuis le début des années 80 (!). Voici une liste actualisée de tous les fichiers web dont je suis historiquement responsable :

<table><thead><tr><td>nom</td><td>version courante</td><td>date</td></tr></thead><tbody><tr><td>dvitype.web</td><td>3.6</td><td>décembre 1995</td></tr><tr><td>gftodvi.web</td><td>3.0</td><td>octobre 1989</td></tr><tr><td>gftopk.web</td><td>2.4</td><td>janvier 2014</td></tr><tr><td>gftype.web</td><td>3.1</td><td>mars 1991</td></tr><tr><td>mf.web</td><td>2.71828182</td><td>janvier 2021</td></tr><tr><td>mft.web</td><td>2.1</td><td>janvier 2021</td></tr><tr><td>pltotf.web</td><td>3.6</td><td>janvier 2014</td></tr><tr><td>pooltype.web</td><td>3.0</td><td>septembre 1989</td></tr><tr><td>tangle.web</td><td>4.6</td><td>janvier 2021</td></tr><tr><td>tex.web</td><td>3.141592653</td><td>janvier 2021</td></tr><tr><td>tftopl.web</td><td>3.3</td><td>janvier 2014</td></tr><tr><td>vftovp.web</td><td>1.4</td><td>janvier 2014</td></tr><tr><td>vptovf.web</td><td>1.6</td><td>janvier 2014</td></tr><tr><td>weave.web</td><td>4.5</td><td>janvier 2021</td></tr></tbody></table>

## Erreurs typographiques et autres maladresses

Jusqu'à présent, je n'ai parlé que des anomalies détectées dans le logiciel. Mais bien sûr, des personnes ont également signalé des aspects problématiques de la documentation, qui est peut-être la chose la plus difficile à corriger. Bien que le *TEX Book* [6] ait fait l'objet d'un examen approfondi depuis près de quarante ans, des lecteurs du monde entier ont continué à trouver des améliorations significatives, par exemple en proposant des modifications aux réponses à certains des exercices les plus difficiles.

Les changements les plus importants apportés au *TEX Book* concernent la manière dont les détails complexes de l'espacement dans les formules mathématiques sont décrits. Ma discussion originale sur les « atomes intérieurs » était malheureusement tout à fait erronée; pourtant, personne n'a apparemment remarqué ces erreurs jusqu'en décembre 2018, lorsque Sophie ALPERT a identifié certaines incohérences clés dans l'annexe G. Plusieurs pages de clauses en petits caractères ont dû être modifiées, et bien sûr je suis heureux d'enfin voir la chose finalement corrigée.

Parmi les autres modifications importantes, citons une syntaxe plus précise concernant des éléments tels que les points de coupure généralisés, les tirets et les motifs. De nombreuses améliorations ont également été apportées à l'index. Au total, il s'avère qu'au moins 93 des 483 pages du *TEX Book* ont été rectifiées d'une manière ou d'une autre (soit environ 19%).

*The METAFONT Book* a été encore davantage amélioré, puisque les modifications concernent 128 de ses 361 pages (35%). Une coquille a même été trouvée dans sa

<footnote n="32">32. NDT. La virgule de série (serial comma en anglais, aussi nommée virgule d'Oxford ou virgule d'Harvard selon les sources) est, en anglais, une virgule placée avant l'ultime conjonction de coordination (« et », « ou », ...) d'une énumération. Son usage n'est pas universel, mais beaucoup de manuels de style la recommandent car ils considèrent que son omission peut mener à des textes ambigus : « A, B, and C » est une conjonction mettant en jeu l'ensemble A, B, C; alors que « A, B and C » peut être interprété par « A d'une part, B et C d'autre part ».</footnote>
table des matières ! Deux des principaux contributeurs à cette chasse aux bogues, Hu YAJIE et Udo WERMUTH, doivent certainement se classer parmi les meilleurs correcteurs du monde, peut-être même de tous les temps. En particulier, YAJIE a non seulement suggéré plusieurs façons mutuellement orthogonales de polisser ce livre multidisciplinaire, mais il m'a également aidé à redresser la syntaxe formelle des expressions de METAFONT.

## Jubilé de l'informatique et de la typographie

L'un des moments les plus forts de ma vie s'est déroulé le 21 mai 1986. La maison d'édition ADDISON-WESLEY a organisé une fête d'une journée [12] au *Computer Museum* de Boston pour célébrer l'achèvement de TeX et METAFONT. C'était la première fois que j'avais un aperçu des livres [6, 8, 13, 14, 15], qui étaient littéralement « tout chauds sortis des presses ». Et mon plus beau souvenir de ce jour était le visage rayonnant du cofondateur de la compagnie, Mel CUMMINGS, alors qu'il tenait ces cinq volumes dans ses mains avec une fierté et une satisfaction évidentes. Il avait passé sa vie dans l'industrie de l'imprimerie, et l'a consacrée à produire des livres techniques de la meilleure qualité; aussi étais-je ravi de voir sa joie.

Je viens de regarder à nouveau chacune des 2668 pages de ces volumes, je ne peux m'empêcher de ressentir une certaine fierté d'avoir été associé à cette extraordinaire entreprise collaborative, surtout maintenant qu'elle a atteint un nouveau sommet de perfection. Il semble juste de dire que ces livres représentent un jalon important dans l'histoire de la typographie, car ils décrivent eux-mêmes chaque détail des calculs nécessaires à leur propre composition. « *Si des copies de ces livres étaient envoyées sur Mars, les Martiens seraient en mesure de les utiliser pour recréer les modèles de 0 et de 1 qui ont été utilisés dans leur composition* » [12].

Par conséquent, je suis extrêmement heureux d'annoncer que ADDISON-WESLEY vient de publier de toutes nouvelles impressions des volumes A, B, C et D, datées de février 2021, une « 35ᵉ édition du jubilé » qui contient toutes les améliorations introduites lors de cette mise au point. Enfin, les point sur les *i* ont tous été vraiment mis ainsi que les barres sur les *t* ! (L'impression 2017 du volume E reste à jour.)

## Conclusion

La famille de programmes TeX semble bien se porter, car elle continue de s'approcher de la perfection. Les chances sont nulles qu'un quelconque document produit par les versions précédentes de TeX ou METAFONT soit affecté par les changements des nouvelles versions. Nombre de fidèles bénévoles ont contribué de manière optimale à ce succès.

Restez à l'écoute pour la mise au point de TeX de 2029 ?!
Références

[1] Donald E. KNUTH. « The T_EX tuneup of 2008 ». In : *TUGboat* 29.2 (2008), p. 233-238.

[2] Donald E. KNUTH. « The T_EX tuneup of 2014 ». In : *TUGboat* 35.1 (2014), p. 5-8.

[3] Donald E. KNUTH. *Digital Typography*. Center for the Study of Language and Information Publication Lecture Notes. Cambridge University Press, 1999. ISBN: 9781575860107.

[4] 潇洒张. 27 juin 2020. URL: https://tex.stackexchange.com/questions/551313.

[5] 潇洒张. 3 juin 2020. URL: https://tex stackexchange com questions 552166.

[6] Donald E. KNUTH. *Computers & Typesetting Volume A, The T_EXbook*. Actuellement à sa 35ᵉ édition en version couverture souple (2017), et à sa 23ᵉ édition en version couverture rigide (2021). Reading, Massachusetts : Addison-Wesley, 1984, x+483pp. ISBN : 0-201-13447-0.

[7] Donald E. KNUTH. *The Bank of San Serriffe*. 11 mars 2021. URL: https://www-cs-faculty.stanford.edu/~knuth/boss.html.

[8] Donald E. KNUTH. *Computers & Typesetting Volume B, T_EX : The Program*. Actuellement à sa 11ᵉ édition en version couverture rigide (2021). Reading, Massachusetts : Addison-Wesley, 1986, xviii+600pp. ISBN : 0-201-13437-3.

[9] *Computers & Typesetting*. URL: https://www-cs-faculty.stanford.edu/~knuth/abcde.html.

[10] COMPREHENSIVE T_EX ARCHIVE NETWORK. URL: https://ctan.org/.

[11] Donald E. KNUTH. *Literate Programming*. CSLI Lecture Notes Number 27, xvi+368 pages. 1992.

[12] Barbara BEETON, Peter GORDON et Donald E. KNUTH. « *Computer & Typesetting* coming out party ». In : *TUGboat* 7.2 (juin 1986), p. 93-98. URL : tug.org/TUGboat/tb07-2/tb15knut.pdf.

[13] Donald E. KNUTH. *Computers & Typesetting Volume C, The METAFONT book*. Actuellement à sa 14ᵉ édition en version couverture souple (2017), et à sa 10ᵉ édition en version couverture rigide (2021). Reading, Massachusetts : Addison-Wesley, 1986, xii+361pp. ISBN : 0-201-13445-4.

[14] Donald E. KNUTH. *Computers & Typesetting Volume D, METAFONT : The Programme*. Actuellement à sa 9ᵉ édition en version couverture rigide (2021). Reading, Massachusetts : Addison-Wesley, 1986, xvi+566pp.

[15] Donald E. KNUTH. *Computers & Typesetting Volume E, Computer Modern Typefaces*. Actuellement à sa 8ᵉ édition en version couverture rigide (2017). Reading, Massachusetts : Addison-Wesley, 1986, xvi+588pp.

Donald E. KNUTH