\usepackage{amsmath} n’est pas une ligne qui ne fait qu’ajouter. Elle retire aussi. Dès qu’amsmath est chargé, le \[ de LaTeX est remplacé par l’environnement equation*, equation et cases sont redéfinis, le \pmatrix hérité de plain TeX s’arrête sur une erreur, et \over se met à produire un avertissement. Ce n’est donc pas un assortiment de commodités mais un changement de règles de composition mathématique. Cette page décrit en quoi consiste ce changement, puis les commandes valables dans tous les environnements : \DeclareMathOperator, \text, \intertext, \substack, \dfrac. Les environnements d’alignement ont leur propre page.
Ce que le chargement d’amsmath change vraiment
D’abord, amsmath n’est pas un paquet unique mais un ensemble. Près du début d’amsmath.sty figurent trois lignes \RequirePackage qui amènent amstext (la commande \text pour les mots dans une formule), amsbsy (le gras mathématique via \boldsymbol) et amsopn (\DeclareMathOperator et la mécanique des noms d’opérateurs). Une seule ligne apporte donc toutes les commandes de cette page.
\usepackage{amsmath}Viennent ensuite les substitutions. Les deux dernières lignes d’amsmath.sty sont \DeclareRobustCommand{\[}{\begin{equation*}} et \DeclareRobustCommand{\]}{\end{equation*}} : les commandes de base pour les formules affichées sont elles-mêmes échangées contre un environnement amsmath. Ailleurs dans le même fichier, equation, cases, matrix et pmatrix passent tous par \renewenvironment, et \nonumber est également redéfini. C’est précisément grâce à ces substitutions que \tag, \qedhere et l’esquive automatique des numéros fonctionnent. À l’inverse, écrire $$ … $$ contourne cette couche, et toute la mécanique d’amsmath s’en va avec.
Certaines choses sont retirées. Apportez des habitudes de plain TeX et elles s’arrêtent. $\pmatrix{a&b\cr c&d\cr}$ donne ! Package amsmath Error: Old form \pmatrix should be \begin{pmatrix}., et \cases{…} se fait réprimander dans les mêmes termes. 1 \over 2 passe encore, mais avec Package amsmath Warning: Foreign command \over; \frac or \genfrac should be used instead. Ces trois messages sont les premiers qu’on rencontre en convertissant un vieux manuscrit, et tous trois disent la même chose : passez à la forme récente.
amsmath peut intervenir aussi profondément parce qu’il est classé comme paquet LaTeX required. Le README qui l’accompagne indique que la maintenance d’amsmath est passée de l’AMS au LaTeX Project à compter de 2016 — la mention de copyright dans amsmath.sty porte « 2016–2023 LaTeX Project and American Mathematical Society » et désigne le LaTeX Project comme mainteneur actuel. En pratique, il fait partie de LaTeX lui-même, et c’est précisément pour cela qu’il peut remplacer des commandes standard.
\DeclareMathOperator : pourquoi un nom d’opérateur ne doit pas être en italique
En mode mathématique, les lettres sont des variables : taper rank A donne le produit de r, a, n, k et A. LaTeX prédéfinit \sin, \log, \lim et quelques dizaines d’autres noms d’opérateurs, mais rank n’en fait pas partie. On pourrait croire qu’il suffit de couper l’italique avec \mathit{rank}. Non : corriger la forme ne corrige pas l’espacement. Mesurons. \operatorname{rank} A laisse 1,66pt entre rank et A. \mathit{rank} A en laisse 1,07 — c’est la seule correction d’italique, sans aucune espace d’opérateur. Quant à \mathrm{log} x, il sort en « logx », collé.
Ouvrez amsopn.sty et une ligne explique tout. \operatorname se développe en \mathop{…\operator@font…}. Un nom d’opérateur n’est donc pas une simple chaîne en romain : il est enregistré comme atome Op dans le système de classes de symboles de TeX. La table d’espacement de TeX met un \thinmuskip (3mu) entre un Op et un Ord — et c’est de là que vient l’espace entre « log » et « x » dans \log x. \mathrm ne change que la forme des lettres ; l’atome reste un Ord, donc aucune espace n’apparaît. \DeclareMathOperator n’est pas un outil cosmétique mais une déclaration de sens.
% in the preamble
\DeclareMathOperator{\rank}{rank}
\DeclareMathOperator*{\argmax}{arg\,max}
% in the body
\[
\rank A \le n, \qquad
\hat{x} = \argmax_{x \in S} f(x)
\]Pour un usage unique, \operatorname{rank} A suffit ; pour un opérateur employé souvent, donnez-lui un nom dans le préambule. L’étoile décide de la place de l’indice. Sans elle, l’indice se met en bas à droite, comme sur \log ; avec elle, directement dessous, comme sur \lim, \sup et \max, dès qu’on est en style affiché. Mesuré sur l’exemple ci-dessus, le x ∈ S de \argmax_{x \in S} est centré sous « arg max », tandis que le k de \rank_{k} se place en bas à droite de « rank ». Notez que \DeclareMathOperator est réservé au préambule : dans le corps, on obtient ! LaTeX Error: Can be used only in preamble. puis un ! Undefined control sequence. pour la commande jamais définie.
Si le \, de la définition étonne, regardez comment l’AMS écrit les siens. amsopn.sty définit \limsup comme lim\,sup, \liminf comme lim\,inf et \injlim comme inj\,lim. Relier par une espace fine les deux mots d’un nom d’opérateur est la règle maison de l’AMS, et arg\,max ne fait que la suivre. \operatorname a encore une tâche cachée : il réécrit temporairement les codes mathématiques de -, ., :, / et * dans son argument, afin qu’un trait d’union s’imprime comme un vrai trait d’union et non comme un signe moins. À la mesure, \operatorname{ess-sup} sort comme le mot unique « ess-sup », tandis que \mathrm{ess-sup} f sort comme « ess − sup f », avec 2,22pt d’espace d’opérateur binaire de chaque côté d’un signe moins — sens et image tous deux différents.
\text, \mathrm ou \mbox : choisir entre trois romains
Il y a trois façons d’obtenir des lettres droites dans une formule, et elles répondent à des questions différentes. \text{…} (d’amstext) insère de la prose. Son contenu est composé dans la fonte et l’espacement du texte, et les espaces tapées survivent : l’espace final de \text{for all } apparaît réellement dans la sortie. \mathrm{…} met des symboles mathématiques en romain. À l’intérieur, on reste en mode mathématique, donc les espaces disparaissent ; c’est pour les symboles droits comme le \mathrm{d}x d’une différentielle ou une unité. \mbox{…} est le « mets ceci dans une boîte » général et n’a jamais été conçu pour les mathématiques.
\[
f(x) = x^2 \quad \text{for all } x \in \mathbb{R},
\qquad v_{\text{max}} = 3,
\qquad \int f(x)\,\mathrm{d}x.
\]Ce qui rend \text meilleur que \mbox, c’est qu’il suit la taille de son environnement. Sa définition dans amstext.sty emploie \mathchoice pour donner une taille propre à chacun des quatre contextes : affiché, texte, indice, second indice. Le « max » de v_{\text{max}} ci-dessus mesure 6,19pt de haut, soit la taille d’indice, alors que \mbox{max} mesure 8,85pt et trône dans l’indice à la taille du texte. Autre propriété pratique : \text se replie sur \mbox lorsqu’il est appelé en mode texte, ce qui le rend sûr dans une macro susceptible d’être développée dans l’un ou l’autre mode.
\intertext et \substack : interrompre sans casser l’alignement
Vous voulez une ligne d’explication au milieu d’un align — et si vous fermez l’environnement, écrivez la phrase et le rouvrez, l’alignement avant et après ne coïncide plus. \intertext{…} règle cela. À la mesure, dans un align coupé par un \intertext, les deux = tombent à la position horizontale 291,11pt, tandis que la phrase insérée est composée comme un paragraphe ordinaire partant de la marge gauche. Le mécanisme est simple : dans amsmath.sty, \intertext émet, depuis l’intérieur d’un \noalign, « espace sous la formule, une \vbox contenant le texte, espace au-dessus ». Le texte ne quitte donc jamais l’alignement, et les colonnes gardent leur position. Employé hors d’un environnement d’alignement, il donne ! Package amsmath Error: Invalid use of \intertext.
\begin{align}
A &= B + C \\
\intertext{expanding $C$ gives}
A &= B + D + E
\end{align}
\[
\sum_{\substack{0 \le i \le m \\ 0 < j < n}} a_{ij}
\]\substack{…} est un outil plus petit, mû par le même instinct. Il empile plusieurs lignes de conditions sous un grand opérateur comme une somme ou un produit, les lignes étant séparées par \\. Dans l’exemple ci-dessus, « 0 ≤ i ≤ m » et « 0 < j < n » forment deux lignes, et la mesure confirme qu’elles sont toutes deux centrées sous le signe de somme. L’intérieur reste en mode mathématique, donc les relations comme \le fonctionnent normalement. Pour aligner les lignes plutôt que les centrer, l’environnement presque identique subarray accepte une lettre d’alignement telle que l.
\dfrac, \binom, \boldsymbol : écrire sans subir le contexte
\frac fait partie de LaTeX standard, mais sa taille dépend du contexte où il tombe. amsmath ajoute des versions qui ignorent le contexte : \dfrac{…}{…} est toujours en style affiché (grand) et \tfrac{…}{…} toujours en style texte (petit). On prend \dfrac quand une fraction doit rester lisible dans le texte courant, \tfrac quand une partie d’une formule affichée doit rétrécir. Pour les fractions continues, \cfrac{…}{…} garde chaque niveau lisible, si profonde que soit l’imbrication. Les coefficients binomiaux s’écrivent \binom{n}{k}, avec \dbinom et \tbinom pour la paire à style fixe.
\[
\binom{n}{k} = \dfrac{n!}{k!\,(n-k)!},
\qquad \boldsymbol{\nabla} \cdot \boldsymbol{E} = \rho / \varepsilon_0.
\]Si \boldsymbol figure dans la même section, ce n’est pas un hasard. La physique et l’analyse vectorielle veulent souvent des lettres grasses, mais \mathbf{E} donne un gras droit et ne fait rien aux lettres grecques. \boldsymbol{E}, d’amsbsy (qu’amsmath amène avec lui), conserve l’italique et ajoute la graisse, et fonctionne aussi sur les symboles, comme dans \boldsymbol{\nabla}. Si votre domaine écrit les vecteurs en gras italique, prenez \boldsymbol ; s’il écrit les matrices et tenseurs en gras droit, prenez \mathbf. Choisissez selon l’usage du domaine. \numberwithin{equation}{section}, qui lie les numéros d’équation aux numéros de section, vient également d’amsmath, mais la numérotation relève de la page « Formules affichées, alignées et numérotées ».
amssymb et AMSFonts : le compagnon qui ajoute les symboles
La répartition est nette : amsmath ajoute la mécanique de composition, amssymb ajoute les symboles que l’on peut écrire. amssymb définit tous les symboles des fontes AMS msam et msbm, mettant à portée des centaines de glyphes absents de LaTeX standard — \leqslant et \geqslant (inégalités inclinées), \nleq et \subsetneq, \therefore et \because, \square et \blacksquare, \varnothing. Il charge amsfonts en interne : inutile de nommer amsfonts soi-même.
\usepackage{amssymb}
\[
\mathbb{R} \subset \mathbb{C}, \qquad
\mathfrak{g} = \operatorname{Lie}(G)
\]AMSFonts apporte également deux alphabets mathématiques : le blackboard bold via \mathbb{…} et le Fraktur via \mathfrak{…}. Un piège s’y cache, et il échoue en silence. Le blackboard bold n’a que des capitales — et \mathbb{k} ne provoque aucune erreur. Dans amssymb.sty, la position "6B de la fonte AMSb est attribuée à \daleth ; à la compilation, ce n’est pas un k minuscule qui sort, mais la lettre hébraïque daleth, ℸ. S’il vous faut un k en blackboard bold, utilisez le \Bbbk prévu à cet effet. Fraktur, lui, existe dans les deux casses : \mathfrak{g} pour une algèbre de Lie et \mathfrak{p} pour un idéal premier sont tous deux disponibles.
Les trois lignes qui vont dans le préambule
Pour tout document contenant des mathématiques, placez ces trois lignes ensemble : amsmath (la mécanique de composition), amssymb (les symboles, plus blackboard bold et Fraktur) et amsthm pour les théorèmes et les démonstrations. L’ordre est largement libre, mais amsthm vient après amsmath, car des fonctions comme \qedhere interviennent dans les structures affichées d’amsmath.
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\begin{document}
\[
\zeta(s) = \sum_{n=1}^{\infty} \frac{1}{n^{s}}, \qquad s \in \mathbb{C}
\]
\end{document}| Package | Rôle | Ce qu’il fournit |
|---|---|---|
amsmath | mécanique de composition mathématique | environnements d’alignement, \text, \operatorname, \dfrac, \binom, \boldsymbol |
amssymb | symboles et alphabets mathématiques | des centaines de symboles msam et msbm, \mathbb, \mathfrak (charge amsfonts) |
amsfonts | fontes seulement | \mathbb et \mathfrak, sans symboles supplémentaires |
amsthm | environnements de théorèmes et de démonstrations | \newtheorem, l’environnement proof, \theoremstyle, \qedhere |
amsmath fournit aussi les environnements de matrices (pmatrix, bmatrix et les autres) et des délimiteurs à taille automatique, mais ceux-ci relèvent des pages « Matrices et tableaux » et « Sommes, intégrales et grands opérateurs ». Un dernier point. Comme les environnements affichés d’amsmath lisent leur contenu en tant qu’argument de macro délimité, une ligne vide à l’intérieur est une erreur. Les notes techniques de l’AMS attribuent les algorithmes multipasses sous-jacents à l’amstex.tex de Michael Spivak — l’AMS-TeX des années 1980 survit aujourd’hui sous la forme d’une interdiction des lignes vides.