Sortieren Sie Fußnoten alphabetisch oder seitenweise nach Glossar

Sortieren Sie Fußnoten alphabetisch oder seitenweise nach Glossar

Ich möchte ein Dokument erstellen, in dem auf jeder Seite in den Fußnoten Glossareinträge stehen, und das ist mir auch gelungen (siehe MWE unten), aber ich möchte, dass die Fußnotenglossare alphabetisch sortiert werden, aber ich konnte keine Möglichkeit finden, Fußnoten zu sortieren. Gibt es umgekehrt ein Glossar pro Seite?

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}

Im erstellten Dokument werden die Fußnoten/Glossar-Einträge sortiert

  • uno
  • DOS
  • drei
  • Quatro
  • fünf

aber ich würde gerne sehen

  • fünf
  • DOS
  • Quatro
  • drei
  • uno

Falls es hilft, ich habe das Dokument folgendermaßen erstellt:

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

Antwort1

Das ist das Beste, was ich erreichen konnte. Ich habeglossaries-extraDies erweitert das glossariesPaket und ermöglicht zusätzlich zur glossariesdokumentweiten Zählung des Pakets eine Zählung pro Einheit. Dies erleichtert die Zählung pro Seite.

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

Dies erfordert zwei LaTeX-Durchläufe, da die Hilfsdatei zum Speichern der Gesamtzahl aus dem vorherigen Durchlauf verwendet wird, sodass die Fußnoten nicht beim ersten Durchlauf erscheinen. Dies erfordert makeindex/ nicht xindy, es sei denn, Sie möchten zusätzlich ein vollständiges Glossar am Anfang oder Ende des Dokuments. Die Sortierung erfolgt mithilfe datatool-baseder geordneten Einfügebefehle von , auf die über \@glo@sortedinsert(bereitgestellt von glossaries) zugegriffen wird. Dies muss \@glo@sortinghandlerauf den entsprechenden Vergleichshandler ( \@glo@sorthandler@wordin diesem Fall) eingestellt werden.

Das obige Beispiel ergibt

Bild vom oberen Rand der Seite 1 mit Fußnotenmarkierungen nach den ersten Instanzen

oben auf der ersten Seite. Die Fußnote unten auf der Seite erscheint als

1 cinco fünf. dos zwei. quatro vier. tres drei. uno eins.

Die Formatierung kann durch Bearbeiten der Zeilen angepasst werden

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

Der obere Teil der zweiten Seite erscheint als

Testen Sie die nächste Seite. tres 1, quatro 1 und cinco 1. Und noch einmal: tres, quatro und cinco.

mit der Fußnote

1 cinco fünf. quatro vier. tres drei.

Vorbehalt:Aufgrund der asynchronen Ausgaberoutine von TeX funktioniert dies möglicherweise nicht ordnungsgemäß für Einträge, die am Ende eines Absatzes auftreten, der sich über einen Seitenumbruch erstreckt.

verwandte Informationen