LaTeX 中,“subfigure”和“subcaption”之间的“\vspace{-number cm}”以反向方式工作

LaTeX 中,“subfigure”和“subcaption”之间的“\vspace{-number cm}”以反向方式工作

有时我需要减少子图和子标题之间的空间,所以我会插入\vspace{-number cm}来做到这一点。但是,这会增加空间。

\documentclass{article}
\usepackage{lipsum,graphicx}
\usepackage{caption,subcaption}
\begin{document}
\lipsum[1]\par
\begin{figure}
\begin{subfigure}{0.5\textwidth}
\includegraphics[width=1\textwidth]{example-image-a}
\vspace*{-0.2cm}
\caption{Test1}
\end{subfigure}\hfill
\begin{subfigure}{0.5\textwidth}
\includegraphics[width=1\textwidth]{example-image-a}
\vspace*{-0.2cm}
\caption{Test2}
\end{subfigure}\\
\begin{subfigure}{0.5\textwidth}
\includegraphics[width=1\textwidth]{example-image-a}
\caption{Test3}
\end{subfigure}\hfill
\begin{subfigure}{0.5\textwidth}
\includegraphics[width=1\textwidth]{example-image-a}
\caption{Test4}
\end{subfigure}\\
\end{figure}
\lipsum[2]
\end{document}

在此处输入图片描述

这很奇怪。我应该如何减少子图和子标题之间的间距?

谢谢。

答案1

当插入图像时,LaTeX 会启动水平模式\includegraphic。即图像是段落的第一个字母。然后从行 a 的末尾开始有一个空格,\vadjust这是宏使用的原始内容\vspace。然后\caption使用结束段落\par并开始一个新段落。

图像的宽度恰好等于当前\hsize值,因此图像和之间的空间\vadjust是良好的喙点,段落在此处中断。因此,第一行有图像,第二行(不需要的)\vadjust有粘连。在此行之后,插入来自(即)\parfillskip的材料。\vadjust\vskip-0.2cm

如果删除图像和之间的空格\vadjust,即写入:

\includegraphics[width=1\textwidth]{example-image-a}%

(注意百分比字符),然后以下内容\vadjust紧跟在图像之后,并且只创建单行段落,这里没有不需要的行。

另一个解决方案:使用\vskip-0.2cm原始宏而不是\vspace宏。此原始宏插入\par在它之前,即段落最终确定为仅包含图像的单字母段落,并且此处没有不需要的行。这是因为\par原始宏从水平列表中删除了最后一个粘连(此处插入的粘连来自行尾的空格)。

\vskip我建议总是使用它\vspace,因为\vspace它带来的麻烦少得多:\vskip不会插入任何晦涩难懂的内容\vadjust,而且水平模式在之前就已完成,\vskip这是一种更容易理解的行为。

请注意,您的代码中还有另一个错误:代码中的最后一个\\在段落末尾使用,它由四个“字母”组成:subfigure、subfigure、break、subfigue、subfigure。在这种情况下,它的\\工作方式类似\vfil\break。如果它在段落末尾使用,则会创建一个新的不需要的未满空行,并打印“未满 hbox”警告消息,如您在日志文件中看到的那样。

答案2

减少子图和子标题之间空间的正确工具正在作用于设置。\vspace此处的命令不合适。

使用空行而不是\\。代码将更具可读性且更易于维护。我还在两行子图之间添加了一些垂直分隔。

\documentclass{article}
\usepackage{lipsum,graphicx}
\usepackage{caption,subcaption}

\begin{document}

\lipsum[1]

\begin{figure}[htp]
\captionsetup[subfigure]{skip=2pt}

\begin{subfigure}{0.5\textwidth}
\includegraphics[width=1\textwidth]{example-image-a}
\caption{Test1}
\end{subfigure}\hfill
\begin{subfigure}{0.5\textwidth}
\includegraphics[width=1\textwidth]{example-image-a}
\caption{Test2}
\end{subfigure}

\bigskip

\begin{subfigure}{0.5\textwidth}
\includegraphics[width=1\textwidth]{example-image-a}
\caption{Test3}
\end{subfigure}\hfill
\begin{subfigure}{0.5\textwidth}
\includegraphics[width=1\textwidth]{example-image-a}
\caption{Test4}
\end{subfigure}

\end{figure}

\lipsum[2]

\end{document}

在此处输入图片描述

相关内容