答案1
LaTeX 具有更改内部脚注的机制\interlinepenalty
,但没有\widowpenalty
。
你可以尝试
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@footnotetext}
{\interlinepenalty}
{\widowpenalty 150 \interlinepenalty}
{}{}
\makeatother
通过挂接在发生更改的\widowpenalty
相同位置,这将仅在脚注内重置为通常值。\interlinepenalty
相关定义latex.ltx
是
\long\def\@footnotetext#1{\insert\footins{%
\reset@font\footnotesize
\interlinepenalty\interfootnotelinepenalty
\splittopskip\footnotesep
\splitmaxdepth \dp\strutbox \floatingpenalty \@MM
\hsize\columnwidth \@parboxrestore
\def\@currentcounter{footnote}%
\protected@edef\@currentlabel{%
\csname p@footnote\endcsname\@thefnmark
}%
\color@begingroup
\@makefntext{%
\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
\par
\color@endgroup}}%
并做一些类似的事情
\let\oldfootnote\footnote
\renewcommand{\footnote}{\widowpenalty150\oldfootnote}
将要不是因为它没有设置\widowpenalty
在正确的位置,也就是说,后 \insert\footins{
,这就是我的代码所做的。
注意的材质\insert
是成组处理的,所以\widowpenalty
只要}
扫描到匹配的,的值就会恢复。