假设您有一本巨大的书,其中有很多浮动和固定位置的数字:
\documentclass{svmono}% V5.10 from https://resource-cms.springernature.com/springer-cms/rest/v1/content/20566/data/monographs . For testing purposes, I hope, book would do as well.
…
\usepackage{float}
…
\begin{document}
…
\begin{figure}[h]% or anything not including H
Figure 1. A floating figure
\end{figure}
…
\begin{figure}[H]
Figure 2. A fixed-position figure
\end{figure}
…
\begin{figure}[h]% or anything not including H
Figure 3. Another floating figure
\end{figure}
…
\end{document}
这两个不同的各种图形在 DVI 或 PDF 输出中的显示顺序是否与 LaTeX 输入中的顺序相同?(在上面的例子中,理想的顺序是 1,2,3。输出中的顺序 2,1,3 或 1,3,2 是不正确的。)或者您是否需要采取特殊预防措施以便真正保留顺序?float.pdf
2001/11/08 中的文档没有提到这个顺序,或者至少没有明确提到。(到目前为止,我的示例中的顺序一直保持不变,但也许我只是运气好。)
顺便问一下,有没有真实的[h]
和之间的位置有什么不同?那么vs[ht]
又如何呢?在我编辑的大型书籍的日志中,我收到已更改为(和,我认为)的警告。[!h]
[!ht]
[h]
[ht]
[!h]
[!ht]
答案1
关于订单问题
不,这不能保证,考虑一下
\documentclass{article}
\usepackage{float}
\usepackage[paperheight=6cm]{geometry}
\begin{document}
\begin{figure}[b]Order.\caption{1}\end{figure}
\begin{figure}[H]ORDER!\caption{2}\end{figure}
\end{document}
产生
或者可能更接近一些真实文件的内容:
\documentclass{article}
\usepackage{float}
\usepackage[paperheight=6cm]{geometry}
\usepackage{duckuments}
\begin{document}
\blindduck\par
\begin{figure}Order.\par Order.\par Order.\caption{1}\end{figure}
\begin{figure}[H]ORDER!\caption{2}\end{figure}
\end{document}
关于h
vsht
问题
它们的结果与 LaTeX 不使用 相同h
,但ht
如果您指定h
( 则!
不会产生任何差异)。但仅使用ht
不是一个好主意(尤其是对于较大的浮点数),因为它没有给 LaTeX 太多选择来放置浮点数,我建议也允许p
定位,这样更好htp
。
ht
为什么仅使用是一个坏主意的一个例子
在以下示例中,第一个浮点数太大,无法放置为h
或t
,因此将所有figure
s 刷新到文档末尾。如果您将 添加p
到第一个浮点数的可能位置,情况会好得多,浮点数会保持在靠近其在源中的位置(至少更近)。
\documentclass{article}
\usepackage{duckuments}
\begin{document}
\blindduck
\begin{figure}[ht]\rule{5cm}{.8\textheight}\caption{big}\end{figure}
\blindduck
\begin{figure}[ht]\rule{3cm}{2cm}\caption{small}\end{figure}
\blindduck[full]
\blindduck[full]
\blindduck[full]
\blindduck[full]
\end{document}
为什么\FloatBarrier
不是魔法答案(不幸的是)
编译以下内容并查看半空白的第一页:
\documentclass{article}
\usepackage{float,placeins}
\usepackage{duckuments}
\begin{document}
\blindduck\par
\begin{figure}\rule{5cm}{.8\textheight}\caption{big}\end{figure}
\blindduck
\FloatBarrier
\begin{figure}[H]\rule{3cm}{2cm}\caption{small}\end{figure}
\blindduck[full]
\blindduck[full]
\blindduck[full]
\blindduck[full]
\end{document}
原因是它\FloatBarrier
只是一种更智能的\clearpage
(它检查是否存在延迟浮点数,如果有的话\clearpage
;这种简化可能会\FloatBarrier
不公平,但足以强调为什么它不能解决所有问题)。