![如何让浮动保持在特定边界内(例如,某个部分)?(\FloatBarrier 似乎由于错误而无济于事)](https://linux22.com/image/453745/%E5%A6%82%E4%BD%95%E8%AE%A9%E6%B5%AE%E5%8A%A8%E4%BF%9D%E6%8C%81%E5%9C%A8%E7%89%B9%E5%AE%9A%E8%BE%B9%E7%95%8C%E5%86%85%EF%BC%88%E4%BE%8B%E5%A6%82%EF%BC%8C%E6%9F%90%E4%B8%AA%E9%83%A8%E5%88%86%EF%BC%89%EF%BC%9F%EF%BC%88%5CFloatBarrier%20%E4%BC%BC%E4%B9%8E%E7%94%B1%E4%BA%8E%E9%94%99%E8%AF%AF%E8%80%8C%E6%97%A0%E6%B5%8E%E4%BA%8E%E4%BA%8B%EF%BC%89.png)
据我所知,防止浮点数出现在某个点上方或下方的规范方法是使用\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
,即如何确保浮点数不会排版在定义它们的位置之上。