如何让浮动保持在特定边界内(例如,某个部分)?(\FloatBarrier 似乎由于错误而无济于事)

如何让浮动保持在特定边界内(例如,某个部分)?(\FloatBarrier 似乎由于错误而无济于事)

据我所知,防止浮点数出现在某个点上方或下方的规范方法是使用\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,即如何确保浮点数不会排版在定义它们的位置之上。

相关内容