TeX
Créateur | Donald Knuth |
---|---|
Première version | |
Dernière version | 3.141592653 ()[1] |
Dépôt | www.tug.org/svn/texlive |
Écrit en | WEB, Pascal et SAIL (en) |
Système d'exploitation | Multiplateforme |
Formats écrits | DVI (TeX) |
Typ |
Logiciel de composition (d) Langage de balisage Format de fichier (en) Langage de programmation |
Seite web | www.tug.org |
TeX est un système logiciel libre de composition de documents, indépendant du matériel utilisé pour la visualisation ou l'impression. Il a été 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...).
Origine et historique
[modifier | modifier le code]Origines du programme
[modifier | modifier le code]Lorsque le premier volume de The Art of Computer Programming a été publié en 1968, le premier livre de Donald Knuth, celui-ci a d'abord été imprimé par composition par métal chaud, une technique datant du XIXe siècle 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[2]. 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[3].
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[4].
Décidant d'aller travailler dans les locaux de Stanford au lieu des laboratoires Xerox de Palo Alto[5], 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[6], 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 a été 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[7].
Première version
[modifier | modifier le code]La première version de TeX, également dénommé Tau Epsilon Chi, a été 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[8].
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[9]. Parallèlement, Knuth sortit la première version de Metafont en 1979.
Deuxième version
[modifier | modifier le code]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[10]. Knuth inclut également un véritable langage de programmation certifié Turing-complet sous la pression de programmeurs, notamment Guy Steele[11].
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[12]. 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
[modifier | modifier le code]À 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 [13]. La version actuelle de TeX est la 3.141592653, la dernière mise à jour datant de [14]. Les caractéristiques essentielles de TeX ont été figées après la version 3.0, 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
[modifier | modifier le code]Principales caractéristiques
[modifier | modifier le code]Dès le départ, le système TeX a été 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
[modifier | modifier le code]![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/LaTeX_sample.png/220px-LaTeX_sample.png)
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
[modifier | modifier le code]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é.
Balisage | Rendu |
---|---|
|
. |
Le programme TeX
[modifier | modifier le code]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
[modifier | modifier le code]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[15].
Metafont
[modifier | modifier le code]![Logo de Metafont](http://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/METAFONT_logo.svg/220px-METAFONT_logo.svg.png)
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 2 fois la largeur de la lettre i, la lettre m prend 3 fois la largeur de la lettre i et la lettre u prend la même largeur que la lettre n[16].
Sous Metafont, les lettres sont créées à partir d'équations.
Utilisation
[modifier | modifier le code]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
[modifier | modifier le code]Donald Knuth a répété plusieurs fois que le code source de TeX était dans le domaine public[17] 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
[modifier | modifier le code]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 ;
- XyMTeX (en) : une extension pour afficher des formules chimiques.
Communauté
[modifier | modifier le code]![Logo TUG](http://upload.wikimedia.org/wikipedia/commons/thumb/2/28/Logo_TUG.svg/220px-Logo_TUG.svg.png)
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
[modifier | modifier le code]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 — logiciels ou livres. Jusqu'en 2008, il offrait même une récompense (en) financière. Celle-ci s’élevait à 2,56 $ (un « dollar hexadécimal »[18]) pour une erreur (coquille ou autre) dans un livre imprimé. Pour un bug logiciel, le montant augmentait avec l’âge : de 1,28 $ la première année d’existence du bug, il était ensuite doublé chaque année jusqu’à un plafond de 327,68 $ (soit 128 « dollars hexadécimaux », atteint après huit ans)[19].
Malgré le grand nombre de chèques envoyés et leur montant parfois élevé, très peu d’entre eux étaient encaissés[20], leurs destinataires préférant les encadrer[21].
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[20], 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, prononciation et typographie du nom
[modifier | modifier le code]Selon son auteur[22], le mot « TeX » a été créé à partir du grec ancien τέχνη / tékhnē (« art, habileté à faire quelque chose »[23], racine étymologique du mot « technique ») ; le logotype TEX serait 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 [k] (comme k dans « kayak » et ch dans « technique ») puis [ x] (comme ch dans l'allemand « Buch » et j dans l’espagnol « Juan Carlos »). Donald Knuth recommande la seconde prononciation, [tɛx]. Cependant, le son [ x] n’étant connu ni en français ni en anglais (hors mots d’emprunt), de nombreux utilisateurs emploient plutôt la première prononciation, [tɛk].
On entend aussi, particulièrement de la part des novices, la prononciation jugée erronée [tɛks], comme dans le mot « texte ».[réf. nécessaire]
Le nom du logiciel s’écrit avec un « X » majuscule qui rappelle la forme du logotype, « TEX ». Ce dernier évoque les possibilités de mise en forme offertes par TeX (en l’occurrence : formules mathématiques avec exposants, indices et lettres grecques).
Notes et références
[modifier | modifier le code]- « https://www-cs-faculty.stanford.edu/~knuth/abcde.html »
- (en) Donald Knuth E., Digital Typography, p.5
« I had spent 15 years writing those books, but if they were going to look awful I didn't want to write any more »
- (en) « Interview of Donald Knuth - Deciding to make my own typesetting program » [vidéo], sur webofstories.com, (consulté le )
- (en) Donald E. Knuth, Computers & Typesetting, Volume E : Computer Modern Typefaces, Massachusetts, Addison-Wesley, , 483 p. (ISBN 0-201-13448-9), Introduction
- (en) « Interview de Donald Knuth - Working on my typesetting program » [vidéo], sur webofstories.com, (consulté le )
- (en) John E Mustain, « Aldine Collection », sur library.stanford.edu (consulté le )
- (en) Donald E. Knuth, TeX : The Program, vol. B, Addison-Wesley, (1re éd. 1986), 600 p. (ISBN 0-201-13437-3), p2
- (en) Donald Knuth, TAU EPSILON CHI, A System for Technical Text, Providence, R.I. : American Mathematical Society, (ISBN 0-8218-0209-7, lire en ligne)
- (en) Ignacio Zabala et Luis Trabb-Pardo, « The status of the Pascal implementation of TeX », TUGboat, vol. 1, no 1, (lire en ligne)
- Knuth and Plass, p. 144
- (en) Christina Thiele, « Knuth meets NTG members » [PDF], sur aanhet.net, (consulté le )
- (en) Donald E. Knuth, « The New Versions of TeX and METAFONT », sur TUGboat, (consulté le )
- (en) Donald E. Knuth. The future of TeX and METAFONT, NTG journal MAPS (1990), 489. Réimprimé comme chapitre 30 de Digital Typography, p. 571.
- (en) Notice du paquet tex, sur CTAN (consulté le ).
- (en) Donald E. Knuth, The TeXBook, vol. A, American Mathematical Society et Addison Wesley, , Appendix H - p449
- (en) « Mathematical formula for letter shape », Interview de Donald Knuth [vidéo], sur webofstories.com, (consulté le ).
- (en) Donald Knuth, « Computers and Typesettings » [PDF], sur TUGboat, 1995-1998 (consulté le )
- (en) Donald Knuth, « Frequently Asked Questions », sur son site personnel (consulté le )
- (en) « History of TeX », sur tug.org, (consulté le )
- (en) Donald Knuth, « Recent News — Financial Fiasco », sur son site personnel,
- (en) Kara Platoni, « Love at First Byte » [archive du ], sur stanfordalumni.org,
- (en) Donald E. Knuth, The TeXbook, Ch. 1: The Name of the Game, p. 1
- Anatole Bailly ; 2020 : Hugo Chávez, Gérard Gréco, André Charbonnet, Mark De Wilde, Bernard Maréchal & contributeurs, « Le Bailly », (consulté le ).
Voir aussi
[modifier | modifier le code]Articles connexes
[modifier | modifier le code]- 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
[modifier | modifier le code]- Donald Knuth (trad. Jean-Côme Charpentier), Le TeXbook : composition informatique, Vuibert, 2003, 555 p. (ISBN 978-2-7117-4819-8).
- (en)Donald Knuth (original), The TeXbook, Vol. A. : Computers & Typesetting, Addison-Wesley, 1984 (première édition), 483 p. (ISBN 0-201-13448-9).
- (en)Donald Knuth, TeX: The Program, Vol. B. : Computers & Typesetting, Addison-Wesley Professional, 1986, 624 p. (ISBN 978-0-201-13437-7). Cet ouvrage contient le source du compilateur TeX en Pascal, en utilisant les techniques de programmation lettrée.
Liens externes
[modifier | modifier le code]- 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/