Oubliez un $ fermant et LaTeX ne montrera pas l’endroit fautif. Il file jusqu’à la fin du paragraphe, annonce ! Missing $ inserted. et compose vos mots collés en italique. Voilà l’essentiel du mode mathématique de LaTeX : ce n’est pas un changement de police, c’est un changement de règles. Les espaces tapées cessent d’exister, les lettres deviennent des noms de variables, et + et = reçoivent une espace fixe de part et d’autre. Cette page décrit les deux portes d’entrée — $…$ et \(…\) dans le fil du texte, \[…\] sur une ligne à part —, explique pourquoi seul $$…$$ est à proscrire, et pourquoi un mot ordinaire placé dans une formule réclame \text{}.
Ce qui change vraiment en mode mathématique
Trois choses changent : les espaces tapées disparaissent, chaque lettre devient un nom de variable en italique mathématique, et chaque symbole reçoit une classe d’où se déduit l’espace qui l’entoure. C’est pourquoi a+b et a + b donnent une sortie rigoureusement identique, et pourquoi taper log x produit « logx » : le produit des quatre variables l, o, g et x. Écrit comme la fonction \log x, le nom est composé en romain et une espace fine apparaît avant le x. Les mêmes trois lettres, deux objets entièrement différents pour TeX.
% identical output: spaces in the source are ignored
$a+b$ \qquad $a + b$
% "logx" (four variables) vs. the function name
$log x$ \qquad $\log x$Ces classes sont l’un des mécanismes centraux de TeX. Tout élément d’une formule est rangé comme atome ordinaire, grand opérateur, opérateur binaire, relation, ouverture, fermeture ou ponctuation, et l’espace entre deux voisins se lit dans une table à partir du couple de classes. = est une relation : il porte donc \thickmuskip de chaque côté, soit 5mu par défaut. Dans un document en 10pt, 18mu valent un cadratin, c’est-à-dire 10pt ; l’espace fait donc 2,78pt de chaque côté. Le nombre n’est pas à retenir ; l’idée l’est : l’espacement découle du sens. Pour ajouter de l’espace à la main, les commandes sont \, (espace fine), \;, \quad et \qquad.
Ces règles n’existent qu’à l’intérieur du mode mathématique. C’est pourquoi écrire \to ou \alpha en plein texte courant est une erreur et non une simple maladresse : hors du mode mathématique, la règle d’espacement n’existe pas. Placez A \to B dans le corps du document et pdflatex répond ! Missing $ inserted. Pour obtenir un symbole mathématique, il faut d’abord entrer en mode mathématique — d’où les portes d’entrée.
Formule en ligne : $…$ ou \(…\) ?
La sortie est identique. Ce qui diffère, c’est ce qui se passe quand on se trompe. $ a le code de catégorie 3 dans TeX — le « math shift » — et le même caractère unique ouvre et ferme : $ est une bascule, pas une parenthèse. \( et \), eux, sont définis dans latex.ltx comme deux macros distinctes, dont chacune vérifie si l’on est déjà en mode mathématique avant d’agir. D’où des comportements radicalement différents lorsqu’un délimiteur manque.
% one closing $ dropped: this compiles, and prints "We compare xandyinthetext."
We compare $x and $y$ in the text.
% the same mistake with \( \): pdflatex stops on this very line
We compare \( x and \( y \) in the text.La première ligne ci-dessus fait peur précisément parce qu’elle compile. TeX lit tout ce qui va du premier $ au second comme une formule, jette les espaces de « x and », le compose en italique, et le $ restant finit par trébucher à la fin du paragraphe avec ! Missing $ inserted. — le numéro de ligne annoncé désigne \end{document}, et la page affiche « We compare xandyinthetext. » La deuxième ligne commet la même erreur, mais le second \( constate que le mode mathématique est déjà ouvert et signale ! LaTeX Error: Bad math environment delimiter. sur cette ligne même. Ne pas avoir à parcourir un long paragraphe des yeux compte, en pratique, plus qu’on ne le croit.
En pratique : faites de \(…\) votre choix par défaut dans les nouveaux documents, surtout très mathématiques. Le court $…$ se comprend partout et reste parfaitement utilisable si votre éditeur colore les paires ; ce n’est pas une raison de réécrire un manuscrit existant. La forme d’environnement \begin{math}…\end{math} fait la même chose, mais elle est bien trop longue pour tenir dans une ligne et n’est presque jamais employée. Pour imprimer un signe dollar littéral dans le texte, écrivez \$.
Les formules affichées se composent avec \[…\]
Une formule importante ou volumineuse est sortie du paragraphe et placée sur une ligne à part. Sans numéro, c’est \[ … \] ; avec numéro, c’est l’environnement equation. \[…\] est exactement la même chose que la forme d’environnement displaymath : centrée par défaut, à gauche dès que la classe de document reçoit l’option fleqn. Au-dessus et au-dessous, LaTeX insère \abovedisplayskip et \belowdisplayskip — 10pt chacun dans un document en 10pt — et c’est cet air vertical qui donne à une formule affichée son allure.
The following identity holds.
\[
\int_0^1 x^2 \, dx = \frac{1}{3}
\]
It is one of the first integrals anyone computes.Un fait fait tout tenir ensemble : dès que amsmath est chargé, \[ et \] sont remplacés par l’environnement equation* lui-même — les deux dernières lignes d’amsmath.sty sont \DeclareRobustCommand{\[}{\begin{equation*}} et \DeclareRobustCommand{\]}{\end{equation*}}. Sous amsmath, la question « \[…\] ou equation* ? » n’a donc pas de contenu : c’est la même chose. Entre equation et \[…\], seule compte la question de savoir si l’on veut un numéro.
| Forme | Numérotée | Notes |
|---|---|---|
\[ … \] | non | la forme LaTeX ; sous amsmath, c’est equation* |
displaymath | non | forme d’environnement identique à \[ \] ; verbeuse, peu employée |
equation | oui | numérotation automatique ; avec \label, on cite par \ref ou \eqref |
equation* | non | nécessite amsmath ; ce que devient \[ \] une fois chargé |
$$ … $$ | non | la forme plain TeX ; à ne pas utiliser (section suivante) |
Pourquoi $$…$$ est la seule forme à proscrire
$$…$$ est la manière plain TeX d’ouvrir une formule affichée, et LaTeX ne l’a jamais documentée à l’usage des auteurs. Elle n’est pas interdite — LaTeX s’en sert en interne. latex.ltx contient \def\equation{$$\refstepcounter{equation}} : equation et eqnarray reposent donc tous deux sur $$. L’ennui, c’est que si vous tapez $$, vous passez à côté de la couche de macros de LaTeX — or c’est là que résident les options de classe et la mécanique d’amsmath.
- L’option
fleqncesse d’agir.fleqn.cloredéfinit exactement quatre choses —\[,\],equationeteqnarray— et ne touche jamais à$$. Mesuré dans unarticleavec[fleqn]:\[a=b\]commence à 25pt de la marge gauche tandis que$$a=b$$reste centré, soit 135pt d’écart sur la page. - L’espacement vertical change. Lorsque
\[ouvre un paragraphe, il glisse discrètement une boîte invisible large de 0,6 fois la ligne avant d’exécuter$$. Le stratagème sert à convaincre TeX que la ligne précédente était longue ; sans lui, TeX choisit la variante courte (\belowdisplayshortskip, 6pt). À la mesure, la version$$s’est révélée exactement 4pt plus serrée en dessous. \qedheretombe au mauvais endroit. Placez\qedheresur la dernière formule d’un environnementproofd’amsthm : dans\[…\], la marque de fin de démonstration se cale sur la marge droite. Dans$$…$$, elle se colle à la formule et décentre tout l’affichage.- Tout ce qu’apporte amsmath disparaît. Puisque, sous amsmath,
\[estequation*, taper$$jette les fondations sur lesquelles reposent\tag,\qedhereet l’esquive automatique des numéros d’équation.
Le Short Math Guide for LaTeX de l’AMS (version 2.0, 2017/12/22, distribué avec TeX Live 2024) tient la même ligne : il déconseille fermement $$ et avance deux raisons — la notation n’est documentée nulle part comme faisant partie du jeu de commandes LaTeX, et elle nuit au bon fonctionnement de fonctions telles que fleqn. Le résumé est court. Sans numéro : \[…\]. Avec numéro : equation. Si vous héritez d’un manuscrit truffé de $$, remplacez-les mécaniquement dès maintenant ; le jour où vous ajouterez fleqn ou un environnement de démonstration se passera sans bruit.
Des mots dans une formule : pourquoi \text{} est nécessaire
Comme les lettres sont des variables en mode mathématique, if est le produit de i et f, et area celui de quatre variables. Pour placer un mot en tant que mot — en romain, avec le bon espacement —, on utilise \text{…} d’amsmath. Son contenu est composé dans la fonte et l’espacement du texte courant, et les espaces qu’on y tape subsistent : \text{ for all } conserve son air des deux côtés. Inversement, $…$ à l’intérieur de \text{…} fait repasser ce fragment en mode mathématique.
\[
f(x) = x^2 \quad \text{for all } x \in \mathbb{R},
\qquad v_{\text{max}} = 3.
\]L’avantage de \text est qu’il suit la taille de son environnement. Sa définition dans amstext.sty emploie \mathchoice pour attribuer une taille de fonte propre à chacun des quatre contextes : affiché, texte, indice et indice second. Mesurez le « max » de v_{\text{max}} ci-dessus : 6,19pt de haut, soit la taille d’indice ; la même chose écrite \mbox{max} fait 8,85pt et trône dans l’indice à la taille du texte courant, en décalage avec son voisinage. \mbox est la commande générale « mets ceci dans une boîte » ; ce n’a jamais été un outil mathématique. À noter : \text se replie sur \mbox en mode texte, ce qui le rend sûr dans une macro susceptible d’être appelée dans les deux modes. Si amsmath n’est pas chargé, on obtient ! Undefined control sequence.
Style texte et style affiché : pourquoi la même formule change d’allure
Le mode mathématique possède quatre styles, que TeX choisit d’après le contexte : le style texte dans une ligne, assez petit pour ne pas casser l’interligne ; le style affiché sur une ligne à part, avec de l’air ; le style d’indice pour un indice ; le style de second indice pour l’indice d’un indice. Voilà pourquoi le même \sum_{i=1}^{n} place ses bornes en petit à droite du signe en ligne, et en grand au-dessus et au-dessous dans une formule affichée.
- Bornes de sommes et d’intégrales : en style affiché, les bornes de
\sumse placent au-dessus et au-dessous du signe ; en style texte, à sa droite.\intse comporte de même. - Fractions :
\fracest grande en style affiché, petite et serrée en style texte. Pour figer la taille indépendamment du contexte, on emploie\dfracet\tfracd’amsmath. - Indices et exposants : chaque niveau d’imbrication descend d’un cran, et rien ne rétrécit au-delà du style de second indice.
On peut aussi changer de style à la main avec \displaystyle, \textstyle, \scriptstyle et \scriptscriptstyle. Le cas courant est $\displaystyle\sum_{i=1}^{n} i$, quand on veut les bornes d’une somme au-dessus et au-dessous en pleine phrase. Attention toutefois : semer des \displaystyle dans le texte courant rend les hauteurs de ligne inégales et fait onduler le paragraphe. La règle est de n’y recourir que là où une formule précise l’exige.
% limits sit at the right of the sign
Inline: $\sum_{i=1}^{n} i$
% limits forced above and below
Forced: $\displaystyle\sum_{i=1}^{n} i$Les noms de fonctions sont des commandes : \sin, \log, \lim
Il découle des règles ci-dessus que taper sin x écrit le produit de s, i, n et x. La bonne manière est une commande dédiée comme \sin. LaTeX prédéfinit les noms de fonctions et d’opérateurs usuels ; tous sont composés en romain et portent automatiquement une espace fine à leur suite. Redresser les lettres avec \mathrm{sin} ne procure pas cette espace : à la mesure, \log x laisse 1,8pt entre « log » et « x », alors que \mathrm{log} x sort en « logx », collé.
- Trigonométriques et hyperboliques :
\sin\cos\tan\cot\sec\csc;\sinh\cosh\tanh\coth; réciproques\arcsin\arccos\arctan. - Logarithmes et exponentielle :
\log\ln\lg\exp. - Limites et bornes :
\lim\limsup\liminf\sup\inf\max\min\varinjlim\varprojlim. - Algèbre et divers :
\arg\det\dim\gcd\ker\hom\deg\Pr; modulo avec\bmodet\pmod.
\[
\lim_{n \to \infty} \left(1 + \frac{1}{n}\right)^{n} = e,
\qquad \sin^2\theta + \cos^2\theta = 1.
\]Une partie de cette liste — \lim, \max, \min, \sup, \inf, \det, \gcd, \Pr, entre autres — place l’indice directement en dessous en style affiché. Voilà pourquoi \lim_{n\to\infty} met sa condition sous « lim » dans une formule affichée et en bas à droite en ligne. Pour un opérateur absent de la liste, comme rank ou Hom, on définit le sien avec \operatorname{…} et \DeclareMathOperator d’amsmath — c’est l’affaire de la page amsmath.