有没有办法定义一个命令,使其在第一次执行后自动转换为无操作?

有没有办法定义一个命令,使其在第一次执行后自动转换为无操作?

答案1

一个简单的方法就是在宏主体中取消该宏,这样下次通过以下方式再次调用该宏时,它就不会产生任何效果:

\global\let\FirstTime\relax%

或者

\global\def\FirstTime{}%

在此处输入图片描述

根据 David Carlisle 的评论,我们需要添加一个\global以确保在第一次使用是在组内的情况下,宏在后续使用中无效(根据下面更新的测试用例)

参考:

代码:

\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}

相关内容