强制 LaTeX 图像出现在声明它的部分中

强制 LaTeX 图像出现在声明它的部分中

可能重复:
我如何确保图形出现在与其相关的部分中?
将表格/图片放在靠近提及的地方

我如何强制 LaTeX 文档中的图像出现在我声明它的部分中?

我不希望有关“A 部分”的图像出现在“F 部分”中。:(

我实际上包含了一个图像

\begin{figure}[ht]
\begin{center}
\includegraphics[scale=0.7]{./img/RobotManipulator3D_WorkSpace.png}
\end{center}
\caption{3D View of the robotic workspace (in red).}
\label{Img:3DRobotWorkspace}
\end{figure}

答案1

尝试一下\begin{figure}[!htb]。在几乎所有情况下它都有帮助。

解释图形放置参数

  • h- 如果可能的话,将图形放在这里
  • t- 将图片放在页面顶部
  • b- 将图片放在页面底部,
  • !- 覆盖默认的 LaTeX 图形位置(不使用参数值)。

如果这不起作用则使用:

\usepackage[section]{placeins}

这可以防止将浮点数放置在某个部分之前。

答案2

正如 Werner 所评论的:TeX FAQ 中的 LaTeX 中移动表格和图形状态:

即使您使用位置说明符[h](表示“此处”),图形或表格也不会打印在“此处”,如果这样做会违反规则;规则本身非常简单,在 LaTeX 手册第 198 页 C.9 节中给出。

使用包裹float使用[H]说明符。如果注释掉\usepackage{float},则以下 MWE 会导致第二页上的图,但图会按原样出现在两个段落之间。

\documentclass{article}
\usepackage{float}% If comment this, figure moves to Page 2
\usepackage{lipsum}
\usepackage[demo]{graphicx}

\begin{document}
\lipsum[1]
\begin{figure}[H]
  \centering
  \includegraphics{foo}
  \caption{caption text}
  \label{fig:nonfloat}
\end{figure}
\lipsum[2]
\end{document}

你也应该使用\centering\begin{center}...\end{center}不是我应该使用 center 还是 centering 来表示图形更多细节。

答案3

如果您不想让图形浮动,请不要使用浮动环境;例如,您可以使用环境center和(如果需要标题)\captionofcapt-of(或caption)包提供的命令:

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{capt-of}
\usepackage{lipsum}% just to generate text for the example

\begin{document}
\lipsum[1]
\begin{center}
  \includegraphics{foo}
  \captionof{figure}{A non floating figure}
  \label{fig:test}
\end{center}

\lipsum[2]
\end{document}

如果您希望图形浮动,但不传递命令\section,则可以使用placeins包及其\FloatBarrier命令,超出该范围浮动可能无法传递。包选项允许您声明浮动可能无法传递命令\section,但您可以将其放置\FloatBarriers在您选择的任何位置。

答案4

您没有提到浮动的高度。这留下了几个与 LaTeX 浮动放置参数相关的问题,这些问题解释了为什么图形相对于您希望出现的位置“太晚”出现。

假设图形的总高度不超过0.5\textheight,您可能会对以下设置有良好的体验,该设置使用afterpage包及其命令\afterpage

[code up to the figure of interest]
\afterpage{\clearpage
\begin{figure}[t] % note the use of the "t" placement specifier
\centering % don't use \begin{center} ... \end{center}: it wastes too much space
\includegraphics[scale=0.7]{./img/RobotManipulator3D_WorkSpace.png}
\caption{3D View of the robotic workspace (in red).}
\label{Img:3DRobotWorkspace}
\end{figure}}
[remaining code of your document]

我之所以提到这个0.5\textheight考虑,是因为 LaTeX 用于将浮动元素放置在页面上的关键参数之一是\floatpagefraction,这是一个介于 0 和 1 之间的小数;默认情况下,它等于0.5(除非通过某些类或包命令将其设置为不同的值)。因此,如果您的图形高于0.5*\textheight,LaTeX 将拒绝将其与其他(即文本)材料一起放置在页面上,从而导致浮动元素一直向后漂移,直到\clearpage发生某些强制分页符(可能是由命令引起的)。在这种情况下,您可能应该发出命令

\renewcommand\floatpagefraction{0.8} %% default value: 0.5
\renewcommand\topfraction{0.8}       %% default value: 0.7

并重新编译文档。当然,如果浮动元素的高度为 的 85% 或 95% \textheight,您确实应该愿意将其放置在自己的页面上(最容易实现的方法是选择[p]放置说明符)。

[H]关于使用软件包提供的放置说明符的评论float:虽然它有时确实有助于放置原本难以正确放置的浮动,但使用它实际上相当于治标,而不是找到解决与令人满意地放置浮动相关的问题的根本原因。在诉诸使用它之前,您应该真正考虑修改 LaTeX 的浮动放置参数。话虽如此,我也遇到过这样的情况,在[H]我尝试了所有其他补救措施后,我诉诸于使用说明符......

相关内容