Me gustaría crear un documento donde las entradas del glosario estén en cada página de las notas al pie y he podido hacerlo (ver MWE a continuación), pero me gustaría que las glosas de las notas al pie estén ordenadas alfabéticamente, pero no No he podido encontrar una manera de ordenar las notas a pie de página. Por el contrario, ¿existe un glosario por página?
MWE:
\documentclass{book}
\usepackage[nonumberlist]{glossaries}
\usepackage{xifthen}
\usepackage{everypage}
\makeglossaries
% enable counting the words
\glsenableentrycount
% reset counts every page
\AddEverypageHook{\glsresetall}
% populate some entries
\newglossaryentry{uno}{name=uno,description=one}
\newglossaryentry{dos}{name=dos,description=two}
\newglossaryentry{tres}{name=tres,description=three}
\newglossaryentry{quatro}{name=quatro,description=four}
\newglossaryentry{cinco}{name=cinco,description=five}
% displaying glossary entries
\newcommand\glossdisplay[2]{%
\ifthenelse{\glsentrycurrcount{\glslabel} = 0}{%
% first time we've seen this word on this page so add a footnote
#1\let\thefootnote\relax\footnote{\textbf{\glslabel} #2}%
}{%
% not the first definition on this page so just display the word
#1%
}%
}
\renewcommand\glsdisplayfirst[4]{\glossdisplay{#1}{#2}}
\renewcommand\glsdisplay[4]{\glossdisplay{#1}{#2}}
\newcommand\gloss[2][\relax]{\glsdisp{#1}{#2}}
\begin{document}
Counting to three in Spanish, \gloss[uno]{uno}, \gloss[dos]{dos}, \gloss[tres]{tres}.
Counting to five in Spanish, \gloss[uno]{uno}, \gloss[dos]{dos}, \gloss[tres]{tres}, \gloss[quatro]{quatro}, \gloss[cinco]{cinco}.\\
Notice how \gloss[uno]{uno}, \gloss[dos]{dos}, and \gloss[tres]{tres} only appear once in the footnotes despite being glossed three times.
Now the real question: \textit{How do I sort the per-page glossary alphabetically?} Perhaps there is a per-page option for the glossaries package?
\end{document}
En el documento producido, las notas al pie/entradas del glosario están ordenadas
- uno
- dos
- tres
- cuarto
- cinco
pero me gustaría ver
- cinco
- dos
- cuarto
- tres
- uno
Además, si me ayuda, construí el documento con:
pdflatex repro.tex
makeindex -s repro.ist -o repro.gls repro.glo
pdflatex repro.tex
Respuesta1
Esto es lo más cerca que he podido estar. he usadoglossaries-extra
que amplía el glossaries
paquete y proporciona recuento por unidad además del glossaries
recuento de todo el documento del paquete. Esto hace que sea más fácil contar por página.
\documentclass{book}
\usepackage{everypage}
\usepackage{glossaries-extra}
\AddEverypageHook{%
\gdef\entrylabellist{}%
}
\GlsXtrEnableEntryUnitCounting{general}{0}{page}
\newcommand*{\entrylabellist}{}
\makeatletter
\def\@glo@sortinghandler{\@glo@sorthandler@word}%
\newcommand*{\sortpageentries}{%
\forglsentries{\thisentry}{%
\ifnum\glsentryprevcount{\thisentry}>0\relax
\expandafter\@glo@sortedinsert\expandafter\entrylabellist\expandafter
{\thisentry}%
\fi
}%
}
\newcommand*{\glsxtrpostlinkgeneral}{%
\ifnum\glsentrycurrcount{\glslabel}=1\relax
\footnotemark[1]%
\ifdefempty\entrylabellist
{%
\sortpageentries
\footnotetext[1]{\@for\thisentry:=\entrylabellist\do{%
\glsentryname{\thisentry} \glsentrydesc{\thisentry}. }}%
}%
{}%
\fi
}
\makeatother
\newglossaryentry{uno}{name=uno,description=one}
\newglossaryentry{dos}{name=dos,description=two}
\newglossaryentry{tres}{name=tres,description=three}
\newglossaryentry{quatro}{name=quatro,description=four}
\newglossaryentry{cinco}{name=cinco,description=five}
\begin{document}
Counting to three in Spanish, \gls{uno}, \gls{dos},
\gls{tres}. Counting to five in Spanish, \gls{uno},
\gls{dos}, \gls{tres}, \gls{quatro}, \gls{cinco}.
Notice how \gls{uno}, \gls{dos}, and \gls{tres} only appear once in
the footnotes despite being glossed three times.
\newpage
Test next page.
\gls{tres}, \gls{quatro} and \gls{cinco}.
And again:
\gls{tres}, \gls{quatro} and \gls{cinco}.
\end{document}
Esto requiere dos ejecuciones de LaTeX ya que utiliza el archivo auxiliar para almacenar el recuento total de la ejecución anterior, por lo que las notas al pie no aparecerán en la primera instancia. Esto no requiere makeindex
/ xindy
a menos que desee además un glosario completo al principio o al final del documento. La clasificación se realiza mediante datatool-base
los comandos de inserción ordenados de , a los que se accede a través de \@glo@sortedinsert
(proporcionados por glossaries
). Es necesario \@glo@sortinghandler
configurarlo en el controlador de comparación apropiado ( \@glo@sorthandler@word
en este caso).
El ejemplo anterior produce
en la parte superior de la primera página. La nota al pie al final de la página aparece como
El formato se puede ajustar editando las líneas.
\footnotetext[1]{\@for\thisentry:=\entrylabellist\do{%
\glsentryname{\thisentry} \glsentrydesc{\thisentry}. }}%
La parte superior de la segunda página aparece como
con la nota al pie
Advertencia:Debido a la rutina de salida asincrónica de TeX, es posible que esto no funcione correctamente para las entradas que ocurren al final de un párrafo que abarca un salto de página.