我正在尝试将一系列高度不同的图像放在两列中。到目前为止,我发现我可以使用 subfigure 环境,我可以这样使用它:
\documentclass{article}
\usepackage{caption,subcaption}
\usepackage{graphicx} % demo is just for the example
\begin{document}
\begin{figure}
\centering
\begin{subfigure}[b]{.4\textwidth}
\includegraphics[width=\textwidth]{./pic1}
\vspace{1mm}
\includegraphics[width=\textwidth]{./pic2}
\vspace{1mm}
\includegraphics[width=\textwidth]{./pic3}
\end{subfigure}
\hspace{-1mm}
\begin{subfigure}[b]{.4\textwidth}
\includegraphics[width=\textwidth]{./pic4}
\vspace{1mm}
\includegraphics[width=\textwidth]{./pic5}
\end{subfigure}
\caption{The full caption}
\end{figure}
\end{document}
这给了我一个两列顶部未对齐的图形,这正是我想要的。
所以我需要这个:
此外,上述代码在单独的 .tex 文件中有效,但当我将其插入到文档中时却无法正常工作。我得到了
“环境子图未定义。”
我正在用这个包对所有其他图像使用 subfloats
\usepackage[labelformat=simple]{subfig}
问题可能是它们发生冲突了吗?将所有旧图形移动到同一个子图形环境中需要太多工作,现在它们都已设置好。
或者,可以使用 subfloat 环境解决 2 列图形吗?
答案1
我已使用subcaption
包获取subfigure
和subcaption
。使用与高度相同的可选参数minipage
可以为框指定高度subfigure
。我在这里定义,\subfigheight
以便可以轻松更改。只需将其设置为略高于图片堆栈的高度(我在 s\fbox
周围使用了 essubfigure
来查看高度。然后\vfill
填充垂直间隙。
\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{figure}[htb]
\newcommand\subfigheight{80mm}
\centering
\begin{subfigure}[t][\subfigheight][b]{0.4\linewidth}
\includegraphics[width=\linewidth,height=0.3\linewidth]{example-image}
\caption{first}
\vfill
\includegraphics[width=\linewidth,height=0.3\linewidth]{example-image}
\caption{next}
\vfill
\includegraphics[width=\linewidth,height=0.3\linewidth]{example-image}
\caption{last}
\end{subfigure}
\hspace{2em}
\begin{subfigure}[t][\subfigheight][b]{0.4\linewidth}
\includegraphics[width=\linewidth,height=0.5\linewidth]{example-image}
\caption{next}
\vfill
\includegraphics[width=\linewidth,height=0.8\linewidth]{example-image}
\caption{last}
\end{subfigure}
\caption{Overall caption}
\label{fig:Test}
\end{figure}
\lipsum[2]
\end{document}
答案2
正如 TeXnician 提到的,minipage 就是答案。您必须使用它代替子图并将对齐方式设置为顶部。此外,使用 graphbox 包将两个顶部图像的对齐方式调整为顶部:
\documentclass{article}
\usepackage{graphbox}
\usepackage[labelformat=simple]{subfig}
\begin{document}
\begin{figure}
\centering
\begin{minipage}[t]{.4\textwidth}
\includegraphics[align=t,width=\textwidth]{./pic1}
\vspace{1mm}
\includegraphics[width=\textwidth]{./pic2}
\vspace{1mm}
\includegraphics[width=\textwidth]{./pic3}
\end{minipage}
\hspace{-1mm}
\begin{minipage}[t]{.4\textwidth}
\includegraphics[align=t,width=\textwidth]{./pic4}
\vspace{1mm}
\includegraphics[width=\textwidth]{./pic5}
\end{minipage}
\caption{The full caption}
\end{figure}
\end{document}