Suivant: , Précédent: , Monter: Definitions   [Table des matières][Index]


12.11 \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: , Précédent: , Monter: Definitions   [Table des matières][Index]