À quoi servent \makeatletter et \makeatother ?
Le caractère "@" est spécial pour LaTeX, et ne peut pas être
utilisé directement comme partie d'un nom de macro dans un
document LaTeX. Pour utiliser certaines macros internes de LaTeX
(celles qui contiennent un "@"), directement dans un document
(au lieu d'utiliser un fichier .sty), il faut les encapsuler
dans une macro dont le nom ne contient pas de " at ". En outre,
cette macro doit impérativement être déclarée dans le
préambule du document, et être encadrée par les commandes
\makeatletter et \makeatother.
En fait ces commandes permettent d'indiquer à LaTeX que l'on
veut effectivement travailler sur ses commandes internes en le
forçant à considérer le "@" (at) comme une lettre
(makeatletter).
ATTENTION : les commandes internes de LaTeX sont à manipuler
avec précaution.