有时,我需要在嵌套框中插入脚注,但似乎不能在嵌套框中使用脚注。
% ok
\hbox{a\footnote{$^1$}{a footnote}}
但不是这个
% won't get a footnote
\hbox{a\hbox{b\footnote{$^1$}{a footnote}}}
在 TeXbook 中,它说
该
\footnote
宏应仅用于paragraphs
或hboxes
贡献给 TeX 主垂直列表的;如果插入出现在框内的框内,则插入将丢失。因此,例如,您不应尝试将放入\footnote
数学公式的子公式中。但可以在其中使用脚注\centerline
(就像第一个例子一样)。
那么,为什么我不能使用嵌套框中的脚注(第二个示例)?幕后原因是什么?那么,如何在嵌套框中使用脚注?
答案1
当 TeX 的分页器将当前页面的一部分拆分出来,并将其放入框 255 中,以便输出例程将其与页眉和页脚等组合在一起时,它还会在每个分配的插入框中提供任何插入与刚刚被拆分成框 255 的主垂直列表中的插入节点相对应。(忽略拆分插入的复杂性,其中脚注可能跨越多页。)
插入(和标记)节点迁移从水平列表到周围的垂直列表,因此如果你将一个放在\footnote
段落中,该节点最初位于正在构建的水平列表中,但是当段落被分成几行时,它迁移移出水平列表,并放置在垂直列表中,紧靠文本行的水平框之后(在任何行间粘连之前)。但是节点永远不会移出显式框,例如\hbox
您必须将\unhbox
内容移出以允许节点转出,然后迁移到垂直列表中。
从未迁移到主垂直列表的插入节点永远不会被输出例程看到,并且保存的内容永远不会出现在可访问的框中,例如\box\footins
在组成页面时由输出例程宏使用的框。
当然,您可以在想要标记的位置做脚注标记,然后通过将插入内容放置在\footnotetext
未被框起来的位置来手动迁移插入内容。
答案2
我认为这与为什么需要特别处理等内的脚注有关minipages
。在嵌套框内,您只需放置脚注标记;然后从框外添加文本。但是使用这种方法,每次放置脚注标记时,您都需要确保先推进脚注计数器。
\documentclass{article}
\pagestyle{empty}
\usepackage{lipsum}
\setlength{\parindent}{0pt}
\begin{document}
This is the first footnote.\footnote{Just a simple note.}
\lipsum[1]
\fbox{\begin{minipage}{\dimexpr\linewidth-2\fboxrule-2\fboxsep}
There is a footnote here.\stepcounter{footnote}\footnotemark[\thefootnote]
\lipsum[2]
\end{minipage}}
\footnotetext[\thefootnote]{A footnote from within a box.}
There is a footnote here too.\footnote{Hello again.}
\lipsum[3]
\hbox{This is the outside box \hbox{I in the inner\stepcounter{footnote}\footnotemark[\thefootnote] box}}
\footnotetext[\thefootnote]{a footnote from within nested boxes.}
\end{document}