sublegenda - legenda ao lado da figura

sublegenda - legenda ao lado da figura

Estou tentando usar o subcaptionpacote (não subfig) para gerar os rótulos das subfiguras ao lado da figura.

Encontrei muitas perguntas semelhantes, mas todas as respostas (comoEste) usar subfige floatrow. Tentei usar floatrowwith subcaption(veja MWI abaixo), mas não consegui gerar o mesmo comportamento. o que estou perdendo?

O subcaptionmanual afirma explicitamente que

[f]ou um uso mais avançado do recurso de sublegenda do captionpacote, dê uma olhada no floatrowpacote

mas o floatrowmanual apenas dá um exemplo de legenda ao lado da figura usando subfig(p.75).

Portanto, qualquer ajuda é muito apreciada.

MWE:

\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}

Saída do MWE:

Saída do MWE

Responder1

Em vez de descobrir como fazer floatrowo trabalho, era mais fácil fingir.

Ressalta-se que a [t]opção subfigurerefere-se à primeira linha de base, e não ao topo absoluto, então o que ela faz é alinhar a parte inferior das imagens ao invés das legendas. Para alinhar os topos você precisa usar \raisebox. Na verdade, não há razão para colocar as imagens em subfiguras (apenas as legendas).

O \raiseboxobjetivo da legenda era produzir automaticamente um espaço entre as linhas.

\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}

demonstração


Deve-se observar que esta é apenas uma das muitas maneiras possíveis de formatar uma legenda lateral. O seguinte não usa o pacote subcaption. OTOH, ele também não escreve uma entrada \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}

informação relacionada