TeX

TeX est un système logiciel libre de composition de documents, indépendant du matériel utilisé pour la visualisation ou l'impression. Il fut créé à partir de 1977 par le mathématicien et informaticien Donald Knuth, excédé par la piètre qualité de la typographie des logiciels d'édition de l'époque. Il est principalement conçu pour l'édition de documents techniques et est largement utilisé par les scientifiques, particulièrement en mathématiques, physique, bio-informatique, astronomie et informatique. Il est également extensible et permet notamment l'édition de documents plus complexes (affiches, plaquettes publicitaires, partitions musicales...). TeX vient de , début du mot , tékhnê (« art, science », en grec ancien), et se prononce // ou //, au choix. On écrit parfois  au lieu de TeX, le logiciel permettant les mises en forme correspondant au logo.

Origine et historique

Origines du programme 
Lorsque le premier volume de The Art of Computer Programming fut publié en 1968, le premier livre de Donald Knuth, celui-ci fut d'abord imprimé par composition par métal chaud, une technique datant du  qui donnait un caractère « ancien » apprécié par Knuth. Cependant lors de la seconde édition du second volume en 1976, le livre entier a dû être recomposé parce que les éditeurs utilisaient une nouvelle technique appelée photocomposition qui ne fonctionnait plus avec les anciennes polices. En effet, les anciennes imprimeries avaient été remplacées par des imprimeries à impression photographique. Lorsque Knuth reçut les premiers essais de son deuxième livre, il les trouva horribles. Tant et si bien qu'il décida de résoudre le problème et de réaliser lui-même son outil d'édition typographique qui ne serait d'aucun ressort photographique mais bien informatique.

Knuth prévoyait initialement de le terminer en six mois pour la fin de son année sabbatique. Il prendra finalement presque 10 ans, soit de 1977 à 1989. Bien qu'il fût seul à le développer, il reçut cependant de l'aide de nombreux collaborateurs dont Hermann Zapf, Chuck Bigelow, Kris Holmes, Matthew Carter et Richard Southall.

Décidant d'aller travailler dans les locaux de Stanford au lieu des laboratoires Xerox de Palo Alto, Knuth se mit au travail sur TeX lors du printemps 1977. En tenant comme référence un grand nombre de livres de typographie, notamment ceux de l'ancienne collection Aldine, il se mit en tête de retranscrire les anciens caractères dans son programme en utilisant des formules mathématiques. Il tentait alors de comprendre la logique derrière les lettres. C'est ainsi qu'il se mit à travailler sur son propre logiciel de polices de caractères Metafont.

Le premier prototype de TeX fut implémenté pendant l'été 1977 par 2 étudiants de Knuth, Michael F. Plass et Frank M. Liang, d'après les spécifications qu'il leur avait données. Il ne contenait initialement que quelques définitions de macros et d'opérations élémentaires sur les boîtes.

Première version 
La première version de TeX, également dénommé Tau Epsilon Chi, fut achevée en 1978 par Knuth sur base du prototype. Celle-ci était implémentée en langage SAIL, un langage de compilation semblable à Algol, et le premier manuel utilisateur fut rédigé durant l'été 1978.

Au début de 1979, Trabb Pardo et Knuth commencèrent à planifier une conversion du SAIL au WEB. Cela se traduira par une conversion complète entre 1979 et 1980 faite par Ignacio A. Zabala. Parallèlement, Knuth sortit la première version de Metafont en 1979.

Deuxième version 
En 1982 est publiée une nouvelle version nommée TeX82, pratiquement réécrite de A à Z. Cette version inclut notamment des idées de l'implémentation de 1979 en MESA écrite par Leonidas Guibas, Robert Sedgewick et Douglas Wyatt du centre de recherche Xerox de Palo Alto. L'algorithme de césure original fut remplacé par un nouvel algorithme écrit par Frank Liang en 1983. TeX82 utilisa une représentation à virgule fixe à la place de virgule flottante afin de renforcer la portabilité sur plusieurs hardwares. Knuth inclut également un véritable langage de programmation certifié Turing-complet sous la pression de programmeurs, notamment Guy Steele.

En , Donald Knuth entame de nouvelles modifications dans le code de TeX et Metafont. En effet, jusque-là les caractères étaient codés sur 7 bits, ce qui est suffisant pour afficher 128 lettres, soit l'alphabet anglais plus quelques caractères spéciaux, mais nettement insuffisant pour des alphabets étrangers (notamment en Europe et en Asie). Il dut donc réadapter entièrement TeX et Metafont pour fonctionner en 8 bits, soit 256 caractères différents, ce qui le rendit utilisable pour une bonne partie des langues d'Europe occidentale. Il introduisit également dans TeX la capacité de faire la césure dans d'autres langues que l'anglais, basée sur plusieurs idées de Michael J. Ferguson. TeX passa alors dans sa version stable 3.0.

Troisième version 
À partir de la version 3, TeX 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 . La version actuelle de TeX est la 3.141592653, la dernière mise à jour datant de . Les caractéristiques essentielles de TeX ont été figées après la , et toutes les versions suivantes ne contiennent que des corrections de bugs. Donald Knuth, bien qu'ayant signalé des améliorations possibles, a insisté sur le fait qu'avoir un système fixe qui produira toujours la même sortie est plus important que d'introduire des caractéristiques nouvelles.

Fonctionnement

Principales caractéristiques 
Dès le départ, le système TeX fut conçu afin d'être :
 ergonomique, le système étant conçu afin que les auteurs puissent directement l'utiliser, c'est-à-dire les personnes sans grande connaissance en informatique ;
 gratuit, le logiciel provenant d'une source universitaire.
Durant le développement, le logiciel devint indépendant par rapport à son support. Pour un même fichier d'entrée, il délivre le même fichier de sortie quel que soit l'ordinateur ou système d'exploitation sur lequel il est installé.

Le langage TeX 

Le langage TeX est un langage balisé. Il utilise à la fois du texte brut pour le corps du texte ainsi que des commandes commençant par une contre-oblique « \ ».

Les commandes reconnues par le compilateur TeX sont divisées en « primitives » (on en compte environ 300), et « macros », créées à partir des primitives. Les macros rendent possibles des structures assez complexes (boucles, conditions, etc) ainsi que la réalisation de calculs.

Afin de simplifier la préparation d'un document, D. Knuth a défini un ensemble d'environ 600 macros appelé plain TeX qui est décrit dans son livre The TeXbook en même temps que les primitives et les mécanismes internes. Cela fait qu'il y a souvent confusion entre plain TeX et le compilateur TeX. Afin d'accélérer la création d'un document, cet ensemble de macros, appelé format, est précompilé.

L'utilisation directe du format plain TeX étant assez ardue, il a été étendu en LaTeX (là encore, pas de distinction avec le nom du langage dans lequel est décrit le document que l'on appelle également LaTeX), écrit à l'origine par Leslie Lamport, qui constitue en fait un jeu de macro-commandes basées sur TeX. D'autres formats sont aussi disponibles, comme ConTeXt, AMS-LaTeX.

Les commandes TeX ont de nombreuses utilisations. Elles servent par exemple à définir les polices à utiliser, ajouter des espaces, etc.

Exemples 
Voici un exemple de code TeX pour afficher "Hello World!".Hello World!
\bye
%\Bye désigne la fin du fichier

Voici un exemple de code de formule mathématique. Celui-ci montre les solutions d'une équation du second degré.

Le programme TeX 
TeX interprète un langage de description formel de document défini par D. Knuth (couramment, on ne fait pas la distinction entre le logiciel TeX et ce langage que l'on appelle également TeX). Autrement dit, ce n'est pas un formateur de texte à rendu immédiat où le document en préparation apparaît à l'écran comme il est censé être une fois imprimé, mais un logiciel traduisant une description textuelle en un document graphique.

TeX prend en entrée un document écrit en langage TeX et crée un fichier au format dvi contenant une description des pages, c'est-à-dire les positions des caractères, images, figures, etc sur la page. Afin d'être imprimé ou exporté, le dvi doit être traduit dans un autre format reconnu par l'appareil. PostScript (pour les imprimantes notamment) et PDF sont les formats les plus populaires pour TeX.

TeX lit l'entrée octet par octet. Dans un premier temps, il va assembler ces octets en unités lexicales. Pour cela TeX utilise un système très souple de catégorisation des caractères. Dès qu'il rencontre un caractère d'échappement, il lit tout ce qui suit jusqu'à rencontrer un caractère qui n'est pas catégorisé comme une lettre. Cet ensemble de caractères est stocké comme un nom de commande. Celle-ci peut ou bien servir d'abréviation, et elle sera simplement développée lors de la composition, ou bien être exécutée, un peu comme une fonction ou une procédure d'un langage de programmation.

Certains des algorithmes utilisés par TeX sont assez complexes. Par exemple, l'un d'entre eux lit un paragraphe en entier afin de décider de l'endroit où faire un retour à la ligne. Celui de la césure est notamment décrit peu après.

Algorithme de césure de Frank Liang 

Il a été écrit par Frank Liang lors de sa thèse de doctorat en 1983 au département informatique de Stanford. C'est cet algorithme qui détermine à quels endroits un mot doit être correctement coupé entre deux lignes. L'implémentation utilisée dans TeX, le programme Patgen, utilise peu de place et son taux de réussite se trouve vers 90-95 % de chances de trouver une césure correcte. Son principe repose sur l'utilisation de dictionnaires et sur la reconnaissance de motifs dans les mots.

Metafont 

Metafont est un logiciel également conçu par Knuth qui permet de créer des caractères et, par extension, des polices de caractères. Bien que Metafont ne fasse pas partie de TeX à proprement parler, il reste très lié à celui-ci. En effet, la police de caractère utilisée par TeX, Computer Modern, a été conçue à l'aide de Metafont.

Metafont utilise de nombreuses techniques pour tracer les lettres, comme les courbes de Bézier. Lors de sa conception, Knuth essayait de trouver une certaine logique entre lettres. Par exemple la lettre n prend exactement  la largeur de la lettre i, la lettre m prend  la largeur de la lettre i et la lettre u prend la même largeur que la lettre n.

Sous Metafont, les lettres sont créées à partir d'équations.

Utilisation 

TeX est souvent utilisé dans les milieux académiques et scientifiques afin de produire des documents techniques, cela principalement dû à son rendu de formules et autres symboles.

Cependant, il a d'autres usages notamment dans le milieu professionnel. Il peut par exemple produire des cartes de visites, des lettres, des programmes de concert ou encore des livres (la motivation de départ de Knuth).

Il est possible d'utiliser TeX pour générer de manière complètement automatique la mise en page délicate de données XML. Ceci permet la conciliation des différences syntaxiques entre les deux langages descriptifs à l'aide de TeXML. On peut donc considérer TeX comme une alternative à XSL-FO dans le cadre de publication en XML.

Licence 
Donald Knuth a répété plusieurs fois que le code source de TeX était dans le domaine public et qu'il encourageait fortement les modifications de celui-ci. D'autre part, bien qu'il soit dans le domaine public, Knuth demande que, lorsqu'une modification de TeX est publiée, celle-ci porte une autre dénomination que TeX, pour permettre de la distinguer (exemple avec LaTeX ou ConTeXt).

Extensions 
Le compilateur TeX a fait l'objet de quelques extensions (à ne pas confondre avec des formats comme LaTeX, ConTeXt), parmi lesquelles :

 pdfTeX : crée directement des fichiers au format Portable Document Format ;
 MlTeX : multi-lingual TeX ;
 TeX-XeT : supporte les écritures allant de droite à gauche ;
 VTeX : compilateur commercial de MicroPress ;
 Omega : pour traiter des documents multilingues ;
 epsilon-TeX : ajoute quelques primitives à TeX ;
 XeTeX : une version Unicode de TeX avec gestion de polices modernes ;
 LuaTeX : une version Unicode qui embarque un interpréteur pour le langage Lua ;
  : une extension pour afficher des formules chimiques.

Communauté 

Il existe de nombreux groupes d'utilisateurs de TeX/LaTeX de par le monde, qui sont généralement liés à une langue :
GUTenberg (francophone), TUG (anglophone, signifie TeX Users Group), DANTE (germanophone), CervanTeX (hispanophone), GuIT (italophone), NTG (néerlandophone)…

Certains de ces groupes publient des journaux (les Cahiers GUTenberg, la Lettre GUTenberg, PracTeX, TUGboat…) et organisent aussi des conférences, parfois de façon conjointe (EuroTeX…).

Chasse aux bugs 

Donald Knuth encourage quiconque à trouver des bugs et des erreurs de typographie dans le code source de TeX et dans le reste de son œuvre . Jusqu'en 2008, il offrait même une  financière. Celle-ci s’élevait à  (un « dollar hexadécimal ») pour une erreur (coquille ou autre) dans un livre imprimé. Pour un bug logiciel, le montant augmentait avec l’âge : de  la première année d’existence du bug, il était ensuite doublé chaque année jusqu’à un plafond de  (soit , atteint après huit ans).

Malgré le grand nombre de chèques envoyés et leur montant parfois élevé, très peu d’entre eux étaient encaissés, leurs destinataires préférant les encadrer.

Depuis 2008, Knuth n’envoie plus de chèques réels, leur préférant des certificats de dépôt de la banque de la nation imaginaire de San Serriffe, pour faire jeu de mots typographique avec une police sans serif, tout en évoquant un douteux paradis fiscal offshore ; l'adresse qu'il en donne poursuit le jeu.

Étymologie et prononciation 

Selon son auteur, le mot « TeX » dérive du grec ancien τέχνη (, signifiant « art » ou « artisanat », racine étymologique du mot « technique ») ; le logotype  est en fait composé des lettres grecques tau, epsilon et chi sous leur forme capitale.

Selon les époques, cette dernière lettre s’est prononcée
 (comme k dans « kayak » et ch dans « technique »)
puis  (comme ch dans l'allemand  et j dans l’espagnol ). Donald Knuth recommande la seconde prononciation, . Cependant, le son  n’étant connu ni en français ni en anglais (hors mots d’emprunt), de nombreux utilisateurs emploient plutôt la première prononciation, .

Notes et références

Voir aussi

Articles connexes 
 GUTenberg, groupe francophone des utilisateurs de TeX
 Comprehensive TeX Archive Network
 MiKTeX
 Une liste partielle des Groupes d'utilisateurs de TeX
 LaTeX, un jeu de macros de TeX.
 ConTeXt, un autre jeu de macros TeX
 TeXML
 Metafont, le logiciel compagnon de TeX destiné à créer et gérer les polices de caractères
 Computer Modern, la famille de police utilisée par défaut dans TeX, LaTeX, etc.

Bibliographie 
 Donald Knuth (trad. Jean-Côme Charpentier), Le TeXbook : composition informatique, Vuibert, 2003, 555 p. .
Donald Knuth (original), The TeXbook, Vol. A. : Computers & Typesetting, Addison-Wesley, 1984 (première édition), 483 p. .
Donald Knuth, TeX: The Program, Vol. B. : Computers & Typesetting, Addison-Wesley Professional, 1986, 624 p. .

Liens externes 

 Le site de l'association GUTenberg (Groupe francophone des Utilisateurs de TeX) http://www.gutenberg.eu.org
 Le site des archives des packages pour TeX, Comprehensive TeX Archive Network (CTAN) : http://www.ctan.org/
 Une photocopie de la thèse de doctorat de Frank Liang sur la césure disponible au téléchargement : http://www.tug.org/docs/liang/
 La liste de dictionnaires de motifs classés par langue : https://www.tug.org/tex-hyphen/

 
Format ouvert
Logiciel libre
Donald Knuth