> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/fr/erreurs-latex/25-missing-inserted.md).

# Missing $ inserted

## Comment corriger cette erreur

Cette erreur peut être déclenchée de différentes façons et, surtout pour ceux qui découvrent LaTeX, ce n’est pas toujours *immédiatement* évident pourquoi elle s’est produite, ou, plus important encore, comment la résoudre. Nous commencerons par un aperçu des *conditions générales* qui déclenchent cette erreur, puis nous énumérerons certaines des causes les plus courantes et comment les corriger. Les [dernières parties de cet article](#background-to-the-missing-inserted-error) offrent un matériel plus approfondi pour les lecteurs souhaitant élargir leur compréhension.

**Remarque**: Dans cet article, nous utilisons les termes « TeX », « LaTeX » et « moteur TeX », mais si vous n’êtes pas sûr de leurs différentes significations, vous pouvez les découvrir dans l’article Overleaf [Qu’y a-t-il dans un nom : un guide des nombreuses variantes de TeX](/latex/fr/articles-approfondis/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md).

### Les principales causes de Missing $ inserted

Il y a trois raisons principales pour lesquelles (La)TeX génère cette erreur :

1. Vous avez commis une erreur explicite dans votre balisage mathématique, par exemple en écrivant `$y=f(x)$$`—nous examinons d’autres exemples plus loin dans cet article.
2. TeX a détecté un caractère ou une commande conçue pour être utilisée **uniquement** lorsque TeX compose des mathématiques, mais ce caractère ou cette commande a été utilisé alors que TeX était en train de **ne** composer des mathématiques.
   * **Techniquement parlant**: TeX a détecté un caractère ou une commande conçue pour fonctionner *à l’intérieur* [*du mode math*](#math-mode) mais vous avez essayé de l’utiliser *en dehors de* [*du mode math*](#math-mode). Pour clarifier le problème des « caractères » conçus pour fonctionner en [du mode math](#math-mode), ce que nous voulons vraiment dire est l’utilisation de caractères auxquels ont été attribués certains [codes de catégorie](/latex/fr/autres-sujets/43-table-of-tex-category-codes.md) conçus pour opérer à l’intérieur de matière mathématique.
3. TeX a détecté une commande conçue pour être utilisée uniquement lorsque TeX est en train de **ne** composer des mathématiques, mais cette commande a été détectée (utilisée) pendant que TeX **était** en train de composer de la matière mathématique.
   * **Techniquement parlant**: TeX a détecté une commande conçue pour fonctionner *en dehors de* [*du mode math*](#math-mode) mais vous avez essayé de l’utiliser *à l’intérieur* [*du mode math*](#math-mode).

### Exemples d’erreurs et leurs solutions

Les exemples suivants démontrent certaines façons dont l’erreur `Missing $ inserted` peut être déclenchée, tout en proposant des solutions pour résoudre l’erreur.

#### Les commandes de symboles doivent être utilisées en mode math

De nombreux symboles mathématiques dans LaTeX sont accessibles via des commandes qui ne doivent être utilisées que lorsque TeX compose des maths ; c’est-à-dire au moment où TeX est en mode math.

Parmi les commandes de symboles couramment utilisées, on trouve celles pour les lettres grecques : `\alpha` $$(\alpha)$$, `\beta` $$(\beta)$$, `\gamma` ($$\gamma)$$, `\delta` $$(\delta)$$, `\Delta` $$(\Delta)$$ et ainsi de suite. De nombreuses autres commandes LaTeX, comme celles pour les modificateurs : `\vec{x}` $$(\vec{x})$$, `\tilde{x}` $$(\tilde{x})$$, `\hat{x}` $$(\hat{x})$$ etc., sont également conçues pour être utilisées en mode math.

Utiliser des modificateurs, des commandes de symboles — et de nombreuses autres commandes liées aux maths — en dehors de la composition de contenu mathématique générera une `Missing $ inserted` erreur et forcera le compilateur à entrer en mode math.

L’exemple suivant montre ce qui se passe si vous essayez d’utiliser la commande `\alpha` $$(\alpha)$$ en dehors du mode math :

```latex
Écrire \verb|\alpha| en dehors du mode math générera une erreur : \alpha et donc ce texte ne sera pas composé correctement...
```

[Ouvrez cet ***générateur d’erreur*** exemple dans Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Incorrect+use+of+LaTeX+symbols\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0AWriting+%5Cverb%7C%5Calpha%7C+outside+math+mode+will+generate+an+error%3A+%5Calpha+and+so+this+text+will+not+be+typeset+correctly...%0A%5Cend%7Bdocument%7D)

L’image suivante montre une partie de la sortie produite par le code LaTeX ci-dessus, démontrant l’erreur causée par l’utilisation de `\alpha` en dehors du mode math :

![\alpha en dehors du mode math](/files/c5417e7ff04d14acd403040172b3604bfa0ea692)

**Correction des erreurs causées par les commandes de symboles LaTeX**

Pour utiliser des modificateurs ou des symboles mathématiques grecs dans des phrases, ils doivent toujours être encadrés de signes dollar simples `$...$`, ou de la syntaxe `\(...\)` de LaTeX, afin que TeX les traite en *mode math en ligne*, comme montré ci-dessous.

```latex
Lorsqu’on écrit la lettre grecque alpha dans une phrase, elle doit être écrite comme \verb|$\alpha$| pour générer $\alpha$, ou comme \verb|\(\alpha\)| qui génère aussi \(\alpha\).

Lorsqu’on écrit un vecteur x dans une phrase, il doit être écrit comme \verb|$\vec{x}$| pour produire $\vec{x}$ ou comme \verb|\(\vec{x}\)| qui produit aussi \(\vec{x}\).
```

[Ouvrez cet exemple dans Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+LaTeX+symbols\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0AWhen+writing+the+Greek+letter+alpha+in+a+sentence%2C+it+must+be+written+as+%5Cverb%7C%24%5Calpha%24%7C+to+generate+%24%5Calpha%24%2C++or+as+%5Cverb%7C%5C%28%5Calpha%5C%29%7C+which+also+generates+%5C%28%5Calpha%5C%29.%0A+%0AWhen+writing+a+vector+x+in+a+sentence%2C+it+must+be+written+as+%5Cverb%7C%24%5Cvec%7Bx%7D%24%7C+to+produce+%24%5Cvec%7Bx%7D%24+or+as+%5Cverb%7C%5C%28%5Cvec%7Bx%7D%5C%29%7C+which+also+yields+%5C%28%5Cvec%7Bx%7D%5C%29.%0A%5Cend%7Bdocument%7D)

**Une liste de symboles LaTeX**

L’article Overleaf [Liste des lettres grecques et des symboles mathématiques](/latex/fr/mathematiques/11-list-of-greek-letters-and-math-symbols.md) fournit une liste de symboles qui sont exclusifs au mode math, ainsi que des liens vers d’autres ressources utiles.

#### Utiliser des caractères réservés au mode math en dehors du mode math

Traditionnellement, TeX/LaTeX réservent certains caractères courants pour une utilisation dans le mode math :

* `^`: réservé pour créer des exposants
* `_`: réservé pour créer des indices
* `$`: réservé pour commencer/arrêter le mode math

Les utiliser directement en dehors du mode math déclenche des erreurs.

* Pour taper `$` en dehors du mode math, utilisez `\$`
* Pour taper `_` en dehors du mode math, utilisez `\_`
* Plusieurs façons de taper `^` en dehors du mode math. Une liste est fournie sur [tex.stackexchange](https://tex.stackexchange.com/a/77647)

**Utiliser des underscores en dehors du mode math**

Une cause fréquente de l’ `Missing $ inserted` erreur est l’utilisation d’underscores (`_`), un caractère du mode math, en dehors du mode math — par exemple des underscores présents dans les noms de fichiers : un exemple est montré ci-dessous.

```latex
Utilisation d’un caractère mathématique, tel qu’un underscore, dans un nom de fichier : math_example.tex.
```

[Ouvrez cet ***générateur d'erreur*** code sur Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+code+error\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0AUsing+a+math+character%2C+such+as+an+underscore%2C+in+a+file+name%3A+math_example.tex.%0A%5Cend%7Bdocument%7D)

Parce que le caractère underscore est affecté [au code de catégorie 8](/latex/fr/autres-sujets/43-table-of-tex-category-codes.md) il est réservé à la création d’indices lorsque le moteur TeX est en mode math. Par conséquent, lorsque (La)TeX détecte le `_` dans le nom de fichier `math_example.tex` il le fait en dehors du mode math, ce qui déclenche une erreur et entraîne une composition erronée du texte qui suit :

$$\text{Using a math character, such as an underscore, in a file name: math}\_example.tex.$$

Le `_` Le caractère (techniquement son code de catégorie 8) déclenche une erreur et provoque l’entrée de TeX en mode math : la lettre `e` qui suit immédiatement après le `_` est traité comme un caractère à composer en indice. Le traitement se poursuit alors en mode math, ce qui entraîne le texte en italique et, en outre, il n’y a ici aucun moyen pour TeX de quitter proprement le mode math, ce qui déclenchera d’autres erreurs.

Pour éviter cette erreur particulière, vous devez toujours utiliser `_` en mode math — c’est-à-dire à l’intérieur de `$..$`, `$$...$$` ou, de préférence, à l’intérieur de la notation LaTeX `\(...\)` et `\[...\]`.

En dehors du mode math, vous devez écrire `\_` pour utiliser ou composer un underscore, comme montré dans la version corrigée de l’exemple :

```latex
Pour utiliser le caractère underscore du mode math dans un nom de fichier, écrivez-le ainsi : math\_example.tex.
```

[Ouvrez cet ***version corrigée*** sur Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Fixed+math+code+error\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0ATo+use+the+math-mode+underscore+character+in+a+file+name%2C+write+it+like+this%3A+math%5C_example.tex.%0A%5Cend%7Bdocument%7D)

**Utiliser des underscores dans les URL**

Vous pouvez également rencontrer cette erreur en essayant de composer des URL contenant des underscores, par exemple `[https://www.overleaf.com/learn/latex/Subscripts_and_superscripts](../02-mathematics/02-subscripts-and-superscripts.md)`. Au lieu d’échapper chaque caractère underscore, vous pouvez vouloir charger le `url` ou `hyperref` package, puis utiliser la `\url` commande comme ceci :

```latex
\documentclass{article}
\usepackage{url}
\begin{document}
\url{https://www.overleaf.com/learn/latex/Subscripts_and_superscripts}
\end{document}
```

[Ouvrez cet exemple dans Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=URL+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Burl%7D+%0A%5Cbegin%7Bdocument%7D%0A%5Curl%7Bhttps%3A%2F%2Fwww.overleaf.com%2Flearn%2Flatex%2FSubscripts_and_superscripts%7D%0A%5Cend%7Bdocument%7D)

**Underscores dans les URL de fichiers .bib**

Si de telles URL se trouvent dans votre fichier de bibliographie `.bib` fichier, ce qui entraîne des erreurs signalées depuis le `.bbl` fichier, assurez-vous alors d’utiliser les `url` ou `doi` champs pour enregistrer ces champs dans le `.bib` fichier :

```
doi = {10.1007/978-94-015-6859-3_4},
url = {https://abc.com/latest_news_1.html}
```

et chargez le `url` ou `hyperref` package dans votre préambule, si nécessaire. La plupart des fichiers de style bibliographique pourront alors automatiquement envelopper ces valeurs dans un `\url{...}` commande.

#### Utiliser des commandes non autorisées en mode math

Un certain nombre de commandes primitives TeX intégrées de bas niveau (appelées *primitives*) ne sont pas autorisées en mode math et leur utilisation en mode math déclenchera l’ `Missing $ inserted` erreur. Bien que la plupart des utilisateurs soient peu susceptibles d’utiliser ces commandes dans le code LaTeX de tous les jours, nous le signalons ici car il est possible qu’elles se trouvent dans des commandes LaTeX (macros) utilisées en mode math.

L’exemple suivant essaie d’utiliser la commande TeX `\vskip` à l’intérieur de matière mathématique. Cela n’est pas autorisé et génère une erreur.

```latex
\documentclass{article}
\begin{document}
Je veux ajouter un peu d’espace, mais ce n’est pas la bonne manière de procéder...
\[y=f(x) \vskip5pt z=f(y)\]
$y=f(x) \vskip5pt z=f(y)$
\end{document}
```

[Ouvrez cet ***générateur d'erreur*** code sur Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+error+demo+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0AI+want+to+add+some+space%2C+but+this+is+not+the+way+to+do+it...%0A%5C%5By%3Df%28x%29+%5Cvskip5pt+z%3Df%28y%29%5C%5D%0A%24y%3Df%28x%29+%5Cvskip5pt+z%3Df%28y%29%24%0A%5Cend%7Bdocument%7D)

Parmi les autres commandes (primitives) TeX non autorisées lorsque TeX est en mode math, on trouve `\par`, `\hrule`, `\unvbox`, `\unvcopy` et `\valign`.

#### Les lignes blanches dans les mathématiques

```latex
\documentclass{article}
\begin{document}
\begin{equation}
y=x^3,

z=x^3
\end{equation}
\end{document}
```

[Ouvrez cet ***générateur d'erreur*** code sur Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+error+demo+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bequation%7D%0Ay%3Dx%5E3%2C%0A%0Az%3Dx%5E3%0A%5Cend%7Bequation%7D%0A%5Cend%7Bdocument%7D)

**Cause**: La ligne blanche entre les formules est convertie en une `\par` commande qui n’est pas autorisée en mode math. Vous pouvez aussi le voir en écrivant

```latex
\documentclass{article}
\begin{document}
\[y=x^3,\par z=x^3\]
\end{document}
```

[Ouvrez cet ***générateur d'erreur*** code sur Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+error+demo+2\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5C%5By%3Dx%5E3%2C%5Cpar+z%3Dx%5E3%5C%5D%0A%5Cend%7Bdocument%7D)

Pour corriger cela, supprimez soit les lignes blanches, soit commentez-les :

```latex
\documentclass{article}
\begin{document}
\begin{equation}
y=x^3,
% Cela supprimera la ligne blanche
z=x^3
\end{equation}
\end{document}
```

[Ouvrez cet ***version corrigée*** sur Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+error+demo+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bequation%7D%0Ay%3Dx%5E3%2C%0A%25+This+will+suppress+the+blank+line%0Az%3Dx%5E3%0A%5Cend%7Bequation%7D%0A%5Cend%7Bdocument%7D)

#### Utiliser $ à l’intérieur d’environnements mathématiques

Certains environnements LaTeX, comme les `align` et `equation` environnements, ne nécessitent pas que les maths soient entourées de `$` signes, ni l’utilisation de la syntaxe mathématique de LaTeX : `\(...\)` ou `\[...\]`. Le code LaTeX qui implémente ces environnements se charge d’entrer et de sortir du mode math.

L’exemple suivant montre l’utilisation du `$` signe dans un `amsmath` `align` environnement, ce qui déclenche une `Missing $ inserted` erreur, parmi bien d’autres....

```latex
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
$2x - 5y &=  8 \\
3x + 9y &=  -12$
\end{align*}
\end{document}
```

[Ouvrez cet ***générateur d'erreur*** code sur Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+error+demo+4\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bamsmath%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Balign%2A%7D%0A%242x+-+5y+%26%3D++8+%5C%5C+%0A3x+%2B+9y+%26%3D++-12%24%0A%5Cend%7Balign%2A%7D%0A%5Cend%7Bdocument%7D)

La manière correcte d’écrire ces équations est :

```latex
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
2x - 5y &=  8 \\
3x + 9y &=  -12
\end{align*}
\end{document}
```

[Ouvrez cet ***version corrigée*** sur Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+error+demo+5\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bamsmath%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Balign%2A%7D%0A2x+-+5y+%26%3D++8+%5C%5C+%0A3x+%2B+9y+%26%3D++-12%0A%5Cend%7Balign%2A%7D%0A%5Cend%7Bdocument%7D)

## Contexte de l’erreur Missing $ inserted

La section suivante est destinée aux lecteurs souhaitant mieux comprendre les raisons derrière l’erreur `Missing $ inserted`. Ce n’est pas *essentiel* à lire, mais elle peut vous aider à trouver et corriger les erreurs.

### Il n’y a pas de signes $ manquants, mais j’obtiens quand même l’erreur

Dans certaines circonstances, l’ `Missing $ inserted` erreur peut être très déroutante parce que votre code LaTeX ne présente peut-être pas réellement de problèmes avec *visiblement manquants* `$` caractères. Par exemple, l’extrait LaTeX $$\verb|$$y=f(x)\par$$|$$ semble superficiellement correct : les $$\verb|$$paires |$$ sont équilibrées mais cela déclenchera l’erreur « `missing $` ». Ici, cela est dû à la `\par` commande qui n’est pas autorisée en mode math :

```latex
\documentclass{article}
\begin{document}
Cet exemple génère l’erreur \verb|Missing $ inserted| :
$$y=f(x)\par$$
\end{document}
```

[Ouvrez ceci pour voir une erreur Missing $ inserted](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Math+error+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0AThis+example+generates+the+error+%5Cverb%7CMissing+%24+inserted%7C%3A+%0A%24%24y%3Df%28x%29%5Cpar%24%24%0A%5Cend%7Bdocument%7D)

Le code LaTeX ci-dessus déclenche en fait une *cascade* d’erreurs, comme montré ci-dessous, donc clairement vous ne devriez pas utiliser `\par` à l’intérieur du mode math !

```
! Missing $ inserted.
<texte inséré>
                $
l.12 $$y=f(x)\par
                 $$
J’ai inséré un symbole de début/fin de math car je pense que
vous en avez oublié un. Continuez, en croisant les doigts.

! Les mathématiques affichées devraient se terminer par $$.
<à relire>
                   \par
l.12 $$y=f(x)\par
                 $$
Le `$' que je viens de voir correspond supposément à un précédent `$$'.
Je supposerai donc que vous avez tapé `$$' aux deux endroits.

! Missing $ inserted.
<texte inséré>
                $
l.13 \end{document}

J’ai inséré un symbole de début/fin de math car je pense que
vous en avez oublié un. Continuez, en croisant les doigts.

! Les mathématiques affichées devraient se terminer par $$.
<à relire>
                   \par
l.13 \end{document}

Le `$' que je viens de voir correspond supposément à un précédent `$$'.
Je supposerai donc que vous avez tapé `$$' aux deux endroits.
```

Lorsque la `Missing $ inserted` l’erreur se produit, le logiciel du moteur TeX essaie de se rétablir et de « reprendre le fil » afin de pouvoir continuer le traitement après le point où l’erreur s’est produite. La section [Avancé : explication du mécanisme de récupération d’erreurs de TeX](#advanced-an-explanation-of-texs-error-recovery-mechanism) vous aidera à comprendre pourquoi cette cascade d’erreurs survient en raison des tentatives de TeX de corriger l’erreur initiale.

### Des modes, et quand

En interne, les moteurs TeX fonctionnent à l’aide de trois « états d’esprit », appelés *modes*, qui dépendent du type de matière que le moteur TeX est en train de *actuellement* composer. Le mode dans lequel se trouve un moteur TeX à un moment donné pendant la composition est appelé son *code de catégorie* mode, qui change tout au long du processus de composition du contenu de votre document LaTeX.

Pour chacun des modes d’un moteur TeX, il existe certaines commandes et certains caractères (ou, plus correctement, codes de catégorie) qui sont « incompatibles » avec le mode actuel de TeX : ils ne devraient pas être utilisés lorsque TeX se trouve dans ce mode spécifique. Si vous essayez d’utiliser ces caractères ou commandes inappropriés, TeX affichera une erreur telle que `Missing $ inserted` pour vous indiquer que quelque chose ne va pas.

#### Mode math

Cette erreur `Missing $ inserted` est liée au *du mode math*—c’est-à-dire le mode dans lequel se trouve un moteur TeX lorsque vous demandez à LaTeX de composer des maths.

Pour être complet, notons qu’il existe *deux* deux types de mode math, reflétant la création de maths en ligne ou affichées :

* mode math en ligne
* mode math affiché

TeX a besoin de ces deux modes math différents parce qu’il applique des règles différentes pour l’espacement, la taille des symboles, etc. lorsqu’il compose des maths destinées à être en ligne ou affichées.

#### Déclencher les modes math de TeX

Il existe plusieurs façons de faire entrer un moteur TeX *entrer* puis *sortir du* mode math.

* Vous pouvez utiliser un balisage explicite tel que :
  * Syntaxe LaTeX : `\(...\)` à *entrer* `\(` puis *sortir du* `\)` mode math en ligne ou `\[...\]` à *entrer* `\[` puis quitter le `\]` mode math affiché ;
  * syntaxe TeX (historique) : `$...$` pour entrer (premier `$`) puis quitter (deuxième `$`) le mode math en ligne ou `$$...$$` pour entrer (premier `$$` *paire*) puis quitter (deuxième `$$` *paire*) le mode math affiché ;
* ou l’un des environnements math de LaTeX :
  * `\begin{align}...\end{align}` etc. En coulisses, ces environnements se chargent d’entrer et de sortir du mode math.

Le texte réel *text* du message `Missing $ inserted` est *intégrées dans* (« codé en dur » dans) le logiciel du moteur TeX, c’est pourquoi vous verrez encore `Missing $` même si vous n’utilisez pas `$` les caractères pour composer des mathématiques et utilisez uniquement la syntaxe LaTeX pour baliser les maths dans votre document. Cela peut être déroutant pour les nouveaux utilisateurs de LaTeX, mais il n’y a pas grand-chose à faire pour modifier le texte de ce message d’erreur sans modifier le code source des moteurs TeX !

#### Macros : tester le mode math

Il est possible de tester si TeX est actuellement en mode math à l’aide de la commande primitive `\ifmmode`; ainsi vous pouvez écrire des macros dont le comportement peut s’adapter pour éviter de générer des erreurs liées au mode. Voici un exemple très simple pour illustrer le principe, qui affiche `Oui.` ou `Non.` selon que TeX est ou non en mode math au moment d’« exécuter » la macro.

```latex
\documentclass{article}
\begin{document}
\newcommand{\mytest}{\ifmmode \mathrm{Yes}\else No\fi.}

La macro est-elle utilisée en mode math ? $\mytest$

La macro est-elle utilisée en mode math ? $$\mytest$$

La macro est-elle utilisée en mode math ? \(\mytest\)

La macro est-elle utilisée en mode math ? \[\mytest\]

La macro est-elle utilisée en mode math ? \mytest
\end{document}
```

[Ouvrez cet exemple dans Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Testing+for+math+mode\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cnewcommand%7B%5Cmytest%7D%7B%5Cifmmode+%5Cmathrm%7BYes%7D%5Celse+No%5Cfi.%7D%0A%0AIs+the+macro+being+used+in+math+mode%3F+%24%5Cmytest%24%0A%0AIs+the+macro+being+used+in+math+mode%3F+%24%24%5Cmytest%24%24%0A%0AIs+the+macro+being+used+in+math+mode%3F+%5C%28%5Cmytest%5C%29+%0A%0AIs+the+macro+being+used+in+math+mode%3F+%5C%5B%5Cmytest%5C%5D%0A%0AIs+the+macro+being+used+in+math+mode%3F+%5Cmytest%0A%5Cend%7Bdocument%7D)

Le graphique suivant montre la sortie produite par l’exemple ci-dessus :

![Macro LaTeX pour tester le mode math](/files/a66154ec611cd04e633a4ddd08d9b168aec5a360)

## Avancé : explication du mécanisme de récupération d’erreurs de TeX

Le message d’erreur `Missing $ inserted` n’est pas produit par Overleaf, LaTeX ou les packages LaTeX ; il provient en réalité de *à l’intérieur du programme exécutable* chargé de composer votre document LaTeX : ce programme exécutable s’appelle un *moteur TeX*—vous pouvez le considérer comme celui qui « pilote » le processus de composition.

Dans le code source du logiciel TeX, son auteur (Donald Knuth) fait cette remarque à propos du code responsable de la génération de l’ `Missing $ inserted` erreur :

> Voici une liste de cas où l’utilisateur s’est probablement retrouvé par erreur en mode math ou en est sorti par erreur. TeX insérera un signe dollar et relira le jeton actuel.

Au cœur de l’ `Missing $ inserted` erreur se trouve le fait que TeX détecte « quelque chose » qui n’aurait pas dû être utilisé en mode math, ou « quelque chose » expressément conçu pour la composition mathématique qui est utilisé en dehors du mode math.

La tâche qui incombe à TeX est la suivante : comment m’en sortir ? TeX fait exactement ce qu’écrit Knuth : il insère un signe dollar et relit le jeton actuel — un [« jeton »](/latex/fr/articles-approfondis/53-what-is-a-tex-token.md) est la valeur numérique interne (entière) de TeX qui représente le caractère ou la commande qu’il vient de lire. Toutefois, en raison du contexte précis de l’erreur, cette stratégie peut, ou non, réussir — comme le dit le texte de l’erreur, « Continuez, en croisant les doigts. » !

### Exemple travaillé

Explorons les remarques de Knuth en examinant de plus près l’exemple suivant : $$\verb|$y=f(x)$$\vskip3pt|$$. Si vous ouvrez le code ci-dessous, vous verrez qu’il déclenche l’erreur `Missing $ inserted`.

```latex
Écrire \verb|$y=f(x)$$\vskip3pt| produit...$y=f(x)$$\vskip3pt Commencer une nouvelle ligne...
```

[Ouvrez cet exemple dans Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=A+missing+%24+inserted+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0AWriting+%5Cverb%7C%24y%3Df%28x%29%24%24%5Cvskip3pt%7C+produces...%24y%3Df%28x%29%24%24%5Cvskip3pt+Start+new+line...%0A%5Cend%7Bdocument%7D)

Pour revoir pourquoi cela déclenche une erreur, écrivons des indices pour identifier chaque $$\verb|$|$$ dans l’expression afin d’obtenir $$\verb|$|*{\mathtt1}\verb|y=f(x)|\verb|$|*{\mathtt2}\verb|$|*{\mathtt3}\verb|\vskip3pt|$$. TeX est capable de traiter correctement la première partie $$\verb|$|*{\mathtt1}\verb|y=f(x)|\verb|$|*{\mathtt2}$$ qui est traitée comme un morceau de maths en ligne correctement formaté, produisant $$y=f(x)$$. Immédiatement après avoir traité $$\verb|$|*{\mathtt2}$$ TeX quitte temporairement le mode math en ligne — dans notre exemple, nous créons des maths en ligne dans un paragraphe, donc il entre brièvement dans le soi-disant *mode horizontal*.

C’est ce qui se passe ensuite qui déclenche l’erreur. TeX continue de traiter le $$\verb|$|\_{\mathtt3}$$ ce qui déclenche la réentrée de TeX en mode math en ligne. TeX lit maintenant le jeton suivant, qui est la $$\verb|\vskip|$$ commande — il n’a pas encore lu le $$\verb|3pt|$$. À ce stade, TeX voit $$\verb|\vskip|$$ mais il est en mode math en ligne : $$\verb|\vskip|$$ n’est pas autorisé là, donc cela déclenche le processus de gestion des erreurs de TeX comme décrit par Knuth :

> TeX insérera un signe dollar et relira le jeton actuel.

Ici, le jeton actuel est la $$\verb|\vskip|$$ commande, donc ce que fait TeX est de placer un *nouveau* `$` dans son entrée ; appelons-le $$\verb|$|*{\mathtt4}$$À ce stade, TeX est toujours en mode math en ligne, mais il revient maintenant lire l’équivalent de $$\verb|$|*{\mathtt4}\verb|\vskip|$$ qui est lu en mode math en ligne. Le $$\verb|$|\_{\mathtt4}$$, inséré par TeX lui-même, maintenant *ferme* le mode math en ligne actuel et TeX continue à lire le $$\verb|\vskip|$$ commande *en dehors de* mode math en ligne — ici, TeX est dans un paragraphe, donc le $$\verb|\vskip3pt|$$ provoque la fin du paragraphe actuel et $$\verb|3pt|$$ de l’espace placé après lui.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/fr/erreurs-latex/25-missing-inserted.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
