Ich möchte die Option nutzen sort=def
fü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
):
Was ich damit bekomme sort=def
:
Ist es mein Fehler oder ist es ein Fehler?
Antwort1
Dies ist eher ein Feature als ein Bug ;-)
. Die sort=def
Option funktioniert, indem der sort
Schlüssel auf eine Zahl gesetzt wird, statt auf den Wert des name
Schlüssels. Wenn Sie sich die Datei ansehen, .glo
sehen 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, makeindex
per Definition zu sortieren. Tatsächlich makeindex
wird einfach dazu verleitet, per Definition zu sortieren. Aus makeindex
der Sicht von wird einfach der übliche Sortieralgorithmus verwendet.
Gruppen machen eigentlich nicht viel Sinn, wenn Sie sort=def
oder 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
? dog
Sie würden am Ende eine D
Gruppe, eine P
Gruppe und noch eine D
Gruppe 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=def
enthalten sein muss, damit dies wie gewünscht funktioniert .\printnoidxglossary