下面的代码中有三幅图,每幅图都有标题和脚注。我期望它们从 1 到 3 连续编号。但实际上(使用 TL 17 和 TL 18 测试)当标题有两行时,脚注计数器会增加两次(不缩放,即第三行仍然会增加两次)。
问题:这双步走的原因是什么?
边注:我并不是在寻找解决方案,因为只需包含该包即可轻松解决问题caption
。我感兴趣的是解释为什么标题中的第二行可能导致计数器混乱。
\documentclass{article}
\begin{document}
\begin{figure}
\caption{Test1\protect\footnotemark}
\end{figure}
\footnotetext{Footnote 1}
\begin{figure}
\caption{Test2 -- This is a very long caption which should still get a foonote numbered with 2\protect\footnotemark}
\end{figure}
\footnotetext{Footnote 2}
\begin{figure}[htbp] % [htbp] only added for staying on top]
\caption{Test3\protect\footnotemark}
\end{figure}
\footnotetext{Footnote 3}
\end{document}
答案1
它之所以分步进行,是因为标题要排版两次。首先,标题被放在一个行中\sbox
并测量,如果一行设置适合,则框将居中,但是如果该行太长,则将整个标题放在一个行中,\parbox
以便将其设置为两端对齐的段落。
可以保存/恢复计数器,例如,tabularx
在进行amsmath
类似的试验设置时,但由于默认浮动处理不支持脚注,所以非常当它在 1980 年代设计时,由于没有足够的空间容纳额外的保存/恢复代码,所以您需要使用\footnotemark[]
当前数字,然后\footnotetext[]
在标题外使用。
请注意,在此示例中,关闭单行检查的解决方案可以正常工作,因为您获得相同的\parbox
设置,并且通过跳过检查您可以获得正确的数字,但如果您将其作为全局文档更改来执行,那么
\caption{a very long caption}
将会获得不同的设置,作为两端对齐的段落(因此与左对齐,因为它是一行),而不是居中。