假设我想在输出时绘制一条水平线,如果页面中有脚注,则该线位于脚注的顶部,否则位于文本的底部。我如何才能检索脚注部分的高度来实现这一点?
例如,以下内容在页面末尾放置一行(包括脚注):
\documentclass{article}
\usepackage{atbegshi}
\usepackage{picture}
\makeatletter
\AtBeginShipout{%
\AtBeginShipoutUpperLeftForeground{%
\dimen@i\topmargin\advance\dimen@i\headheight%
\advance\dimen@i\headsep\advance\dimen@i 1in%
\advance\dimen@i\textheight%
\put(0, -\dimen@i){\line(1,0){2\textwidth}}}
}
\newcount\@cp
\def\copypasta#1#2{\@cp=0\loop\ifnum\@cp<#1 #2\advance\@cp by1\repeat}
\begin{document}
\copypasta{400}{white purple }
\footnote{Oh noes}
\copypasta{200}{brown fox }
\end{document}
谢谢!
答案1
从评论中摘录:
非答案:
\ht\footins
告诉您当前排队等待插入的脚注有多高,但这没有帮助,因为 (i) 如果此页面的脚注太多,其中一些可能会被推迟,并且 (ii) 在调用 shipout 钩子时,您感兴趣的脚注将从此寄存器中分离出来。但是,如果您可以得到\ht\footins
插入前后的值之间的差异......
重新定义:是的,好主意。事实上,您可以通过在顶部\output
放置一个来避免弄乱尺寸:\hrule
\box\footins
\制作字母 \edef\@@output{\the\output} \output={\setbox\footins=\vbox{\hrule 宽度 2in\unvbox\footins} \@@输出}