关于固定和浮动数字的顺序以及 [(!)h] 与

关于固定和浮动数字的顺序以及 [(!)h] 与

假设您有一本巨大的书,其中有很多浮动和固定位置的数字:

\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.pdf2001/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}

关于hvsht问题

它们的结果与 LaTeX 不使用 相同h,但ht如果您指定h( 则!不会产生任何差异)。但仅使用ht不是一个好主意(尤其是对于较大的浮点数),因为它没有给 LaTeX 太多选择来放置浮点数,我建议也允许p定位,这样更好htp

ht为什么仅使用是一个坏主意的一个例子

在以下示例中,第一个浮点数太大,无法放置为ht,因此将所有figures 刷新到文档末尾。如果您将 添加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不公平,但足以强调为什么它不能解决所有问题)。

相关内容