是否有一个命令可以做同样的事情\clearpage
(排版所有尚未排版的浮点数)但然后不是插入分页符但在同一页面上继续显示以下文本/图形?
答案1
是的,这是afterpage
包裹。 使用
\afterpage{\clearpage}
这将在当前页面完全设置后刷新所有已处理的浮动,从技术上避免可见的\clearpage
。请参阅afterpage
文档(第 1 页):
有时 LaTeX 的浮动定位机制会过载,所有浮动图形和表格都会漂移到文档末尾。可以通过发出命令清除所有未处理的浮动
\clearpage
,但这会导致当前页面过早结束。现在您可以发出命令\afterpage{\clearpage}
,当前页面将像往常一样填满文本,但随后\clearpage
命令会在下一个文本页面开始之前清除所有浮动。
答案2
我相信你可能在寻找\FloatBarrier
来自placeins
包的命令。它强制 Tex 排版该点处的所有剩余浮点数,并且不包括\clearpage
之后的内容。
答案3
我做了一个 MWE 来比较不同的解决方案。
代码
\documentclass{article}
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage{afterpage}
\usepackage{placeins}
\begin{document}
\section{foo}
\lipsum[1-2]
\begin{figure}[htb]
\includegraphics[width=\textwidth, height=40mm]{example-image-a}
\end{figure}
\lipsum[4]
\begin{figure}[htb]
\includegraphics[width=\textwidth, height=\textheight]{example-image-b}
\end{figure}
%\clearpage % (variant 1)
%\afterpage{\clearpage} % (variant 2)
%\FloatBarrier % (variant 3)
%\afterpage{\FloatBarrier} % (variant 4)
\lipsum[3]
\section{bar}
\lipsum[5-7]
\end{document}
结果
变体 0:无
- 图像 B 被移至末尾。
变体 1:\clearpage
- 图像 B 被放置在 之后的任何内容之前
\clearpage
。
变体 2\afterpage{\clearpage}
(看Werner 的回答)
- 图像 B 放置在当前页面结束后。
变体 3:\FloatBarrier
(看Max 的回答)
请注意,在这个特定的例子中,变体 3 的行为与变体 1 相同,但一般情况并非如此(参见下面的例子)。
变体 4:\afterpage{\FloatBarrier}
(看stefanct 的回答)
请注意,在这个特定的例子中,变体 4 的行为与变体 2 相同,但一般情况并非如此(参见下面的例子)。
\clearpage
和之间的区别\FloatBarrier
另一个没有图 B 的示例。
代码
\documentclass{article}
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage{afterpage}
\usepackage{placeins}
\begin{document}
\section{foo}
\lipsum[1-2]
\begin{figure}[htb]
\includegraphics[width=\textwidth, height=40mm]{example-image-a}
\end{figure}
\lipsum[4]
\clearpage % (variant 1)
%\FloatBarrier % (variant 3)
\section{bar}
\lipsum[5-7]
\end{document}
结果
变体 1:\clearpage
变体 3:\FloatBarrier
\FloatBarrier
如果没有可插入的浮点数,则不会插入分页符。
答案4
我成功地结合了前面两个答案,即\afterpage{\FloatBarrier}
(在浮动之后直接使用,甚至在浮动之内使用)在页面大小表被推到文档的最末端的情况下acmart
。这受到了一个完全不同的启发问题。这当然需要两个包(placeins
和afterpage
)。出于某种原因,替代方案并未产生良好/可接受的结果。