Quiero usar la sort=def
opción paraglosariosJuntos con style=alttreehypergroup
. Sin embargo, tan pronto como lo especifique sort=def
, los grupos ya no se reconocen.
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}
El resultado que quiero (y obtengo sin sort=def
):
Lo que obtengo con sort=def
:
¿Es mi error o es un error?
Respuesta1
Esta es una característica más que un error ;-)
. La sort=def
opción funciona estableciendo la sort
clave en un número en lugar del valor de la name
clave. Si miras el .glo
archivo verás esto:
\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}
Ahora sólo hay un grupo de indexación y ese es el grupo "Números". Este método es la única forma de ordenar makeindex
por definición. De hecho, makeindex
simplemente lo están engañando para que clasifique por definición. Desde makeindex
el punto de vista de, simplemente utiliza su algoritmo de clasificación habitual.
En realidad, los grupos no tienen mucho sentido cuando se usan sort=def
o sort=use
ya que no hay garantía de que el orden esté restringido a grupos. ¿Qué pasaría si definiera los términos en el orden, por ejemplo, duck
, parrot
, dog
? Terminarías con un D
grupo, un P
grupo y otro D
grupo.
Sin embargo, si está dispuesto a asumir la responsabilidad de asegurarse de no tener grupos segmentados como ese, puede utilizar lo que el manual denomina "Opción 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}
Tenga en cuenta que para que esto funcione como lo desea, sort=def
debe ir en el argumento opcional de \printnoidxglossary
no en la lista de opciones del paquete.