如何在浮动环境中声明脚注,使其与浮动出现在同一页面上(通常在页面上,而不是在浮动内)?除了广泛使用的解决方法外,还有其他技巧或附加包吗?
% 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
——可以正常工作。请注意,脚注标记将“编号” a
、b
等,并将放置在浮动的底部。使用此方法时,通常最好将浮动放在页面底部(以便浮动的脚注也显示在页面底部,“它们所属的位置”)或单独放在页面上。
第四,如果所讨论的浮动是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 中使用非常方便,只需要脚注标记和\mpfootnotes
ERT 中的命令。
答案3
Mirco 的解决方案与该tablefootnote
包配合得很好。Tablefootnote 解决了在表格内设置脚注的问题(您不必再使用footnotemark
andfootnotetext
了),但没有解决先设置脚注然后设置浮动环境表格的问题。这意味着脚注可以比带有脚注标记的表格更早出现。在里面包含整个表格定义可以\afterpage{Tabledefinition}
解决这个问题。表格可以浮动,并且脚注设置在设置浮动环境的页面上。