有时我想放在页面底部的图形会放在下一页,无论有多少可用空间。最后,我做了一些测试,发现图形的高度不能超过 25%,\textheight
才能放在底部。而且,至少在我的测试中,图形的高度不能超过 65%,才能放在顶部\textheight
。
更新: 正如评论和链接的放置算法解释所述,大多数情况下添加!定位参数应该可以解决问题以下是一个具有底部定位和一页后续文本的工作示例:
\documentclass{article}
\usepackage{graphicx}
\usepackage{lipsum}
\begin{document}
Some text here.
\begin{figure}[!b]%
\includegraphics[draft, height=0.40\textheight, width=0.6\columnwidth]{example-image}%
\centering
\caption{Relaxing constraints with !, this figure (40\% textheight)
will be placed at the bottom, too.}%
\label{}%
\end{figure}
\lipsum[1-5]
\end{document}
但是,在我的原始文档中,文本和图形后面跟着一个,minipage
它不适合放在同一页中,需要放在下一页(事实上,这是一个相当长的列表,我不想把它拆开)。将这样的一个添加minipage
到上述代码中会产生奇怪的行为。图形放在第一页,但不在底部。相反,它似乎表现得好像H已使用定位:
\documentclass{article}
\usepackage{graphicx}
\usepackage{lipsum}
\begin{document}
Some text here.
\begin{figure}[!b]%
\includegraphics[draft, height=0.40\textheight, width=0.6\columnwidth]{example-image}%
\centering
\caption{Relaxing constraints with !, this figure (40\% textheight)
will be placed at the bottom, too.}%
\end{figure}
\begin{minipage}{\linewidth}
\lipsum[1-5]
\end{minipage}
\end{document}
minipage
当我添加不带 但pagebreak
在 之前触发 的文本时,可以观察到相同的行为lipsum
。我假设 minipage 可能会引入pagebreak
或等效项(如果它不适合一页)。
最后但并非最不重要的一点是,clearpage
在minipage
解决问题并将图形放在底部,而据我了解该算法,只有当布局器到达时,才可以将图形放在后续页面上clearpage
:
\documentclass{article}
\usepackage{graphicx}
\usepackage{lipsum}
\begin{document}
Some text here.
\begin{figure}[!b]%
\includegraphics[draft, height=0.40\textheight, width=0.6\columnwidth]{example-image}%
\centering
\caption{Relaxing constraints with !, this figure (40\% textheight)
will be placed at the bottom, too.}%
\label{}%
\end{figure}
\clearpage
\begin{minipage}{\linewidth}
\lipsum[1-5]
\end{minipage}
\end{document}
我喜欢这种极端情况,因为我似乎在生活的各个方面都经常遇到它们。也许有人可以解释一下这里发生了什么,以及如何以一种不会让你在十页后回到文档中的方式处理这种情况;)
祝一切顺利,斯蒂芬
答案1
在上述代码中添加这样的小页面会产生奇怪的行为。图形放在第一页,但不在底部。相反,它的行为似乎就像使用了 h 定位一样:
这是一个误解,b
它并不意味着与页面底部齐平,而是“放置在文本下方”,因此由于页面较短,图像(即使使用)b
在页面上的位置相对较高。
如果你\flushbottom
在序言中添加
尽管该页面上没有可用的可拉伸空间,但你还是会被警告
Underfull \vbox (badness 10000) has occurred while \output is active
请注意,您不应该经常使用!
as 中的[!b]
as!
表示“忽略此实例上的用户设置约束”,最好设置更合适的约束,例如设置\bottomfraction
为 0.7 而不是 0.3,然后使用[bp]
我认为,如果 minipage 无法容纳在一页中,则可能会引入分页符或等效项。
minipage
根本没有定位或间距代码,它只是像大字母一样工作。如果minipage
不适合,则可能需要分页符,但如此处的示例所示,没有添加任何特殊粘连或惩罚,因此间距取决于页面上可能存在的任何其他粘连。