
Я только что создалотвечатькоторый использует временную переменную с \write\@auxout
и подумал, что было бы неплохой идеей сделать область видимости с \begingroup
, \endgroup
. По какой-то причине это приводит к:
! Неопределенная управляющая последовательность.
<write> \tempvariable
МВЭ
\documentclass{article}
\makeatletter
\newcommand{\abc}{%
\begingroup%
\newcommand\tempvariable{\relax}%
\write\@auxout{\tempvariable}%
\endgroup%
}
\makeatother
\begin{document}
Why isn't this working???
\abc
\end{document}
Почему это происходит и как это исправить?
решение1
Добавление \immediate
должно помочь:
\documentclass{article}
\makeatletter
\newcommand{\abc}{%
\begingroup%
\newcommand\tempvariable{\relax}%
% \write\@auxout{\tempvariable}%
\immediate \write\@auxout{\tempvariable}%
\endgroup%
}
\makeatother
\begin{document}
Why isn't this working???
\abc
\end{document}
Из вашего ответа по ссылке я вижу, что вы знаете команду \immediate
, поэтому, вероятно, дополнительные комментарии не нужны.