В предыдущем моëм сообщении робот убил все слеши, это сделало код TeX'а поистине интригующим. Данный вариант является репостингом с расставленными бэкслешами. Заодно исправляю ошибки-описки.
Сравнительно недавно узнал механизм работы прочной команды в LaTeX:
Команда \DeclareRobustCommand{\name}[n]{implemantation} Объявляет команду \name_ (где подчерк это пробел) которая и выполняет код, impementation. А команда \name ссылается на \name_. Делается это через механизм TeX'а \csname\endcsname. Примерно так:
1 \expandafter\def\csname name \endcsname{implementation}
2 \def\name{\csname name \endcsname}
Таким образом, когда команда записывается во внешний файл и раскрывается она
записывает \name_ и при следующем прочтении TeX видит \name (пробелы ведь
игнорируются!) — команда получается прочная.
Самый цирк начинается, когда вы пробуете спросить у LaTeX что нибудь командой \show:
\show\name покажет вам
1 > \name=macro:
2 ->\protect \name .
3 l.6 \show\name
И это правильно, но вы пробела на экране не увидите и будете несказанно
обрадованы мнимым «зацикливанием» системы. Правильный поступок в этом случае
выглядит так:
\expandafter\show\csname name \endcsname
Соответственно вывод:
1 > \name =\long macro:
2 ->implementation.
3 <recently read> \name
4 l.6 ...ndafter\show\csname name \endcsname