====== 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...'' » [[https://www.latex-fr.net/2_programmation/erreurs/e/start|vues ailleurs]].

-----

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 [[https://www.latex-fr.net/2_programmation/syntaxe/c_est_quoi_la_protection|commande fragile]] dans un argument mouvant. Si ces termes ne vous parlent pas, [[https://www.latex-fr.net/2_programmation/syntaxe/c_est_quoi_la_protection|ce lien]] vous explique ces deux concepts propres à <latex>\LaTeX</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 qu'on appelera ici le « cas ''\section'' ».

<code latex>
\section{Un beau titre\footnote{je n'ai pas mieux à proposer}}
</code>

Nous recevons alors le message d'erreur suivant :

<code latex>
! Argument of \@sect has an extra }.
</code>

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''). On appelera cet exemple le « cas ''\caption'' ».

<code latex>
\caption{Énergie : \[e=mc^2\]}
</code>

Cet exemple va générer l'erreur suivante :

<code latex>
! Argument of \@caption has an extra }.
</code>

Le cas suivant, pourtant à peine différent, va donner une réponse autre.

<code latex>
\caption{Énergie : \(e=mc^2\)}
</code>

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'') : 

<code latex>
! LaTeX Error: Bad math environment delimiter.
</code>

===== 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 :

<code latex>
\section{Un beau titre\protect\footnote{je n'ai pas mieux à proposer}}
</code>

==== 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 :

<code latex>
\caption[Énergie (équation d'Einstein)]{Énergie : \(E=mc^2\)}
</code>

==== 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>\LaTeXe</latex> avec la commande robuste ''\ensuremath'' :

<code latex>
\caption{Energie : \ensuremath{E=mc^2}}
</code>

===== 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 [[https://www.latex-fr.net/3_composition/texte/pages/footnotes/inserer_une_note_de_bas_de_page_dans_un_titre|Comment obtenir une note de bas de page dans un titre ?]] » traite donc spécifiquement ces cas.

-----
//Sources ://
  * [[faquk>FAQ-extrabrace|An extra `}`?]]
  * [[https://latex.developpez.com/faq/erreurs?page=A]],
  * [[https://www.latex-project.org/help/books/#french|LaTeX Companion, 2e édition]], Frank Mittelbach, Michel Goossens, Johannes Braams, David Carlisle, Chris Rowley (Pearson, 2006) ; ISBN: 978-2-7440-7182-9. Annexe B, //Détecter et résoudre les problèmes//, reproduite avec l'aimable autorisation de l'éditeur.

{{htmlmetatags>metatag-keywords=(messages d'erreur de LaTeX,accolade en trop,erreur d'accolade,argument d'une commande,argument d'une macro)
metatag-og:title=(Que signifie l'erreur: « Argument of ⟨commande⟩ has an extra } »)
metatag-og:site_name=(FAQ LaTeX francophone)
}}