下面这个简单但可能有点 hack 的例子可以让我
- 将两个图形并排放置在浮动环境中。
- 为图形分配符号标签,以便我可以在文本中引用它们。
- 在每个图形的左上角打印文本标签,以便读者可以看到我所指的内容。
- 打印一个图形标题来解释所有子图。
但是,有一个问题:只有当图形(或更准确地说是子图)垂直顶部对齐时,文本标签才会垂直对齐。不过,有些图形对在居中或底部对齐时看起来会更好。如何在更改图形对齐方式的同时保留标签的位置?
我在科学文章中经常看到这种样式的图片(并排显示,左上角有标签,标题统一)。如果图片有多列多行,情况会变得更加复杂,而且这些图片总是以某种方式被标记和对齐。有没有既定的方法或软件包来实现这种布局,我可以用它来代替我的临时解决方案?
\documentclass{article}
\usepackage{graphicx}
\usepackage[labelfont=bf, singlelinecheck=false]{subcaption}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}[t]{0.49\linewidth}
\centering
\caption{}\label{fig:example_t1}
\includegraphics[width=\linewidth]{example-image}
\end{subfigure}
\begin{subfigure}[t]{0.49\linewidth}
\centering
\caption{}\label{fig:example_t2}
\includegraphics[width=0.8\linewidth]{example-image}
\end{subfigure}
\caption{Examples graphics that look nice if they are top aligned. \textbf{(a)} A first example with a long and detailed description. \textbf{(b)} A second example with a long and detailed description.}\label{fig:examples_t}
\end{figure}
\begin{figure}
\centering
\begin{subfigure}[b]{0.49\linewidth}
\centering
\caption{}\label{fig:example_b1}
\includegraphics[width=\linewidth]{example-image}
\end{subfigure}
\begin{subfigure}[b]{0.49\linewidth}
\centering
\caption{}\label{fig:example_b2}
\includegraphics[width=0.8\linewidth]{example-image}
\end{subfigure}
\caption{Examples graphics that look nice if they are bottom aligned. \textbf{(a)} A first example with a long and detailed description. \textbf{(b)} A second example with a long and detailed description.}\label{fig:examples_b}
\end{figure}
\end{document}
答案1
我看到了两种简单的方法可以完成您想要的操作:第一种方法是手动调整包含图像+标题的框的高度,并在标题下方添加一些间距(使用\vfill
);第二种方法是将标题放在子图之外的同一行上。
选项 1 不太好,因为你必须猜测最高图像的大致尺寸(在本例中为12\baselineskip
):
\documentclass{article}
\usepackage{graphicx}
\usepackage[labelfont=bf, singlelinecheck=false]{subcaption}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}[b][12\baselineskip]{0.49\linewidth}
\centering
\caption{}\label{fig:example_b1}
\vfill
\includegraphics[width=\linewidth]{example-image}
\end{subfigure}
\begin{subfigure}[b][12\baselineskip]{0.49\linewidth}
\centering
\caption{}\label{fig:example_b2}
\vfill
\includegraphics[width=0.8\linewidth]{example-image}
\end{subfigure}
\caption{Examples graphics that look nice if they are bottom aligned. \textbf{(a)} A first example with a long and detailed description. \textbf{(b)} A second example with a long and detailed description.}\label{fig:examples_b}
\end{figure}
\end{document}
选项 2 不太好,因为它迫使我们使用\parbox
并重复图像的宽度,还因为我们需要补偿子图周围的填充(用\par\vspace{-1.5\baselineskip
):
\documentclass{article}
\usepackage{graphicx}
\usepackage[labelfont=bf, singlelinecheck=false]{subcaption}
\begin{document}
\begin{figure}
\centering
\parbox{.49\linewidth}{\subcaption{\label{fig:example_b1}}}
\parbox{.49\linewidth}{\subcaption{\label{fig:example_b2}}}
\par\vspace{-1.5\baselineskip}
\begin{subfigure}[b][12\baselineskip]{0.49\linewidth}
\centering
\includegraphics[width=\linewidth]{example-image}
\end{subfigure}
\begin{subfigure}[b][12\baselineskip]{0.49\linewidth}
\centering
\includegraphics[width=0.8\linewidth]{example-image}
\end{subfigure}
\caption{Examples graphics that look nice if they are bottom aligned. \textbf{(a)} A first example with a long and detailed description. \textbf{(b)} A second example with a long and detailed description.}\label{fig:examples_b}
\end{figure}
\end{document}
\label
顺便说一句,我认为将图形/表格放在相应的里面总是一个好主意\caption
。