Wie kann ich den Fußnotenzähler auf jeder Seite zurücksetzen (Worst Case)?

Wie kann ich den Fußnotenzähler auf jeder Seite zurücksetzen (Worst Case)?

Die Lösung indiese Fragehat mehrere Nachteile. Es funktioniert nur mit \footnotelayout{m}oder \globalcounter{footnote}. Wenn der Paracol über zwei Seiten umbricht, wird der Zähler erst zurückgesetzt, wennalledie Spalten werden bündig ausgerichtet. Wenn ein Absatz über zwei Seiten umbricht, wird bei eventuellen Fußnoten davon ausgegangen, dass sie sich auf der ersten Seite befinden.

\documentclass{article}
\usepackage{paracol}
\usepackage[nopar]{lipsum}

\usepackage{everypage}
\AddEverypageHook{\setcounter{footnote}{0}}

\begin{document}
\sloppy
\begin{paracol}{2}
  left column\footnote{a footnote}
  \switchcolumn%  
  right column\footnote{a footnote}

  \switchcolumn*% 
  \lipsum[1-3]\footnote{2nd footnote}
  \switchcolumn%      
  \lipsum[1-3]\footnote{2nd footnote}
\end{paracol} 
\end{document}

Hier ist ein Screenshot, der das Problem veranschaulicht:

Demo

Antwort1

Diese Lösung ändert \footnoteund \footnotemaek(von Paracol umbenannt) setzt den Zähler zurück, wenn sich die Seite ändert. Sie verwendet den Zähler lastfootnotepagezum Vergleich, da Paracol für jede Spalte separate Zähler verwaltet.

Die Seitenzahl für jedes \footnoteund \footnotemarkwird in die AUX-Datei geschrieben, da dies die einzige Möglichkeit ist, die richtige Seitenzahl für Absätze zu erhalten, die auf zwei Seiten verteilt sind. Es sind jedoch zwei Durchläufe erforderlich, damit es funktioniert.

Es stellt sich heraus, dass Paracol bereits einen Index für die Gesamtzahl der bisherigen \footnotes und s liefert.\footnotemark

\documentclass{article}
\usepackage{paracol}
\usepackage[nopar]{lipsum}

\newcounter{footnotepage}
%\globalcounter{footnotepage}% only use with \footnotelayout{m}

\makeatletter
\newcommand{\checkfootnotepage}{%
  \protected@write\@auxout{}{\string\newfootnotepage{\number\pcol@nfootnotes}{\thepage}}%
\bgroup
  \@ifundefined{footnotepage\number\pcol@nfootnotes}{\count1=\value{page}}%
    {\count1=\csname footnotepage\number\pcol@nfootnotes\endcsname\relax}%
  \ifnum\value{footnotepage}<\count1\relax
    \setcounter{footnotepage}{\count1}%
    \setcounter{footnote}{0}%
  \fi
\egroup}

\newcommand{\newfootnotepage}[2]% #1 = index, #2 = page
 {\expandafter\xdef\csname footnotepage#1\endcsname{#2}}

\def\pcol@@footnote{% footnote for paracol
  \@ifnextchar[\@xfootnote{\checkfootnotepage
    \stepcounter\@mpfn
    \protected@xdef\@thefnmark{\thempfn}%
    \@footnotemark\@footnotetext}}

\def\pcol@@footnotemark{% \footnotemark for paracol
  \@ifnextchar[\@xfootnotemark
    {\checkfootnotepage% added
    \stepcounter{footnote}%
    \protected@xdef\@thefnmark{\thefootnote}%
    \@footnotemark}}
\makeatother

\begin{document}
\sloppy
\begin{paracol}{2}
  left column\footnote{a footnote}
  \switchcolumn%  
  right column\footnote{a footnote}

  \switchcolumn*% 
  \lipsum[1-3]\footnote{2nd footnote}
  \switchcolumn%      
  \lipsum[1-3]\footnote{2nd footnote}
\end{paracol} 
\end{document}

Demo

verwandte Informationen