词汇表双重条目:防止首字母缩略词列表的页面出现在词汇表编号列表中

词汇表双重条目:防止首字母缩略词列表的页面出现在词汇表编号列表中

作为后续行动这个问题:当使用包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设置为 ,因此后链接钩子为。 (默认设置为,因此条目的后链接钩子为 。)在后链接钩子中,您可以使用 引用条目标签。categoryacronym\glsxtrpostlinkacronym\newglossaryentrycategorygeneralmain-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}

词汇表图片

如果您有非双重条目,则可以将categoryin设置\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}

相关内容