Glossaire des termes

Le vocabulaire de LaTeX ne déroute pas parce que les mots seraient difficiles, mais parce qu’ils portent un visage quotidien sur un sens différent. Un « package » n’est pas un paquet npm, une « classe » n’est pas une classe orientée objet, et « glue » ne désigne pas de la colle. Mieux : les personnages principaux de ce glossaire — moteur et format, classe et package, boîte, glue et kern — se vérifient tous sur sa propre machine. Sous TeX Live 2024, pdflatex n’est qu’un lien symbolique vers pdftex, et latex pointe vers ce même pdftex. Ce glossaire aborde chaque terme par l’endroit précis où les débutants se trompent.

Moteur et format : pourquoi pdflatex est pdftex

Un moteur est le programme qui s’exécute réellement ; un format est un bloc de macros préchargé dans ce programme. Ce n’est pas une abstraction : cela se voit dans le système de fichiers. Dans le répertoire bin de TeX Live 2024, pdflatex est un lien symbolique vers pdftex, et latex pointe vers ce même pdftex. De même xelatex → xetex, lualatex → luahbtex, tandis que platex et uplatex sont tous deux euptex. Six « commandes LaTeX » ne sont donc en réalité que quatre binaires. Qu’est-ce qui sépare alors latex de pdflatex ? Uniquement le fichier .fmt chargé au démarrage, un vidage de macros déjà digérées. latex.fmt pèse 8 221 690 octets et pdflatex.fmt 8 221 444 : deux objets presque identiques, séparés par 246 octets.

shell
# TeX Live 2024: six commands, four binaries
$ ls -l latex pdflatex xelatex lualatex platex uplatex
latex    -> pdftex
pdflatex -> pdftex
xelatex  -> xetex
lualatex -> luahbtex
platex   -> euptex
uplatex  -> euptex
TermeSens et confusion fréquente
engineLe programme qui s’exécute (tex, pdftex, xetex, luatex, euptex). Format de sortie, technologie de fonte et gestion des caractères s’y décident
formatUn corps de macros préchargé (plain TeX, LaTeX, ConTeXt), figé dans un fichier .fmt
.fmtLe vidage du format, rangé sous texmf-var/web2c/<moteur>/ et produit par fmtutil
pdfLaTeXLa combinaison du moteur pdftex et du format LaTeX. Aucun programme ne s’appelle pdfLaTeX
LaTeX2eLe LaTeX actuel, en place depuis 1994. « LaTeX » tout court désigne normalement celui-ci
LaTeX3Le projet au long cours de réécriture du noyau. Il est déjà intégré au LaTeX actuel sous le nom expl3, et de nombreux packages l’utilisent

Classe et package : ce qui distingue .cls de .sty

Une classe décide de ce que le document est ; un package lui ajoute des capacités — et un document prend exactement une classe mais autant de packages qu’on veut. Toute la différence est là. Techniquement, ce sont dans les deux cas des fichiers texte remplis de définitions de macros, et rien ne distingue intrinsèquement le contenu d’un .cls de celui d’un .sty. Seule la façon de les charger les sépare, et la syntaxe énonce la règle : \documentclass{article} une fois, \usepackage{...} autant de fois qu’on le souhaite. Aussi, quand on hésite à ranger « deux colonnes » du côté de la classe (\documentclass[twocolumn]) ou du package (multicol), il faut se demander si la nature du document change ou si une capacité s’ajoute simplement. À côté : un .dtx est le manuscrit d’un package (code et documentation entrelacés) et un .ins la recette qui en extrait le .sty.

ExtensionContenu et moment d’apparition
.texLe manuscrit que vous écrivez. Le seul fichier qui relève du contrôle de version
.clsUne classe, chargée exactement une fois par \documentclass
.styUn package, chargé autant de fois qu’on veut par \usepackage
.dtx / .insLe manuscrit de l’auteur du package et la recette qui en génère le .sty
.auxLes notes de renvois, de table des matières et de citations. C’est pourquoi il faut compiler deux fois
.logLe compte rendu complet de la compilation. Des avertissements comme Missing character n’apparaissent parfois que là
.bib / .bblLa base bibliographique et la liste composée à partir d’elle

Macro, token, catcode : l’ordre dans lequel TeX lit les caractères

TeX ne lit pas les caractères comme des caractères. Il appose à chacun un « code de catégorie » (catcode), un numéro de rôle de 0 à 15, puis travaille là-dessus. \ vaut 0 (début de commande), { vaut 1, } 2, $ 3, & 4, # 6, ^ 7, _ 8, l’espace 10, les lettres 11, les chiffres et la plupart des symboles 12 (« other »), ~ 13 (actif) et % 14 (commentaire). Un caractère muni de son catcode est un token, la plus petite unité que TeX manipule, et une macro n’est qu’un nom attaché à une liste de tokens. Un endroit où cela se sent : dans le corps du document, le catcode de @ vaut 12, c’est-à-dire un symbole ordinaire, incapable d’entrer dans un nom de commande. Les commandes internes comme \@ifnextchar sont donc hors d’atteinte depuis le texte, et \makeatletter sert à basculer @ sur 11 pour un temps. À l’intérieur d’un package (.sty), il vaut déjà 11, d’où l’inutilité de la formule.

latex
% Ask TeX for the catcode of a character; the answer lands in the log.
\showthe\catcode`\@   % > 12.   (in the document body: "other")
\showthe\catcode`\A   % > 11.   (letter)
\showthe\catcode`\~   % > 13.   (active)
\makeatletter
\showthe\catcode`\@   % > 11.   (now a letter, so \@ifnextchar works)
\makeatother
TermeSens et confusion fréquente
tokenUn caractère et son catcode : l’unité minimale de TeX. Même glyphe, catcode différent, token différent
catcodeUn numéro de rôle de 0 à 15, modifiable avec \catcode ; verbatim s’en sert pour désarmer les commandes
macroUn nom donné à une liste de tokens, défini par \newcommand. C’est une substitution, pas un appel de fonction : les arguments sont collés tels quels
expansionLe remplacement d’une macro par son contenu. D’où le fait qu’une erreur soit signalée là où elle s’est développée, non là où elle a été définie
robust / fragileUne commande robuste survit aux endroits où le contenu est écrit puis relu (arguments mobiles : titres, notes) ; une commande fragile casse. Le LaTeX moderne en a rendu la plupart robustes

Boîte, glue et kern : les trois pièces de la composition

Pour TeX, une page composée n’est pas faite de caractères ni de paragraphes, mais exactement de trois choses : des boîtes, et la glue et les kerns qui remplissent l’espace entre elles. Un caractère est une petite boîte dotée d’une largeur, d’une hauteur et d’une profondeur ; une ligne est une boîte qui aligne des boîtes (\hbox) ; une page est une boîte qui empile des lignes (\vbox). Entre les boîtes se glisse la glue — un blanc qui s’étire et se comprime. Ce n’est pas une largeur mais un triplet largeur naturelle / étirement / compression : en Computer Modern 10pt, l’espace intermot vaut 3,33333pt au naturel, avec 1,66666pt d’étirement et 1,11111pt de compression. C’est cette élasticité qui rend la justification possible et qui permet à TeX de noter la tension d’une ligne (sa « badness »). Le kern, à l’inverse, est un écart rigide qui ne s’étire pas et ne peut pas non plus servir de point de coupure. Ainsi \hbox to 60pt{a\kern 10pt b} ne peut pas remplir sa largeur et signale Underfull \hbox (badness 10000), tandis que la même boîte avec de la glue étirable se cale sans un mot.

TermeSens et confusion fréquente
boxUn rectangle doté d’une largeur, d’une hauteur et d’une profondeur. \hbox aligne, \vbox empile. Compter la profondeur (sous la ligne de base) à part est une signature de TeX
glueUn blanc étirable et compressible : triplet largeur naturelle, étirement, compression. Il marque aussi un point de coupure autorisé
kernUn écart de largeur fixe : ni étirable, ni point de coupure. Sert à l’ajustement des lettres, comme les kerns négatifs dans \TeX
badnessUne mesure de la violence faite à la glue, de 0 à 10000 (le pire). C’est le nombre qui figure dans Underfull \hbox (badness 10000)
spLe scaled point, atome interne de TeX : 1pt = 65536sp. Toute longueur est stockée sous cette forme entière, si bien que les erreurs d’arrondi ne s’accumulent pas

Ce qu’est le DVI : pourquoi « indépendant du périphérique » n’embarque aucune fonte

Le DVI (device-independent) est la sortie pour laquelle TeX a été conçu : une liste d’instructions disant quel caractère, dans quelle fonte, va à quelles coordonnées — et rien sur la forme des lettres. Mesurée, la différence est spectaculaire. Composez le même document d’une ligne sous TeX Live 2024 : le DVI produit par latex pèse 300 octets, le PDF produit par pdflatex 17 081 — plus de cinquante-sept fois plus. À l’intérieur du DVI on lit fntdef1 27: cmr10 : la fonte n’est désignée que par son nom. Interrogez le PDF avec pdffonts et CMR10 répond emb yes sub yes — contours incorporés et réduits aux seuls caractères employés. C’est pourquoi un DVI ne s’affiche pas fiablement tel quel ; il ne devient distribuable qu’après que dvipdfmx ou dvips a résolu les fontes. Cette légèreté, et la liberté qu’elle laisse à l’étape suivante, expliquent que la chaîne japonaise upLaTeX → dvipdfmx reste d’usage quotidien.

TermeSens et confusion fréquente
DVIDevice-independent : un format intermédiaire qui se contente de nommer ses fontes. L’afficher ou le diffuser exige une conversion
PDFLa forme finale pour la diffusion et l’impression : fontes incorporées, plus signets, liens et métadonnées
PostScriptUn langage de description de page, produit du DVI par dvips, encore utilisé pour le dépôt en imprimerie
pt / bpLe pt de TeX est le point anglo-américain : 1in = 72,26999pt. Le point du PDF et du PostScript est le bp (big point), 1bp = 1,00374pt. C’est le bp, pas le pt, qui compte 72 au pouce
MWEMinimal working example : le plus petit document qui reproduise encore le problème. C’est la première chose qu’on vous demandera

CTAN, TDS, texmf, kpathsea : où se trouvent réellement les fichiers

CTAN est l’entrepôt mondial, TDS le plan de rangement, texmf la copie locale et kpathsea ce qui y cherche — les quatre forment une même chaîne. Les packages réunis sur CTAN (Comprehensive TeX Archive Network) sont dépliés dans une arborescence texmf selon une règle de rangement commune, la TDS (TeX Directory Structure) : un .sty va dans tex/latex/<package>/, sa documentation dans doc/latex/<package>/. Grâce à cette règle, les fichiers occupent la même place dans toutes les distributions. Mais le texmf-dist de TeX Live 2024 contient 276 953 fichiers, et parcourir les répertoires à chaque exécution serait impensable. kpathsea lit donc d’abord un index nommé ls-R. Quand un package installé à la main reste introuvable, cet index est généralement simplement périmé — mktexlsr le reconstruit. Pour savoir quel fichier sert réellement, kpsewhich article.cls répond en une ligne.

TermeSens et confusion fréquente
CTANL’archive centrale des packages (ctan.org), répliquée dans le monde entier
TDSTeX Directory Structure : la convention qui fixe l’organisation à l’intérieur de texmf. À suivre pour déposer un fichier à la main
texmfL’arborescence qui contient les fichiers réels. Il y en a plusieurs, et texmf-local prime sur texmf-dist
kpathsea / ls-RLa bibliothèque de recherche de fichiers et son index. On interroge avec kpsewhich, on reconstruit avec mktexlsr
TeX Live / MiKTeXLes deux distributions principales. TeX Live paraît en version annuelle complète ; MiKTeX se distingue en récupérant à la volée les packages manquants
tlmgrLe gestionnaire de packages de TeX Live, pour mettre à jour ou installer des packages individuels

Termes de la composition japonaise : JFM, wabun et obun, kinsoku

Le TeX japonais transporte un vocabulaire qu’on ne rencontre jamais en composant du texte occidental seul. Au centre, une décision de conception : le texte japonais et le texte occidental sont traités comme deux flux entièrement distincts. Les moteurs de la famille pTeX composent kanji et kana dans une fonte wabun (japonaise) et les lettres latines dans une fonte obun (occidentale), en insérant automatiquement un quart de cadratin (\xkanjiskip) à la frontière. Les métriques d’une fonte japonaise sont décrites par un JFM (Japanese Font Metric), qui consigne non seulement les largeurs de caractères mais aussi de combien resserrer lorsque deux signes de ponctuation se suivent. Les règles interdisant une virgule fermante en début de ligne ou une parenthèse ouvrante en fin de ligne s’appellent kinsoku et s’expriment dans TeX par des pénalités. Le ruby (glose phonétique au-dessus du texte) et la composition verticale sont deux autres exigences propres au japonais, prises en charge par la classe ou un package. Le choix pratique entre ces outils relève des pages consacrées à la composition japonaise.

TermeSens et confusion fréquente
JFMJapanese Font Metric : le fichier de mesures d’une fonte japonaise, largeurs de caractères et règles de resserrement de la ponctuation comprises
pTeX / upTeXDes moteurs TeX étendus pour la composition japonaise ; upTeX est le successeur à représentation interne Unicode
kinsokuInterdiction de coupure : les règles sur les caractères qui ne peuvent ouvrir ou fermer une ligne, exprimées en TeX par des pénalités
\xkanjiskipL’espace inséré automatiquement à la frontière entre japonais et texte occidental ; environ un quart de cadratin par défaut, et réglable
rubyUne glose phonétique en petit corps au-dessus du texte (à sa droite en composition verticale), fournie par une classe ou un package