将 3 幅图像对齐在一个框中

将 3 幅图像对齐在一个框中

我正在尝试创建一个包含 3 幅图像的图形:左半部分有两幅图像,彼此叠在一起;右半部分有一幅图像,横跨左半部分图像的高度。以下是我所拥有的:

\documentclass[draft]{book}
\usepackage{graphicx}
\begin{document}
    \begin{figure}
        \begin{minipage}[c]{0.47\textwidth}
                \centering
                \includegraphics[width=\textwidth]{photos/image1}
                Caption
                \vfill % This does not produce the desired result
                \includegraphics[width=\textwidth]{photos/image2}
                Caption
        \end{minipage}
        \hfill
        \begin{minipage}[c]{0.47\textwidth}
            \centering
            \includegraphics[width=\textwidth]{photos/image3}
            Caption
        \end{minipage}
    \end{figure}
\end{document}

结果如下:

在此处输入图片描述

左侧第一幅图像的顶部与右侧图像的顶部不对齐,底部图像的边框也是如此。我\vfill在左侧的两幅图像之间有对齐,但我想它不起作用,因为两个小页面的高度不一样。

有没有办法让小页面的高度相同,或者也许有更好的方法来实现这一切?

答案1

这是一个选项,使用floatrowsubfig包;根据图像的实际大小,您可能需要调整一些长度:

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{floatrow}
\usepackage{subfig}

\begin{document}

\begin{figure}
\ffigbox[7.8cm]{%
\begin{subfloatrow}
  \hsize0.7\hsize
  \vbox to 6.35cm{
  \ffigbox[\FBwidth]
    {\caption{small subfigure A}}
    {\includegraphics[width=3cm,height=3cm]{smallfigure1}}\vss
  \ffigbox[\FBwidth]
    {\caption{small subfigure B}}
    {\includegraphics[width=3cm,height=2cm]{smallfigure2}}
  }
\end{subfloatrow}\hspace*{\columnsep}
\begin{subfloatrow}
  \ffigbox[\FBwidth][]
    {\caption{A large subfigure}}
    {\includegraphics[width=3cm,height=6cm]{largepicture}}
\end{subfloatrow}
}{\caption{three subfigures}}
\end{figure}

\end{document}

在此处输入图片描述

选项demo只是graphicx用黑色矩形替换实际图形;不是在实际文档中使用该选项。

将较大的图像装箱,可以自动计算所需的高度(仍然需要进行一些小的手动调整\vbox):

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{floatrow}
\usepackage{subfig}

\newlength\imageht
\newlength\imagedp

\begin{document}

\newsavebox\Image
\savebox\Image{\includegraphics[width=4cm]{largefigure}}
\settoheight\imageht{\usebox{\Image}}
\settodepth\imagedp{\usebox{\Image}}
\addtolength\imageht{\imagedp}

\begin{figure}
\ffigbox[7.8cm]{%
\begin{subfloatrow}
  \hsize0.7\hsize
  \vbox to \dimexpr\imageht+10pt\relax{
  \ffigbox[\FBwidth]
    {\caption{small subfigure A}}
    {\includegraphics[width=3cm,height=1cm]{smallfigure1}}\vss
  \ffigbox[\FBwidth]
    {\caption{small subfigure B}}
    {\includegraphics[width=3cm,height=1cm]{smallfigure2}}
  }
\end{subfloatrow}\hspace*{\columnsep}
\begin{subfloatrow}
  \ffigbox[\FBwidth][]
    {\caption{A large subfigure}}
    {\usebox{\Image}}
\end{subfloatrow}
}{\caption{three subfigures}}
\end{figure}

\end{document}

在此处输入图片描述

相关内容