подпись - подпись рядом с рисунком

подпись - подпись рядом с рисунком

Я пытаюсь использовать subcaptionпакет (нет subfig) для создания подписей подрисунков рядом с рисунком.

Я нашел много похожих вопросов, но все ответы (типаВот этот) использовать subfigи floatrow. Я пробовал использовать floatrowс subcaption(см. MWI ниже), но не смог сгенерировать то же самое поведение. Что я упускаю?

В subcaptionруководстве прямо указано, что

[Д]ля более расширенного использования функции субтитров пакета caption, пожалуйста, взгляните на floatrowпакет

но в floatrowруководстве приведен только пример подписи рядом с рисунком subfig(стр. 75).

Поэтому любая помощь будет высоко оценена.

МВЭ:

\documentclass{scrartcl}

\usepackage{graphicx}
\usepackage[font=footnotesize,figurewithin=none]{caption}
\usepackage{subcaption}
\captionsetup{subrefformat=parens} % will result in references (typeset with \ref) like  1a  but sub-references (typeset with\subref) like  (a)
\usepackage{floatrow}
\floatsetup[subfigure]{style=plain,subcapbesideposition=top}
%\usepackage{subfig} % not compatible with subcaption

\begin{document}

\begin{figure}
  \centering
  \begin{subfigure}[t]{0.7\textwidth}
    \centering
    \includegraphics[width=0.7\textwidth]{example-image-a}
    \caption{}
    \label{subfig:a}
  \end{subfigure}
  \\
  \begin{subfigure}[t]{0.49\textwidth}
    \centering
    \includegraphics[width=\textwidth]{example-image-b}
    \caption{}
    \label{subfig:b}
  \end{subfigure}
  \hfill
  \begin{subfigure}[t]{0.49\textwidth}
    \centering
     \includegraphics[width=\textwidth]{example-image-c}
    \caption{}
    \label{subfig:c}
  \end{subfigure}
  \caption{Caption for all subfigs: \subref{subfig:a},\subref{subfig:b}, \subref{subfig:c}}
  \label{fig}
\end{figure}

\end{document}

Выход МВЭ:

Выход МВЭ

решение1

Вместо того чтобы придумать, как заставить floatrowчто-то работать, было проще просто притвориться.

Следует отметить, что [t]опция subfigureотносится к первой базовой линии, а не к абсолютному верху, поэтому она выравнивает нижние края изображений вместо подписей. Чтобы выровнять верхние края, нужно использовать \raisebox. На самом деле, нет никаких причин помещать изображения в подрисунки вообще (только подписи).

Целью \raiseboxподписи было автоматически создавать зазор между строками.

\documentclass{scrartcl}

\usepackage{graphicx}
\usepackage[font=footnotesize,figurewithin=none]{caption}
\usepackage{subcaption}
\captionsetup{subrefformat=parens} % will result in references (typeset with \ref) like  1a  but sub-references (typeset with\subref) like  (a)
%\usepackage{subfig} % not compatible with subcaption

\newcommand{\sidecaption}[1]% #1 = label name
{\raisebox{\abovecaptionskip}{\begin{subfigure}[t]{1.6em}
  \caption[singlelinecheck=off]{}% do not center
  \label{#1}
\end{subfigure}}\ignorespaces}

\begin{document}

\begin{figure}
  \centering
  \sidecaption{subfig:a}
  \raisebox{-\height}{\includegraphics[width=0.45\textwidth]{example-image-a}}

  \sidecaption{subfig:b}
  \raisebox{-\height}{\includegraphics[width=0.45\textwidth]{example-image-b}}%
  \hfill
  \sidecaption{subfig:c}
  \raisebox{-\height}{\includegraphics[width=0.45\textwidth]{example-image-c}}
  \caption{Caption for all subfigs: \subref{subfig:a},\subref{subfig:b}, \subref{subfig:c}}
  \label{fig}
\end{figure}

\end{document}

демо


Следует отметить, что это только один из многих возможных способов форматирования боковой подписи. Следующий пример вообще не использует пакет subcaption. С другой стороны, он не пишет запись ни для того, ни для \listoffiguresдругого.

\newcounter{subfigure}[figure]% not needed with subcaption
\renewcommand{\thesubfigure}{\alph{subfigure}}

\newcommand{\sidecaption}[1]% #1 = label name
{\rule{0pt}{\abovecaptionskip}% create gap between rows
  \refstepcounter{subfigure}%
  \raisebox{-\height}{(\thesubfigure)~}% align
  \label{#1}\ignorespaces}

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