如何才能获得单个词汇表的indexonlyfirst的效果?

如何才能获得单个词汇表的indexonlyfirst的效果?

请考虑以下文档:

\documentclass{article}
\usepackage{glossaries-extra}
\newglossary[nlg]{notation}{not}{ntn}{Notation}
\makeglossaries
\newglossaryentry{symb:c}{type=notation,name=$c$, description=the speed of light}
\newglossaryentry{symb:m}{name=$m$, description=mass}

\begin{document}
Referencing my glossary items: \gls{symb:c},  \gls{symb:m}.
\newpage
Referencing my glossary items again: \gls{symb:c},  \gls{symb:m}.

\noindent\rule{\textwidth}{0.4pt}

\printglossaries
\end{document}

(不要介意诸如首字母缩略词之类的东西。)

我希望“符号”词汇表仅显示第一的引用术语的页面;但我希望通用词汇表(或其他词汇表)不受影响。因此,我不能只将其用作indexonlyfirst 包选项。

我该怎么做呢?

答案1

您可以使用类别属性indexonlyfirst(不要与同名的包选项混淆)。

\documentclass{article}

\usepackage{glossaries-extra}

\newglossary[nlg]{notation}{not}{ntn}{Notation}
\glssetcategoryattribute{notation}{indexonlyfirst}{true}

\newglossaryentry{symb:c}{type=notation, category=notation, name=$c$, description=the speed of light}
\newglossaryentry{symb:m}{name=$m$, description=mass}

\makeglossaries

\begin{document}

Referencing my glossary items: \gls{symb:c}, \gls{symb:m}.

\newpage

Referencing my glossary items again: \gls{symb:c}, \gls{symb:m}.

\printglossaries

\end{document}

如果您使用包装器宏来定义符号条目(或所有其他条目),则可以在该包装器宏的定义中设置类别(内置包装器已经这样\newabbreviation做了),并且只需为正确的类别设置类别属性。

如果您确实使用 直接定义所有词汇表的条目\newglossaryentry,则可以在定义后使用 为所有词汇表设置类别\glsforeachincategory。(这感觉很笨拙,但我找不到更优雅的方式来做到这一点。)

\documentclass{article}

\usepackage{glossaries-extra}

\newglossary[nlg]{notation}{not}{ntn}{Notation}
\glssetcategoryattribute{notation}{indexonlyfirst}{true}

\newglossaryentry{symb:c}{type=notation, name=$c$, description=the speed of light}
\newglossaryentry{symb:m}{name=$m$, description=mass}

\makeatletter
  \glsforeachincategory[notation]{general}{\@temp@glsry}{\@temp@label}{%
    \glsxtrsetcategory{\@temp@label}{notation}%
  }
\makeatother

\makeglossaries

\begin{document}

Referencing my glossary items: \gls{symb:c}, \gls{symb:m}.

\newpage

Referencing my glossary items again: \gls{symb:c}, \gls{symb:m}.

\printglossaries

\end{document}

相关内容