TeX & Co qu’est-ce ?
Comment ça marche ?

Donald Knuth est un mathématicien et informaticien américain, professeur émérite à l'univer­ sité Stanford. Il est l'auteur d'une bible de la programmation intitulée « The Art of Computer Programming » (TAOCP). Cet ouvrage de plusieurs volumes et de plusieurs millier de pages est toujours en rédaction, le dernier volume le no 4a est paru en 2011. Donald K Knuth a prévu 7 volumes, une véritable somme.

Le premier volume paru en 1965, a été publié à l'ancienne avec des caractères en plomb. Quand en 1976 Donald Knuth décide de publier la seconde édition du volume 2 de TAOCP, les caractères en plomb ont été abandonné au profit de la photocomposition. Donald Knuth trouve la qualité d'impression de ces machines, médiocre (notamment pour l'écriture des formules mathématiques) et décide de créer deux logiciels pour pouvoir produire ses publications avec une qualité typographique professionnelle. Le premier TeX sert à la composition de documents, le second MetaFont à produire des polices vectorielles. Donald Knuth va mettre plusieurs années avant de sortir en 1983 la version définitive de TeX qui utilise la police Computer Modern qu'il a créé à l'aide de MetaFont. En effet Donald Knuth s'était fixé comme but d’arriver à un produit qui devrait être parfait et qui devrait le rester au cours du temps. C'est cette version qui est toujours utilisée et qui fonctionne depuis 30 ans. Donald Knuth est quand même intervenu sur TeX à plusieurs reprise, notamment en 1989 pour l'adapter aux caractères nécessaires pour la composition de texte avec d'autres langues que l'anglais (version 2.991). La version actuel de TeX est la 3.141592653 (paru en janvier 2021).

L'autre trait de génie de Donald Knuth est de confier TeX à l'American Mathematical Society et d'en faire un logiciel libre. À partir de là d'autres informaticiens vont s'emparer de TeX pour l'adapter (sortie de document au format pdf, utilisation de format d'image inconnue en 1983, adaptation à d'autres langues que l'anglais...) et l'enrichir (module permettant la création de formule chimique, de partition musicale, de diagrammes électrique ou physique...).

TeX, mais qu'est-ce donc ?

TeX est un système de composition de documents. C'est à la foi un langage informatique et un logiciel. Dans un premier temps tu écris ton texte dans lequel tu insères des commandes TeX (qui commencent par un antislash \) qui indiquent des actions typographiques (mettre en gras, sauter une ligne, commencer un nouveau chapitre… ). Une foi ceci fait il faut à l'aide du logiciel TeX compiler ton document, c'est à dire exécuter toutes les commandes pour fabriquer ton texte comme souhaité et obtenir le document à imprimer. Les algorithmes utilisé par TeX sont complexe car contrairement à un traitement de texte Wysiwyg, TeX va parcourir tout le texte, pour savoir comment couper les mots et les phrases, où insérer les images… et il va appliquer des règles typographiques très strictes, afin de fabriquer un document le plus parfait sur la forme. Pour le fond malheureusement TeX est impuissant et il te faudra te débrouiller tout seul.

TeX contient environ 300 commandes de base, dites primitives. Voici comment s'écrit, à l'aide de primitives, le logo de TeX avec le E décalé vers le bas :

T\kern -.1667em\lower .5ex\hbox{E}\kern -.125emX

Comme tu peux le voir ces primitives ne sont pas faciles à utiliser. Donald Knuth les a donc complétées avec environ 600 macros. Une macro est un terme informatique qui désigne un regroupement d'instructions afin d'obtenir une action. Le langage ainsi obtenu constitue ce qu'on appelle un format, et se nomme Plain TeX. La macro Plain TeX pour écrire TeX est \TeX, tout simplement, elle remplace les commandes ci-dessus.

Et LATeX fût

En 1982 Leslie Lamport un chercheur en informatique américain écrit LATeX (Lamport TeX) un nouveau jeu de macros beaucoup plus simple à utiliser que Plain TeX . C'est un succès et pratiquement plus personne n'utilise Plain TeX . L'apparition des packages qui permettent facilement d'augmenter les fonctionnalités ont rendu LATeX incontournable. La version actuelle de LATeX est la LATeX2 dont la première apparition date de 1994, elle est maintenue par le LATeX3 Project team qui nous prépare la version 3 de LATeX depuis plus de 20 ans !

À la fin des année 90, Hàn Thết Hành crée le moteur PdfTeX qui permet de sortir les documents au format pdf plus convivial que le format d'origine de TeX le dvi. La dernière version la 1.40.17 date de 2016, PdfTeX n'est plus développé seuls des corrections de bugs y sont apporté.

En 2008 création du moteur XƎTeX qui permet d'utiliser les polices installées sur l'ordinateur et de ne pas ce limiter à celles de TeX.

Création du moteur LuaTeX qui complète XƎTeX et l'ouvre au langage de programmation Lua ce qui permet d'étendre les possibilités de TeX, notamment d'intégrer dans les macros des morceaux de code Lua. LuaTeX est développé par Taco Hoekwater , Hartmut Henkel , Hans Hagen. ConTeXt créé par Hans Hagen est un ensemble de macros (comme Plain TeX ou LATeX) qui utilise le moteur LuaTeX.

Il est développé, depuis 1990, au sein d'une entreprise de création d'ouvrages scientifiques, éducatifs et de manuels Pragma : https ://www.pragma-ade.com/, basée aux Pays-Bas). À la différence de LATeX, ConTeXt est toujours en développement et tire profit des dernières avancées dans les moteurs TeX, puisqu'il peut utiliser pdfTeX, XƎTeX et LuaTeX avec les mêmes fichiers. Ce développement actif est à l'origine de l'existence de deux ConTeXt, Mark II (MkII) et Mark IV (MkIV). Le premier, MkII, est figé, mais toujours maintenu, il utilise les moteurs pdfTeX et XƎTeX. Mark IV est basé sur le moteur LuaTeX.

Depuis avril 2019 il existe une nouvelle version de ConTeXt : ConTeXt LMTX. Il s'agit d'une implémentation de Mark IV dans un nouveau moteur nommé luametaTeX. Le but de cette nouvelle version est de mieux intégrer les différents composants de ConTeXt : TeX, Lua (lan­gage de script) et MetaPost (langage de graphique) tout en consommant le moins de mémoire et de cycles de cpu possible. Ce nouveau ConTeXt est bien adapté aux ordinateurs (et ser­veurs) de faible puissance avec une mémoire limitée. Pour plus de renseignement voici un lien vers le texte qu'Hans Hagen a écrit dans le TUGboat n°40 de 2019. Il est également très facile à installer et à mettre à jour. Le changement de version est complètement transparent pour l'utilisateur, et jusqu'à présent j'ai toujours pu compiler mes documents sous l'une ou l'autre version (sauf la version MkII qui est trop éloignée de LMTX).

Les développeurs de ConTeXt sortent très régulièrement de nouvelles versions (depuis 2019 de LMTX) qui apportent de nouvelles fonctionnalités.

LATeX/ConTeXt et la programmation

Rassure toi, ces ordres n’ont pas besoins forcement d’être nombreux, mais pour obtenir un bon résultat, il faut au minimum indiquer la langue dans laquelle tu travailles, le format du papier, sa division (partie, chapitre section…) et le type de document que tu souhaites obtenir. On ne fabrique pas de la même manière un livre, un rapport de stage ou un article. La fabrication d’un tableau simple ne demande que quelque commandes mais un tableau avec des cellules fusionnées ou s’étalant sur plusieurs page va demander des réglages plus fins.

Pour simplifier LATeX et ConTeXt sont un ensemble de macros[2] qui facilite l’utilisation du langage informatique TeX, qui est à l’œuvre dans la fabrication de ton document. TeX, LATeX et ConTeXt étant des logiciels libres, tu peux modifier ces macros pour les adapter à tes besoins, tu peux créer de nouvelles macros. De nombreux utilisateur de TeX ont crées des macros et les ont mises à la disposition de tous. Et c'est là que LATeX et ConTeXt ce distinguent. Je parle un peu des différences dans cette fiche.

LATeX

Avec LATeX les macros sont souvent regroupées dans des packages que tu charges en cas de besoins. C’est pour cette raison que l’on parle de « distribution LATeX ». Une distribution LATeX contient outre les programmes de base TeX et LATeX, des milliers de packages, qui permettent, entre autre, d’écrire des formules de chimie, de faire des tableaux complexes, d’écrire en couleur, de mettre des images dans les marges, d’écrire en chinois et même en quenya la langue elfique inventé par J. R. R. Tolkien. Les possibilités sont énormes et avant de ré-inventer la roue, cherche dans la liste des packages si quelqu’un n’a pas déjà proposé une solution à ton problème. Il existe plusieurs distributions LATeX : MiKTeX sous Windows, TeXLive sous Linux et Windows et MacTeX sous Mac OS X.

ConTeXt

ConTeXt est l’œuvre de deux auteurs et est est monolithique. Toutes les macros font partie de ConTeXt, il n'est pas nécessaire de charger des packages. L'avantage est de ne pas avoir de conflit entre les packages comme cela arrive avec LATeX. Il est également très facile à installer et à mettre à jour.

Pour ConTeXt, si les commandes aident toujours l'utilisateur à réaliser son document, elles permettent aussi un contrôle très fin de la mise en page. On peut très facilement, sans se plonger dans les arcanes de TeX, réaliser de nouvelles mises en page très sophistiquées. Par contre pour obtenir une belle mise en page, il va falloir te la fabriquer toi-même. ConTeXt ne possède pas de classe comme scrartcl de Koma-script qui te mâche le boulot. Pour de plus amples détail sur les différences entre les deux système je te renvoie à cette fiche.

Où l'on voit pâlir Mme/Mr Michu

– Oh la la !!! moi je veux juste écrire un texte pas devenir programmateur.

Les commandes sont des ordres donnés au programme LATeX et ConTeXt pour qu'il fasse quelque chose. Tu fais exactement la même chose sous des traitements de texte comme Word ou Libre Office quand tu cliques sur une icône pour mettre en gras. Il a bien fallu que tu apprennes que cette icône icone gras sert à mettre en gras. L'apprentissage sous LATeX et ConTeXt ne demande pas plus compétences et de disponibilités, il faut juste écrire /bf.

Les traitements de texte sont devenus de véritable usine à gaz et je ne suis pas convaincu qu’apprendre et écrire une petite série de commandes, soit plus difficile que de se retrouver dans la jungle des onglets et des sous-menus.

LATeX/ConTeXt et la typographie

Les traitements de texte, obligent leurs utilisateurs à faire eux mêmes la mise en page de leurs documents. Malheureusement, rare, parmi eux, sont ceux qui maîtrisent les règles typographiques. La conséquence est que l’on s’est habitué à une typographie du pauvre. Le problème c’est que la typographie, ça ne sert pas uniquement à faire joli, son rôle principal est de faciliter la lecture. La typographie est une science ancienne, dont les premières règles ont été élaborées par les moines copistes et qui s’est développée avec l’invention de l’imprimerie par Gutenberg.

Pour ne pas détourner le lecteur du fond, il ne faut pas que des éléments typographiques ni que la mise en page n’entraîne de fatigue visuelle.

Par exemple une règle couramment admise est que la longueur d’une ligne de texte (en typographie on dit la justification) ne doit pas dépasser 60 à 70 caractères (espace compris). Au-delà l’œil fatigue et il est plus difficile de localiser la prochaine ligne. Pour un texte écrit sur une seule colonne, une justification de 65 caractères est considérée comme idéale. C’est pour éviter la fatigue visuelle que les journaux, qui cherchent pour des raisons d’économie à mettre le plus de texte par page, sont écrit en colonnes pour conserver une justification acceptable.

Le gris typographique est l’apparence grise que prend le corps de texte, quand tu le regardes de loin ou si tu plisses les yeux pour voir le texte flou. Plus ce gris est homogène plus la lecture du texte sera facile et agréable. Au contraire quand l’homogénéité de ce gris est rompue par par un mauvais interlignage, des « rivières » ou des « lézardes », (les lignes blanches composées d’espaces, les unes[3] sous les autres, qui traversent les textes mal fichus), l’attention portée au texte diminue car ces défauts détournent du texte et rendent la lecture difficile. Obtenir un bon gris n’est pas facile, il dépend de la police utilisée de sa taille de la justification, de l’interligne…

lézarde.
Figure 1 : Exemple de lézarde au milieu du texte (source Wikipédia).

On pourrait encore parler de la taille des marges avec leurs modes de calcul (« le canon de l’atelier », « au neuvième ») et de bien d’autres choses. Toutes ces règles concourent à la conception d’un document agréable à lire permettant au lecteur de rester concentrer sur sa lecture. Si j’ai tenu à évoquer[4] ces questions d’ordre typographique, c’est pour essayer de te faire comprendre que l’on ne s’improvise pas typographe, et que d’avoir un logiciel qui s’en occupe est une chance.

LATeX/ConTeXt versus traitements de texte

Quand tu travailles avec LATeX/ConTeXt il faut que tu oublies tous tes réflexes d’utilisateur de traitement de texte, la philosophie est différente, le fonctionnement aussi. Un traitement de texte fait la mise en page au fur et à mesure sans connaître la suite du texte. Quand je dis il fait la mise en page, il se contente juste de passer à la ligne quand il arrive sur la marge, le reste c’est toi qui le fait.

L’exemple le plus frappant pour illustrer l’aberration de ce système est l’insertion d’images. Je ne sais pas si tu as déjà l’expérience de longs documents avec des illustrations sous un traitement de texte classique, on a toujours l’impression que c’est facile. Tu places l’image, tu ajustes la taille et la position avec des poignées. Ensuite tu passes une ligne, tu mets la légende, puis tu continues à taper le texte. Ça c’est dans le meilleur des cas. Si tu es dans le bas de la page et qu’il n’y a pas la place tu es éjecté page suivante et celle que tu viens de quitter, présente une grande plage de blanc. Si tu considères que de grands espaces vides au sein du texte ont une valeur esthétique, alors tout va bien. Enfin si tu figes ton texte car la moindre transformation décale l’ensemble de ton bel arrangement, t’obligeant à refaire toute la mise en page. Et te voila à reprendre les poignées pour triturer les images pour que la légende et l’image restent sur la même page, ou pour éviter les grandes plages de blanc crées.

LATeX/ConTeXt composant ton document après l’écriture de ton texte, ils en ont une vision complète et s’ils n’ont pas la place de positionner ton image en bas de page ils continueront à placer du texte, en reportant ton image page suivante.

LATeX/ConTeXt comment ça marche

Il faut plusieurs étapes pour fabriquer un document avec LATeX/ConTeXt. Premièrement tu dois écrire ton texte. Tu ne t’occupes pas de la mise en page tu « frappes au kilomètre », tu restes concentré sur le fond. Tu as juste à ajouter de temps en temps une commande pour indiquer que tu veux changer de paragraphe, que tu veux ce mot en gras, ajouter une note en bas de page ou mettre la table des matières à cet endroit. Ce fichier est un fichier texte brut ou fichier texte simple ou fichier ASCII que tu sauvegardes avec l’extension .tex. Ce fichier s’appelle le source[5].

Maintenant il faut transformer ce source en document final, c’est la compilation. Il existe plusieurs compilateurs, comme tu veux réaliser un document au format PDF, tu vas utiliser pdflatex. Tu obtiens un document conforme au standard PDF lisible par n’importe quel « lecteur PDF » outre Acrobat Reader d’Adobe qui est multiplate-forme, il en existe de nombreux, une recherche dans un moteur de recherche internet te permettra de trouver ton bonheur.

Mme/Mr Michu n’est pas Mr Jourdain

On ne peut pas faire du LATeX/ConTeXt sans le savoir, ni sans avoir une distribution LATeX/ConTeXt en état de marche. Ce tutoriel sera basé sur la TexLive (pour LATeX) . Son gros avantage est d’être multiplate-forme, Linux, Mac, et Windows. Si comme moi tu travailles sur plusieurs environnements, ton document passera de l’un à l’autre de façon totalement transparente, sans aucun problème. Pour ConTeXt la LMTX.

Tu seras très certainement amené à lire les différentes fiches à Bébert pour approfondir certains sujets. Je te conseille également de parcourir les documents suivants :

Mme/Mr Michu n’est pas un·e neuneu

L’installation d’une distribution LATeX n’est pas l’objet de cette fiche. L’installation de la TeXLive est assez triviale et je te renvoie au site suivantoù Denis Bitouzé et Patrick Bideault te l’expliquent pas à pas :

version pdf :http://www.tug.org/texlive/doc/texlive-fr/texlive-fr.pdf

version html : http://www.tug.org/texlive/doc/texlive-fr/texlive-fr.html

Toutes les distributions Linux on des paquets pour installer une TeXLive plus ou moins à jour. Lors de la rédaction de ce tuto, j’utilise une Debian 11 avec une TeXLive 2020, dont la version de ConTeXt est : ver : 2020.03.10 14 :44 MKIV. C’est cette version que je vais utiliser pour compiler tous les exemples de ce tuto. Par contre ce manuel que tu peux télécharger ici, est compilé avec une ConTEXt LTMX à jour, certaines commandes, notamment pour la fabrication de la couverture ne fonctionnent pas avec la MKIV de 2020. J'explique l'installation de ConTeXt la LMTX dans cette fiche.

Comme Mme/Mr Michu n’est pas un.e neuneu, elle/il va s’en sortir « finger in the nose ». J’en profite pour faire quelques remarques. Il faut être le plus autonome possible, c’est une question de liberté élémentaire. Dépendre d’un tiers, ou être dominé par la machine, c’est être esclave. Donc essaye toujours de te débrouiller toute seule. Installe toi même tes logiciels. Dans certain cas tu vas en baver, car tu te trouveras confronté à des dépendances non résolue, à du matériel non reconnu…, mais chaque étape franchie, c’est un degré de liberté de gagné. Mais si tu lis ce tutoriel c’est que tu veux contrôler la fabrication de ton document et pas t’en remettre au bon vouloir de la machine.

Mme/Mr Michu n’est pas un.e geek

Un fichier LATeX/ConTeXt est un simple fichier texte que te peux donc écrire avec n’importe quel éditeur de texte. Attention j’ai dit éditeur et pas traitement de texte. Il faudrait être sacrément vicieux pour écrire un fichier LATeX/ConTeXt avec Microsoft Word, bien que cela soit possible. Donc sous Linux des logiciels comme gedit et KEdit, ou le bloc-notes sous windows, font parfaitement l’affaire. Tu peux même faire du LATeX/ConTeXt en mode console, tu sais la petite boite noire dans laquelle les geeks pilotent leur ordi avec des lignes de commandes. M’enfin si tu sais manipuler vim ou emacs je doute que tu trouves un intérêt à ce tutoriel. Donc comme tu n’es pas une geek, le plus simple pour faire du LATeX/ConTeXt, est quand même d’utiliser un éditeur spécialisé, qui permet de créer, éditer, compiler tes fichiers LATeX/ConTeXt. Il en existe de nombreux, et certain comme kile pour Linux sont très (trop ?) sophistiqué, avec des icônes partout, et ressemble au traitement de texte classique. Voici le nom de plusieurs d’entre eux, une recherche sur internet, te donneras des renseignements complémentaires :

Liste non exhaustive.