--- myst: html_meta: keywords: 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, [ce lien](/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 qu'on appelera ici le « cas `\section` ». ```{noedit} \section{Un beau titre\footnote{je n'ai pas mieux à proposer}} ``` Nous recevons 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`). On appelera cet exemple 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 donc spécifiquement ces cas. :::{sources} - [An extra }?](faquk:FAQ-extrabrace) - , - [LaTeX Companion, 2e édition](https://www.latex-project.org/help/books/#french), 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. :::