[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ suivant ]


Présentation rapide de LaTeX2e
Chapitre 2 - TeX, LaTeX et Cie — qui est qui ?


2.1 TeX

TeX est un formateur de texte, c'est-à-dire un programme qui prend en entrée un fichier texte dans un langage donné, décrivant un document destiné à être imprimé, et produit un fichier dans un format graphique permettant cette impression. En d'autres termes, vous avez un fichier source décrivant un article, un livre, etc., vous le passez en entrée à TeX et il vous produit un fichier dans lequel la mise en page (justification des paragraphes, remplissage et découpage des pages, etc.) a été faite automatiquement en fonction des instructions que vous aurez données dans le fichier source.

TeX a été écrit par Donald Ervin Knuth, un mathématicien et informaticien de renommée internationale (oui, dans les deux domaines). Le besoin d'écrire TeX lui est venu lorsque son éditeur, Addison-Wesley, lui a envoyé les épreuves de la deuxième édition du deuxième tome de The Art of Computer Programming. La technique d'impression venait de changer pour une méthode plus automatique que la méthode traditionnelle, mais assez décevante du point de vue de la qualité typographique (gestion des blancs, fontes...). L'ancienne méthode étant condamnée à disparaître, Donald E. Knuth a débuté le projet TeX en 1977 avec deux axes principaux :

TeX est particulièrement bien adapté à l'écriture de longs documents — notamment, des livres — et est très doué en ce qui concerne le rendu des formules mathématiques. C'est d'ailleurs en partie de là que vient son nom, dérivé du mot grec formé des trois lettres tau, epsilon et chi, lequel renvoie à l'art et à la technique. TeX est généralement prononcé comme la première syllabe du mot « technique ».

TeX est en fait un programme qui ne fait que placer des boîtes (rectangulaires) les unes par rapport aux autres. Mais il fait cela très bien :

TeX a été conçu pour durer — à comparer au célèbre « 640 kB should be enough for everyone » de MS-DOS.

TeX place donc des boîtes dont il ne connaît pas le contenu, à savoir le dessin du caractère correspondant à cette boîte ou bien le schéma dont la boîte peut être le contour, etc. Le fichier de sortie de TeX contient les positions des boîtes et le couple (fonte, caractère)[2] associé à chaque boîte. Compte tenu de l'état de l'art en matière de fontes à la fin des années 1970, Donald E. Knuth a écrit dans la foulée un programme de rendu de fontes, appelé METAFONT, qui prend en entrée un fichier en langage METAFONT et produit des descriptions bitmap des glyphes à une résolution quelconque (choisie en fonction de l'imprimante qu'on veut utiliser pour imprimer le document)[3]. La combinaison TeX + METAFONT permet donc d'obtenir toutes les informations nécessaires au document prêt-à-imprimer (taille, position et contenu des boîtes).

Dans les distributions TeX actuelles, METAFONT est appelé automatiquement lorsque c'est nécessaire donc l'utilisateur n'a pas à s'en soucier en général. De plus, si l'on utilise uniquement des fontes PostScript Type 1, TrueType ou OpenType, ce qui est généralement le cas quand on produit du PDF, METAFONT est à peu près inutile.

La première version de TeX, TeX78, date de 1978. La dernière version au 12 avril 2018, est la 3.14159265 (depuis la version 3, le numéro de version utilise les décimales du nombre Pi, une décimale étant ajoutée à chaque nouvelle version). Cette version est sortie en janvier 2014. TeX ne reçoit plus que de très rares corrections de bugs malgré la prime, actuellement de 327,68 dollars U.S., que Donald E. Knuth offre a quiconque trouve un bug dans TeX ou dans METAFONT. D'autres moteurs dérivés de TeX (cf. Moteur et driver, Section 2.2), notamment pdfTeX, XeTeX et LuaTeX, font l'objet d'un développement moins lent et surtout, reçoivent de nouvelles fonctionnalités au fil des ans.


2.2 Moteur et driver

Cette section contient un certain nombre de détails qui peuvent être ignorés en première lecture mais seront utiles au lecteur qui recherche une compréhension globale et relativement précise des systèmes construits autour de TeX.

Pour la plupart des utilisateurs, TeX n'est vraiment utile qu'à travers la mise en œuvre d'un moteur et d'un driver. Un moteur de type TeX est un programme qui prend en entrée un fichier source au format TeX et réalise le placement de toutes les boîtes (caractères et images) pour former des lignes, des paragraphes et des pages. Le résultat fourni par le moteur contient la position de chaque boîte sur la page ainsi que le caractère[4] que le driver devra insérer en lieu et place de la boîte, si cette dernière correspond à du texte. Le moteur ne connaît des fontes que leurs métriques (en gros, les dimensions des boîtes qu'il utilise pour se faire une idée de la place à accorder à chaque caractère). Le dessin précis de chaque caractère dans une fonte donnée (qui est appelé glyphe) n'a pas la moindre importance pour le moteur. Il ne fait que placer sur la page des boîtes correspondant aux caractères et images indiqués dans le fichier source.

Un driver (dans le monde TeX) est un programme qui utilise la sortie du moteur pour créer un fichier réellement exploitable par l'utilisateur, par exemple au format PostScript ou PDF. Ainsi, la sortie du moteur TeX traditionnel, à savoir le format DVI, est interprétée par des drivers DVI : des programmes qui permettent de visualiser le format DVI (exemple : xdvi) ou de convertir un document dans ce format vers le format PostScript (exemple : dvips).

Le programme pdfTeX est un hybride très intéressant[5] contenant à la fois un moteur de type TeX amélioré et un driver produisant du PDF. Son caractère hybride se traduit par le fait qu'il permet de générer directement (sans passer par un format intermédiaire tel que le format DVI) des fichiers PDF de qualité (avec liens hypertexte, table des matières au niveau du format PDF, etc.). Il supporte des formats récents tels que JPEG et PNG pour l'inclusion d'images, permet l'utilisation directe (sans conversion préalable, sans perte de qualité) de polices TrueType et contient quelques innovations typographiques absentes du moteur TeX dont il est issu.

pdfTeX peut aussi produire des fichiers au format DVI. Compte-tenu des fonctionnalités qu'il apporte, il est devenu plus intéressant que le moteur TeX traditionnel, même si l'on ne s'intéresse qu'au format DVI. Ceci explique pourquoi la commande latex fait désormais appel à ce programme dans plusieurs distributions TeX récentes.

pdfTeX est un moteur très stable et très utilisé. Deux autres moteurs TeX sont en développement actif : XeTeX et LuaTeX. Ces deux moteurs mettent l'accent sur le support direct, facile à utiliser des polices vues par le système d'exploitation, par exemple au format TrueType ou OpenType[6]. Le support d'Unicode (en particulier d'UTF-8) est également plus complet avec ces moteurs qu'avec pdfTeX, d'après ce que j'en ai lu. Les deux moteurs ont des approches différentes pour le support des polices, semble-t-il ; mais la specificité sans doute la plus notable de LuaTeX est son support très complet du langage interprété Lua afin de programmer plus facilement qu'en TeX[7]. LuaTeX intègre également MetaPost de manière poussée, permettant ainsi d'écrire le code des figures MetaPost directement dans le fichier .tex si on le souhaite (voir luamplib).


2.3 Plain TeX

Le langage que comprend le moteur TeX, et qui est documenté en détail dans le TeXbook (par D.E. Knuth), est d'assez bas niveau (rien de péjoratif dans cette expression, cela signifie simplement qu'il implémente essentiellement des actions élémentaires). Plain TeX est un jeu de macros écrites par D.E. Knuth dans ce langage, mettant à disposition de l'utilisateur des fonctions plus évoluées que le langage TeX de base.

Ce jeu de macros a été précompilé pour en permettre une utilisation efficace par TeX. Le résultat de cette précompilation s'appelle un format dans le jargon TeX, et est souvent enregistré dans un fichier d'extension .fmt (tex.fmt, plain.fmt...).


2.4 LaTeX

LaTeX est le nom du jeu de macros TeX le plus populaire à l'heure actuelle. Il fournit une nouvelle interface de programmation à l'utilisateur qui permet, sauf dans certains cas de besoins très précis, d'ignorer complètement le langage TeX.

LaTeX (de même que le HTML par exemple) est ce qu'on appelle en anglais un markup langage : il permet de décrire la structure, la logique du document. Par exemple, pour un titre de section de niveau n, au lieu de dire « je veux du gras en taille 24 de tel caractère à tel caractère », on place dans son fichier source la commande de section de niveau n avec pour argument le titre de la section et son apparence sera déterminée par la personnalisation des formats des titres des sections de niveau n. Ce mécanisme (comme beaucoup d'autres de LaTeX) a été repris par Word avec les « styles » mais les possibilités offertes par LaTeX une fois qu'on a pris la peine de lui décrire la logique du document sont infiniment plus étendues qu'avec Word, et ce pour une raison simple et fondamentale : TeX (comme LaTeX et presque[8] tous ses dérivés) n'est pas WYSIWYG[9].

Ceci implique que LaTeX est très adapté à la rédaction de documents structurés et relativement longs et peu pratique lorsqu'il s'agit de composer une seule page avec une mise en page nécessitant beaucoup de réglages « au jugé »... LaTeX n'est pas un logiciel de PAO.

L'expérience prouve que plus on utilise LaTeX, plus on apprécie cette possibilité de décrire le document en mettant l'accent sur sa logique en premier lieu (et donc de taper « au kilomètre ») et d'utiliser la structure ainsi décrite pour obtenir — au gré de sa fantaisie et avec un minimum d'efforts par changement testé — la forme (au sens fond/forme) souhaitée du document final.

LaTeX a été écrit à l'origine par Leslie Lamport ; le La de LaTeX vient a priori de son nom. Ses versions principales sont la 2.09 de 1985 et la 2e[10] de 1994, suivie de nombreuses petites corrections (voir les news LaTeX2e). Pratiquement plus personne n'utilise encore la version 2.09 à l'heure actuelle. La prochaine version majeure, LaTeX3, est en préparation depuis fort longtemps, mais en fait les fondations sont déjà considérées comme relativement stables par les développeurs et peuvent être utilisées pour programmer (voir l3kernel en commençant par expl3.pdf, ainsi que les news LaTeX3). En 2019, je dirais que LaTeX3 s'adresse plutôt aux utilisateurs expérimentés, mais si vous souhaitez programmer en LaTeX, le framework LaTeX3 est déjà bien documenté et les avantages apportés par rapport à la programmation en TeX pur ou en LaTeX2e sont considérables (je pense par exemple aux diverses variantes des fonctions, aux types de données, à l'organisation plus claire de l'environnement de programmation et à la bibliothèque standard déjà assez importante[11]).

La popularité de LaTeX a une conséquence non négligeable pour ses utilisateurs : grâce à elle, de très nombreux packages (plus de 1000) ont été écrits pour résoudre le plus élégamment possible les problèmes auxquels ont été confrontés ses utilisateurs (jusqu'à l'écriture de partitions de musique...).

D'un point de vue technique, LaTeX est un format, au même titre que Plain TeX. Il est donc en général stocké sous forme précompilée dans un fichier d'extension .fmt (latex.fmt, pdflatex.fmt...).


2.5 Classes non standard et autres formats

Il existe d'autres « gros » jeux de macros écrits en TeX qui peuvent être précompilés en tant que formats, mais aucun n'est aussi répandu que LaTeX à l'heure actuelle (2019). Le meilleur exemple est sans doute ConTeXt, qui est focalisé sur le format PDF pour la sortie et permet de réaliser des choses assez intéressantes.

Même en restant dans le monde LaTeX, il y a deux classes ou ensembles de classes non standard[12] assez connus qui essaient, chacun à sa manière, d'améliorer l'expérience utilisateur :

memoir comme KOMA-Script utilisent l'infrastructure LaTeX (LaTeX kernel). On ne peut pas les utiliser sérieusement sans lire leurs documentations respectives, mais en dehors de cela, un utilisateur de LaTeX est en terrain connu avec ces deux-là. ConTeXt, en revanche, est écrit en TeX et en Lua, utilise certes la syntaxe TeX, mais est très différent de LaTeX.


2.6 Portabilité et licence

TeX et la plupart des programmes qui gravitent autour sont gratuits et diffusés avec leurs sources (mieux : la plupart sont libres — cf. http://www.gnu.org/philosophy/free-sw.html — on peut donc les modifier et redistribuer les versions modifées[13]). De plus, TeX fonctionne sur de très nombreuses plateformes, incluant les systèmes de type Unix, Windows et Mac OS.


[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ suivant ]


Présentation rapide de LaTeX2e

Version 1.30 (1er août 2019)

Florent Rougon mailto:f . rougon (**AT**) free [point] fr