我编写了一个python脚本,并生成了一个latex脚本,其中使用\subcaption排列了多幅图像。核心代码:
....
\usepackage{subcaption}
....
\begin{figure}
\begin{subfigure}[31]{0.2\textwidth}
\includegraphics[width = \textwidth, height = \textwidth]
{ly1_31.jpg}
\caption{Channel 31}
\label{fig: 31}
\end{subfigure}
\begin{subfigure}[97]{0.2\textwidth}
\includegraphics[width = \textwidth, height = \textwidth]
{ly1_97.jpg}
\caption{Channel 97}
\label{fig: 97}
\end{subfigure}
.......
\caption{ Features maps manually selected from 512 maps }
\label{fig}
\end{figure}
子图的代码除了 python 生成的通道号和文件名不同外,其他都一样。这里我有 14 张 .jpg 图片。最后一行图片之间的空白宽度明显比前三行短。(最后一行不够满。)我该如何控制该空白的宽度?
而且我也不确定空白的宽度是否是我{0.2\textwidth}
在第 5 行及以后的行设置但当行已满时一行只能获得 4 幅图像的原因。(我想是的,但有详细解释吗?)
有一张图片放错了位置(通道 227)。我确定我的 tex 文件中没有“7b”。所有图片大小相同。那么问题出在哪里?
欢迎任何想法。
答案1
这是一个重现您的问题的最小示例:
\documentclass{article}
\usepackage{subcaption}
\usepackage{graphicx}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}[31]{0.2\textwidth}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}
\begin{subfigure}[227]{0.2\textwidth}
\includegraphics[width = \textwidth]{example-image-b}
\caption{Channel 227}\label{fig:227}
\end{subfigure}
\end{figure}
\end{document}
错误在于使用的语法错误:可选参数应该\begin{subfigure}
是单个字符之间 b
,c
或者 t
。
修复:删除错误的位
\documentclass{article}
\usepackage{subcaption}
\usepackage{graphicx}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}{0.2\textwidth}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}
\begin{subfigure}{0.2\textwidth}
\includegraphics[width = \textwidth]{example-image-b}
\caption{Channel 227}\label{fig:227}
\end{subfigure}
\end{figure}
\end{document}
会发生什么?
代码会\begin{subfigure}
检查是否提供了可选参数,否则假定提供了b
;然后它会执行如下代码
\if<optional argument>b%
<code when test returns true>%
\else
<code when test returns false>%
\fi
在这种227
情况下,文本变为
\if227b
<code when test returns true>%
\else
<code when test returns false>%
\fi
测试返回真的因为\if
比较接下来的两个不可扩展标记,在本例中为2
和2
。根据规则,<true code>
紧接着测试之后开始,并结束于\else
(\fi
如果没有\else
出现或),因此在本例中它也包含7b
。
如何让每行有五张图片且不留空格?
您应该删除由 之后的行尾生成的两个子图之间的空格\end{subfigure}
。
您可以利用 TeX 删除控制序列后的空格这一事实:
\documentclass{article}
\usepackage{subcaption}
\usepackage{graphicx}
\newcommand{\subfiguresep}{\hspace{0pt}}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}{0.2\textwidth}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{0.2\textwidth}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{0.2\textwidth}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{0.2\textwidth}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{0.2\textwidth}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{0.2\textwidth}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{0.2\textwidth}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{0.2\textwidth}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{0.2\textwidth}
\includegraphics[width = \textwidth]{example-image-b}
\caption{Channel 227}\label{fig:227}
\end{subfigure}\subfiguresep
\end{figure}
\end{document}
允许\hspace{0pt}
换行,不添加空格。如果您希望最后一行左对齐,请使用\raggedright
而不是\centering
。
如果你希望子图之间有一些空间,你可以这样做
\documentclass{article}
\usepackage{subcaption}
\usepackage{graphicx}
\newcommand{\subfiguresep}{\hspace{2pt}}
\captionsetup[subfigure]{font=footnotesize}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}{\dimexpr 0.2\textwidth-8pt}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{\dimexpr 0.2\textwidth-8pt}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{\dimexpr 0.2\textwidth-8pt}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{\dimexpr 0.2\textwidth-8pt}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{\dimexpr 0.2\textwidth-8pt}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{\dimexpr 0.2\textwidth-8pt}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{\dimexpr 0.2\textwidth-8pt}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{\dimexpr 0.2\textwidth-8pt}
\includegraphics[width = \textwidth]{example-image-a}
\caption{Channel 31}\label{fig:31}
\end{subfigure}\subfiguresep
\begin{subfigure}{\dimexpr 0.2\textwidth-8pt}
\includegraphics[width = \textwidth]{example-image-b}
\caption{Channel 227}\label{fig:227}
\end{subfigure}\subfiguresep
\end{figure}
\end{document}
请注意,我必须减小子标题的字体大小,否则它会超出图像宽度。