De bons environnements

Équations seules

Pour obtenir une équation (et bien une seule), nous pouvons utiliser l’environnement equation. Il s’utilise en dehors du mode mathématique, et donne comme résultat des mathématiques « hors texte ». Les équations obtenues sont automatiquement numérotées. On obtient alors :

y=2x+5(1)\begin{aligned} y = 2x + 5 & & (1) \end{aligned}

Et ce avec ce code.

\begin{equation}
   y = 2x + 5
\end{equation}

Notons que le package amsmath nous procure une version étoilée de l’environnement equation, la seule différence avec l’environnement equation étant que la numérotation n’est pas faite. Finalement, avec l’environnement equation*, on obtient la même chose qu’avec \[ \].

Les sous-équations

Le package amsmath nous procure également l’environnement subequations, qui agit sur la numérotation des équations qu’il contient. Les équations placées à l’intérieur de cet environnement seront considérées comme des sous-équations, et auront donc une « sous-numérotation ». Voyons un exemple.

On a l’équation d’une droite $\Delta$
\begin{equation}
  y = ax + b.
\end{equation}
Et on connaît les coordonnées de deux points de la droite. Elles nous permettent d’écrire :
\begin{subequations}
    \begin{equation}
      10 = 5a + b
    \end{equation}
    \begin{equation}
      0 = a + b
    \end{equation}
\end{subequations}

Ici, on aura la première équation numérotée (1) et les sous-équations numérotées (1a) et (1b). Il est bien sûr possible de changer le style de numérotation.

Des équations sur plusieurs lignes avec multline

L’environnement multline est un environnement qui permet de présenter des équations sur plusieurs lignes. La première ligne est alignée à gauche, les suivantes sont centrées, et la dernière est alignée à droite. multline s’utilise en dehors du mode mathématique, et est assez intuitif. Il suffit de séparer chaque équation par le signe \\, qui permet de passer à la ligne suivante. L’environnement multline numérote la dernière ligne. Sa variante étoilée permet de ne pas numéroter. On obtient alors :

2×20=2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2\begin{aligned} 2 \times 20 = 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2& \\ + 2 + 2 + 2 + 2 + 2 + 2 + &2 + 2\\ + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2& + 2 + 2 + 2\\ + 2 + 2 + 2 + 2 +& 2 + 2 + 2 + 2 + 2 + 2 + 2 \end{aligned}

… avec…

\begin{multline*}
   2 \times 20 = 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2\\
               + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2\\
               + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2\\
               + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2
\end{multline*}

Notons que nous n’avons pas placé de \\ après la dernière ligne. Si nous l’avions fait, la dernière ligne aurait été centrée, et non pas alignée à droite. En fait, il vaut mieux ne pas placer de \\ après la dernière ligne. Dans tous les autres environnements que nous verrons, nous obtiendrons une erreur en le faisant.

Des équations sur plusieurs lignes avec split

L’environnement split permet également d’écrire des équations sur plusieurs lignes, mais nous propose en plus un alignement vertical. Au contraire de multline, il doit être utilisé dans un environnement mathématique. Il ne numérote pas l’équation. Si nous voulons la numéroter, il nous faudra utiliser split dans un environnement qui numérote (equation par exemple).

Son utilisation est similaire à celle de multline, avec toujours \\ pour passer à la ligne. L’alignement vertical se fait au niveau du symbole &. Il nous faudra donc le placer sur chaque ligne. On obtient par exemple :

2×20=2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2\begin{aligned} 2 \times 20 = 2 &+ 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2\\ &+ 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 \end{aligned}

en utilisant ce code.

\[
\begin{split}
   2 \times 20 = 2 &+ 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2\\
                   &+ 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2
\end{split}
\]

Notons que l’équation est centrée.

Nous pouvons également utiliser split pour écrire une suite d’opérations avec par exemple ceci.

\[
\begin{split}
   (2(a + b) - 3a) \times (2 + a) &= (2a + 2b - 3a) \times (2 + a)\\
                                  &= (2b - a) \times (2 + a)\\
                                  &= 4b + 2ab - 2a + a^2
\end{split}
\]

D’après la documentation de amsmath, l’environnement split est conçu pour être le corps complet d’une équation (ou d’autres environnements mathématiques). En particulier, il ne peut rien y avoir avant ou après le split dans le corps de cette équation.

En pratique, cela fonctionne parfois, mais lorsque nous avons besoin d’autres choses que le contenu du split, nous utiliserons un autre environnement.

Des groupes d’équations

Nous allons maintenant voir comment faire pour écrire plusieurs équations à la suite. Nous pourrions pour cela utiliser plusieurs environnements d’équation seule à la suite, mais nous allons plutôt profiter des environnements que nous propose notamment le package amsmath. Ils nous permettront, par exemple, d’aligner les équations.

Des groupes d’équations centrées avec gather

L’environnement gather de amsmath permet d’écrire une équation par ligne, chacune de ces équations étant centrée et numérotée. Là encore, il s’utilise avec \\ pour passer à la ligne suivante. Il a, lui aussi, une version étoilée, qui a pour seule différence de ne pas numéroter les équations (en fait, la majorité des environnements d’équations numérotées fonctionnent de cette manière, et ont une version étoilée qui ne numérote pas). Par exemple on obtient :

2x+3=23a+b+c+d=ex=10\begin{gathered} 2x + 3 = 23\\ a + b + c + d = e\\ x = 10 \end{gathered}

… avec…

\begin{gather*}
   2x + 3 = 23\\
   a + b + c + d = e\\
   x = 10
\end{gather*}

La variante gathered

L’environnement gathered est une variante de l’environnement gather. On peut le considérer comme sa version « sous-bloc », dans le sens où il faut déjà être dans un environnement mathématique pour l’utiliser. On peut l’utiliser en mode « hors texte », mais aussi en mode « en ligne ». De plus, les lignes ne sont pas numérotées. Ainsi, on peut par exemple l’utiliser dans un environnement equation pour numéroter tout un bloc d’équations et non chacune des équations, avec ce code.

\begin{equation}
   \begin{gathered}
      a &= 34 + x & b &= 2 + a & c &= a + b \\
      d &= 22 + a & d &= 22x   & d - c &= 0
   \begin{gathered}
\end{equation}

Nous remarquons que la numérotation obtenue est centrée.

La plupart des environnements que nous verrons possèdent une variante finissant en ed qui s’utilise en mode mathématique, et peut être utilisée autant en mode « hors texte » qu’en mode « en ligne ». Le package mathtools en fournit même une pour l’environnement multline.

Des équations alignées avec align

L’environnement align nous permet de faire plusieurs colonnes d’équations. Il s’utilise comme un environnement de type tableau, & permettant de passer à la colonne suivante et \\ permettant de passer à la ligne suivante. Le groupe d’équations obtenu est centré, et chaque ligne est numérotée. Pour ne pas avoir de numérotation, il nous faudra utiliser sa version étoilée.

L’environnement align fonctionne de cette manière : il n’y a pas d’espace entre une colonne de rang impair et la colonne suivante, de sorte qu’un signe & sur deux a un comportement d’alignement. L’espace entre une colonne paire et la commande impaire qui suit est calculé de sorte qu’ils soient tous égaux à l’espace entre la première colonne et la marge de gauche, et à l’espace entre la dernière colonne et la marge de droite.

Cela peut sembler flou, mais un exemple nous permettra de mieux comprendre son fonctionnement :

a=34+xb=2+ac=a+bd=22+ad=22xdc=0\begin{aligned} a &= 34 + x & b &= 2 + a & c &= a + b \\ d &= 22 + a & d &= 22x & d - c &= 0 \end{aligned}

Lequel est obtenu avec ce code.

\begin{align*}
   a &= 34 + x & b &= 2 + a & c &= a + b \\
   d &= 22 + a & d &= 22x   & d - c &= 0
\end{align*}

Nous obtenons six colonnes, l’espace entre la première et la deuxième colonne est nul, de même que celui entre la troisième et la quatrième, ou que celui entre la cinquième et la sixième.

La documentation de amsmath parle de « colonnes d’équations » pour désigner deux colonnes qui ne sont pas séparés par un espace (donc une colonne de rang impair et la colonne qui suit). Cela semble naturel, on voit dans notre exemple précédent qu’on a bien trois colonnes d’équations. Il nous faut bien distinguer le nombre de colonnes, et le nombre de colonnes d’équations.

La variante aligned

align a également une version « sous-bloc », qu’on peut utiliser pour numéroter tout le bloc d’équations plutôt que chaque équation. En outre, le fait de pouvoir l’utiliser en mode « en ligne » permet d’écrire facilement des systèmes d’équations, tels que {2x+5y=2423x+y=25\left\{ \begin{aligned} 2x + 5y &= 24 \\ 23x + y &= 25 \end{aligned} \right. obtenu avec ce code.

$
\left\{
   \begin{aligned}
       2x + 5y &= 24 \\
       23x + y &= 25
   \end{aligned}
\right.
$

Des équations alignées avec alignat

L’environnement alignat est une variante de l’environnement align, qui ne place pas d’espaces entre les différentes colonnes d’équations, ce qui fait qu’ils devront être si besoin spécifiés par l’utilisateur. Cet environnement prend un argument qui correspond au nombre de colonnes d’équations (donc au nombre de colonnes divisé par 2). Sa variante étoilée permet, là encore, de ne pas avoir de numérotation.

x=a+2bselon la premieˋre relationx=2a+dselon la relation fondamentale\begin{alignedat}{2} x &= a + 2b & \quad & \text{selon la première relation}\\ x &= 2a + d & & \text{selon la relation fondamentale} \end{alignedat}

Cet exemple s’obtient avec le code suivant.

\begin{alignat*}{2}
    x &= a + 2b & \quad & \text{selon la première relation}\\
    x &= 2a + d &       & \text{selon la relation fondamentale}
\end{alignat*}

La variante alignedat

L’environnement alignat a aussi une version « sous-bloc ». Notons qu’elle s’appelle alignedat et non alignated. On peut, par exemple, l’utiliser pour définir une fonction de cette manière :

f ⁣:EFxf(x)\begin{alignedat}{2} f \colon & E &\: &\to F\\ & x & &\mapsto f(x) \end{alignedat}

… avec…

\[
\begin{alignedat}{2} f \colon & E &\: &\to  F\\
                              & x & &\mapsto f(x)
\end{alignedat}
\]

Commandes pour les équations

Des références aux équations

Nous pouvons profiter du système de référence de LaTeX pour renvoyer à une équation particulière. On pourra alors renvoyer vers « l’équation (1) de la page 6 ». Pour ce faire, nous allons utiliser la commande \label habituelle pour créer nos étiquettes. Cependant, la commande \ref sera remplacée par la commande \eqref du package amsmath. Essayons, par exemple, ce code.

On a l’équation d’une droite $\Delta$
\begin{equation}
   y = ax + 5. \label{eq:droite}
\end{equation}
Le point $A(5, 10)$ appartient à la droite $\Delta$, donc, d’après l’équation
\eqref{eq:droite}, on a que $10 = 5a + 5$ c’est-à-dire $a = 1$.

Comme pour les références normales, il sera parfois nécessaire de compiler plusieurs fois pour obtenir un résultat.

Supprimer la numérotation d’une équation

Il peut arriver que l’on veuille supprimer la numérotation de certaines équations dans un groupe d’équations numérotées. Pour ce faire, nous allons utiliser la commande \nonumber, à placer après le signe \\ qui marque la fin de la ligne en question. Avec le package amsmath, nous pouvons aussi utiliser la commande \notag, qui est équivalente à \nonumber. Par exemple, avec le code qui suit, la deuxième ligne ne sera pas numérotée.

\begin{align}
   a &= 2\\
   b &= 3\\ \notag
   c &= 5
\end{align}

La commande intertext

Toujours dans un environnement de regroupement d’équations, il peut arriver que nous voulions quitter temporairement cet environnement pour écrire du texte « normalement » entre deux équations. Nous pourrions bien sûr quitter l’environnement, écrire notre texte, et ensuite rouvrir un nouvel environnement, mais ce choix ne permettrait pas, par exemple, de garder un alignement entre les deux environnements. Le package amsmath nous fournit alors la commande \intertext, qui interrompt une série d’équations pour placer du texte sans quitter l’environnement en question. Par exemple, avec ce code.

\begin{align*}
   a + b &= e\\
   c + b &= z\\
   \intertext{et on a encore}
   a + c &= y + z - d
\end{align*}

L’espacement vertical laissé par \intertext peut ne pas nous plaire. Le package mathtools fournit alors la commande \shortintertext qui produit de moins grands espaces verticaux.

Les disjonctions de cas

Les disjonctions de cas sont assez fréquentes en mathématiques. Par exemple, pour définir une fonction par morceau, on pourrait écrire :

f(x)={0si x=0sinxxsinon f(x) = \begin{cases} 0 &\text{si $x = 0$}\\ \frac{\sin x}{x} &\text{sinon} \end{cases}

Pour obtenir ce résultat, le package amsmath propose l’environnement cases. Il doit être utilisé en mode mathématique, et fonctionne autant en mode « hors texte » qu’en mode  « en ligne ». Le résultat précédent s’obtient grâce à ce code.

\[
f(x) =
\begin{cases}
   0                &\text{si $x = 0$}\\
   \frac{\sin x}{x} &\text{sinon}
\end{cases}
\]

Notons l’usage du signe &, qui nous permet de spécifier l’endroit où doit se faire l’alignement. On ne peut utiliser qu’un seul signe & par ligne.

Les commandes similaires à cases de mathtools

Le package mathtools nous donne plusieurs variantes de l’environnement cases. Tout d’abord, l’environnement dcases (pour display cases) compose les mathématiques en mode « hors texte » (dans notre exemple, sinxx\frac{\sin x}{x} aurait alors changé de taille).

On peut également placer l’accolade à droite de nos différents cas avec l’environnement rcases pour right cases.

Finalement, le package mathtools fournit une version étoilée de cases, dans laquelle les éléments de la seconde colonne (donc ce qui est placé après &) sont composés en mode texte.

Et toutes ces fonctionnalités peuvent être combinés, ce qui donne lieu à ces environnements :

  • dcases* qui combine les fonctionnalités de cases* et de dcases ;
  • rcases* qui combine les fonctionnalités de cases* et de rcases ;
  • drcases qui combine les fonctionnalités de rcases et de dcases ;
  • drcases* qui combine les fonctionnalités de cases*, de rcases et de dcases.

Les matrices

Les matrices sont également des structures communes en mathématiques. Nous pourrions utiliser un environnement d’alignement, et utiliser des délimiteurs ; mais là encore, le package amsmath propose des environnements pour obtenir le résultat souhaité. En fait, il offre une demi-douzaine d’environnements, chacun étant associé à une paire de délimiteur. Ainsi :

  • matrix ne place aucun délimiteur ;
  • pmatrix permet d’obtenir ()\begin{pmatrix} \end{pmatrix} ;
  • bmatrix permet d’obtenir []\begin{bmatrix} \end{bmatrix} ;
  • Bmatrix permet d’obtenir {}\begin{Bmatrix} \end{Bmatrix} ;
  • vmatrix permet d’obtenir \begin{vmatrix} \end{vmatrix} ;
  • Vmatrix permet d’obtenir \begin{Vmatrix} \end{Vmatrix}.

Ces environnements s’utilisent dans le mode mathématique, et sont assez intuitifs à utiliser. On utilise \\ pour passer à la ligne suivante, et & pour passer à l’élément suivant. Ainsi, on obtient :

(213210π110021000245)\begin{pmatrix} 2 & 1 & 32 & 1\\ 0 & \pi & 1 & 1\\ 0 & 0 & -\sqrt{2} & 1\\ 0 & 0 & 0 & 245 \end{pmatrix}

… avec ce code…

\[
\begin{pmatrix}
   2 & 1 & 32 & 1\\
   0 & \pi& 1 & 1\\
   0 & 0 & -\sqrt{2} & 1\\
   0 & 0 & 0 & 245
\end{pmatrix}
\]

Si nous souhaitons placer des points à la place d’éléments d’une matrice, il existe la commande hdotsfor[s]{n} qui remplit nn colonnes de points espacés de ss.

Notons que le package mathtools fournit une version étoilée de ces environnements. Ces environnements étoilés prennent un argument optionnel qui permet de spécifier l’alignement des colonnes de la matrice. Ainsi, avec l, elles seront alignées à gauche, avec c elles seront centrées, et avec r elles seront alignées à droite. Par défaut, les colonnes sont centrées (et cela revient alors à utiliser les environnements non étoilés).

Fractions en éléments de matrices

En essayant de placer une fraction avec \dfrac dans une matrice, nous obtenons un résultat qui n’est pas très esthétique : les espaces sont vraiment mauvais. Pour régler ce problème, nous allons utiliser la commande \strut avec le numérateur et avec le dénominateur de chaque fraction. Nous allons alors écrire ceci.

\[
\begin{pmatrix}
   \dfrac{\strut 3}{\strut 2}\\
   \dfrac{\strut 1}{\strut 2}
\end{pmatrix}
\]

Matrices en mode « en ligne »

Les commandes précédentes peuvent également s’utiliser en mode « en ligne », mais ont le désavantage de donner une matrice de taille conséquente. Pour écrire une matrice plus petite, le package amsmath nous fournit l’environnement smallmatrix, qui s’utilise exactement de la même manière que l’environnement matrix. Il n’en fournit pas de variante pour les différents délimiteurs, mais là encore le package mathtools vient le compléter et fournit toutes les variantes de smallmatrix. Ainsi, nous pourrons utiliser les environnements vsmallmatrix ou encore Bsmallmatrix.

Ces environnements disposent eux aussi de versions étoilées permettant de spécifier l’alignement des colonnes.

Un environnement souple, array

L’environnement array permet de faire des tableaux en mode mathématique. Il a un paramètre obligatoire qui correspond à l’alignement de chacune des colonnes du tableau. Cet argument se compose des lettres l, c, r et du symbole |, et peut par exemple être |c|lr|l|. Il se comprend de cette manière :

  • l signifie left, donc que les éléments de la colonne correspondante seront alignés à gauche ;
  • c signifie center, donc que les éléments de la colonne correspondante seront centrés ;
  • r signifie right, donc que les éléments de la colonne correspondante seront alignés à droite ;
  • | symbolise la barre verticale qui sépare deux colonnes.

Ainsi, avec |c|lr|l|, on demande un tableau de quatre colonnes. Les éléments de la première colonne sont centrés, ceux de la deuxième et de la quatrième sont alignés à gauche et ceux de la troisième sont alignés à droite. De plus, il y a un trait vertical avant la première colonne, entre la première et la deuxième colonne, entre la troisième et la quatrième colonne et après la quatrième colonne.

Voyons maintenant que mette à l’intérieur de l’environnement. Pour cela, analysons un exemple.

\[
\begin{array}{c|l r|}
   c   & l   & r \\ \hline
   c_1 & l_1 & r_1
   c_2 & l_2 & r_2 \\ \hline
   c_3 & l_3 & r_3
\end{array}
\]

On obtient :

clrc1l1r1c2l2r2c3l3r3\begin{array}{c|l r|} c & l & r \\ \hline c_1 & l_1 & r_1 \\ c_2 & l_2 & r_2 \\ \hline c_3 & l_3 & r_3 \end{array}

Et on voit que :

  • le symbole & permet de séparer les différents éléments d’une même ligne d’un tableau ;
  • le symbole \\ permet de passer à la ligne suivante ;
  • la commande \hline insère une ligne horizontale sur la longueur du tableau.

Son utilisation n’est pas compliquée.

Il nous faire attention à différents points. Déjà, le nombre de colonnes du tableau est fixé par le paramètre de l’environnement \array. On ne peut pas indiquer en paramètre que le tableau a nn colonnes pour ensuite faire une ligne qui n’a pas nn colonnes. De plus, notons qu’après la dernière ligne du tableau, il n’y a pas de symbole \\.

L’environnement array a pour particularité d’être extrêmement souple : nous pouvons obtenir les alignements que nous voulons, nous pouvons placer des lignes verticales et horizontales là où nous le voulons… Nous pourrions, par exemple, l’utiliser pour faire des matrices avec \left( \begin{array} \end{array}\left).