如果是双列图形,是否按图形顺序浮动?

如果是双列图形,是否按图形顺序浮动?

我有以下代码:

\subsection{sub1}
\begin{figure*}
      \centering
      \includegraphics[scale=0.62]{fig1.png}
      \caption{
      this is fig1.
      \label{fig:fig1}
}
\end{figure*}

blabla [...]

\subsection{sub2}
\begin{figure}
      \centering
      \includegraphics[scale=0.42]{fig2.png}
      \caption{
      This is fig2.
      \label{fig:fig2}
}
\end{figure}

blabla[...]

我希望图 1 先打印出来图 2,并打印在顶部。请注意图1是双列。我总是以图1在第三页图 2在第二页。

我发现了很多关于如何使用浮点数的建议,例如: https://stackoverflow.com/questions/3936430/is-there-a-way-to-get-latex-to-place-figures-and-tables-in-the-order-they-are-re

但它们似乎根本不起作用(因为我有一个两列的图?)。[H]使用图1移动到文档末尾的空白页。我尝试了所有可能的变体[!ht],但都没有成功。

我希望得到一个解决方案,不需要我下载一些被黑客入侵的软件包(我的文件可能也需要由其他人编译)或与文件作斗争.cls(出于同样的原因,我不允许更改)。

有什么建议吗?

答案1

遵循以下指导原则如何将多列图形放置在单列图形和单列表上方?,这里有一种方法:

在此处输入图片描述

\documentclass[twocolumn]{article}
\usepackage{afterpage,lipsum,capt-of,graphicx}% http://ctan.org/pkg/{afterpage,lipsum,capt-of,graphicx}
\usepackage[margin=1in]{geometry}% Just for this example
\begin{document}
\lipsum[1-7]

\begin{figure*}
  \centering\includegraphics[width=.7\linewidth,height=2in]{example-image-a}\par
  \caption{This is a figure caption}
\end{figure*}%

\afterpage{%
  \noindent\begin{minipage}{\columnwidth}
    \centering
    \includegraphics[width=.8\linewidth,height=4\baselineskip]{example-image-b}
    \captionof{figure}{This is anoth figure caption}
    \vspace*{\textfloatsep}% Insert "regular" gap between float and text
  \end{minipage}%
}

\lipsum[8-14]
\end{document}

figure*在模式下将图形打印在下一页的顶部(默认情况下) 。在代码中twocolumn放置后,我们立即使用在下一页上手动插入内容。因此,它们figure*\afterpage应该最终一个接一个,只是第二个将成为运行文本的一部分,因此位于第一列内。

我们不再浮动第二个(列)图形,而是将其放置在minipage宽度为的区域中\columnwidth(“浮动”和文本之间有一些垂直分隔;参见如何在标题和图形之间插入适当量的垂直空间?)。因为我们使用的是minipage而不是浮点数,capt-of帮助我们设置适当的标题。

答案2

根据http://www.tex.ac.uk/FAQ-2colfltorder.html

现在,标准 LaTeX 针对单列浮点数和双列浮点数提供了不同的列表;这意味着单列数字可以超过双列数字(反之亦然),并且您会观察到文档中后面的数字出现在前面的数字之前。当然,表格或任何用户定义的浮点数也是如此。

LaTeX 团队意识到了这个问题,并提供了一个包 (fixltx2e) 来解决这个问题。Fixltx2e 合并了两个延迟列表,这样浮点数就不会乱序了。

因此,您可以在序言中包含\usepackage{fixltx2e}(这应该是 Latex 的默认设置),这会强制图形以正确的顺序出现在文本中。

相关内容