强制将脚注置于纯 TeX 页面底部

强制将脚注置于纯 TeX 页面底部

我有一份大型文档(约 3000 页),使用纯 TeX 和一些本地宏排版。该文档使用纯 TeX\footnote宏来添加脚注。该文档还使用\raggedbottom。这意味着较短页面上的脚注会附加到文本块的底部。理想情况下,我希望这些页面上的脚注与页面底部齐平。

在寻找解决方案时,我发现\usepackage[bottom]{footmisc}如果我使用 LaTeX,LaTeX 命令就可以完全满足我的需求。有人能建议我如何通过修改纯 TeX 宏来获得此功能吗?

我对修改 TeX 的输出程序相当熟悉,但是\vfootnote和 却让fontmisc我束手无策。


只是为了修复想法,这里有一个 MWE,它目前无法将脚注放在文本块的底部。

在此处输入图片描述

\raggedbottom

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do 
eiusmod tempor incididunt ut labore et dolore magna 
aliqua.\footnote{*}{This footnote should be at bottom of the 
text block.} Ut enim ad minim veniam, quis nostrud exercitation 
ullamco laboris nisi ut aliquip ex ea commodo consequat. 

Duis aute irure dolor in reprehenderit in voluptate velit 
esse cillum dolore eu fugiat nulla pariatur.\footnote{**}{A 
second footnote.} Excepteur sint occaecat cupidatat non 
proident, sunt in culpa qui officia deserunt mollit anim id 
est laborum.

\eject % important: not "\vfill\eject"
\end

答案1

您可能希望重新定义\footnoterule并在页面内容的该位置添加一些垂直填充。尝试以下操作:

\raggedbottom
\def\footnoterule{\vfill % added this
   \kern-3pt\hrule width 2truein \kern 2.6pt} % the \hrule is .4pt high

Lorem ipsum\footnote *{This footnote should be at the bottom of 
the textblock} dolor sit amet, consectetur adipiscing elit, sed do eiusmod 
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo 
onsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse 
cillum dolore eu fugiat nulla pariatur. 

Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia 
deserunt mollit anim id est laborum.

\par\break
\bye

答案2

代码的关键部分plain.tex如下:

\def\pagecontents{\ifvoid\topins\else\unvbox\topins\fi
  \dimen@=\dp\@cclv \unvbox\@cclv % open up \box255
  \ifvoid\footins\else % footnote info is present
    \vskip\skip\footins
    \footnoterule
    \unvbox\footins\fi
  \ifr@ggedbottom \kern-\dimen@ \vfil \fi}

您想要覆盖它,\vfil因此最简单的方法是更改\skip\footins​​最初设置为\bigskipamount12pt plus 4pt minus 4pt)的值,将其更改为plus 1fill可以完成工作,因此只需将以下内容添加到您的文档中:

\skip\footins=12pt plus 1fill minus 4pt

您应该会得到预期的输出。

(顺便说一句,2020 年用纯 TeX 创建 3000 页的文档?有趣的选择)。

(此外,我目前没有可以运行的 TeX 系统,因此这一切都未经测试)。

相关内容