如何在浮动环境中放置脚注

如何在浮动环境中放置脚注

如何在浮动环境中声明脚注,使其与浮动出现在同一页面上(通常在页面上,而不是在浮动内)?除了广泛使用的解决方法外,还有其他技巧或附加包吗?

% Let 'floatenv' be any float environment such as figure or table
\begin{floatenv}
    [...] \footnotemark [...]
\end{floatenv}

\footnotetext{<text>}

如果将浮动元素放在专用的浮动页面上({floatenv}[p]),这是否会失败?

答案1

您关于在环境中是否有脚注的问题float可以有几种解释。

首先,如果脚注标记需要放在浮动的 内caption,简短的回答是:这是不可能的。好吧,一些 TeX 专家可能能够弄清楚如何做到这一点,但 LaTeX 的标准脚注机制不会打印脚注文本(即使它会打印脚注标记)。:-(

其次,对于应该出现在页面底部(而不是浮动底部)并且应该以与文档其他脚注相同的样式进行编号的脚注,请\footnotemark{}在要放置脚注“标签”(例如凸起的数字“1”)的位置使用命令,并在浮动末尾使用命令\footnotetext{...},如以下 MWE 所示。据我所知,此方法仅适用于单个脚注,因此可能仅具有有限的意义。

\documentclass{article}
\begin{document}
\section{Start}
\begin{figure}[h]
\caption{Some figure} \label{fn:text}
\centering
Some stuff.\footnotemark{} Some more stuff.
\end{figure}\footnotetext{Text of footnote.}
\end{document}

另外:如果要将浮动元素显示在自己的页面上,请afterpage在序言中加载包,省略位置说明符([b][p]),然后将浮动元素“包裹”在\afterpage{...}构造中,如下所示

\begin{afterpage}{
\begin{table}
...
\end{table}
\footnotetext{...}
\clearpage  % the \clearpage command forces the float to occur on a page by itself.
}  %% end of \afterpage{...} "wrapper"

第三,如果浮动是figure,@AndreyVihrov 在他的回答中描述的方法——将图的主体嵌入minipage——可以正常工作。请注意,脚注标记将“编号” ab等,并将放置在浮动的底部。使用此方法时,通常最好将浮动放在页面底部(以便浮动的脚注也显示在页面底部,“它们所属的位置”)或单独放在页面上。

第四,如果所讨论的浮动是table,您还有另一个选择(除了minipage上一段中提到的方法),如果您有很多脚注和/或对同一脚注的重复标注,这可能特别有用:包threeparttable。(请参阅此网站这一页了解该软件包的文档。)在前言中加载此软件包后,您的浮动代码将类似于

\begin{threeparttable} %% instead of "\begin{table}"
\caption{Some table}
\begin{tabular}{...} %% or tabular*, tabularx, tabulary, ...
    ...
    Some material\tnote{a}\\  %% note the "\tnote" command
    More material\tnote{a}\\
    ...
    Still more material\tnote{b}\\
    ...   
\end{tabular} %% or tabular*, tabularx, tabulary, ...
\begin{tablenotes}
\item[a] Footnote "a".
\item[b] Footnote "b".
\end{tablenotes}
\end{threeparttable}

这个包的一个很酷的方面是,如果每个脚注的文本都很短,你可以使用选项[para],例如

\begin{tablenotes}[para]

指示 LaTeX 以“段落”样式排版所有表格脚注。

答案2

对于浮动元素最终单独出现在页面上的情况,我使用以下解决方案。在其他情况下,我发现 Mico 的解决方案\afterpage非常可靠。

我假设您希望浮动的脚注遵循与文档中其他脚注相同的顺序。

此解决方案要求您手动输入浮动内容中的脚注数量(如果有多个),并在添加或删除脚注时更改此数量。但是,通过将所有内容放在迷你页面中,您可以根据需要精确控制布局(例如,调整脚注与浮动内容底部的距离)。

定义命令 后\mpfootnotes,将浮动内容放入小页面中。在小页面末尾,放置命令\mpfootnotes[n](其中n是脚注的数量),后面跟着常规脚注。脚注可以正常使用,例如,使用 提供的功能footmisc

\documentclass{article}
\makeatletter
\usepackage[bottom]{footmisc}

\newcommand{\mpfootnotes}[1][1]{
  \renewcommand{\thempfootnote}{\thefootnote}
  \addtocounter{footnote}{-#1}
  \renewcommand{\footnote}{\stepcounter{footnote}\footnotetext[\value{footnote}]}}

\makeatother
\begin{document}
\begin{figure}
\begin{minipage}[t]{1\columnwidth}
First footnote mark goes here.\footnotemark{} 
Another footnote mark goes here.\footnotemark{}
Another instance of the second footnote mark.\footref{fn:note2}
\caption{Figure caption.}

\mpfootnotes[2]
\footnote{The first footnote.}
\footnote{\label{fn:note2}The second footnote.}
\end{minipage}
\end{figure}
\end{document}

这个解决方案的一个很好的特点是它在 LyX 中使用非常方便,只需要脚注标记和\mpfootnotesERT 中的命令。

答案3

Mirco 的解决方案与该tablefootnote包配合得很好。Tablefootnote 解决了在表格内设置脚注的问题(您不必再使用footnotemarkandfootnotetext了),但没有解决先设置脚注然后设置浮动环境表格的问题。这意味着脚注可以比带有脚注标记的表格更早出现。在里面包含整个表格定义可以\afterpage{Tabledefinition}解决这个问题。表格可以浮动,并且脚注设置在设置浮动环境的页面上。

相关内容