我有七幅图像,我想将它们显示在一张图中。两张大图像应在第一行的两列中对齐。第二行应由第一幅图像下方的四张半尺寸图像组成(位于 row=0 和 col=0),其中半尺寸图像在 2x2 网格上对齐,但只占用一行。最后一幅图像与前两幅图像大小相同,应在第二幅图像下方对齐(位于 row=0 和 col=1)。我已经得到了这个,它几乎满足了我的需求,但有一些小缺点:
\documentclass[12pt,a4paper,twoside, draft]{article}
\usepackage{graphicx}
\usepackage{subcaption} %to have subfigures available
\begin{document}
\begin{figure}[h!]
\centering
\begin{subfigure}[t]{0.49\textwidth}
\includegraphics[width=\textwidth]{img1.png}
\caption{caption of first image}
\end{subfigure}
\hfill
\begin{subfigure}[t]{0.49\textwidth}
\includegraphics[width=\textwidth]{img2.png}
\caption{caption of second image\\second line}
\end{subfigure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%second row
\begin{subfigure}[ht]{0.49\textwidth}
\begin{subfigure}[t]{0.49\textwidth}
\includegraphics[width=\textwidth]{img3.png}
\end{subfigure}
%
\begin{subfigure}[t]{0.49\textwidth}
\includegraphics[width=\textwidth]{img4.png}
\end{subfigure}
\begin{subfigure}[t]{0.49\textwidth}
\includegraphics[width=\textwidth]{img5.png}
\end{subfigure}
%
\begin{subfigure}[t]{0.49\textwidth}
\includegraphics[width=\textwidth]{img6.png}
\end{subfigure}
\caption{caption of the four small images\\second line\\third line}
\end{subfigure}
\hfill
\begin{subfigure}[ht]{0.49\textwidth}
\includegraphics[width=\textwidth]{img7.png}
\caption{caption of last image\\second line}
\end{subfigure}
\caption{caption of main figure}
\end{figure}
\end{document}
缺点是指 1) 第二行图像的顶部边框对齐不准确。我该如何解决这个问题?2) 2x2 网格中的四幅图像彼此相邻时显示空间,但彼此之间的距离太近。我如何在 2x2 网格中的第一行和第二行之间留出一些空间。
编辑:我刚刚注意到问题可能只是部分出现在这里,因为所有标题都适合一行。如果前两张图片的标题占用的行数不同,则会出现 1)。
答案1
[t] 选项使用第一行的基线(与 minipage 相同)。您可以使用 查看基线\leavevmode\rlap{\rule{\textwidth}{1pt}}
。因此,使用 [t] 的子图实际上是与图像的底部对齐的,而不是顶部。要对齐顶部,您需要\raisebox{-\height}{...}
需要每一个图像。
\documentclass[12pt,a4paper,twoside, draft]{article}
\usepackage{graphicx}
\usepackage{subcaption} %to have subfigures available
\begin{document}
\begin{figure}
\centering
\begin{subfigure}[t]{0.49\textwidth}
\raisebox{-\height}{\includegraphics[width=\textwidth]{img1.png}}
\caption{caption of first image}
\end{subfigure}
\hfill
\begin{subfigure}[t]{0.49\textwidth}
\raisebox{-\height}{\includegraphics[width=\textwidth]{img2.png}}
\caption{caption of second image\\second line}
\end{subfigure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%second row
\begin{subfigure}[t]{0.49\textwidth}
\raisebox{-\height}{\includegraphics[width=0.49\textwidth]{img3.png}}
\raisebox{-\height}{\includegraphics[width=0.49\textwidth]{img4.png}}%
\vspace{.6ex}
\raisebox{-\height}{\includegraphics[width=0.49\textwidth]{img5.png}}
\raisebox{-\height}{\includegraphics[width=0.49\textwidth]{img6.png}}
\caption{caption of the four small images\\second line\\third line}
\end{subfigure}
\hfill
\begin{subfigure}[t]{0.49\textwidth}
\raisebox{-\height}{\includegraphics[width=\textwidth]{img7.png}}
\caption{caption of last image\\second line}
\end{subfigure}
\caption{caption of main figure}
\end{figure}
\end{document}
答案2
我通常使用 subfloat 而不是 subfig,并且不嵌套它们。尝试以下 MWE 代码:
\usepackage{subfig}
%%%%%%%%%%%%
\begin{figure}[htb]
\caption{Caption of Figure}
\label{fig:figlabel}
\begin{center}
\subfloat[Subcaption a] {
\includegraphics[width=.45\linewidth]{image1}
}\quad
\subfloat[Subcaption b] {
\includegraphics[width=.45\linewidth]{image2}
}\\
\subfloat[Subcaption c] {
\includegraphics[width=.45\linewidth]{image3}
}\quad
\subfloat[Subcaption d] {
\includegraphics[width=.45\linewidth]{image4}
}
\end{center}
我通常使用\\
和\quad
分别设置垂直和水平间距。如果您希望每行有 3 张图片、每行有 1 张图片等,则可以相应地调整图形的宽度。
答案3
您的代码无法编译,所以我不确定我是否理解正确。您想要这个吗?
% arara: pdflatex
\documentclass[12pt,a4paper,twoside]{article}
\usepackage{subcaption}
\usepackage[demo]{graphicx}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}[t]{0.49\textwidth}
\includegraphics[width=\textwidth]{img1}
\caption{caption of first image}
\end{subfigure}
\hfill
\begin{subfigure}[t]{0.49\textwidth}
\includegraphics[width=\textwidth]{img2}
\caption{caption of second image}
\end{subfigure}
\begin{subfigure}[t]{0.49\textwidth}
\begin{subfigure}[t]{0.49\textwidth}
\includegraphics[width=\textwidth]{img3}
\end{subfigure}
%
\begin{subfigure}[t]{0.49\textwidth}
\includegraphics[width=\textwidth]{img4}
\end{subfigure}\vspace{.6ex}
\begin{subfigure}[t]{0.49\textwidth}
\includegraphics[width=\textwidth]{img5}
\end{subfigure}
%
\begin{subfigure}[t]{0.49\textwidth}
\includegraphics[width=\textwidth]{img6}
\end{subfigure}
\caption{caption of the four small images}
\end{subfigure}
\hfill
\begin{subfigure}[t]{0.49\textwidth}
\includegraphics[width=\textwidth]{img7}
\caption{caption of last image}
\end{subfigure}
\caption{caption of main figure}
\end{figure}
\end{document}
请注意,如果要换行,则必须留出一个空行。为此,我删除了您的 %%%%%。
此外,我从未见过[ht]
的限定词subfigure
。我不确定,但我猜想它不存在。