我想使用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
:
是我的錯誤還是bug?
答案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}
所以現在只有一個索引組,那就是「Numbers」組。此方法是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
不是在套件選項清單中。