词汇表:团体不起作用

词汇表:团体不起作用

我想使用该sort=def选项词汇表以及style=alttreehypergroup。但是,一旦我指定sort=def,这些组就不再被识别了。

梅威瑟:

% arara: pdflatex: { action: nonstopmode, options: "-halt-on-error -file-line-error" }
% arara: makeglossaries
% arara: pdflatex: { action: nonstopmode, options: "-halt-on-error -file-line-error" }
\documentclass{report}

\usepackage[colorlinks]{hyperref}

% WORKING:
% \usepackage[style=alttreehypergroup, symbols, nolong, nosuper, nonumberlist]{glossaries}

% NOT WORKING:
\usepackage[sort=def, style=alttreehypergroup, symbols, nolong, nosuper, nonumberlist]{glossaries}

\glssetwidest[1]{xxxx}
\makeglossaries

\newglossaryentry{firstgroup}{name={firstgroup}, description={\nopostdesc}}
\newglossaryentry{aaa}{name={aaa}, description=abcd, parent=firstgroup}

\newglossaryentry{secondgroup}{name={secondgroup}, description={\nopostdesc}}
\newglossaryentry{bbb}{name={bbb}, description=abcd, parent=secondgroup}

\begin{document}
\glsaddall
\printglossaries
\end{document}

我想要的输出(无需 即可获得sort=def):

好的

我得到的是sort=def

坏的

是我的错误还是这是一个错误?

答案1

这是一个功能,而不是错误;-)。该sort=def选项通过将sort密钥设置为数字而不是密钥的值来工作name。如果您查看该.glo文件,您将看到以下内容:

\glossaryentry{000001?\glossentry{firstgroup}|setentrycounter[]{page}\glsnumberformat}{1}
\glossaryentry{000001?\glossentry{firstgroup}!000002?\subglossentry{1}{aaa}|setentrycounter[]{page}\glsnumberformat}{1}
\glossaryentry{000003?\glossentry{secondgroup}|setentrycounter[]{page}\glsnumberformat}{1}
\glossaryentry{000003?\glossentry{secondgroup}!000004?\subglossentry{1}{bbb}|setentrycounter[]{page}\glsnumberformat}{1}

因此现在只有一个索引组,即“数字”组。此方法是makeindex按定义排序的唯一方法。事实上,makeindex只是被欺骗按定义排序。从makeindex的角度来看,它只是使用其通常的排序算法。

sort=def当您使用或 时,组实际上没有多大意义,因为sort=use无法保证顺序仅限于组。如果您按顺序定义术语,例如,,,,会怎么样duck?您最终会得到一个组,一个组和另一个组。parrotdogDPD

但是,如果您愿意承担确保不存在此类分段组的责任,则可以使用手册中提到的“选项 1”:

\documentclass{report}

\usepackage[colorlinks]{hyperref}

\usepackage[style=alttreehypergroup, nolong,nosuper,nonumberlist]{glossaries}

\glssetwidest[1]{xxxx}
\makenoidxglossaries

\newglossaryentry{firstgroup}{name={firstgroup},
description={\nopostdesc}}
\newglossaryentry{aaa}{name={aaa}, description=abcd,
parent=firstgroup}

\newglossaryentry{secondgroup}{name={secondgroup},
description={\nopostdesc}}
\newglossaryentry{bbb}{name={bbb}, description=abcd,
parent=secondgroup}

\begin{document}
\glsaddall

\printnoidxglossary[sort=def]
\end{document}

请注意,为了使其按您希望的方式工作,它必须进入不在包选项列表中sort=def的可选参数中。\printnoidxglossary

相关内容