据我所知,防止浮点数出现在某个点上方或下方的规范方法是使用\FloatBarrier
来自包的命令placeins
。但是,它似乎在下面的例子中不起作用:表 1 出现多于上一节的最后一段,即使\FloatBarrier
之前有一个\section{Section~B}
。在这种情况下,我希望将表格放在第 2 页的底部,B 节内。
\documentclass{article}
\usepackage{placeins}
\usepackage{lipsum}
\begin{document}
\section{Section~A}
\lipsum[1-5]
This is the last paragraph of section~A.% And now it is long enough to take a little more vertical space.
\FloatBarrier
\section{Section~B}
This is the first paragraph of section~B.
\begin{table}
\caption{This table belongs in section~B}%
\label{tab:mytable}
\begin{tabular}{ll}
a & b\\
c & d
\end{tabular}
\end{table}
This is the second paragraph of section~B, look at table~\ref{tab:mytable}.
\end{document}
但是,如果我删除%
from This is the last paragraph of section~A.% And now it is long enough to take a little more vertical space.
,它的排版就会正确:
(更新)
我重新阅读了placeins
的文档,发现了这一段:
LaTeX 的“
\suppressfloats
”与分页符不同步(请参阅 usenet 消息和线程),有时会允许浮动元素越过位于页面顶部附近的“ ”。也许 placeins 稍后会修复此问题。<[email protected]>
\FloatBarrier
所以这似乎是 LaTeX 的一个错误。现在我的问题是:如何解决这个错误?(最好的解决方案是修复 LaTeX,但这对我来说太大了,我必须在 43 天内提交我的博士论文……
答案1
\usepackage{flafter}
(建议来自大卫·卡莱尔在评论中)并不能直接解决问题就像声明的那样,但确实解决了我试图使用解决的根本问题\FloatBarrier
,即如何确保浮点数不会排版在定义它们的位置之上。