我如何强制 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
和(如果需要标题)\captionof
由capt-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]
我尝试了所有其他补救措施后,我诉诸于使用说明符......