Les formules hors texte demandent souvent plus qu une seule ligne. On coupe une longue formule sur plusieurs lignes, on aligne les signes egal, on donne un numero courant a chaque ligne, puis on y renvoie plus tard ; presque toute cette mecanique multilignes est fournie par le paquet amsmath. Cette page parcourt equation numerote, les environnements d alignement align, gather, multline et split, les definitions par cas cases, puis le controle des numeros (\notag, \tag, subequations). Les bases de l entree en mode mathematique en ligne ou hors texte sont traitees dans “Math mode basics” ; ici nous allons plus loin, vers les lignes multiples et la numerotation.
Charger d abord amsmath
Tous les environnements de cette page sauf equation sont fournis par le amsmath package. Une seule ligne dans le preambule suffit. Pour tout nouveau document contenant des mathematiques, charger amsmath est la norme de fait : il regroupe les environnements de formules hors texte, l alignement et le controle de la numerotation.
\usepackage{amsmath}amsmath etend fortement les structures de formules hors texte par rapport a LaTeX de base. A cote de l environnement equation (deja present dans LaTeX), il ajoute align et align*, gather et gather*, multline et multline*, alignat et alignat*, flalign et flalign*, ainsi que split. Ne laissez aucune ligne vide dans ces environnements : une ligne vide est lue comme une rupture de paragraphe et provoque une erreur. Pour placer les numeros a gauche, utilisez \usepackage[leqno]{amsmath} ; a droite (par defaut en ecriture horizontale), [reqno] ; et pour des formules hors texte alignees a gauche, l option [fleqn].
Une seule ligne numerotee — equation
Le point de depart des formules hors texte est le equation environment. Il place son contenu sur une ligne propre et ajoute automatiquement un numero courant dans la marge droite (par defaut en ecriture horizontale). Le numero est suivi par le compteur equation ; avec \label{…}, on peut y renvoyer depuis le texte avec \ref{…} ou \eqref{…} (les references sont detaillees plus bas). Si vous voulez simplement supprimer le numero, utilisez equation* avec etoile, equivalent au displaymath de LaTeX de base (\[ … \]) : une formule hors texte non numerotee.
\begin{equation}
\label{eq:euler}
e^{i\pi} + 1 = 0
\end{equation}La sortie place l identite d Euler au centre de sa propre ligne, avec un numero comme (1) dans la marge droite de cette ligne (c est le compteur courant du document, pas forcement 1). equation donne un numero a une ligne de formule. Pour une formule qui ne tient pas sur une ligne, ou pour plusieurs formules a aligner, utilisez les environnements d alignement ci-dessous. Les bases de \[ … \] et des displays non numerotes sont traitees dans la page voisine “Math mode basics.”
Aligner plusieurs lignes — align et gather
Pour empiler plusieurs formules verticalement, l outil principal est l environnement align. Separez les lignes avec \\ et placez un & au point a aligner. Par convention, le & se place juste avant une relation, comme un signe egal ou une inegalite, afin que les relations s alignent verticalement. L essentiel est de mettre & avant la relation (l ancien eqnarray, discute plus bas, le met apres, ce qui abime l espacement). align numerote chaque ligne ; align* avec etoile ne numerote pas.
\begin{align}
(x + y)^2 &= x^2 + 2xy + y^2 \\
(x - y)^2 &= x^2 - 2xy + y^2
\end{align}La sortie empile les deux formules verticalement, avec les deux signes egal exactement a la meme position horizontale, et un numero dans la marge droite de chaque ligne. Ce qui est a gauche de & (le membre gauche) est aligne a droite, et ce qui est a droite (le membre droit) est aligne a gauche ; les deux membres se rejoignent donc proprement au signe egal. Ne mettez pas \\ apres la derniere ligne : cela ajouterait un espace inutile.
align peut aussi placer plusieurs formules cote a cote. Le & sert a la fois de marque d alignement et de separateur de colonne : on alterne “& avant la relation” et “& avant la formule suivante.” Autrement dit, chaque formule s ecrit comme “partie alignee a droite & relation plus partie alignee a gauche”, puis un autre & la separe de la formule suivante.
\begin{align}
x &= y & X &= Y & a &= b + c \\
x' &= y' & X' &= Y' & a' &= b \\
x + x' &= y + y' & X + X' &= Y + Y' & a'b &= c'b
\end{align}La sortie place trois paires de formules en trois colonnes sur la page, avec les signes egal alignes dans chaque colonne, et un numero par ligne. amsmath insere automatiquement un espacement fixe entre les colonnes.
A l inverse, lorsque vous n avez pas besoin d alignement et voulez seulement centrer plusieurs formules, utilisez l environnement gather. Dans gather, il n y a pas d alignement par & ; chaque ligne est centree independamment. Les lignes sont separees par \\ et chacune recoit un numero (gather* pour aucun). Une ligne de gather peut elle-meme contenir un split (ci-dessous) pour couper une formule sur plusieurs lignes.
\begin{gather}
a^2 + b^2 = c^2 \\
e^x = \sum_{n=0}^{\infty} \frac{x^n}{n!}
\end{gather}La sortie centre les deux formules chacune sur sa propre ligne (leurs symboles ne sont pas alignes entre eux), avec un numero dans la marge droite de chaque ligne. Retenez ce contraste : align “aligne sur la relation”, tandis que gather “empile simplement au centre”.
Couper une longue formule — multline et split
Deux environnements coupent une seule formule qui ne tient pas sur une ligne : multline et split. Tous deux different de align/gather car ils donnent un seul numero a cette unique formule.
multline ne fait pas d alignement. Il place plutot la premiere ligne a gauche et la derniere a droite, les lignes intermediaires etant centrees. Les lignes sont separees par \\. Le numero de toute la formule apparait sur la derniere ligne (ou sur la premiere avec l option leqno). Comme multline donne un seul numero a une formule, il ne faut pas supprimer des lignes individuelles avec \notag. Pour pousser une ligne intermediaire d un cote, utilisez \shoveleft{…} ou \shoveright{…} en donnant toute la ligne (sans le \\ suivant) comme argument. La forme non numerotee est multline*.
\begin{multline}
a + b + c + d + e + f \\
+ g + h + i + j + k + l + m + n
\end{multline}La sortie coupe la longue somme sur deux lignes, avec la premiere partie a + … + f alignee a gauche et la suite + g + … + n alignee a droite, et un seul numero pour toute la formule. Toute ligne intermediaire serait centree. multline n utilise pas de & d alignement : vous marquez seulement les points de coupure avec \\.
Quand vous voulez que les lignes coupees soient alignees, utilisez split. Comme align, split aligne sur &, mais il n autorise qu une seule colonne d alignement (un & par ligne) et ne porte aucun numero lui-meme. Placez-le a l interieur d une structure numerotee comme equation (ou align/gather), qui fournit un seul numero pour l ensemble. split ne peut pas etre utilise dans multline.
\begin{equation}
\label{eq:cosh}
\begin{split}
\cosh x &= \frac{e^x + e^{-x}}{2} \\
&= 1 + \frac{x^2}{2!} + \frac{x^4}{4!} + \cdots
\end{split}
\end{equation}La sortie coupe une formule en deux lignes, aligne les signes egal des deux lignes et ajoute le numero unique fourni par equation (centre verticalement par defaut). split est l outil standard pour aligner sur le signe egal les lignes d une formule coupee, le pendant de multline (qui n aligne pas). Le corps de split devrait occuper tout le corps de la structure englobante ; seuls des commandes sans sortie, comme \label, peuvent cohabiter avec lui.
| Environnement | Formules / numeros | Alignement | Usage principal |
|---|---|---|---|
equation | Une / un | Non | Une seule ligne hors texte |
align | Plusieurs / par ligne | Oui, sur & | Empiler et aligner sur les relations |
gather | Plusieurs / par ligne | Non (chaque ligne centree) | Empiler au centre, sans alignement |
multline | Une / un | Non (gauche→droite) | Couper une longue formule, sans alignement |
split | Une / aucun (fourni par l hote) | Une colonne & | Aligner les lignes d une formule |
Definitions par cas — cases
Pour definir une fonction par cas, utilisez l environnement cases. Une grande accolade gauche { est ajoutee automatiquement ; dans chaque ligne, un & separe la “valeur” de la “condition”, et les lignes sont separees par \\. Les mots d une condition (“if …”, etc.) sortiraient inclines et trop serres en mode mathematique ; enveloppez-les donc dans \text{…} pour les composer droits et avec le bon espacement. cases ne porte pas de numero lui-meme ; on le place donc generalement dans equation pour donner un numero a l ensemble.
\begin{equation}
|x| =
\begin{cases}
x & \text{if } x \ge 0, \\
-x & \text{if } x < 0.
\end{cases}
\end{equation}La sortie montre une grande accolade gauche, avec deux lignes a sa droite — x (condition “if x ≥ 0”) et −x (condition “if x < 0”) — et un seul numero fourni par equation. La colonne des valeurs et celle des conditions sont chacune alignees a gauche. Notez que cases compose son contenu en text style (taille compacte) ; pour afficher de grandes fractions, utilisez l environnement dcases du paquet mathtools, qui compose en display style.
Controler les numeros — \notag, \tag, subequations
Dans les environnements numerotes comme align et gather, chaque ligne est numerotee automatiquement. amsmath fournit des moyens d ajuster cela ligne par ligne.
- Supprimer le numero d une seule ligne : placez
\notag(ou le synonyme\nonumber) avant le\\de cette ligne.\notagne peut pas etre utilise hors d un environnement hors texte. - Definir ou remplacer un numero soi-meme :
\tag{…}compose ce que vous donnez comme numero a la place du numero automatique (les parentheses sont ajoutees).\tag*{…}n ajoute pas de parentheses et imprime votre texte tel quel. - Grouper des formules liees en 1a, 1b, … : en les enveloppant dans l environnement
subequations, les formules internes sont numerotees (1a), (1b), …, soit le numero parent plus une lettre.
\begin{align}
y &= (x + 1)^2 \notag \\
&= x^2 + 2x + 1 \\
E &= mc^2 \tag{$\star$}
\end{align}Dans cette sortie, la premiere ligne est non numerotee grace a \notag, la deuxieme garde son numero automatique habituel, et la troisieme recoit (⋆) a la place du numero automatique. En combinant \notag et \tag, on peut laisser les lignes intermediaires d une derivation sans numero et numeroter seulement la conclusion.
Pour reunir des formules liees sous un meme numero, enveloppez-les dans subequations. Si la formule numerotee precedente etait (4), les formules du groupe deviennent (4a), (4b), (4c), …. Un \label place juste apres \begin{subequations} renvoie au numero parent (4), non a l enfant (4a).
\begin{subequations}
\label{eq:max}
\begin{align}
\nabla \cdot \mathbf{E} &= \frac{\rho}{\varepsilon_0} \label{eq:gauss} \\
\nabla \cdot \mathbf{B} &= 0
\end{align}
\end{subequations}La sortie aligne les deux formules sur le signe egal et les numerote (4a) et (4b), soit le numero parent plus une lettre (le numero parent etant le compteur courant du document). \eqref{eq:gauss} donne alors (4a), tandis que \eqref{eq:max} donne (4), qui represente tout le groupe.
Faire reference — \label et \eqref
Ajoutez \label{…} a une formule numerotee et vous pourrez la citer par son numero dans le texte. \ref{…} renvoie le numero lui-meme (par exemple 3.2), tandis que \eqref{…} d amsmath ajoute les parentheses et renvoie (3.2). Les parentheses de \eqref sont toujours composees droites, quelle que soit la police environnante, ce qui en fait le choix pratique pour les references d equations. Dans un environnement multilignes, placez \label sur la ligne dont vous voulez le numero (ligne par ligne dans align, formule enfant par formule enfant dans subequations).
式~\eqref{eq:euler} より $e^{i\pi} = -1$ が従う。
By~\eqref{eq:euler}, we have $e^{i\pi} = -1$.La sortie insere par exemple “By equation (1), …” dans le texte courant : le numero de la formule etiquetee eq:euler, entre parentheses. Pour resoudre les references, on compile normalement deux fois, comme l exigent les references croisees. Le mecanisme general de \ref/\label est traite dans la page “Cross-references”. Pour remettre la numerotation a zero par chapitre ou par section (afin d obtenir (1.1), (2.1), …), ecrivez \numberwithin{equation}{section} dans le preambule. L apparence du numero est controlee par la commande \theequation, qui vaut par defaut \arabic{equation} dans article et \thechapter.\arabic{equation} (numero de chapitre plus compteur courant) dans book/report. Pour changer directement le format, redefinissez-le par exemple avec \renewcommand{\theequation}{\thesection.\arabic{equation}}.
Eviter eqnarray
Les anciens documents utilisent parfois eqnarray (et eqnarray*) pour les mathematiques multilignes. Cet environnement est anterieur a amsmath, mais aujourd hui vous ne devriez pas l utiliser. Son pire defaut est l espacement autour des relations : eqnarray insere un espace anormalement large de chaque cote d un signe egal, et cet espacement ne correspond pas aux autres environnements mathematiques. Pire, avec des lignes longues, le numero d equation peut se superposer au texte, et \qedhere des paquets de theoremes n y fonctionne pas.
Le manuel officiel d amsmath et la reference LaTeX recommandent tous deux d eviter eqnarray au profit de align (pour aligner plusieurs formules) ou de equation + split (pour couper une seule formule). Faites aussi attention a la position de & : la famille align met & avant la relation, alors que eqnarray a ete concu pour le mettre apres, ce qui explique en partie son mauvais espacement. Pour tout nouveau travail, choisissez les environnements amsmath sans hesitation.