我一直试图忽略只使用一次的首字母缩略词,如下所述这个问题。不幸的是,我有两个问题:
- 曾经使用过的缩写仍然显示为第一个条目(长文本,缩写在括号中,而不是只有长文本)。消息
Patching failed (2)
出现了,所以可能\patchcmd
需要更新以反映最新的词汇表代码? - etoolbox 会
'Boolean '\ifglo@test@usedonlyonce' undefined
为每个发出一个错误\newglossaryentry
。
如何同时使用首字母缩略词和词汇表条目,并且忽略曾经使用的首字母缩略词?曾经使用的词汇表条目仍需显示在列表中,但缩写不应该。
出现错误的最小示例:
\documentclass{article}
\usepackage{etoolbox}
\usepackage{glossaries}
\makeatletter
\appto\newacronymhook{%
\newbool{glo@\the\glslabeltok @usedonlyonce}% define an additional switch per acronym
}
\patchcmd{\@gls@}{%
\glsunset{#2}%
}{% write appropriate information to the main auxiliary file
\ifglsused{#2}{%
\write\@auxout{\global\setbool{glo@#2@usedonlyonce}{false}}%
}{%
\write\@auxout{\global\setbool{glo@#2@usedonlyonce}{true}}%
}%
\glsunset{#2}%
}{}{\message{^^JPatching failed (1)^^J}}
\patchcmd{\@gls@}{%
\glsentryfirst{#2}%
}{% print the long form of the acronym if the acronym is used only once
\ifbool{glo@#2@usedonlyonce}{\glsentrylong{#2}}{\glsentryfirst{#2}}%
}{}{\message{^^JPatching failed (2)^^J}}
\let\old@do@wrglossary\@do@wrglossary
\renewcommand{\@do@wrglossary}[1]{\ifbool{glo@#1@usedonlyonce}{}{\old@do@wrglossary{#1}}}
\makeatother
\newacronym{ANO}{ANO}{Acronym Number One}
\newacronym{ANT}{ANT}{Acronym Number Two}
\newglossaryentry{test} {
name={test},
description={A test is used for testing}
}
\makeglossaries
\begin{document}
\printglossaries
\noindent
\gls{ANO}, \gls{ANO}\\
\gls{ANT}\\
\gls{test}
\end{document}
我已经按照描述设置了 MikTeX 和 TeXnicCenter这里\newglossaryentry
。当和 对应的\gls
被注释掉 时我得到的结果:
答案1
在问题发布后不久发布的词汇表 4.14 中,可以忽略仅使用一次的首字母缩略词和词汇表项,结果与上述要求完全一致。
上述示例转换为以下内容:
\documentclass{article}
\usepackage{glossaries}
\makeglossaries
\glsenableentrycount
\newacronym{ANO}{ANO}{Acronym Number One}
\newacronym{ANT}{ANT}{Acronym Number Two}
\newglossaryentry{test} {
name={test},
description={A test is used for testing}
}
\begin{document}
\printglossaries
\noindent
\cgls{ANO}, \cgls{ANO}\\
\cgls{ANT}\\
\gls{test}
\end{document}
注意 的不同位置\makeglossaries
、 的添加\glsenableentrycount
以及 的使用,\cgls
而不是\gls
。
Nicola 在回答中提到这里,其中还可以找到更多有关其工作原理的信息。