
Estoy intentando utilizar el subcaption
paquete (no subfig
) para generar las etiquetas de las subfiguras al lado de la figura.
He encontrado muchas preguntas similares, pero todas las respuestas (comoÉste) uso subfig
y floatrow
. Intenté usar floatrow
with subcaption
(ver MWI a continuación), pero no pude generar el mismo comportamiento. ¿Qué me estoy perdiendo?
El subcaption
manual establece explícitamente que
[f]para un uso más avanzado de la función de subtítulos del
caption
paquete, eche un vistazo alfloatrow
paquete
pero el floatrow
manual sólo da un ejemplo de un título al lado de la figura usando subfig
(p.75).
Así que cualquier ayuda es muy 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}
Producción de MWE:
Respuesta1
En lugar de descubrir cómo hacer que floatrow
funcionara, era más fácil fingir.
Cabe señalar que la [t]
opción de subfigure
se refiere a la primera línea base, no a la parte superior absoluta, por lo que lo que hace es alinear las partes inferiores de las imágenes en lugar de los pies de foto. Para alinear las partes superiores necesitas usar \raisebox
. De hecho, no hay ninguna razón para poner las imágenes en subfiguras (solo los títulos).
El \raisebox
objetivo del título era producir automáticamente un espacio entre filas.
\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}
Cabe señalar que esta es sólo una de las muchas formas posibles de formatear un título lateral. Lo siguiente no utiliza el paquete de subtítulos en absoluto. OTOH, tampoco escribe una entrada para ninguno de los \listoffigures
dos.
\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}