我怎样才能从 printglossaries 宏中排除“主要”词汇表,因为我希望能够对主要词汇表使用一种格式,而对其余词汇表使用另一种格式。
即我希望能够做这样的事情:
%Print the main glossary
\glossarystyle{altlist}
\printglossary[type=main]
%Print the remaining glossaries
\glossarystyle{list}
\printglossaries
因此,在上述命令中,\printglossaries
应打印除主词汇表之外的其余词汇表(例如,缩写词、术语、符号和用户定义的词汇表)
我还有一个“隐藏”词汇表,用于一些内部文件术语,我根本不想打印出来。
目前,在上面,主要词汇表是重复的。
答案1
\printglossaries
只是定义为使用以下方法迭代所有词汇表:
\forallglossaries{\@@glo@type}{\printglossary[type=\@@glo@type]}
此命令有一个可选参数,可用于指定要迭代的词汇表子集,因此\printglossaries
,您可以执行以下操作:
\forallglossaries[foo,bar,baz]{\glotype}{\printglossary[type=\glotype]}
仅打印标签为foo
、bar
和的词汇表baz
。
这是一个更通用的方法:
\documentclass{article}
\usepackage{etoolbox}
\usepackage[acronym,symbols,numbers,index]{glossaries}
\makeglossaries
\newglossaryentry{sample1}{name={sample1},description={}}
\newglossaryentry{sample2}{type={symbols},name={sample2},description={}}
\newglossaryentry{sample3}{type={numbers},name={sample2},description={}}
\newacronym{abc}{ABC}{an example acronym}
\newterm{sample}
\newcommand*{\shownlist}{}
\renewcommand*{\glossarypreamble}{\listxadd\shownlist{\currentglossary}}
\newcommand*{\printremaining}{%
\renewcommand*{\glossarypreamble}{}%
\forallglossaries{\glotype}{%
\xifinlist{\glotype}{\shownlist}{}{\printglossary[type=\glotype]}%
}%
}
\begin{document}
\glsaddall
\printglossary
\printindex
\printremaining
\end{document}
得出的结果为: