Variante de `\crefstripprefix` manteniendo el paréntesis de apertura

Variante de `\crefstripprefix` manteniendo el paréntesis de apertura

El \crefrangecomando del cleverefpaquete transforma las referencias cruzadas simultáneas a los objetos 1a, 1b y 1c como un rango 1a–1c, y se puede ajustar aún más con \crefstripprefixpara eliminar el prefijo común (aquí, 1, lo que da 1a–c).

Utilizo referencias de subfloats en el formato 1(a), 1(b), 1(c), y al usar la función anterior se obtiene1(a)–c); tenga en cuenta el paréntesis de apertura antes de que se haya eliminado la c porque es común con la primera etiqueta.

¿Existe alguna solución para conseguir1(a)–(c)? Supongo que lo mejor sería una modificación de \crefstripprefix, para que no elimine los delimitadores de apertura; Mi conocimiento de TeX es demasiado pobre para escribirlo yo mismo. Como discusión paralela, ¿alguien vería un inconveniente en hacer de este el comportamiento predeterminado?

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{floatrow}
\usepackage{subcaption}

% define subfigure label 
\captionsetup[subfloat]{labelformat=simple}
\renewcommand\thesubfigure{(\alph{subfigure})}

\usepackage{cleveref}
\crefrangelabelformat{figure}{#3#1#4--#5\crefstripprefix{#1}{#2}#6}

\begin{document}

\begin{figure}
\ffigbox[\textwidth]{
\begin{subfloatrow}[3]
\ffigbox[\FBwidth]{\includegraphics[height=2cm,width=2cm]{}}{\caption{subcap}\label{sfig:a}}
\ffigbox[\FBwidth]{\includegraphics[height=2cm,width=2cm]{}}{\caption{subcap}\label{sfig:b}}
\ffigbox[\FBwidth]{\includegraphics[height=2cm,width=2cm]{}}{\caption{subcap}\label{sfig:c}}
\end{subfloatrow}
}{\caption{cap}\label{fig:1}}
\end{figure} 
%
\begin{figure}[h]
\includegraphics[height=2cm,width=2cm]{}
\caption{cap}\label{fig:2}
\end{figure}
%
\begin{figure}[h]
\includegraphics[height=2cm,width=2cm]{}
\caption{cap}\label{fig:3}
\end{figure}

\crefrange{fig:1}{fig:3}

\crefrange{sfig:a}{sfig:c}
\end{document}

Respuesta1

Después de jugar, parece que, al menos con el mecanismo floatrow/ subcaptionde mi MWE, las etiquetas para las subfiguras son en realidad del tiposubfigura. Esto sugiere tratar de manera diferente el formato de etiqueta paracifraysubfigura. Sin embargo, simplemente agregando

\crefrangelabelformat{subfigure}{%
    #3#1#4--#5(\crefstripprefix{#1}{#2}#6
} % note the additional opening parenthesis after #5

no es suficiente: las etiquetas de misubfiguraLas referencias todavía se comportan como las etiquetas delcifrareferencias. Por alguna razón, agregando también

\crefname{subfigure}{figure}{figures}

finalmente hace que las subfiguras tengan un formato de etiqueta propio (¿esto de alguna manera “oficializa” elsubfigura¿tipo de referencia? no tengo idea de lo que pasa).

Aunque esto logra lo que estaba buscando, todavía siento que parchear \crefstripprefixpara que no elimine los delimitadores de apertura sería una solución más satisfactoria.

información relacionada