如何强制嵌套脚注的编号遵循主脚注

如何强制嵌套脚注的编号遵循主脚注

我希望子脚注能够自动完成(以便能够\footnote在 中写入\footnote)。通过使用这个答案我能够得到想要的结果。

但问题是脚注编号使用了另一个计数器。我希望子脚注与主脚注具有相同的计数器

我尝试过这个答案(期望结果相同)但没有成功。

最小示例

\usepackage{bigfoot}
\DeclareNewFootnote{default}
\DeclareNewFootnote{A}
\DeclareNewFootnote{B}

\MakeSortedPerPage{footnoteA}
\MakeSortedPerPage{footnoteB}

\makeatletter
\let\oldfootnote\footnote
\let\oldfootnoteA\footnoteA

\def\footnote{%
    \refstepcounter{footnote}%
    \kernel@ifnextchar[{\footnotenew}{\footnotenew[\c@footnote]}%
}
\def\footnotenew[#1]#2{%
    \oldfootnote[#1]{\let\footnote\footnoteA#2}%
}

\def\footnoteA{%
    \refstepcounter{footnoteA}%
    \kernel@ifnextchar[{\footnotenewA}{\footnotenewA[\c@footnoteA]}%
}
\def\footnotenewA[#1]#2{%
    \oldfootnoteA[#1]{\let\footnote\footnoteB#2}%
}
\makeatother

\begin{document}

Some text with a footnote
\footnote{%
  First footnote%
  \footnote{%
    Second inner footnote%
    \footnote{%
      Third inner footnote%
    }%
  }%
}
Some more text
\end{document}

答案1

如果我正确理解了你的问题,这应该可以实现你想要的。但是,你有没有测试过之后是否还有另一个脚注。脚注的显示不会按照其编号的顺序进行。因为子脚注位于它们自己的单独组中。我认为在这种情况下使用它们自己的计数器可能会更好。此外,如果您想要另一层嵌套的脚注,则需要继续定义下一个\DeclareNewFootnote(例如footnoteC)。一般来说,我认为你不应该使用\footnote来生成嵌套的脚注。最好使用\footnotemark\footnotetext

\documentclass{article}
\usepackage{bigfoot}
\DeclareNewFootnote{default}
\DeclareNewFootnote{A}
\DeclareNewFootnote{B}
\DeclareNewFootnote{C}

\MakeSortedPerPage{footnoteA}
\MakeSortedPerPage{footnoteB}
\MakeSortedPerPage{footnoteC}

\makeatletter
\let\oldfootnote\footnote
\let\oldfootnoteA\footnoteA
\let\oldfootnoteB\footnoteB

\def\footnote{%
    \stepcounter{footnote}%
    \kernel@ifnextchar[{\footnotenew}{\footnotenew[\c@footnote]}%
}
\def\footnotenew[#1]#2{%
    \oldfootnote[#1]{\let\footnote\footnoteA#2}%
}
\def\footnoteA{%
    \stepcounter{footnote}%
    \kernel@ifnextchar[{\footnotenewA}{\footnotenewA[\c@footnote]}%
}
\def\footnotenewA[#1]#2{%
    \oldfootnoteA[#1]{\let\footnote\footnoteB#2}%
}
\def\footnoteB{%
    \stepcounter{footnote}%
    \kernel@ifnextchar[{\footnotenewB}{\footnotenewB[\c@footnote]}%
}
\def\footnotenewB[#1]#2{%
    \oldfootnoteB[#1]{\let\footnote\footnoteC#2}%
}
\makeatother

\begin{document}
Some text with a footnote
\footnote{%
  First footnote%
  \footnote{%
    Second inner footnote%
    \footnote{%
      Third inner footnote%
    }%
  }%
}
Some more text\footnote{%
  Another footnote%
  \footnote{%
    Another second inner footnote%
    \footnote{%
     Another third inner footnote%
    }%
  }%
}
\end{document}

在此处输入图片描述 在此处输入图片描述

编辑:根据您的评论:

\documentclass{article}
\usepackage{etoolbox}
\usepackage{bigfoot}
\DeclareNewFootnote{default}
\DeclareNewFootnote{A}
\DeclareNewFootnote{B}
\DeclareNewFootnote{C}

\MakeSortedPerPage{footnoteA}
\MakeSortedPerPage{footnoteB}
\MakeSortedPerPage{footnoteC}


\makeatletter
\let\oldfootnote\footnote
\let\oldfootnoteA\footnoteA
\let\oldfootnoteB\footnoteB
\patchcmd{\MFL@makemark}{#2{#1}}{\setcounter{#1}{1}}{}{}
\renewcommand{\thefootnoteA}{\arabic{footnote}.\arabic{footnoteA}}
\renewcommand{\thefootnoteB}{\arabic{footnote}.\arabic{footnoteA}.\arabic{footnoteB}}


\def\footnote{%
    \footnotenew%
}
\def\footnotenew#1{%
    \oldfootnote{\let\footnote\footnoteA#1}%
}
\def\footnoteA{%
    \footnotenewA%
}
\def\footnotenewA#1{%
    \oldfootnoteA{\let\footnote\footnoteB#1}%
}
\def\footnoteB{%
    \footnotenewB%
}
\def\footnotenewB#1{%
    \oldfootnoteB{\let\footnote\footnoteC#1}%
}
\makeatother

\begin{document}
Some text with a footnote\footnote{%
  First footnote%
  \footnote{%
    Second inner footnote%
    \footnote{%
      Third inner footnote%
    }%
  }%
}
Some more text\footnote{%
  Another footnote%
  \footnote{%
    Another second inner footnote%
    \footnote{%
     Another third inner footnote%
    }%
  }%
}
\end{document}

在此处输入图片描述 在此处输入图片描述

相关内容