我有以下内容:
\newif\ifabrvused
\abrvusedfalse
\def\abrv#1#2{%
\ifabrvused\else%
\newwrite\@loa%
\immediate\openout\@loa=\jobname.loa%
\write0{ Test}
\abrvusedtrue%
\fi%
\@ifundefined{abrv@#1}{%
\expandafter\def\csname abrv@#1\endcsname{#2}%
\immediate\write\@loa{\unexpanded{\item[\textbf{#1}]#2}}%
{#2 (\textbf{#1})}%
}{%
{\textbf{#1}}%
}%
}
目的是让它第一次被调用时打开辅助文件进行写入。我的问题是,打开部分 ( ifabrvused\else
) 被调用了两次。我能发现它在第一次使用时被调用,在begin{abstract}
文档的其余部分也是如此?我遗漏了什么。如果它打算这样做,我该如何编码呢?
答案1
在环境中,abstract
您位于一个组内。\abrvusedtrue
是本地分配( )。在环境之后,\let\ifabrvused\iftrue
开关重置为。 改用。false
\global\abrvusedtrue