詞彙表:組不工作

詞彙表:組不工作

我想使用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因為不能保證訂單將僅限於群組。如果您按照 、 duckparrot的順序定義術語會怎麼樣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不是在套件選項清單中。

相關內容