第一次出现命令

第一次出现命令

我正在编写一些宏,这些宏在第一次出现后需要有不同的行为。我决定使用该etoolbox包的toggle。我的 MWE 如下:

\documentclass{article}
\usepackage{etoolbox}

\newtoggle{SL}

\newcommand{\SL}{%
  \textit{SL}%
  \nottoggle{SL}{~first}{~second}%
  \toggletrue{SL}% switches to true after first occurrence!
}

\begin{document}
A footnote.\footnote{\SL}\par
\SL \par
\SL \par
\SL
\end{document}

作为输出,我得到以下内容:

平均能量损失

如您所见,问题在于,在脚注中使用该命令时,不会发生切换。(如果图像不够清晰,脚注会显示“1 SL first”。)

这里发生了什么?(\newif顺便说一下,我尝试了 TeX,结果相同。)

答案1

解决方案隐藏在包装文档

该命令 [...] 可能以 为前缀\global

意思是通常情况\toggletrue本地,即设置被封闭组撤消。\footnote这里定义了一个组。因此您需要使用

\global\toggletrue{SL}% switches to true after first occurrence!

在您的宏中确保开关始终是全局设置的。

在此处输入图片描述

相关内容