我试图将多个子图排成一行,并在其左侧显示各自的子标题。我在 LaTeX 论坛上找到了一个有用的答案\parbox
,但子标题不是垂直居中的,即使我将其设置c
为位置参数。我猜是因为第一个 subcaption-parbox 与 graphics-parbox 的高度尺寸不同。我该如何实现?
\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{subcaption}
\begin{document}
\begin{figure}
\captionsetup[subfigure]{slc=off,margin={1cm,0cm}}
\parbox[m]{0.4\textwidth}{\subcaption{A subfigure}}
\parbox[b]{0.5\textwidth}{\includegraphics[width=\hsize]{image1}}\\
\parbox[m]{0.4\textwidth}{\subcaption{Another subfigure}}
\parbox[b]{0.5\textwidth}{\includegraphics[width=\hsize]{image3}}\\
\parbox[m]{0.4\textwidth}{\subcaption{A third subfigure}}
\parbox[b]{0.5\textwidth}{\includegraphics[width=\hsize]{image3}}\\
\caption{A collection of subfigures}
\end{figure}
\end{document}
我还接受不包括的其他建议\parbox
。
提前致谢 :)
答案1
如果您想要中间对齐,中间对齐应该可以工作,但是您还需要调整每个图像的基线以进行顶部或底部对齐。
因此,我会另外加载adjustbox
带有额外可选参数的包valign
,该参数控制基线——请确保添加包选项[export]
。
可选justification=...
控制\captionsetup
标题的水平对齐;它接受raggedright
、raggedleft
或centering
等等。
以下是稍微改变的代码:
\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{subcaption}
\usepackage[export]{adjustbox}
\usepackage{xcolor}
\begin{document}
\begin{figure}[tbh]
\setkeys{Gin}{width=0.5\linewidth}
\captionsetup{position=bottom,skip=15pt}
\captionsetup[subfigure]{
justification=raggedright,
singlelinecheck=no,
format=hang,
belowskip=0pt,
aboveskip=0pt,
%margin={1cm,0cm},
}
\centering
\begin{subcaptiongroup}
\parbox[t]{0.4\textwidth}{\caption{A subfigure}}%
\hspace{1em}%
\includegraphics[valign=T]{image1}
\bigskip
\parbox{0.4\textwidth}{\caption{Another subfigure. Another subfigure. Another subfigure}}%
\hspace{1em}%
\includegraphics[valign=c]{image3}
\bigskip
\parbox[b]{0.4\textwidth}{\caption{A third subfigure}}%
\hspace{1em}%
\includegraphics[valign=B]{image3}
\par
\end{subcaptiongroup}
\caption{A collection of subfigures}
\end{figure}
\end{document}
答案2
此代码应该可以完成您想要的操作:
\documentclass[11pt]{article}
\usepackage[demo]{graphicx}
\usepackage{subcaption}
\captionsetup[subfigure]{justification=centerlast}
\usepackage{floatrow}
\floatsetup[subfigure]{style=BOXED,capbesideposition={left,center}} % change style to style=plain to remove the boxes
\begin{document}
\begin{figure}
\ffigbox
{
\begin{subfloatrow}
\fcapside[\FBwidth]{\caption{A subfigure}}{\includegraphics[width=0.45\textwidth]{example=image-a.png}}
\end{subfloatrow}
\begin{subfloatrow}
\fcapside[\FBwidth]{\caption{A subfigure}}{\includegraphics[width=0.45\textwidth]{example=image-a.png}}
\end{subfloatrow}
\begin{subfloatrow}
\fcapside[\FBwidth]{\caption{A subfigure}}{\includegraphics[width=0.45\textwidth]{example=image-a.png}}
\end{subfloatrow}
}
{\caption{A collection of subfigures}}
\end{figure}
\end{document}