在较长的文档中,我需要在某些地方强制使用定义的缩写,例如\acrshort
(tikz 图片),并希望利用词汇表功能的链接。
此外,我\gls
在我的文本中使用了它。
在首字母缩略词词汇表中,我只想使用 给出第一次出现的页码indexonlyfirst
。
\acrshort
我怎样才能避免列出每种用法?
MWE 取自修改后的幻灯片printglossary 缩写,仅显示 arcshort 在 glossary 中的第一次出现我的观点尚未得到明确答复:
\documentclass{article}
\usepackage{hyperref}
\usepackage[toc,indexonlyfirst]{glossaries}
\makeglossaries
\newacronym{sdk}{SDK}{Software Development Kit}
\begin{document}
Test \acrshort{sdk}
\newpage
Test \acrshort{sdk}.
\newpage
Test \acrshort{sdk}\newpage
Test \newpage
Test \acrshort{sdk}\newpage
Test \newpage
Test \newpage
Test \acrshort{sdk}\newpage
Test \acrshort{sdk}\newpage
\printglossaries%y[type=\acronymtype]
\end{document}
答案1
我认为使用扩展包可能会更容易实现glossaries-extra
。这提供了额外的键和更灵活的缩写界面。缩写的定义使用\newabbreviation[
选项]{
标签}{
短的}{
长的}
但为了帮助已有glossaries
代码的用户,\newacronym
重新定义了使用这个新接口,所以\newacronym[
选项]
现在相当于\newabbreviation[category=acronym,
选项]
,但现在需要使用\setabbreviationstyle[acronym]
而不是 来设置样式。现在使用和\setacronymstyle
来访问短格式和长格式。原来的和命令仍可使用,但如果文档有多种缩写样式,则它们无法正常工作。(基础包仅允许一种缩写样式。)\glsxtrshort
\glsxtrlong
\acrshort
\acrlong
glossaries
扩展包还提供了一个新键noindex
,可用于命令的可选参数,例如\gls
。因此,我们可以利用这些新功能重新定义\acrshort
,并自动设置键\glsxtrshort
:noindex
\renewcommand*{\acrshort}[1][]{\glsxtrshort[noindex,#1]}
现在您的任何\acrshort
命令都不会执行任何索引(除非使用覆盖此设置)\acrshort[noindex=false]
。
这是您的 MWE 的修改版本。我添加了几个\gls
命令以供比较:
\documentclass{article}
\usepackage{hyperref}
\usepackage{glossaries-extra}
\makeglossaries
\setabbreviationstyle[acronym]{long-short}
\newacronym{sdk}{SDK}{Software Development Kit}
\renewcommand*{\acrshort}[1][]{\glsxtrshort[noindex,#1]}
\begin{document}
Test \acrshort{sdk}
\newpage
Test \acrshort{sdk}.
\newpage
Test \acrshort{sdk}\newpage
Test \newpage
Test \acrshort{sdk}\newpage
Test [gls] \gls{sdk}
\newpage
Test \newpage
Test [gls] \gls{sdk}
\newpage
Test \newpage
Test \acrshort{sdk}\newpage
Test \acrshort{sdk}\newpage
\printglossaries
\end{document}
词汇表中现在仅有两个位置列表中的条目sdk
。
这些对应于 的两个实例\gls{sdk}
。这些可以通过包选项来处理indexonlyfirst
:
\usepackage[indexonlyfirst]{glossaries-extra}
或者仅将此选项应用于category
设置为的条目acronym
(通过 完成\newacronym
):
\glssetcategoryattribute{acronym}{indexonlyfirst}{true}
请注意,该设置将在类似命令中indexonlyfirst
覆盖(但您仍然可以使用类似命令)。noindex=false
\gls
noindex=false
\acrshort
您仍然可以使用acronym
包选项glossaries-extra
\usepackage[acronym]{glossaries-extra}
使用由 标识的词汇表类型\acronymtype
(和\printacronyms
作为 的快捷方式\printglossary[type=\acronymtype]
,或者您可以使用abbreviations
包选项:
\usepackage[abbreviations]{glossaries-extra}
和\printabbreviations
(可以使用 来识别词汇表类型\glsxtrabbrvtype
)。
以下是更新后的 MWE:
\documentclass{article}
\usepackage{hyperref}
\usepackage[abbreviations]{glossaries-extra}
\makeglossaries
\glssetcategoryattribute{acronym}{indexonlyfirst}{true}
\setabbreviationstyle[acronym]{long-short}
\newacronym{sdk}{SDK}{Software Development Kit}
\renewcommand*{\acrshort}[1][]{\glsxtrshort[noindex,#1]}
\begin{document}
Test \acrshort{sdk}
\newpage
Test \acrshort{sdk}.
\newpage
Test \acrshort{sdk}\newpage
Test \newpage
Test \acrshort{sdk}\newpage
Test [gls] \gls{sdk}
\newpage
Test \newpage
Test [gls] \gls{sdk}
\newpage
Test \newpage
Test \acrshort{sdk}\newpage
Test \acrshort{sdk}\newpage
\printabbreviations
\end{document}
这将产生词汇表: