Aller au contenu
Topos Uranos

Résumé

Cette leçon enseigne à composer des formules qui occupent plusieurs lignes avec les environnements d'amsmath et de mathtools. Elle montre pourquoi il ne faut ni empiler plusieurs formules hors texte ni employer eqnarray, dont l'espacement autour du signe égal est défectueux ; elle présente align et align*, avec le signe & comme point d'alignement, \\ comme fin de ligne, plusieurs colonnes de paires alignées, et la numérotation de chaque ligne, que l'on supprime avec \notag, que l'on remplace avec \tag et à laquelle on renvoie avec \label et \eqref ; elle distingue gather, multline et split, ainsi que les blocs internes aligned et gathered ; elle compose les définitions par morceaux avec cases et dcases ; elle intercale du texte avec \intertext et \shortintertext ; elle écrit des matrices avec leurs délimiteurs, leurs points et leur filet vertical ; elle numérote des groupes avec subequations ; elle permet à une formule hors texte longue de se couper entre deux pages ; et elle se termine par les erreurs typiques, lues dans de vrais journaux de compilation, et par ce qu'il vaut mieux éviter.

Objectifs d’apprentissage

  1. Expliquer pourquoi une chaîne d'égalités se compose dans un seul environnement d'alignement, et non en formules hors texte empilées ni dans eqnarray.
  2. Composer avec align des calculs et des systèmes d'une ou de plusieurs colonnes, en plaçant chaque & avant le signe qu'il aligne, et décider quelles lignes sont numérotées et comment on y renvoie.
  3. Choisir entre align, gather, multline, split, aligned et gathered selon la structure de la formule et le numéro qu'elle doit porter, en justifiant ce choix.
  4. Composer des définitions par morceaux, des matrices avec leurs délimiteurs et des matrices augmentées, et intercaler du texte sans rompre l'alignement.
  5. Diagnostiquer les erreurs typiques des environnements d'alignement, tant celles que le journal signale que celles qui ne se voient que dans le résultat.

Pourquoi ne pas empiler des formules isolées

La leçon sur les formules en ligne et hors texte a montré qu'une formule hors texte s'écrit entre \[ et \], ou dans l'environnement equation si elle porte un numéro. Tous deux composent une ligne centrée. Or une bonne part des mathématiques écrites ne tient pas sur une ligne et ne consiste pas en une seule relation : un calcul avance par une chaîne d'égalités, un système réunit plusieurs équations, une définition distingue des cas. Dans tous ces cas, le lecteur a besoin de voir, les uns sous les autres, les signes qui articulent le raisonnement, et il s'ensuit que la composition doit les aligner.

La tentation immédiate est d'empiler plusieurs formules hors texte, une par étape. Chacune est centrée pour son compte, de sorte que les signes égal tombent là où les place la largeur de chaque ligne, et l'on laisse entre elles l'espace qui convient à deux formules hors texte distinctes, non à une seule. La seconde tentation est l'environnement eqnarray, que LaTeX possède depuis ses débuts et qui figure encore dans bien des manuels : il aligne, mais il compose le signe central comme une colonne à part, séparée par un espace de tableau, plus large que celui qui convient à une relation, si bien que les mêmes égalités paraissent décousues. L'exemple suivant compose le même calcul de trois façons.

ExempleUn même calcul, trois compositions
Code LaTeX
Formules hors texte empilées :\[ (a+b)^2 = (a+b)(a+b) \]\[ = a^2 + ab + ba + b^2 \]\[ = a^2 + 2ab + b^2 \]Avec \texttt{eqnarray*} :\begin{eqnarray*}(a+b)^2 &=& (a+b)(a+b) \\        &=& a^2 + 2ab + b^2\end{eqnarray*}Avec \texttt{align*} :\begin{align*}(a+b)^2 &= (a+b)(a+b) \\        &= a^2 + 2ab + b^2\end{align*}
Résultat
Résultat

Dans la première composition, les signes égal ne sont pas les uns sous les autres et les lignes sont séparées par de grands blancs ; dans la deuxième, le signe égal est isolé entre deux vides ; seule la troisième les compose comme les relations d'une même chaîne. L'extension amsmath, que le cours charge toujours, offre align et ses apparentés précisément pour remplacer eqnarray, qui ne doit être employé dans aucun nouveau document.