---
myst:
html_meta:
keywords: LaTeX, programmation, erreurs, messages d'erreur de LaTeX,
accolade en trop, erreur d'accolade, argument d'une commande,
argument d'une macro
---
# Que signifie l'erreur : "Argument of ⟨commande⟩ has an extra }" ?
- **Message** : `Argument of ⟨commande⟩ has an extra }`
- **Origine** : TeX
Une accolade droite a été utilisée à la place d'un argument obligatoire
de commande (par exemple, `\mbox}`). Les commandes fragiles,
lorsqu'elles sont utilisées sans `\protect` dans un argument mouvant,
sont souvent cassées sous une forme qui produit cette erreur
ou l'une des erreurs "`Extra...`"
[vues ailleurs](/2_programmation/erreurs/e/start).
Vous avez regardé votre code source et vous n'avez trouvé aucun signe
d'un "`}`" mal placé... En fait, ce message est une manière un peu énigmatique
de vous dire que vous avez placé
une [commande fragile](/2_programmation/syntaxe/c_est_quoi_la_protection)
dans un argument mouvant. Si ces termes ne vous parlent pas, la question
"[](/2_programmation/syntaxe/c_est_quoi_la_protection)" vous explique
ces deux concepts propres à LaTeX.
## Quelques exemples
La commande `\footnote` est un cas classique de commande fragile et la mettre
dans l'argument d'une commande `\section`, dont l'argument est
par défaut mouvant, va poser problème. En voici un exemple, ici nommé
le "cas `\section`".
```{noedit}
\section{Un beau titre\footnote{je n'ai pas mieux à proposer}}
```
Vous recevrez alors le message d'erreur suivant :
```text
! Argument of \@sect has an extra }.
```
Ceci arrive de la même manière avec les légendes (l'exemple suivant est
une version simplifiée d'un exemple trouvé sur `comp.text.tex`),
avec le "cas `\caption`".
```{noedit}
\caption{Énergie : \[ e=mc^2 \]}
```
Cet exemple va générer l'erreur suivante :
```text
! Argument of \@caption has an extra }.
```
Le cas suivant, pourtant à peine différent, va donner une réponse autre.
```{noedit}
\caption{Énergie : \( e=mc^2 \)}
```
Ce cas va s'avérer plus ennuyeux que ceux vus auparavant :
il n'y a pas d'erreur lors de la première exécution du code... mais,
lors de la deuxième exécution, l'erreur apparaît lors de la génération
de la liste des figures avec la commande `\listoffigures` (ou des tables
avec la commande `\listoftables`) :
```{noedit}
! LaTeX Error : Bad math environment delimiter.
```
## Quelques solutions
### Utiliser la commande `\protect`
La solution consiste normalement à remplacer votre commande fragile
par une commande robuste ou de forcer votre commande à devenir robuste
en la préfixant de la commande `\protect`, ce qui donnerait
dans le cas `\section` ci-dessus :
```{noedit}
\section{Un beau titre\protect\footnote{je n'ai pas mieux à proposer}}
```
### Ne pas utiliser de commande fragile
Toutefois, dans le cas `\section` comme dans le cas `\caption`, vous pouvez
séparer l'argument mouvant en utilisant la syntaxe complète
de la commande `\section[mouvant]{statique}`. Ceci donne
une autre solution classique : omettre tout simplement la commande fragile
de l'argument mouvant. De cette manière, le cas `\caption` serait rédigé
ainsi :
```{noedit}
\caption[Énergie (équation d'Einstein)]{Énergie : \( E=mc^2 \)}
```
### Utiliser la commande `\ensuremath` avec les mathématiques
En pratique, l'insertion de mathématiques dans un argument mouvant
a été traitée en LaTeX avec la commande robuste `\ensuremath` :
```{noedit}
\caption{Energie : \ensuremath{E=mc^2}}
```
## En conclusion
Il est donc toujours intéressant de chercher des alternatives à l'utilisation
de la méthode `\protect`.
Les notes de bas de page peuvent créer des cas encore plus complexes,
la question
"[](/3_composition/texte/pages/footnotes/inserer_une_note_de_bas_de_page_dans_un_titre)"
traite spécifiquement de ces cas.
:::{sources}
- [An extra }?](faquk:FAQ-extrabrace)
- [FAQ erreurs - Lettre A](https://latex.developpez.com/faq/erreurs?page=A),
sur le site [Developpez.com](https://latex.developpez.com)
- *[LaTeX Companion](https://www.latex-project.org/help/books/#french)*,
2e édition, Frank Mittelbach, Michel Goossens, Johannes Braams,
David Carlisle, Chris Rowley (Pearson, 2006)
:::