Suivant: \ignorespaces & \ignorespacesafterend, Précédent: \newfont, Monter: Definitions [Table des matières][Index]
\protect
Toutes les commandes de LaTeX sont soit fragiles soit
robustes. Les notes en bas de page, les sauts de ligne, toute
commande prenant un argument optionnel, et bien d’autres, sont
fragiles. Une commande fragile peut se disloquer et causer une erreur
lorsque elle est utilisée au sein de l’argument de certaines
commandes. Pour empêcher la dislocation de ces commandes l’une des
solutions est de les précéder de la commande \protect
.
Par exemple, lorsque LaTeX exécute la commande
\section{nom-rubrique}
il écrit le texte
nom-rubrique dans le fichier auxiliaire .aux, de sorte à
pouvoir le tirer de là pour l’utiliser dans d’autres parties du document
comme la table des matières. On appelle
argument mouvant tout argument qui est développé en interne par
LaTeX sans être directement composé en sortie. Une commande est dite
fragile si elle se développe pendant ce processus en un code TeX non
valide. Certains exemples d’arguments mouvants sont ceux qui apparaissent
au sein des commandes \caption{...}
(voir figure), dans la
commande \thanks{...}
(voir \maketitle), et dans les
expressions en @ des environnements tabular
et array
(voir tabular).
Si vous obtenez des erreurs étranges de commandes utilisées au sein
d’arguments mouvants, essayez des les précéder d’un \protect
. Il
faut un \protect
pour chacune des commandes fragiles.
Bien qu’en général la commande \protect
ne fait pas de mal, les
commandes de gestion de longueurs sont robustes et ne devraient pas être
précédées d’une commande \protect
. Une commande \protect
ne peut pas non plus être utilisée au sein de l’argument d’une commande
\addtocounter
ou
\setcounter
.
Dans l’exemple qui suit la commande \caption
produit une erreur
mystérieuse
\begin{figure} ... \caption{Company headquarters of A\raisebox{1pt}{B}\raisebox{-1pt}{C}} \end{figure}
Dans l’exemple suivant la commande \tableofcontents
produit une
erreur à cause du \(..\)
dans le titre de section qui se
développe en code incorrect TeX dans le fichier .toc. Vous
pouvez résoudre ceci en remplaçant \(..\)
par \protect\(..\protect\)
.
\begin{document} \tableofcontents ... \section{Einstein's \( e=mc^2 \)} ...
Suivant: \ignorespaces & \ignorespacesafterend, Précédent: \newfont, Monter: Definitions [Table des matières][Index]