Classifique as notas de rodapé em ordem alfabética ou glossário por página

Classifique as notas de rodapé em ordem alfabética ou glossário por página

Gostaria de criar um documento onde as entradas do glossário estivessem em cada página das notas de rodapé e consegui fazer isso (veja MWE abaixo), mas gostaria que as glosas das notas de rodapé fossem classificadas em ordem alfabética, mas tenho não consegui encontrar uma maneira de classificar as notas de rodapé. Por outro lado, existe um glossário 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}

No documento produzido, as entradas de notas de rodapé/glossário são classificadas

  • um
  • dos
  • tres
  • quatro
  • cinco

mas eu gostaria de ver

  • cinco
  • dos
  • quatro
  • tres
  • um

Além disso, se ajudar, criei o documento com:

pdflatex repro.tex
makeindex -s repro.ist -o repro.gls repro.glo
pdflatex repro.tex

Responder1

Este é o mais próximo que consegui chegar. eu useiglossaries-extraque amplia o glossariespacote e fornece contagem por unidade, além da glossariescontagem de todo o documento do pacote. Isso torna mais 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}

Isso requer duas execuções do LaTeX, pois ele usa o arquivo auxiliar para armazenar a contagem total da execução anterior, de modo que as notas de rodapé não aparecerão na primeira instância. Isso não requer makeindex/ xindya menos que você também queira um glossário completo no início ou no final do documento. A ordenação é feita através datatool-basedos comandos de inserção ordenada do, que são acessados ​​através de \@glo@sortedinsert(fornecido por glossaries). Isso requer \@glo@sortinghandlerser definido para o manipulador de comparação apropriado ( \@glo@sorthandler@wordneste caso).

O exemplo acima produz

imagem do topo da página 1 com marcadores de notas de rodapé após as primeiras ocorrências

no topo da primeira página. A nota de rodapé na parte inferior da página aparece como

1 cinco cinco. dos dois. quatro quatro. três três. ninguém.

A formatação pode ser ajustada editando as linhas

     \footnotetext[1]{\@for\thisentry:=\entrylabellist\do{%
      \glsentryname{\thisentry} \glsentrydesc{\thisentry}. }}%

O topo da segunda página aparece como

Teste na próxima página. tres 1, quatro 1 e cinco 1. E novamente: tres, quatro e cinco.

com a nota de rodapé

1 cinco cinco. quatro quatro. três três.

Embargo:devido à rotina de saída assíncrona do TeX, isso pode não funcionar corretamente para entradas que ocorrem no final de um parágrafo que abrange uma quebra de página.

informação relacionada