请考虑以下文档:
\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}