两个相邻的子图在顶部对齐

两个相邻的子图在顶部对齐

我正在尝试将一系列高度不同的图像放在两列中。到目前为止,我发现我可以使用 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包获取subfiguresubcaption。使用与高度相同的可选参数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}

相关内容