为什么我不能使用嵌套框中的脚注(插入)?

为什么我不能使用嵌套框中的脚注(插入)?

有时,我需要在嵌套框中插入脚注,但似乎不能在嵌套框中使用脚注。

% ok
\hbox{a\footnote{$^1$}{a footnote}}

但不是这个

% won't get a footnote
\hbox{a\hbox{b\footnote{$^1$}{a footnote}}}

在 TeXbook 中,它说

\footnote宏应仅用于paragraphshboxes贡献给 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}

相关内容