.png)
Я пытаюсь расположить два ряда подрисунков с помощью subfig
и floatrow
. Подписи выровнены так, как я хочу, и вертикальное выравнивание объектов тоже в порядке. Однако я не могу понять, как сделать горизонтальный интервал между подрисунками равным. В нижнем ряду проблем нет: 2 рисунка с некоторым пространством между ними. Отлично. Однако в верхнем ряду между первыми двумя рисунками больше пространства, чем между вторым и третьим. И я не могу понять, почему.
Что я упускаю?
\documentclass{article}
\usepackage{graphicx,subfig}
\usepackage[heightadjust=all,valign=c]{floatrow}
\usepackage{fr-subfig}
\begin{document}
\begin{figure}[!htbp]
\captionsetup[subfigure]{justification=centering}
\floatbox{figure}{%
\caption{%
Components of the system: Penguins (\ref{fig:a}), Jumpers (\ref{fig:b}), Thingies (\ref{fig:c}), Cabbages (\ref{fig:d}) and Nuclear Warheads (\ref{fig:e})%
}\label{fig:x}%
}{%
\begin{subfloatrow}%
\subfloat[Penguins were here and here and here]{%
\includegraphics[height=.1\textheight]{example-image-a}\label{fig:a}}
\qquad
\subfloat[Penguin]{%
\includegraphics[height=.15\textheight]{example-image-b}\label{fig:b}}
\qquad
\subfloat[Penguin]{%
\includegraphics[height=.125\textheight]{example-image-a}\label{fig:c}}
\end{subfloatrow}
\begin{subfloatrow}
\subfloat[Penguin]{%
\includegraphics[height=.15\textheight]{example-image-b}\label{fig:d}}
\qquad
\subfloat[Penguins were here, there and everywhere!]{%
\includegraphics[height=.2\textheight]{example-image-a}\label{fig:e}}
\end{subfloatrow}}
\end{figure}
\end{document}
Обратите внимание, что я знаю об альтернативах subfig
. Если для не будет решения subfig
, я что-нибудь взломаю сейчас и рассмотрю другие варианты на будущее.
решение1
Обновлять
Клавиши subfloatrowsep
, floatrowsep
позволяют вам управлять горизонтальным разделением между подпоплавками (поплавками) при использовании floatrow; однако, простое использование чего-то вроде
\thisfloatsetup{subfloatrowsep=qquad}
в вашем текущем коде будетнетпроизведите желаемый результат, так как вы используете \subfloat
(из subfig
пакета). Решение заключается в том, чтобы не использовать \subfloat
и использовать вместо этого floatrow
's \ffigbox
. Это делает
\thisfloatsetup{subfloatrowsep=qquad}
ведет себя так, как и ожидалось, а также решает проблему со счетчиками (подробнее обсуждается вКак добиться правильной маркировки подрисунков с помощью subfig и floatrow?).
\documentclass{article}
\usepackage{graphicx,subfig}
\usepackage[heightadjust=all,valign=c]{floatrow}
\usepackage{fr-subfig}
\begin{document}
\thisfloatsetup{subfloatrowsep=qquad}
\begin{figure}[!htbp]
\captionsetup[subfigure]{justification=centering}
\ffigbox{%
\begin{subfloatrow}[3]%
\ffigbox[\FBwidth]{\caption{Penguins were here and here and here}\label{fig:a}}{%
\includegraphics[height=.1\textheight]{example-image-a}}
\ffigbox[\FBwidth]{\caption{Penguin}\label{fig:b}}{%
\includegraphics[height=.15\textheight]{example-image-b}}
\ffigbox[\FBwidth]{\caption{Penguin}\label{fig:c}}{%
\includegraphics[height=.125\textheight]{example-image-a}}
\end{subfloatrow}
\begin{subfloatrow}
\ffigbox[\FBwidth]{\caption{Penguin}\label{fig:d}}{%
\includegraphics[height=.15\textheight]{example-image-b}}
\ffigbox[\FBwidth]{\caption{Penguins were here, there and everywhere!}\label{fig:e}}{%
\includegraphics[height=.2\textheight]{example-image-a}}
\end{subfloatrow}%
}{%
\caption{Components of the system: Penguins (\ref{fig:a}), Jumpers (\ref{fig:b}), Thingies (\ref{fig:c}), Cabbages (\ref{fig:d}) and Nuclear Warheads (\ref{fig:e})\label{fig:x}}%
}
\end{figure}
\end{document}
Выход:
Первоначальная версия
У меня также возникли проблемы с горизонтальным позиционированием фигур с помощью клавиш , floatrow
и они не всегда ведут себя так, как ожидалось.floatrowsep
subfloatrowsep
Один из вариантов, который, как я обнаружил, работает в проблемных случаях, — это убрать разделение по умолчанию с помощью , subfloatrowsep=none
а затем использовать \quad
или любую другую команду интервала, чтобы вручную управлять разделением (можно было бы подумать, что subfloatrowsep=quad
это будет делаться автоматически, но это не всегда так). В любом случае, мое предложение:
\documentclass{article}
\usepackage{graphicx,subfig}
\usepackage[heightadjust=all,valign=c]{floatrow}
\usepackage{fr-subfig}
\begin{document}
\thisfloatsetup{subfloatrowsep=none}
\begin{figure}[!htbp]
\captionsetup[subfigure]{justification=centering}
\floatbox{figure}{%
\caption{%
Components of the system: Penguins (\ref{fig:a}), Jumpers (\ref{fig:b}), Thingies (\ref{fig:c}), Cabbages (\ref{fig:d}) and Nuclear Warheads (\ref{fig:e})%
}\label{fig:x}%
}{%
\begin{subfloatrow}%
\subfloat[Penguins were here and here and here]{%
\includegraphics[height=.1\textheight]{example-image-a}\label{fig:a}}%
\qquad
\subfloat[Penguin]{%
\includegraphics[height=.15\textheight]{example-image-b}\label{fig:b}}
\qquad
\subfloat[Penguin]{%
\includegraphics[height=.125\textheight]{example-image-a}\label{fig:c}}
\end{subfloatrow}
\begin{subfloatrow}
\subfloat[Penguin]{%
\includegraphics[height=.15\textheight]{example-image-b}\label{fig:d}}
\qquad
\subfloat[Penguins were here, there and everywhere!]{%
\includegraphics[height=.2\textheight]{example-image-a}\label{fig:e}}
\end{subfloatrow}}
\end{figure}
\end{document}