Como redefinir o contador de notas de rodapé em todas as páginas (pior caso)?

Como redefinir o contador de notas de rodapé em todas as páginas (pior caso)?

A solução usada emessa questãotem várias desvantagens. Só funciona com \footnotelayout{m}ou \globalcounter{footnote}. Se o paracol ultrapassar duas páginas, o contador não será zerado atétodosas colunas são liberadas. Se um parágrafo for dividido em duas páginas, qualquer nota de rodapé pensará que está na primeira página.

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

Aqui está uma captura de tela que demonstra o problema:

demonstração

Responder1

Esta solução modifica \footnotee \footnotemaek(renomeada por paracol) para zerar o contador se e quando a página mudar. Ele usa o contador lastfootnotepagepara comparação, pois o paracol mantém contadores separados para cada coluna.

O número da página de cada um \footnoteé \footnotemarkgravado no arquivo aux, pois esta é a única maneira de obter o número de página correto para parágrafos divididos em duas páginas. No entanto, são necessárias duas execuções para funcionar.

Acontece que paracol já fornece um índice para o número total de \footnotes e \footnotemarks até agora.

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

demonstração

informação relacionada