有时我需要减少子图和子标题之间的空间,所以我会插入\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}