我使用该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
\gls
firstplural
\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}