Glossare: Gruppen funktionieren nicht

Glossare: Gruppen funktionieren nicht

Ich möchte die Option nutzen sort=deffürGlossarezusammen mit style=alttreehypergroup. Sobald ich jedoch angebe sort=def, werden die Gruppen nicht mehr erkannt.

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}

Die Ausgabe, die ich will (und bekomme ohne sort=def):

Gut

Was ich damit bekomme sort=def:

schlecht

Ist es mein Fehler oder ist es ein Fehler?

Antwort1

Dies ist eher ein Feature als ein Bug ;-). Die sort=defOption funktioniert, indem der sortSchlüssel auf eine Zahl gesetzt wird, statt auf den Wert des nameSchlüssels. Wenn Sie sich die Datei ansehen, .glosehen Sie Folgendes:

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

Es gibt jetzt also nur noch eine Indexierungsgruppe, und zwar die Gruppe „Numbers“. Diese Methode ist die einzige Möglichkeit, makeindexper Definition zu sortieren. Tatsächlich makeindexwird einfach dazu verleitet, per Definition zu sortieren. Aus makeindexder Sicht von wird einfach der übliche Sortieralgorithmus verwendet.

Gruppen machen eigentlich nicht viel Sinn, wenn Sie sort=defoder verwenden sort=use, da es keine Garantie dafür gibt, dass die Reihenfolge auf Gruppen beschränkt ist. Was wäre, wenn Sie Begriffe in der Reihenfolge definieren würden, sagen wir, duck, parrot? dogSie würden am Ende eine DGruppe, eine PGruppe und noch eine DGruppe haben.

Wenn Sie jedoch gerne die Verantwortung dafür übernehmen möchten, dass Sie keine derartigen segmentierten Gruppen haben, können Sie die im Handbuch als „Option 1“ bezeichnete Option verwenden:

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

Beachten Sie, dass das optionale Argument „ nicht in der Paketoptionenliste“ sort=defenthalten sein muss, damit dies wie gewünscht funktioniert .\printnoidxglossary

verwandte Informationen