![如何创建具有对齐自动标签和独立可对齐图形的并排子浮点数?](https://linux22.com/image/457235/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E5%85%B7%E6%9C%89%E5%AF%B9%E9%BD%90%E8%87%AA%E5%8A%A8%E6%A0%87%E7%AD%BE%E5%92%8C%E7%8B%AC%E7%AB%8B%E5%8F%AF%E5%AF%B9%E9%BD%90%E5%9B%BE%E5%BD%A2%E7%9A%84%E5%B9%B6%E6%8E%92%E5%AD%90%E6%B5%AE%E7%82%B9%E6%95%B0%EF%BC%9F.png)
下面这个简单但可能有点 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
。