Rappels et premières règles

Le mode mathématique

Les deux modes

TeX et LaTeX offrent une multitude d’outils pour écrire des mathématiques. Tout d’abord, il faut savoir qu’il existe deux modes mathématiques en TeX :

  • le mode dit « en ligne », où les formules mathématiques sont placées dans le corps du message, dans la continuité du texte. $ $, \( \) ou encore \begin{math} \end{math} permettent d’écrire des maths « en ligne » ;
  • le mode dit « hors texte », où les formules mathématiques sont mises en valeur en dehors du texte (par défaut elles sont centrées). $$ $$, \[ \] ou encore \begin{displaymath} \end{displaymath} permettent d’écrire dans le mode « hors texte ».

Notons qu’en mode « en ligne », les caractères mathématiques appartenant à des structures telles que les fractions sont de taille réduite. Voici la différence entre \(1+\frac{2}{3}\) et \[1+\frac{2}{3}\] qui donnent respectivement 1+231+\frac{2}{3} et

1+23.1+\frac{2}{3}.

Une des particularités du mode mathématique, qu’il soit en ligne ou hors texte, est que les espaces dans le code source sont ignorés. Ainsi $1+1=2$ ou $1 + 1 = 2$ sont équivalents et donneront tous les deux 1+1=21 + 1 = 2, ce qui laisse une certaine liberté d’écriture. Chacun peut donc profiter de cette liberté pour présenter le code en mode mathématique à sa guise. Par souci de lisibilité, on peut, par exemple, écrire une espace avant et après chaque nombre, parenthèse et opérateur. Ou ne pas le faire !

Il ne peut y avoir la primitive \par (ou deux retours à la ligne consécutifs, qui sont équivalents à \par) en mode maths, que ce soit en ligne ou hors texte sous peine d’une erreur de compilation.

Les commandes de passage en mode mathématique

Parmi toutes ces possibilités pour passer en mode mathématique, quel choix faut-il faire ?

Passage en mode « en ligne »

Pour le mode « en ligne », $ $ est une primitive de TeX tandis que \( \) et \begin{math} \end{math} sont leurs équivalents en LaTeX. On peut indifféremment choisir $ $, qui est plus pratique à écrire, ou préférer d’utiliser \( \), qui est une commande LaTeX. La plupart des gens préfèrent la concision et la facilité de lecture de $ $.

Passage en mode « hors texte »

Pour le mode « hors texte », nous utiliserons \[ \] ou \begin{displaymath} \end{displaymath}, mais pas la primitive de TeX $$ $$, car cette dernière balise altère, dans certaines circonstances, les espaces verticales placées avant la formule hors texte : c’est pourquoi elle n’est pas recommandée. En LaTeX, il vaut donc mieux utiliser l’une des deux commandes précédentes, qui sont équivalentes. Par souci de concision, nous allons préférer \[ \].

La commande \ensuremath

La macro \ensuremath{<code>} teste si elle se trouve en mode mathématique lorsqu’elle est exécutée. Si c’est le cas, elle compose le <code> dans ce mode maths. En revanche, si le mode maths n’est pas en vigueur, elle compose son argument <code> en mode mathématique et repasse en mode texte ensuite. La macro \ensuremath est surtout utilisée dans des macros que l’utilisateur définit, et en facilite l’usage, puisque ces macros fonctionneront sans erreur que l’on soit en mode maths ou pas. Ainsi, si l’on définit la macro \PI de cette façon : \newcommand*\PI{\ensuremath{\pi}}, eh bien, la macro \PI affichera π\pi quel que soit le mode en cours.

Forcer le style d’affichage

Lorsque nous sommes dans le mode « en ligne », nous pourrions souhaiter que l’affichage se fasse comme si nous étions en mode « hors texte ». À l’inverse, on pourrait parfois vouloir le contraire, c’est-à-dire vouloir un affichage typique du mode « en ligne » en mode « hors texte ».

La primitive \displaystyle permet d’afficher l’élément mathématique qui la suit comme il aurait été affiché en mode « hors texte ». Elle est à utiliser avec précaution, car si elle est employée dans le mode « en ligne », en affichant des éléments plus grands qu’ils ne devraient l’être, elle peut casser la régularité des interlignes.

La primitive \textstyle permet d’afficher l’élément qui la suit comme il aurait été affiché en mode « en ligne ». Elle est moins utilisée que \displaystyle, mais est quand même utile dans certains cas.

Nous disposons également de deux autres commandes, \scriptstyle et \scriptscriptstyle.

Notons de plus l’existence de la commande \everydisplay{<token>}, qui permet de spécifier une liste de tokens que LaTeX insérera au début de toute formule mathématique hors texte, et de la commande \everymath, qui est son équivalent en mode « en ligne ». Par exemple, avec \everymath{\texstyle}, toutes les formules « en ligne » seront affichées comme si elles étaient en mode « hors texte ».

Lecture d’arguments

Faisons à présent un petit rappel quant à la lecture d’arguments par des macros. Un argument d’une macro est :

  • un token unique, c’est-à-dire un caractère seul ou une commande seule ;
  • un ensemble de tokens entre accolades {…}. Lorsque l’argument est lu, les accolades sont retirées et l’argument pris en compte est donc constitué de ce qu’il y avait entre les accolades.

Lorsqu’une macro lit des arguments, elle ignore les espaces. Pour qu’une espace soit prise en compte comme argument d’une macro il faut que cette espace soit entourée d’accolades.

Ainsi, {23}, 2, {2} et \pi sont des arguments. Il est important de comprendre que les arguments 2 et {2} sont rigoureusement équivalents donc, plus généralement, lorsqu’un argument est constitué d’un seul token, on a le choix de l’entourer d’accolades ou pas. Certains prennent l’habitude de ne jamais le faire, tandis que d’autres prêchent vigoureusement pour que ces accolades soient mises. Il n’y a pas de règle universelle, et ne pas mettre d’accolades lorsqu’on écrit \frac23 pour écrire « deux tiers » est tout à fait acceptable, tout comme l’est \frac{2}{3}. Il faut cependant garder à l’esprit que la présence d’accolades permet de rajouter facilement des caractères à un argument. Cette même manœuvre est plus longue lorsque les accolades sont absentes, puisqu’il faut alors obligatoirement les rajouter.

Par ailleurs, il est important de noter que, lorsqu’il est l’argument d’une macro, {23} est un seul argument qui est le nombre 23, alors que 23 représente deux arguments qui sont les nombres 2 et 3. Signalons que 2 3 est également considéré comme deux arguments 2 et 3 puisque l’espace est ignorée. Ainsi, avec la commande \frac qui lit deux arguments, ces codes donnent des résultats différents et montrent qu’il est important de bien avoir conscience de la portée d’un argument :

  • $\frac{2\pi}{3}$ donne 2π3\frac{2\pi}{3} ;
  • $\frac2\pi3$ donne 2π3\frac2\pi3 ;
  • $\frac2{\pi3}$ donne 2π3\frac2{\pi3}.

Arguments optionnels

Certaines macros admettent un argument optionnel, c’est-à-dire que lorsqu’il est omis, une valeur par défaut définie par le concepteur de la macro est donnée à cet argument. LaTeX adopte la convention de mettre l’argument optionnel d’une macro immédiatement après cette macro, et entre crochets. Ainsi, la macro \sqrt admet un argument optionnel, vide par défaut, qui est le nombre placé au-dessus du signe radical pour exprimer la racine n-ième. Cet argument est vide par défaut : \sqrt{2} donne 2\sqrt{2} alors que \sqrt[3]{2} donne 23\sqrt[3]{2}.

Les délimiteurs

Lorsque nous écrivons quelque chose entre parenthèses, par exemple, nous aimerions bien que la taille de ces parenthèses soit adaptée à la taille de cet élément. Par exemple, \[ (\frac{23}{12}) \] donne

(23).(\frac{2}{3}).

Des délimiteurs de taille adaptée

Heureusement, il existe un moyen simple pour que les parenthèses (et les autres délimiteurs) s’adaptent à leur contenu. Il suffit d’utiliser les deux primitives \left et \right, qui agissent sur le délimiteur de gauche et de droite. Ces deux commandes vont obligatoirement de pair ; elles prennent chacune en paramètre un délimiteur, et adaptent leur hauteur à ce qui se trouve entre elles. Les délimiteurs suivants sont utilisables : (, ), \{, \}, [, ], \langle, \rangle et |. Voici quelques exemples d’utilisation :

  • (23)\displaystyle\left(\frac{2}{3}\right) avec $\displaystyle\left(\frac{2}{3}\right)$ ;
  • ]23[\displaystyle\left]\frac{2}{3}\right[ avec $\displaystyle\left]\frac{2}{3}\right[$ (remarquons que le sens des délimiteurs n’a aucune importance) ;
  • ]23)\displaystyle\left]\frac{2}{3}\right) avec $\displaystyle\left]\frac{2}{3}\right[$ (remarquons qu’on peut associer des délimiteurs différents).

Il existe un autre délimiteur, . qui est un délimiteur « vide » au sens qu’il n’affiche rien. Il existe parce que, dans le cas où, par exemple, nous ne voulons rien afficher à droite, le \right reste obligatoire, et il faudra alors mettre un \right.. Ainsi, on obtient 23\displaystyle\left|\frac{2}{3}\right. avec $\displaystyle\left|\frac{2}{3}\right.$.

Les commandes \left et \right sont donc des alliées précieuses. Depuis que le moteur e-TeX existe (c’est-à-dire très longtemps maintenant), la primitive \middle permet d’insérer un délimiteur à taille ajustable entre ceux spécifiées par \right et \left. Ainsi, \[ \left\{ \frac{1}{x} \middle| x \neq 0 \right\} \] produit :

{1xx0}.\left\{ \frac{1}{x} \middle| x \neq 0 \right\}.

Des délimiteurs plus avancés

En fait, on peut même contrôler explicitement la taille de nos délimiteurs. En général, il vaut mieux utiliser \left, \right et \middle, mais dans certains cas, ils ne donnent pas une taille optimale aux délimiteurs, ou ne donnent pas la taille qui nous convient. Pour régler ce problème, d’autres commandes sont disponibles, telles que \big, \Big, \bigg et \Bigg, qui permettent de choisir une taille exacte. Ces commandes ont des versions ouvrantes \bigl, \Bigl, \biggl et \Biggl et des versions fermantes \bigr, \Bigr, \biggr et \Biggr. Il faut respecter leur rôle, et toujours utiliser la version avec l pour un délimiteur ouvrant, la version avec r pour un délimiteur fermant, et la version initiale pour un délimiteur ni ouvrant ni fermant. Par exemple, \[\biggl\{ \frac{1}{x} \bigg| x \neq 0 \biggr\} \] produit :

{1xx0}.\biggl\{ \frac{1}{x} \bigg| x \neq 0 \biggr\}.

Ces commandes sont présentes, mais il est rare que leur emploi soit nécessaire. Retenons donc que, dans la grande majorité des cas, utiliser \left, \right et \middle donne un résultat satisfaisant.

Le texte en mode mathématique

La règle précédemment établie sur l’entrée en mode mathématique et la sortie du mode mathématique mène à cette question.

Si dans notre formule on veut écrire un mot en mode texte, que faire ?

Notre règle permet de répondre assez facilement à cette question. Pour avoir un code source clair, il faut sortir du mode mathématique pour écrire du texte. Ainsi, nous écrirons $\frac{1}{x}$ existe si $x \neq 0$ pour obtenir 1x\frac{1}{x} existe si x0x \neq 0. De toutes les façons, $\frac{1}{x} existe si x \neq 0$ ne donne clairement pas le résultat escompté, puisqu’on obtient 1xexistesix0\frac{1}{x} existe si x \neq 0. Dans ce dernier exemple, le texte reste en italique, mais en plus, les espaces ne sont pas prises en compte.

Pourtant, il y a des moments où il est impossible de sortir du mode mathématique pour écrire du texte. Voici un exemple.

\[
   \frac{x}{2}
\]
est un entier s’il existe un entier $q$ tel que
\[
   x = 2q.
\]

… donne…

x2 \frac{x}{2}

est un entier s’il existe un entier qq tel que

x=2q. x = 2q.

Alors que l’on aimerait obtenir :

x2 est un entier s’il existe un entier q tel que x=2q.\frac{x}{2} \text{ est un entier s’il existe un entier } q \text{ tel que } x = 2q.

Pour obtenir ce résultat ici, la commande \text du package amsmath de l’American Mathematical Society est utilisée. Plus que ça, c’est la seule commande à utiliser pour faire ce travail. Pour se convaincre que d’autres commandes ne conviennent pas, examinons ces exemples :

  • la commande \mathrm permet d’obtenir xinitialesticix_\mathrm{initial est ici} et xfinalestlaˋx^\mathrm{final est là} ;
  • la commande \mbox permet d’obtenir xinitial est icix\raisebox{-0.5em}{initial est ici} et xfinal est laˋx \raisebox{0.3em}{final est là} ;
  • la commande \text permet d’obtenir xinitial est icix_\text{initial est ici} et xfinal est laˋx^\text{final est là}.

Les résultats obtenus avec les commandes \mathrm et \mbox ne sont pas corrects.

Avec \mathrm, les espaces ne sont pas prises en compte. En fait, \mathrm permet de ne pas écrire en italique en mode mathématique ; les lettres sont donc droites (on dit qu’on écrit en romain). Cette commande est donc à utiliser pour des mathématiques à mettre en romain. On peut par exemple l’utiliser pour les constantes ou le « d » de la différentielle dx\mathrm{d}x, qui doivent être écrits en romain.

La commande \mbox ne met pas les textes en indice ou en exposant à la bonne taille. Ce n’est pas une commande qui écrit du texte, elle sert à créer une boîte autour de son argument (dans notre exemple, du texte).

Le package amsmath est un incontournable lors de l’écriture de mathématiques. Nous allons donc toujours le charger lorsque nous écrivons des mathématiques. Mieux que ça, nous allons charger le package mathtools à sa place. Ce dernier charge amsmath et règle certains de ses problèmes en plus de fournir des fonctionnalités supplémentaires.

Les polices mathématiques et les changements de fontes

Nous venons de voir la commande \mathrm, qui permet d’écrire des maths en romain plutôt qu’en italique. C’est le moment parfait pour s’intéresser aux différentes polices et fontes mathématiques, et à leur fonctionnement.

Les changements de fontes

Il en existe plusieurs, donc nous n’allons pas toutes les voir. Nous allons voir les plus utilisées, et celles qui peuvent parfois poser problème. Commençons par voir les commandes de changement de fonte :

  • la commande \mathbf permet de mettre le texte en gras (bold font). Notons que le texte n’est pas seulement en gras, mais est aussi droit ;
  • la commande \mathrm permet d’écrire en romain ;
  • la commande \mathit permet de mettre le texte en italique.

On pourrait croire que l’écriture en mode mathématique est déjà en italique, mais ces commandes modifient également l’espacement.

Tout ce que nous avons dit précédemment à propos de la commande \mathrm s’applique à ces commandes.

Il existe également des polices différentes :

  • la commande \mathbb permet d’obtenir les lettres dites « ajourées » comme R\mathbb{R} ;
  • la commande \mathcal permet d’obtenir des lettres « calligraphiques » comme C\mathcal{C} ;
  • la commande \mathfrak permet d’obtenir des lettres au style gothique comme D\mathfrak{D}.

Mis à part la commande \mathfrak, ces commandes ne marchent que pour les lettres majuscules, et donnent des symboles pour les autres lettres et les chiffres. Notons que \mathbb fonctionne quand même avec le k minuscule.

Pour utiliser ces trois dernières commandes, il nous faudra charger le package amsfont. En fait, nous allons plutôt charger les packages mathtools et amssymb, amsfont étant automatiquement chargé par amssymb. Le package amsmath nous offre de nombreuses commandes, dont \text, pour faciliter l’écriture des mathématiques, et le package amssymb nous donne des symboles mathématiques supplémentaires.

Notons que nous ne pouvons pas utiliser ces commandes de changement de fontes sur les symboles mathématiques. Ainsi, \mathbf{2 + 3 = \alpha} produit 2+3=α\mathbf{2 + 3 = \alpha}. Pour mettre les symboles en gras, nous pouvons utiliser la commande bm du package bm. Nous écrirons alors bm{2 + 3 = \alpha}.

Nous pouvons de plus remarquer que les lettres grecques majuscules ne sont pas en italique (\Gamma donne Γ\Gamma). Le package amsmath fournit les commandes varGamma et autres, \varGamma produisant Γ\varGamma.

Les polices mathématiques

Il est important de savoir que les polices mathématiques sont assez rares. Très peu de polices sont à la fois des polices en mode texte et en mode mathématique. Les polices qui sont généralement utilisées (Computer Modern ou Latin Modern, par exemple) sont aussi des polices mathématiques, mais beaucoup de polices ne sont que des polices de texte, et n’ont pas de support pour le mode mathématique. La liste de ces polices pourra être utile si l’on cherche une police différente de celle par défaut, et qui supporte le mode mathématique.

Lorsque l’on utilise une police sans support des mathématiques, la police mathématique par défaut sera utilisée. Par exemple, si nous affichons des formules mathématiques dans un document utilisant la police French Cursive, les formules mathématiques seront affichées à l’aide de la police par défaut (sûrement Computer Modern).

De plus, certains packages fournissent des polices mathématiques, comme mentionné ici. Cela permet d’utiliser une police sans support des mathématiques, et d’utiliser une police mathématique différente de la police par défaut. Par exemple, avec ce code, nous utilisons la police French Cursive pour le texte, et la police Euler pour les mathématiques.

% Début du préambule %
\usepackage[default]{frcursive}
\usepackage{eulervm}

\begin{document}
Voici un document écrit avec la police French Cursive, et qui utilise la police Euler pour
les mathématiques.
\[
   \sum_{k = 0}^{10} \int_0^{k} x \mathrm{d}x = \sum_{k = 0}^{10} \frac{k^2}{2} = \frac{385}{2}
\]
\end{document}

Les espaces

Pour laisser de l’espace entre des éléments en mode mathématique, il va falloir le spécifier explicitement avec des commandes adéquates, puisque les espaces sont ignorées en mode maths.

D’autre part, le placement des objets en mode mathématique, même s’il est très souvent excellent, peut parfois nécessiter des ajustements manuels.

TeX est richement doté en matière d’espaces horizontaux. Ceux spécifiques au mode mathématique ont un nom en gras.

Commande Nom Effet
\ espace justifiante a ba\ b
\> ou \: espace moyenne aba\:b
\; espace épaisse a  ba\;b
\, espace fine aba\,b
\! espace fine négative a ⁣ba\!b
\enspace demi-cadrat aba\enspace b
\quad cadrat aba\quad b
\qquad double cadrat aba\qquad b
~ espace insécable a ba~b
\kern<l> espace insécable de longueur <l> (qui peut être négative) aba\kern2cm b (on a pris l=2 cm)
\hfil ou \hfill espace d’élasticité infinie (s’étire autant qu’il le faut)

Il est également utile de signaler la macro de LaTeX \hphantom{…}, dont l’effet est d’insérer une espace horizontale de la même dimension que son argument : \mathrm C^{15}_9 donne C915\mathrm C^{15}_9 tandis que \mathrm C^{15}_{\hphantom{1}9} donne C1915\mathrm C^{15}_{\hphantom{1}9}.

Voici un premier exemple où le modulo est espacé de la relation de congruence d’un cadrat avec \[x\equiv 10 \quad[7]\] :

x10[7]x\equiv 10 \quad[7]

Dans l’exemple ci-dessous, l’emploi d’une espace négative semble préférable pour retoucher à la main le placement de l’exposant. En effet, le code \[ \left(\dfrac 12\right)^n \] donne :

(12)n\left(\dfrac 12\right)^n

L’exposant peut être approché de la parenthèse avec \!, voire avec \!\!, et \[ \left(\dfrac 12\right)^{\!n} \qquad \left(\dfrac 12\right)^{\!\!n} \] produit :

(12) ⁣n(12) ⁣ ⁣n\left(\dfrac 12\right)^{\!n} \qquad \left(\dfrac 12\right)^{\!\!n}

Il ne faut pas abuser de ces retouches manuelles, la plupart des objets sont généralement bien placés.

Dans les nombres

Si nous voulons formater l’affichage des nombres (regrouper les nombres avant et après le séparateur décimal en groupes de trois séparés par une espace, et supprimer l’espace indésirable après la virgule), le package siunitx nous sera d’une grande aide. Il s’agit d’un package très complet, qui offre plusieurs types de formatages pour les nombres, et permet également de taper des unités très facilement.

Pour l’utiliser, nous allons tout d’abord faire quelques petites configurations. En effet, siunitx utilise le point comme séparateur décimal par défaut. Nous allons donc charger la configuration française.

\sisetup{locale = FR}

Voyons un exemple d’utilisation du package. La commande que nous allons voir ici est la commande \num. Elle peut s’utiliser en mode texte et en mode mathématique. Voici un code commenté où cette commande est utilisée.

\num{299792458}  et          % Il y a des espaces.
\num{299792,458} et          % On obtient une virgule comme séparateur décimal.
\num{.34}        et          % Même en utilisant le point, on obtient une virgule et un zéro est placé.
\num{299792,458 +- 0.09} et  % On peut obtenir le signe « plus ou moins » avec +-.
\num{3e8}        et          % « e » permet d’obtenir la puissance de 10 (« E » aussi).
\num{3d8}.                   % « d » et « D » permettent aussi d’obtenir la puissance de 10.

Après compilation, on obtient bien le formatage attendu.

Notons que la commande \numprint du package numprint peut également faire ce travail de formatage. Elle peut être utilisée en dehors du mode mathématique, et est vraiment très simple : \numprint{299792,458}.