我正在写一份报告,需要添加 5 张图片。将上述图片添加到报告时,前两张放在第一页的文本顶部,另两张放在第二页的任一列,然后第五张放在第三页,即使第二页是空的(除了另外两张图片)。我们最多只能使用两页,每页两列,所以即使我忽略格式问题,这也会带来很大的问题。
我曾尝试使用float
包的[H]
说明符强制将图像准确地放置在.tex
文件中的位置,但这样做只会在列中产生巨大的间隙。
如果我使用[p]
说明符,图像只会填充每页的左列,然后才移至下一页,从第二页开始。
该[h]
说明符基本上结合了上述两者:它在文本中创建较大的间隙,并且最后几幅图像填充单个列,然后再移到下一页。
这是我能做的最好的 MWE(第一次尝试)。我有\item
和原始文档一样多的说明符,但带有填充文本。我还删除了说明符,因为我不确定如何表示多个不同的说明符,而不是简单地复制/粘贴所有内容几次。
\documentclass[aps,pre,twocolumn,showpacs,amsmath,amssymb]{revtex4-1}
\usepackage{graphicx}
\usepackage{color}
\usepackage{bm}
\usepackage{float}
\usepackage{pgfplots}
\usepackage{blindtext}
\pgfplotsset{compat=1.16}
\usepackage[portuguese]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\hfuzz 1pt
\vfuzz 1pt
\setlength{\parskip}{\baselineskip}
\begin{document}
\begin{itemize}
%
\item \blindtext
\begin{figure}
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
xmin=0, xmax=10,
ymin=0, ymax=10,
legend pos=north east,
]
\addplot[mark=none, domain=0:10,samples=2]{x};
\addlegendentry{$y = x$}
\end{axis}
\end{tikzpicture}
\caption{Stuff}
\label{fig:image1}
\end{figure}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
xmin=0, xmax=10,
ymin=0, ymax=10,
legend pos=north east,
]
\addplot[mark=none, domain=0:10,samples=2]{x};
\addlegendentry{$y = x$}
\end{axis}
\end{tikzpicture}
\caption{Stuff}
\label{fig:image2}
\end{figure}
\item \blindtext
\begin{figure}
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
xmin=0, xmax=10,
ymin=0, ymax=10,
legend pos=north east,
]
\addplot[mark=none, domain=0:10,samples=2]{x};
\addlegendentry{$y =x$}
\end{axis}
\end{tikzpicture}
\caption{Stuff}
\label{fig:image3}
\end{figure}
\item \blindtext
\begin{figure}
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
xmin=0, xmax=10,
ymin=0, ymax=10,
legend pos=north east,
]
\addplot[mark=none, domain=0:10,samples=2]{x};
\addlegendentry{$y = x$}
\end{axis}
\end{tikzpicture}
\caption{Stuff}
\label{fig:image4}
\end{figure}
\item \blindtext
\item \blindtext
\begin{figure}
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
xmin=0, xmax=10,
ymin=0, ymax=10,
legend pos=north east,
]
\addplot[mark=none, domain=0:10,samples=2]{x};
\addlegendentry{$y = x$}
\end{axis}
\end{tikzpicture}
\caption{Stuff}
\label{fig:image5}
\end{figure}
%
\end{itemize}
\end{document}
TL;DR:图像无法以双列格式正确显示。我做错了什么?
答案1
如果您确切知道图形适合的位置,您可以考虑将它们“在线”处理,而不是作为浮动处理。
将它们包裹在中\begin{center} ... \end{center}
,以添加浮动会自动添加的垂直空间。
最后,使用\captionof
(包caption
)插入标题。
答案2
我在这里所做的就是使用 [ht] 数字。如果浮动可以放在这里,它就会放在这里。它永远不会到达当前列的顶部。相反,它会到达下一列的顶部。
由于您已经加载了浮动包,因此我为最后一个使用了 [H] 图形。我还添加了\vspace{\intextsep}
属于 [h] 但不属于 [H] 的图形。s\hrule
只是为了使间距更清晰。
也可以看看这个问题
\documentclass[aps,pre,twocolumn,showpacs,amsmath,amssymb]{revtex4-1}
\usepackage{graphicx}
\usepackage{color}
\usepackage{bm}
\usepackage{float}
\usepackage{pgfplots}
\usepackage{blindtext}
\pgfplotsset{compat=1.16}
\usepackage[portuguese]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\hfuzz 1pt
\vfuzz 1pt
\setlength{\parskip}{\baselineskip}
\begin{document}
\begin{itemize}
%
\item \blindtext
\begin{figure}[ht]
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
xmin=0, xmax=10,
ymin=0, ymax=10,
legend pos=north east,
]
\addplot[mark=none, domain=0:10,samples=2]{x};
\addlegendentry{$y = x$}
\end{axis}
\end{tikzpicture}
\caption{Stuff}
\label{fig:image1}
\end{figure}
\begin{figure}[ht]
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
xmin=0, xmax=10,
ymin=0, ymax=10,
legend pos=north east,
]
\addplot[mark=none, domain=0:10,samples=2]{x};
\addlegendentry{$y = x$}
\end{axis}
\end{tikzpicture}
\caption{Stuff}
\label{fig:image2}
\end{figure}
\item \blindtext
\begin{figure}[ht]
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
xmin=0, xmax=10,
ymin=0, ymax=10,
legend pos=north east,
]
\addplot[mark=none, domain=0:10,samples=2]{x};
\addlegendentry{$y =x$}
\end{axis}
\end{tikzpicture}
\caption{Stuff}
\label{fig:image3}
\end{figure}
\item \blindtext
\begin{figure}[ht]
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
xmin=0, xmax=10,
ymin=0, ymax=10,
legend pos=north east,
]
\addplot[mark=none, domain=0:10,samples=2]{x};
\addlegendentry{$y = x$}
\end{axis}
\end{tikzpicture}
\caption{Stuff}
\label{fig:image4}
\end{figure}
\item \blindtext
\item \blindtext\vspace{\intextsep}
\begin{figure}[H]
\hrule
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
xmin=0, xmax=10,
ymin=0, ymax=10,
legend pos=north east,
]
\addplot[mark=none, domain=0:10,samples=2]{x};
\addlegendentry{$y = x$}
\end{axis}
\end{tikzpicture}
\caption{Stuff}
\label{fig:image5}
\hrule
\end{figure}
%
\end{itemize}
\end{document}
此版本相当于使用 [H] 图形,除了\intextsep
间距可能不同。
\documentclass[aps,pre,twocolumn,showpacs,amsmath,amssymb]{revtex4-1}
\usepackage{graphicx}
\usepackage{color}
\usepackage{bm}
\usepackage{float}
\usepackage{pgfplots}
\usepackage{blindtext}
\pgfplotsset{compat=1.16}
\usepackage[portuguese]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\makeatletter
\newenvironment{myfigure}{\par\vskip\intextsep
\def\@captype{figure}%
\noindent\minipage{\columnwidth}%
}{\endminipage
\par\vskip\intextsep}
\makeatother
\hfuzz 1pt
\vfuzz 1pt
\setlength{\parskip}{\baselineskip}
\begin{document}
\begin{itemize}
%
\item \blindtext
\begin{myfigure}
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
xmin=0, xmax=10,
ymin=0, ymax=10,
legend pos=north east,
]
\addplot[mark=none, domain=0:10,samples=2]{x};
\addlegendentry{$y = x$}
\end{axis}
\end{tikzpicture}
\caption{Stuff}
\label{fig:image1}
\end{myfigure}
\begin{myfigure}
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
xmin=0, xmax=10,
ymin=0, ymax=10,
legend pos=north east,
]
\addplot[mark=none, domain=0:10,samples=2]{x};
\addlegendentry{$y = x$}
\end{axis}
\end{tikzpicture}
\caption{Stuff}
\label{fig:image2}
\end{myfigure}
\item \blindtext
\begin{myfigure}
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
xmin=0, xmax=10,
ymin=0, ymax=10,
legend pos=north east,
]
\addplot[mark=none, domain=0:10,samples=2]{x};
\addlegendentry{$y =x$}
\end{axis}
\end{tikzpicture}
\caption{Stuff}
\label{fig:image3}
\end{myfigure}
\item \blindtext
\begin{myfigure}
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
xmin=0, xmax=10,
ymin=0, ymax=10,
legend pos=north east,
]
\addplot[mark=none, domain=0:10,samples=2]{x};
\addlegendentry{$y = x$}
\end{axis}
\end{tikzpicture}
\caption{Stuff}
\label{fig:image4}
\end{myfigure}
\item \blindtext
\item \blindtext
\begin{myfigure}
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
xmin=0, xmax=10,
ymin=0, ymax=10,
legend pos=north east,
]
\addplot[mark=none, domain=0:10,samples=2]{x};
\addlegendentry{$y = x$}
\end{axis}
\end{tikzpicture}
\caption{Stuff}
\label{fig:image5}
\end{myfigure}
%
\end{itemize}
\end{document}