我想使用该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
?您最终会得到一个组,一个组和另一个组。parrot
dog
D
P
D
但是,如果您愿意承担确保不存在此类分段组的责任,则可以使用手册中提到的“选项 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