时不时地H
会出现带有浮动环境选项的问题/答案,并且每次都会有人指出不应使用此选项。
但是,我还没有找到关于这个主题的具体帖子。
因此,有人能一劳永逸地清楚地解释一下:
- 为什么
H
不应该使用 - 所有可能的替代方案是什么(
htbp
,根本没有浮动,等等)。
我知道如何影响 LaTeX 中图形和表格等浮动环境的位置?,但它太广泛和详细了,这个问题更侧重于选择H
,我正在寻找一个适合初学者的实用答案。
\documentclass{article}
\usepackage{mwe}
\usepackage{graphicx}
\usepackage{float}
\usepackage{caption}
\begin{document}
\blindtext
\begin{table}[H]
\centering
\caption{A Table}
\begin{tabular}{ccc}
A & B & C \\
1 & 2 & 3 \\
\end{tabular}
\end{table}
\blindtext
\begin{figure}[H]
\centering
\includegraphics{example-image-a}
\caption{A Figure}
\end{figure}
\blindtext
\end{document}
答案1
这是一个概念性而非技术性的答案,来解释为什么不行,需要前面问题的背景:
为什么标题和页码几乎总是有编号的?
嗯,有两个可能的答案。因为……
1)无缘无故给所有事物编号的愚蠢习惯。
2) 例如,当您将参考文献写成“参见第 5 页的图 3”时,这会对读者有所帮助。希望我们是理性的,让我们选择第二个,但是……
为什么这些引用编号标题的文本对读者有帮助?
因为很多时候图表与上下文相距甚远,也就是说,当某些段落使这个图表与上下文相关时。
那么,为什么不在相关时将图表以“参见下图:”的样式放置
[H]
在文本引用的位置呢?
我完全同意 Ulrike 的观点,即以这种方式引用情节[H]
是有意义的,而且有文本和文本。但恕我直言,至少在正式文本(论文、科学期刊等)中应避免这种方式,原因如下:
1)因为总是打乱叙述。
特别是如果文本中间有标题。任何一篇好的文章都可以有表格和图表来支持文本的含义并提供附加信息,但文本本身应该完全可以理解,无需补充。读者应该决定是否需要暂时停下讲课,仔细查看图表以收集有关您所写内容的更多信息(或者更糟的是,澄清您在解释什么),或者在阅读整篇文章之前或之后。至少在科学期刊中,背后的哲学与规定使用摘要、关键词和自我解释标题相同:帮助读者。选项t
,b
并且p
从这个意义上来说总是更好。
2)因为很多时候不可能将表格和图形粘贴到相关的文本中。
一个表格可能与不同页面的多个段落相关。另一方面,仅一个段落就足以解释必须位于不同页面的多个表格和图片。显然,解决方案不是每次提到某个表格时都复制一份,或为每个图片写一段介绍性段落,而是进行交叉引用。
David 已经指出了另外两个,但我想坚持这一点:
3)因为也会破坏布局。
在我看来,这是最重要的技术缺点。如果某个非浮动框无法适应页面末尾,则意味着过早的分页符会留下巨大、丑陋且令人困惑的空间(“下一个图是什么?下面什么都没有”或“为什么没有更多文本?这是部分的末尾?”等)。浮动框[!ht]
可能会以几乎相同的方式离开其上下文,但不会破坏之前的页面布局。如果您不确定浮动框是否适合 [!ht]
4) 因为强制浮动位置可能会导致另一个浮动出现问题。
典型的问题是“为什么我的浮动会移到文档末尾?”,这是由于对控制浮动位置的痴迷所致。您留下的灵活性越高,浮动就会越靠近原始周围文本,并且每页的文本量和浮动量之间的平衡就越好,而无需手动移动浮动位置。
答案2
[H]
使得图形不浮动
\begin[figure}[H]
...
\caption{..}
\end{figure}
与以下相同(只有轻微的边缘情况和间距差异)
\begin{minipage}{\columnwidth}
...
\captionof{figure}{...}
\end{minipage}
选择以上任何一种只是个人喜好问题。两种都可以。
因此,选择实际上并不是H
浮动还是不浮动。
使用非浮动元素后,一个常见问题是为什么会出现难看的空白。对此的简单(但不是那么有用)的答案是,LaTeX 移动浮动元素的原因是为了避免分页符处出现糟糕的空白,因此通过使用非浮动元素通过设计您选择了错误的间距,而不是接受浮动数字。
这话有一半是对的,但另一方面,LaTeX 寻找良好浮动位置的能力是有限的,对于某些文档,目前只能通过手动定位图形来实现浮动的最佳定位。这当然是一个脆弱的过程,对文档的任何编辑都可能意味着必须手动更改图形的位置以适应新的分页符,但是,如果您花了三年时间撰写论文,那么花一周时间手动定位图形并不一定是错的,但是,如果您可以调整自动浮动位置以获得可接受的布局,那么在大多数情况下,这可能是更好的选择。
答案3
该选项H
禁用浮动(但允许标题),因此问题可以改写为“为什么我应该让图形和表格浮动?”。
许多人很难适应浮动的概念。他们写“如下面的表格所示……”,所以不喜欢表格浮动。此外,经常翻到另一页查看文本中引用的表格或图形的内容也非常痛苦。所以在我看来,避免浮动的愿望是可以理解的。
另一方面:表格(和图片)经常在文本的各个部分引用,因此表格通常没有合适的放置位置。文本中间的表格会打断和干扰阅读。较大的(非浮动)对象会使页面难以避免出现大量空白——大多数人也不喜欢这种情况。
我不会说不应该使用H
——我见过一些文本,其中这是最好的选择:例如,许多简短的段落描述了一个特定的情节。但人们应该仔细权衡利弊,不要忘记编号顺序等技术细节。
添加
在起草或调整文档时,该选项H
非常有用 当设置为默认值时(使用\renewcommand*{\fps@figure}{H}
.然后我们就可以看到浮动元素(或多或少)应该在哪儿,并且更好地判断当不允许浮动时它会如何影响布局。
答案4
好的,我会尝试回答这个问题。
由于篇幅较长,这里总结:
H
通常是错误的,因为它基本上与不使用浮动环境相同(那么为什么要使用浮动环境),并且因为它没有给 LaTeX 机会实现良好的(计算的)分页符。默认的替代方案是
tbp
,即\begin{table}[tbp]
与 相同\begin{table}
。tbp
表示表格放置在 LaTeX 认为最好的位置,即页面顶部、页面底部和仅由浮动元素组成的页面上。这通常是最好的也可以添加
h
(到tbp
) 让 LaTeX 考虑将浮动放置在声明的位置(如果可行且效果良好),有时这很有用。例如,可以说\begin{figure}[htbp]
也可以减少选项,但要注意 LaTeX 可能找不到合适的位置(并将所有浮动元素发送到末尾)。不过,这有时有利于微调,例如
begin{table}[tb]
。选项越少,分页的风险就越大(就页面构成而言)。
现在答案是:
基本上,TeX 相关系统在排版选择方面表现很好,尤其是这些方面通常比一般的初学者要好。
选择涉及分页、段落制作和浮动定位;它们都是相互交织的。LaTeX 在分页方面可能不是最好的,这可能需要一些手动调整,但在我看来,结果相当不错,比没有印刷背景的初学者所能达到的效果要好得多(我声明这是我的观点)。
然而,我们必须明白,浮动位置会受到很多因素的影响(例如对它的引用、它占据了多少页面空间),将图形或表格放在页面顶部或底部或单独放在一页上会更优雅、更不显眼。事实上,它不会破坏“阅读流程”,并使文本统一。使用浮动环境通常会为文本和浮动提供应有的空间,而不会减少另一个的空间。例如,文本中间的表格或类似的东西往往会扰乱文本的“自然灰度”,而一些排版师(例如 Jan Tschichold)认为这是文本最重要的东西。
所以通常最好给浮动一些空间,并保持独立,以便于使用参考(如果有的话)想要看看它 - 没有什么是强制性的),但它不引人注目。
LaTeX 尝试以提供“最佳”构图的方式放置浮动元素(它具有badness
制作页面的概念,并尝试使其尽可能少)。有时需要多次运行 LaTeX 才能“稳定”浮动元素的位置。
该H
选项不会让 LaTeX 有机会确定最佳的不良程度,而是强制其立即将浮动放在声明的位置。这几乎总是错误的,因为没有做出任何努力来使页面变得更好。
默认选项是tbp
“尝试放在顶部、底部或另一页”。它提供了最大的灵活性,通常是最好的选择。有时可以添加字母h
来尝试将浮动定位在声明的位置,但我上面所说的仍然适用,这通常不是一个很好的选择,尽管有时它允许 LaTeX 进行良好的分页。减少替代方案可能会迫使 LaTeX 将图表放在章节/文章的末尾,因为没有地方可以放置它们。
我几乎总是觉得最好的选择是默认选择:任何调整都应该有助于 LaTeX 实现更好的排版和分页,而不是强迫 LaTeX 遵循我们的任意要求。另外,我认为这减少了微调文档和克服 LaTeX 分页问题所需的手动调整量。