浮动元素在文档中出现的位置通常会比它们被创建的位置晚很多,有时会在分节符之后。
有没有办法强制新的部分在任何未放置的浮动元素之后在新的页面上开始?
答案1
使用placeins
包裹。
正如评论中所述,您可以使用
\usepackage[section]{placeins}
自动确保浮点数不会进入下一部分。
该软件包还为您提供了一个\FloatBarrier
命令,您可以使用它来防止浮动出现在文档中的某个点之外。使用它作为
% ... some floats here ...
\FloatBarrier
\subsection{My new subsection}
答案2
该命令\clearpage
不仅会开始新的一页,还会强制在分页符前设置任何未设置的浮动。对于有左页和右页的文档,\cleardoublepage
执行相同的操作,但还会确保下一个非空白页是右侧页面。
这一切都与分节符无关,但如果您使用的类未在分节符前放置分页符,则此方法将强制使用分页符。但是,从您的问题来看,这似乎不是您的问题。
答案3
我现在正在使用:
\usepackage{placeins}
\let\Oldsection\section
\renewcommand{\section}{\FloatBarrier\Oldsection}
\let\Oldsubsection\subsection
\renewcommand{\subsection}{\FloatBarrier\Oldsubsection}
\let\Oldsubsubsection\subsubsection
\renewcommand{\subsubsection}{\FloatBarrier\Oldsubsubsection}
这是厚颜无耻地从这个和其他关于这个话题的答案的结合中加上的这。由于我暂时还不能发表评论(这是一个愚蠢的要求,...),所以我将通过新的答案来分享。
编辑:另外,为了其他人的可复制性,我已经合并了 egregs 的出色修正,以使用非参数版本的节重新定义(之前,上面的代码片段读作\renewcommand{\section}[1]{\FloatBarrier\Oldsection{#1}}
等。 - 谢谢,egreg
答案4
代码对我而言适用于所有部分和小节,需要在 miktex 包库上更新包
\usepackage[section]{placeins}
\FloatBarrier
每张图片或每个部分的上方/下方