我的文档中有一个列表,我在它之前插入了一些行图形,执行以下操作:
\begin{figure}[htbp]
\begin{center}
\includegraphics[scale=0.7]{filename.png}
\caption{Caption}
\label{fig:label}
\end{center}
\end{figure}
不幸的是,这个图把列表分成了两部分,我不知道如何避免这种情况。我尝试过改变图的位置,但找不到好看的解决方案。
编辑:
提到的清单是软件代码的容器,如下所示:
\begin{lstlisting}[language=C, label=lst, caption="Software", breaklines=true]
//my code here
\end{lstlisting}
答案1
“浮动元素”(例如表格和图形)的精确定位是 LaTeX 执行的比较神秘的过程之一。您没有提到执行的是哪种列表,但我认为它要么是枚举列表,要么是分项列表。您确实提到了您使用[htbp]
作为定位选项;第一个元素h
代表“此处”,也就是说,LaTeX 可能会认真对待您的问题,并将浮动元素放置在浮动元素代码出现的位置。
在你的情况下,即在存在逐项或枚举列表的情况下,获得令人满意的浮动位置的一个有希望的第一步可能是插入\begin{figure}
...\end{figure}
代码后列表末尾。首先尝试不提供定位选项(例如[h]
)。如果这不能产生令人满意的结果,请提供[t]
或[b]
定位选项。
最后,请注意,通常只有在文档其余文本基本定稿后,才可以对浮动材料的确切位置进行微调。否则,在更改此处或彼处的文本后,您可能不得不重新进行工作。
答案2
我遇到了同样的问题,并找到了解决方法。使用\pagebreak
。我的代码如下
\begin{figure}
...
\end{figure}
\pagebreak
\begin{lstlisting}
...
\end{lstlisting}
如果这样做,图形将首先出现,然后是代码清单。注意:清单不会跳转到新页面,除非页面已经满是图形。