ページごとに脚注カウンターをリセットするにはどうすればよいでしょうか (最悪の場合)?

ページごとに脚注カウンターをリセットするにはどうすればよいでしょうか (最悪の場合)?

使用されるソリューションこの質問\footnotelayout{m}欠点がいくつかあります。またはでしか機能しません\globalcounter{footnote}。パラコルが2ページ以上で分割された場合、カウンタはリセットされません。全て列は揃えられ、段落が 2 ページにまたがる場合、脚注は最初のページにあると認識されます。

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

問題を示すスクリーンショットを以下に示します。

デモ

答え1

このソリューションは、ページが変更された場合にカウンターをリセットするために\footnote、 および\footnotemaek(paracol によって名前が変更されました) を変更します。paracol は列ごとに個別のカウンターを維持するため、比較にはカウンターを使用しますlastfootnotepage

それぞれのページ番号は\footnoteaux\footnotemarkファイルに書き込まれます。これは、2 ページに分割された段落の正しいページ番号を取得する唯一の方法です。ただし、機能するには 2 回の実行が必要です。

これまでのところ、 paracol は\footnotes とsの合計数のインデックスをすでに提供していることがわかります。\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}

デモ

関連情報