我正在尝试创建一个包含 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
这是一个选项,使用floatrow
和subfig
包;根据图像的实际大小,您可能需要调整一些长度:
\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}