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


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