我刚刚创建了一个回答使用临时变量,\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
,因此可能不需要额外的评论。