Comprendre \makeatletter et \makeatother

Être ou ne pas être une lettre : le cas de @

Pour apprécier cette section, vous devez avoir lu le paragraphe sur les noms de commandes. Vous savez alors qu'en temps normal, si l'on écrit, par exemple \today@midnight, il ne s'agit pas d'un nom de commande seul, mais de la commande \today suivie des caractères @, m, i, etc.

Si pourtant vous lisez les sources d'un package, d'un fichier de classe, voire du noyau LaTeX, vous constaterez que beaucoup de noms de commandes y contiennent au moins un @. Il s'agit d'un convention standard de LateX (déjà utilisée par le format plain d'ailleurs) qui sert à « protéger » certaines commandes en les rendant inaccessible à l'utilisateur en temps normal.

Ceci repose que le fait qu'on peut demander à TeX de considérer @ (ou tout autre caractère) comme une lettre si on le désire. Par défaut avec LaTeX, @ est une lettre à l'intérieur des fichiers de style (packages) ou de classe, et n'est pas une lettre dans les documents. Pour certains cas, vous pouvez vouloir utiliser des commandes internes. Il faut alors auparavant dire à TeX de considérer @ comme une lettre avec la commande explicite \makeatletter, et ne pas oublier ensuite de rétablir l'ordre naturel des choses par la commande \makeatother.

Pour un exemple d'utilisation, voir « version étoilée ».

Archived copy: https://web.archive.org/web/20170314080827/https://elzevir.fr/imj/latex/tips.html#makeatletter

composition/macros/comprendre_makeatletter_et_makeatother.txt · Dernière modification: 2017/03/14 08:08 par mpg
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0