\makeatletter & \makeatother
Синопсис:
\makeatletter ... definition of commands with @ in their name .. \makeatother
Используйте эту пару, когда переопределяете команды LaTeX, которые имеют в имени символ «@» ( @). Декларация \makeatletter устанавливает категорийный код символа «@» равным 11 (код буквы). Декларация \makeatother устанавливает категорийный код символа «@» равным 12, его значению по умолчанию.
Когда TeX читает символы, он присваивает каждому из них категорийный код, или catcode. Например, он присваивает символу обратной косой черты ‘\’ категорийный код 0. Имена команд состоят из символа категории 0, обычно обратной косой черты, за которым следуют буквы, символы категории 11 (за исключением случаев, когда имя команды может также состоять из символа категории 0, за которым следует единственный небуквенный символ).
Исходный код LaTeX использует соглашение, что некоторые команды используют @ в своём имени. Эти команды в основном предназначены для авторов пакетов или классов. Это соглашение предотвращает случайное перезапись таких команд авторами, которые просто используют пакет или класс, так как по умолчанию символ «@» имеет категорийный код 12.
Используйте пару \makeatletter и \makeatother внутри файла .tex, обычно в преамбуле, когда вы определяете или переопределяете команды с именем @, помещая их вокруг своего определения. Не используйте их внутри файлов .sty или .cls, так как команды \usepackage и \documentclass уже позаботились о том, чтобы символ «@» имел категорийный код буквы, 11.
Полный список макросов с символом «@» в их именах можно найти по адресу https://ctan.org/pkg/macros2e.
В этом примере в файле класса есть команда \thesis@universityname, которую пользователь хочет изменить. Эти три строки должны быть помещены в преамбулу, перед \begin{document}.
\makeatletter
\renewcommand{\thesis@universityname}{Saint Michael's College}
\makeatother
© 2007–2018 Karl Berry
Public Domain Software
http://latexref.xyz/_005cmakeatletter-_0026-_005cmakeatother.html