我有以下代码:
\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 的默认设置),这会强制图形以正确的顺序出现在文本中。