使用首字母缩略词包中的带星号的 \ac 命令

使用首字母缩略词包中的带星号的 \ac 命令

我正在尝试使用该acronym包的带星号的命令,即\ac*,,,等等\acs*\acl*

但我似乎无法收到包裹不是设置AC@used标志(我相信包会使用该acronym标志来跟踪文档中使用的命令。

以下是最小工作示例:

\documentclass{article}

\usepackage{acronym}
\newacro{TMN}{This Means Nothing}

\begin{document}

First use works as intended:

\ac*{TMN}

But the acronym is still marked as used:

\ac*{TMN}

\end{document}

最终结果如下:

首次使用效果符合预期:

这毫无意义 (TMN)

但该缩写词仍标记为已使用:

特发性骨髓瘤

有什么想法吗?或者我应该切换到该glossaries包?

答案1

看来我们都误解了 的含义,\ac*因为我也以同样的方式解释了文档。根据@GonzaloMedina 的评论:

带星号的版本仅控制首字母缩略词是否应出现在首字母缩略词列表中;带星号的版本不控制首字母缩略词在文档正文中的显示方式。

然而,获得所需行为的一种方法是重新定义\@ac包裹acronym,并在三个地方插入一个\AC@reset{#1}调用,似乎产生了预期的结果:

在此处输入图片描述

请注意,您也可以使用它\acf来始终获取全名。

\documentclass{article}
\usepackage{acronym}

\makeatletter
\renewcommand{\@ac}[1]{%
  \ifAC@dua
     \ifAC@starred\acl*{#1}\AC@reset{#1}\else\acl{#1}\fi%
  \else
     \expandafter\ifx\csname ac@#1\endcsname\AC@used%
     \ifAC@starred\acs*{#1}\AC@reset{#1}\else\acs{#1}\fi%
   \else
     \ifAC@starred\acf*{#1}\AC@reset{#1}\else\acf{#1}\fi%
   \fi
  \fi}
\makeatother

\newacro{TMN}{This Means Nothing}
\newacro{DMS}{Does Means Something}

\begin{document}
1st use works as intended: \ac*{TMN}\par
2nd use works as intended: \ac{TMN}\par
3nd use works as intended: \ac{TMN}\par
\medskip
1st use works as intended: \ac{DMS}\par
2nd use works as intended: \ac{DMS}\par
\end{document}

答案2

据我了解,带星号的版本不会将首字母缩略词标记为“已使用”,而只会控制在printonlyused使用该选项时是否显示首字母缩略词;在其他所有方面,它们的作用与无星号的版本相同。例如:以下代码不会在首字母缩略词列表中打印首字母缩略词 TMN,尽管对于这两个首字母缩略词,它们第一次出现在文档中时,您会看到描述和首字母缩略词,而第二次出现时您只会看到首字母缩略词:

\documentclass{article}
\usepackage[printonlyused]{acronym}

\begin{document}

\ac*{TMN}\ac*{TMN}

\ac{TMS}\ac{TMS}

\begin{acronym}
\acro{TMN}{This Means Nothing}
\acro{TMS}{This Means Something}
\end{acronym}

\end{document}

在此处输入图片描述

因此,带星号的版本的含义是:“每次出现首字母缩略词时都使用它,以防止它出现在首字母缩略词列表中”。

相关内容