À 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.