有没有办法定义一个只能执行一次的命令,然后重新定义为无操作?
有关的:
答案1
一个简单的方法就是在宏主体中取消该宏,这样下次通过以下方式再次调用该宏时,它就不会产生任何效果:
\global\let\FirstTime\relax%
或者
\global\def\FirstTime{}%
根据 David Carlisle 的评论,我们需要添加一个\global
以确保在第一次使用是在组内的情况下,宏在后续使用中无效(根据下面更新的测试用例)
参考:
- 对于环境也可以做类似的事情。例如调整嵌套时环境的行为,如果环境嵌套的话,我想禁用它。
- \relax 和 {} 之间有什么区别?
代码:
\documentclass{article}
\newcommand*{\FirstTime}{%
\gdef\FirstTime{}%
\textbf{FirstTime: }%
}%
\begin{document}
\begingroup
abcd \FirstTime defg \FirstTime xys
\endgroup
abcd \FirstTime defg \FirstTime xys
abcd \FirstTime defg \FirstTime xys
\end{document}