我使用的是双列布局,并试图让图形出现在当前所在页面的底部。浮动在多列环境中无法正常工作。
现在我通过在页面上放置以下内容来解决这个问题前我希望图像出现在其上:
\begin{figure*}[b!]
\centering
\includegraphics[scale=0.8]{graph}
\captionof{figure}{graph}
\end{figure*}
它可以工作,但是代码确实不太漂亮...我该怎么做才能解决这个问题?
答案1
引用多色文档,第 2.4 节:
带星号的浮动,例如
figure*
,表示页面宽度的浮动,其处理方式与环境外的普通浮动类似multicols
。但是,它们永远不会显示在遇到它们的页面上。换句话说,可以通过在其可选参数中指定t
、b
和/或的组合来影响它们的位置p
,但h
不起作用,因为第一个可能的位置是下一页的顶部。
换句话说,你的代码可能不漂亮,但它在 LaTeX(2e) 中已经是最好的了。(在多列环境中放置浮动是热切期待 LaTeX3 的原因之一。)
答案2
带星号的浮动环境在当前页面的 LaTeX 双列模式下从不出现,其技术原因是 LaTeX 可能已经完全排版了第一列,而分隔符处的某些材料已被删除。如果 LaTeX 仍在为第一列收集材料,算法可能会做得更好,但目前并没有这样做,而且只有大约 1/3 的情况会成功。
情况multicols
也类似:因为算法正在收集材料至少一页的文字,它在看到浮动时并不知道调出位置是否真的会在当前页面上。因此,它只是将浮动推入队列,以便在设置下一页时进行考虑。任何其他方法都会使算法变得非常复杂,因为需要multicols
跟踪调出位置,检查放置浮动的页面生成是否成功,如果没有,则推迟失败的浮动并重新进行处理。从概念上讲是可行的,但我决定遵循标准的 LaTeX 方法。