检查章节中元素的第一次出现

检查章节中元素的第一次出现

我正在写一篇包含多个章节的文章。此外,我使用了大约 50 个首字母缩略词。现在我想在每个章节中展开首字母缩略词,但只在它第一次出现时展开。为此,我正在考虑一个宏,例如

\newcommand{\acronym}[2]{%
   % if first occurence in chapter
   \emph{#1} (#2}
   % else
   #2
}

宏描述了我计划在文本中使用的命令,例如“这是一个 \acronym{非常简单}{VS} 示例”。所有首字母缩略词都不包含空格或特殊字符。相反,首字母缩略词仅由字母组成。

所以我认为使用计数器是可行的,但我不知道如何开始。每个首字母缩略词都有一个计数器?或者检查分段计数器?

编辑:由于我的软件包列表已经很长了,我更希望使用没有附加软件包的解决方案。如果这不可能,那也没关系,但通常情况下,有一种不使用软件包的方法,例如,使用简单的表格并手动计算列宽。

答案1

\documentclass{book}

\usepackage{etoolbox}
\usepackage{blindtext}

\newrobustcmd{\ProvideAcronymCounter}[1]{%
\ifltxcounter{#1}{%
}{%
\newcounter{#1}[chapter]
}}

\newcommand{\MyAcronym}[2]{%
  \ProvideAcronymCounter{#2Counter}
  \ifnumequal{\number\value{#2Counter}}{0}{
   % if first occurence in chapter
   \emph{#2} {#1}
   \refstepcounter{#2Counter}
 }{   % else
   #1}
}

\begin{document}

\chapter{First one}
\blindtext[10]

\MyAcronym{Shakespeare}{An author}

\MyAcronym{Shakespeare}{An author}

\MyAcronym{Shakespeare}{An author}


\chapter{Second chapter}
\blindtext[5]

\MyAcronym{Shakespeare}{An author}



\end{document}

在此处输入图片描述

相关内容