忽略仅使用一次的首字母缩略词

忽略仅使用一次的首字母缩略词

我使用该glossaries包只是为了它的首字母缩略词功能,并且有一两个在文档中只使用过一次。对于这些首字母缩略词,有没有办法只显示全文?

具体来说,默认\gls{dft}显示

密度泛函理论(DFT),

但我希望它只显示

密度泛函理论

如果首字母缩略词仅使用一次。

答案1

如果您想获得首字母缩略词的长形式(独立于所选的首字母缩略词样式和使用首字母缩略词的上下文),我认为最好简单地使用\acrlong\acl.注意后一个命令仅在设置了包shortcuts的选项时才定义glossaries

编辑:Werner 在他的回答的评论中指出,可能可以扩展该glossaries包,以便如果首字母缩略词在文档中仅使用一次,则以不同的方式打印它们。以下补丁显示这确实可以做到:

\documentclass{article}

\usepackage{etoolbox}
\usepackage{glossaries}[2011/04/12]

\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}%
}{}{}

\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}}%
}{}{}

\makeatother

\newacronym{ANO}{ANO}{Acronym Number One}
\newacronym{ANT}{ANT}{Acronym Number Two}

\makeglossaries

\begin{document}

\printglossary

\noindent
\gls{ANO}, \gls{ANO}\\
\gls{ANT}

\end{document}

显然,你需要运行两次 LaTeX 才能正确完成所有操作。此外,如果你不仅使用\gls( \ac),还使用\Gls​​( \Ac)、\GLS, \glspl( \acp)、\Glspl( \Acp),则\GLSpl必须以与以下相同的方式修补\@Gls@, \@GLS@, \@glspl@, \@Glspl@\@GLSpl@\@gls@.

输出结果为:

答案2

您需要first在通过以下方式声明这些条目时设置它们的键

\newacronym[<key-val list>]{<label>}{<abbrv>}{<long>}

尽管first关键是在 的定义下描述的\newglossaryentry,但\newacronym使用\newglossaryentry来定义首字母缩略词。因此,以下内容取自glossaries包裹 文档

第一的

\gls首次使用(或其大写变体之一)时,条目在文档文本中的显示方式。如果省略此字段,text则使用键的值。请注意,如果您 在使用 之前使用\glspl\Glspl\GLSpl,则该 值不会与 一起使用。\glsdisp\glsfirstplural\gls

因此,具体针对您的情况,您可能会这样定义:

\newacronym%
  [first={density functional theory},...]% <key-val list>
  {dft}% <label>
  {DFT}% <abbrv>
  {density functional theory}% <long>

以下最小示例说明了这一点:

\documentclass{book}
\usepackage{glossaries}% http://ctan.org/pkg/glossaries
\begin{document}
\newacronym%
  [first={density functional theory}]% <key-val list>
  {dft}% <label>
  {DFT}% <abbrv>
  {density functional theory}% <long>

Blah blah blah \gls{dft}. Blah blah blah blah
\end{document}

首次使用词汇表包中的首字母缩略词

相关内容