仅在正文中设置 \widowpenalty,不用于脚注

仅在正文中设置 \widowpenalty,不用于脚注

我的经历与旧的问题和这个一样问题没有回复。我想防止主文本中出现孤行,但我不介意在脚注拆分时在脚注区域出现孤行。设置可以\widowpenalty=1500很好地修补一些分页符,但由于一些脚注,会出现不必要的空白。有没有办法设置全局选项,还是我必须手动浏览我的文档?

答案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只要}扫描到匹配的,的值就会恢复。

相关内容