Suivant: \@ifstar, Précédent: \providecommand, Monter: Definitions [Table des matières][Index]
\makeatletter
et \makeatother
Synopsis :
\makeatletter ... définition de commande comprenant @ dans leur nom .. \makeatother
Utilisez cette paire de commandes quand vous redéfinissez les commandes
LaTeX dont le nom comprend un caractère arobe ‘@
’. La
déclaration \makeatletter
a pour effet que le caractère arobe ait
le code de catégorie des lettres, c.-à-d. le code 11. La déclaration
\makeatother
règle de code de catégorie de l’arobe au code 12, sa
valeur d’origine.
À mesure que chaque caractère est lu par TeX, un code de catégorie
lui est assigné. On appelle aussi ce code
catcode pour faire court. Par exemple, la controblique \
reçoit le catcode 0. Les noms de commande consistent en un caractère de
catégorie 0, d’ordinaire une controblique, suivi par des lettres,
c.-à-d. des caractères de catégorie 11 (à ceci près qu’une commande
peut également consister en un caractère de catégorie 0 suivi d’un
unique caractère qui n’est pas une lettre).
Le code source de LaTeX suit la convention que certaines commandes
utilisent @
dans leur nom. Ces commandes sont principalement
destinées aux auteurs de paquetages ou de classes. Cette convention
empêche les auteurs qui sont juste utilisateurs d’un paquetage ou d’une
classe de remplacer accidentellement une telle commande par une commande
définie par eux, puisque par défaut l’arobe a le catcode 12 (other).
Utilisez la paire \makeatletter
et \makeatother
au sein
d’un fichier .tex, typiquement dans le préambule, quand vous
définissez ou redéfinissez des commandes dont le nom comprend @
,
en entourant votre définition par elles. Ne les utilisez pas au sein de
fichiers .sty ou .cls puisque les commandes
\usepackage
et \documentclass
font déjà le nécessaire pour
que l’arobe ait le catcode d’une lettre, à savoir 11.
Pour une liste complète des macros contenant une arobe dans leur nom, voir le document http://ctan.org/pkg/macros2e.
Dans l’exemple suivant une commande \these@nomuniversite
se
trouve dans le fichier de classe, et l’utilisateur veut changer sa
définition. Pour cela, il suffit d’insérer les trois lignes suivantes
dans le préambule, avant le \begin{document}
:
\makeatletter \renewcommand{\these@nomuniversite}{Université Lyon III Jean Moulin} \makeatother
Suivant: \@ifstar, Précédent: \providecommand, Monter: Definitions [Table des matières][Index]