用語集: グループが機能しない

用語集: グループが機能しない

sort=defオプションを使いたい用語集と一緒に使用しますstyle=alttreehypergroup。ただし、 を指定するとsort=def、グループは認識されなくなります。

MWE:

% 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}

これで、インデックス グループは 1 つだけになり、それが「Numbers」グループになります。この方法は、makeindex定義によって並べ替える唯一の方法です。実際、makeindexは定義によって並べ替えるように騙されているだけです。makeindexの観点からは、通常の並べ替えアルゴリズムを使用しているだけです。

sort=defまたは を使用する場合、sort=use順序がグループに制限される保証がないため、グループは実際にはあまり意味がありません。 duck、、の順序で用語を定義した場合はどうなるでしょうparrotか。グループ、グループ、そして別のグループdogが作成されます。DPD

ただし、そのようにセグメント化されたグループが存在しないようにする責任を引き受けても構わない場合は、マニュアルで「オプション 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

関連情報