在词汇表中打开或关闭“索引页码”

在词汇表中打开或关闭“索引页码”

在以下 MWE 中,尽管有选项indexonlyfirst,但在我使用重置所有首次使用标志后,页码仍然会转到首字母缩略词列表\glsresetall,从而给我

在此处输入图片描述

有没有办法打开和关闭页码来索引文档的选定部分,所以我只能在首字母缩略词列表中得到“第 2 页”,如本 MWE 所示?

\documentclass{report}
\usepackage[acronym,
            xindy,
            indexonlyfirst,
            ]{glossaries}
\usepackage{glossary-mcols}


\setacronymstyle{footnote-desc}

%% glossary entries

\newacronym{NMR}{NMR}{\textit{Nuclear Magnetic Resonance}}
\makeglossaries

\begin{document}
% Command to turn page numbers to index off

A glossary acronym : \gls{NMR} \gls{NMR} \gls{NMR}

\glsresetall
% Command to turn page numbers to index on
\newpage

The same acronym : \gls{NMR} \gls{NMR} \gls{NMR}

\glsresetall
% Command to turn page numbers to index off
\newpage

A third time the same acronym : \gls{NMR} \gls{NMR} \gls{NMR}

\printglossaries
\end{document}

答案1

正如@cfr 提到的,问题在于\glsresetall,它将每个条目标记为未使用。这意味着下次使用它时,它将被视为“首次使用”,因此被编入索引。

我认为这是一项工作glossaries-extra,它扩展了该glossaries包。您的示例可以进行如下调整:

\documentclass{report}
\usepackage[abbreviations,% "acronyms" -> "abbreviations"
            xindy,% no change from original
            nomain % don't define "main" glossary
            ]{glossaries-extra}% "glossaries" -> "glossaries-extra"
\usepackage{glossary-mcols}

% setup abbreviation style
\setabbreviationstyle{footnote}
\renewcommand*{\glsfirstlongdefaultfont}[1]{\textit{#1}}

\renewcommand*{\glossentrydesc}[1]{%
  \glsdoifexistsorwarn{#1}%
  {%
     \textit{\glsentrydesc{#1}}%
  }%
}

% switch off automatic indexing
\GlsXtrSetDefaultGlsOpts{noindex}

%% glossary entries

\newabbreviation{NMR}{NMR}{Nuclear Magnetic Resonance}

\makeglossaries

\begin{document}
\glsresetall

A glossary acronym : \gls{NMR} \gls{NMR} \gls{NMR}.

\glsresetall
\newpage

The same acronym : \gls[noindex=false]{NMR} \gls{NMR} \gls{NMR}

\glsresetall
\newpage

A third time the same acronym : \gls{NMR} \gls{NMR} \gls{NMR}

\printglossaries
\end{document}

在这里,不是尝试索引第一次使用,而是使用以下方法抑制所有条目的自动索引

\GlsXtrSetDefaultGlsOpts{noindex}

现在必须通过使用 取消此设置来明确调用索引\gls[noindex=false]{NMR}。这意味着您可以精确控制实际索引术语的哪些用法。

如果愿意,您可以为命令设置修饰符,例如\gls为以下命令提供快捷方式[noindex=false]

\GlsXtrSetAltModifier{!}{noindex=false}

现在,您只需使用\gls!{NMR}而不是即可\gls[noindex=false]{NMR}。(如果您愿意,您可以选择其他符号,但请确保其类别代码稍后不会更改。不要使用*或 ,+因为它们已经是修饰符。)

得出的结果为:

词汇表图像 位置列表中仅列出第 2 页

您可以使用可选参数\printglossary或修改标题\printabbreviations,以使其与直接示例相同glossaries

\printglossary[type=\glsxtrabbrvtype,title=Acronyms]

或者

\printabbreviations[title=Acronyms]

或者你可以重新定义\abbreviationsname

\renewcommand{\abbreviationsname}{Acronyms}

您可以保留原始\newacronym命令,但需要使用以下命令设置样式:

\setabbreviationstyle[acronym]{footnote}

代替

\setacronymstyle{footnote}

这是因为glossaries-extra有不同类别的缩写,并且acronym是子类别。这允许您为不同类型的缩写使用不同的样式,而 无法做到这一点glossaries。(如果需要,可以恢复 提供的原始命令glossaries,但它们可能会与某些样式冲突glossaries-extra。)

我已将字体命令移出\textit缩写定义,并使用以下方法调整格式命令:

\renewcommand*{\glsfirstlongdefaultfont}[1]{\textit{#1}}

\renewcommand*{\glossentrydesc}[1]{%
  \glsdoifexistsorwarn{#1}%
  {%
     \textit{\glsentrydesc{#1}}%
  }%
}

这与此无关,但语义上更好,因为它将内容与样式分开。这是假设您的所有条目都需要斜体。如果不是这样,那么只需删除这些行即可。

相关内容