
Я пишу скрипт на 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. И ширина пустого пространства между изображениями в последней строке, очевидно, короче, чем в предыдущих 3 строках. (Последняя строка не полная.) Как я могу контролировать ширину этого пространства?
И я также не уверен, является ли ширина пустого пространства причиной того, что я устанавливаю {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}
Обратите внимание, что мне пришлось уменьшить размер шрифта для субтитров, иначе они бы превысили ширину изображения.