Горизонтальное расстояние между подэлементами с использованием floatrow и subfig (с поддержкой fr-subfig)

Горизонтальное расстояние между подэлементами с использованием floatrow и subfig (с поддержкой fr-subfig)

Я пытаюсь расположить два ряда подрисунков с помощью subfigи floatrow. Подписи выровнены так, как я хочу, и вертикальное выравнивание объектов тоже в порядке. Однако я не могу понять, как сделать горизонтальный интервал между подрисунками равным. В нижнем ряду проблем нет: 2 рисунка с некоторым пространством между ними. Отлично. Однако в верхнем ряду между первыми двумя рисунками больше пространства, чем между вторым и третьим. И я не могу понять, почему.

5 подфигур в 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и они не всегда ведут себя так, как ожидалось.floatrowsepsubfloatrowsep

Один из вариантов, который, как я обнаружил, работает в проблемных случаях, — это убрать разделение по умолчанию с помощью , 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}

введите описание изображения здесь

Связанный контент