作为后续行动这个问题:当使用包newdualentry
中作为示例提供的命令时glossaries
,如何防止词汇表条目的数字列表包含首字母缩略词列表引用词汇表条目的页面。
梅威瑟:
\documentclass{article}
\usepackage{hyperref}
\usepackage[acronym]{glossaries-extra}
\RestoreAcronyms
\newcommand*{\newdualentry}[5][]{%
\newglossaryentry{main-#2}{name={#4},%
text={#3\glsadd{#2}},%
description={#5},%
#1
}%
\newacronym{#2}{#3\glsadd{main-#2}}{#4}
}
\newdualentry{svm}% label
{SVM}% abbreviation
{support vector machine}% long form
{Statistical pattern recognition technique}% description
\newacronym{FOO}{FOO}{This should still work}
\makeglossaries
\begin{document}
\gls{svm}. Also \gls{FOO}.
\newpage
\GlsXtrSetDefaultGlsOpts{noindex}
\printglossaries
\end{document}
词汇表中的“支持向量机”条目在其编号列表中应仅包含第 1 页,并且没有附带词汇表条目的其他首字母缩略词仍可使用。
我尝试对命令定义进行以下重写:
\newcommand*{\newdualentry}[5][]{%
\newglossaryentry{main-#2}{name={#4},%
text={#3\glsadd{#2}},%
description={#5},%
#1
}%
\newacronym{#2}{\gls[noindex=true]{main-#2}}{#4}
}
但是,在这个版本中,长条目根本不会出现,而且它会终止页码的自动链接。
答案1
\glsadd
无法识别noindex
键。(的目的\glsadd
是索引而不生成任何文本,因此noindex
在这种情况下没有意义。)这意味着任何\glsadd
出现在词汇表中的实例(通过出现在条目字段中的短格式name
)都不会受到的影响\GlsXtrSetDefaultGlsOpts{noindex}
。
在这种情况下,更好的方法是移动\glsadd
到后链接钩子,该钩子在诸如 之类的命令之后完成\gls
。默认将\newacronym
设置为 ,因此后链接钩子为。 (默认设置为,因此条目的后链接钩子为 。)在后链接钩子中,您可以使用 引用条目标签。category
acronym
\glsxtrpostlinkacronym
\newglossaryentry
category
general
main-svm
\glsxtrpostlinkgeneral
\glslabel
然后,只需重新定义在任何描述中使用的\glsxtrpostlinkacronym
词汇表之前不执行任何操作即可。\gls{svm}
修改后的 MWE:
\documentclass{article}
\usepackage{hyperref}
\usepackage[acronym]{glossaries-extra}
\newcommand{\glsxtrpostlinkacronym}{\glsadd{main-\glslabel}}
\newcommand*{\newdualentry}[5][]{%
\newglossaryentry{main-#2}{name={#4},%
text={#3\glsadd{#2}},%
description={#5},%
#1
}%
\newacronym{#2}{#3}{#4}
}
\newdualentry{svm}% label
{SVM}% abbreviation
{support vector machine}% long form
{Statistical pattern recognition technique}% description
\makeglossaries
\begin{document}
\gls{svm}.
\newpage
\GlsXtrSetDefaultGlsOpts{noindex}
\renewcommand{\glsxtrpostlinkacronym}{}
\printglossaries
\end{document}
如果您有非双重条目,则可以将category
in设置\newdualentry
为默认值以外的其他值acronym
。例如:
\documentclass{article}
\usepackage{hyperref}
\usepackage[acronym]{glossaries-extra}
\setabbreviationstyle[dualacronym]{short}% change as appropriate
\newcommand{\glsxtrpostlinkdualacronym}{\glsadd{main-\glslabel}}
\newcommand*{\newdualentry}[5][]{%
\newglossaryentry{main-#2}{name={#4},%
text={#3\glsadd{#2}},%
description={#5},%
#1
}%
\newacronym[category=dualacronym]{#2}{#3}{#4}
}
\newdualentry{svm}% label
{SVM}% abbreviation
{support vector machine}% long form
{Statistical pattern recognition technique}% description
\newacronym{ex}{EX}{example}
\makeglossaries
\begin{document}
\gls{svm}. \gls{ex}.
\newpage
\GlsXtrSetDefaultGlsOpts{noindex}
\renewcommand{\glsxtrpostlinkdualacronym}{}
\printglossaries
\end{document}