我应该使用图形环境吗?

我应该使用图形环境吗?

当我添加图形和标题时,我有两个选择:

  1. 使用figure选项

这意味着我的代码很可能

\begin{figure}
    \centering
    \includegraphics{my picture} 
    \caption{my caption here}
    \label{my label here}
\end{figure}
  1. 使用caption

这意味着我的代码很可能

\usepackage{caption}
...
\begin{center}
    \includegraphics{my picture} 
\end{center}
\captionof{figure}{my caption here}
\label{my label here}

在这里,我应该避免其中之一,还是我可以使用我喜欢的任何选项?我个人更喜欢第二个选项,因为它的行为符合我的预期,而第一个选项将图片放在了一些奇怪的位置。

虽然我对它们各有偏好,但我之所以问这个问题,是因为我发现有些编写 LaTeX 的方法并不推荐,比如eqnarray 与 align

如果您能让我了解它们之间任何我没有注意到的区别,我将不胜感激。

答案1

有些地方您无法放置浮动figure,例如迷你页面,但您想要一个带有编号标题的图形。那么请考虑第二种选择。

否则,即使您不想要移动图形,也请使用第一种方法。相反,使用选项[h],甚至[H] 使用包“float”。原因是浮动还会处理标题上方和下方的空间,另一个浮动会处理周围的文本,您可以在序言中一致地更改该设置。

而下一个 MWE 中的第二种方法则存在两个问题:

(1)Ulrike Fisher 指出,风险可能会延续到下一页

(2)标题与正文之间缺少空格。

\documentclass{article}
\usepackage{caption}
\usepackage{lipsum}
\usepackage{graphicx}
\begin{document}

\lipsum[1]

\begin{figure}[h]
    \centering
    \includegraphics[scale=.2]{example-image} 
    \caption{my caption here}
    \label{my label here}
\end{figure}

\lipsum[2-7][1-38] % wrong result 2: caption in another page

\begin{center}
    \includegraphics[scale=.2]{example-image} 
\end{center}
\captionof{figure}{my caption here}
\label{my label here}

\lipsum[3] % wrong result: No space under caption

\end{document}

中间段落变短后,您仍会注意到第三个问题:标题上方的空间不同。正如您在评论中看到的那样,这是对 \captionof 的错误使用,导致出现“超出框或环境”警告,因此如果您改用选项 B:

\begin{center}
    \includegraphics[scale=.2]{example-image} 
    \captionof{figure}{my caption here}
\end{center}

这样,您就避免了任何警告,以及图像和标题之间的过大空间,但请注意,这仍然不等同于选项 A:

\begin{figure}[h]
    \centering
    \includegraphics[scale=.2]{example-image} 
    \caption{my caption here}
\end{figure}

现在仅使用 A+A+A+B+B+B+B 制作 MWE。您可以注意到:

1)中心仍然是一个易破坏的环境(在最后一个B中)。

2)每个浮动下方的空间(A)比每个中心环境标题下方的空间(B)更大(并且看起来更好)。

解决(1)的一个选项是,正如多次指出的那样,使用minipage

选项C:

\noindent\begin{minipage}{\linewidth}
\centering
    \includegraphics[scale=.2]{example-image} 
    \captionof{figure}{my caption here} 
\end{minipage}

但是现在与 A+A+A+C+C+C+C 进行比较:小页面标题后面的小空格确实很难看。但在实际文档中,它可能与浮动中的空格相似或更高,具体取决于\parskip设置。您还应该注意段落中的空白\parindent在哪里minipage。在空白行之后,小页面开始一个段落,它将缩进,从而改变图形的明显中心,而另一个小页面之后将位于段落的第二行,因此没有缩进。

另一方面,浮动永远不会被破坏,也永远不会被缩进,浮动的间距将独立于 \parskip,而是由\textfloatsep\floatsep和控制\intextsep(参见文章默认在这里)。

然而,请考虑非浮动框还存在一些其他固有问题。

1) 它无法从所需位置移动。是的,也许这就是你想要的,但如果它对于页面上的剩余空间来说太大了,会发生什么?图形传递到下一页,留下所有空间为空。使用带有 的浮动[h],图形可以均匀地传递到下一页的顶部(如果需要,会[ht]自动更改为 ),但用以下文本填充该空间。文档布局将无可比拟地好,如果您使用标签在文本中引用,这种位移会略显不便。

2) 浮动规则对非浮动无效(显然)。浮动规则会阻止您使用,例如,将四个大数字放在页面顶部,这样您只能在底部添加 4 或 5 行文本。但是非浮动数字会忽略\topfractiontopnumer计数器或totalnumber计数器,因此没有人会避免这种可怕的布局。这些规则可以更改,甚至忽略(例如[h!]),它们的重要性取决于正在执行的文档类型,但对于书籍或论文文档,很可能它们的布局会根据这些规则看起来更好。

如果问题只是浮标移动性太差,你应该先阅读如何影响 LaTeX 中图形和表格等浮动环境的位置?,然后使用 h选项(例如\begin{figure}[h] ...:),甚至h!,如果它仍然不够固定,请添加包float并将该选项更改为H。但我的建议是,避免使用这些选项(事实上,所有浮动选项)并在最终草稿中只考虑这些选项。首先检查是否值得更改默认浮动位置,调整浮动规则(例如,允许每页多一个或两个浮动),最后根据需要设置一些浮动选项。

考虑到以上所有因素,figure环境是先验在我看来是更好的选择,并且不需要任何包,而\captionof 在 minipage 中它是一个很好的救星当你不能使用浮点数时,就像使用multicol包一样。

相关内容