Texto de referencia personalizado para (sub)etiquetas (aquí para tcolorbox similar a una subfigura)

Texto de referencia personalizado para (sub)etiquetas (aquí para tcolorbox similar a una subfigura)

Por las razoneslos flotadores no se pueden anidar en tcolorboxy quiero que mi (sub)figura sea más elegante, codifiqué entornos nuevos Figurey Subfigurenewtcolorbox. Aquí hay una versión simplificada de mi código.

\documentclass[12pt,a4paper]{book}
\usepackage{lipsum}
\usepackage[skins, breakable]{tcolorbox}


\newcommand{\figref}[1]{Figure \ref{fig:#1}}

\newtcolorbox[auto counter]{Figure}[1]{
    title = {Figure~\thetcbcounter~$-$ #1}
    }
    
\newtcolorbox[
        auto counter,
        number within=tcb@cnt@Figure,
        number freestyle = {(\noexpand\alph{\tcbcounter})}
        ]
        {Subfigure}[3][]{
    width = (\linewidth - 4\dimexpr (#2pt - 1pt)\relax)/#2,
    before =,
    after = \hfill,
    box align = center,
    title = {\thetcbcounter~#3},
    #1
    }


\begin{document}

\begin{Figure}
    {Title figure}
    \begin{Subfigure}[label={fig:a}]{2}
        {Title again}
        \lipsum[1]
    \end{Subfigure}%
    %
    \begin{Subfigure}{2}
        {A nice Subfigure}
        \lipsum[2]
    \end{Subfigure}
\end{Figure}


See \figref{a}.

\end{document}

con la salida

MWE

Me gusta el resultado, pero me gustaría que se imprimiera el texto Figure 1aen lugar de Figure (a)y así sin cambiar el título de la subfigura. Más precisamente, podría cambiar el number freestyleargumento de newtcolorbox para que tenga 1acomo contador de mi subfigura, pero esto cambiaría el título del (a) blablaque 1a blablano quiero.

Tenga en cuenta que uso hyperrefel paquete incluso si lo eliminé de mi Ejemplo de trabajo mínimo.

Yo sé unpregunta similarse ha preguntado, pero no sé qué tan cerca está de mi pregunta ya que no entiendo qué

\makeatletter
\newcommand{\customlabel}[2]{%
\protected@write \@auxout {}{\string \newlabel {#1}{{#2}{}}}}
\makeatother

está haciendo...

Respuesta1

Puede cambiar el formato de la etiqueta usando \labelformat(verltnews30.pdfpara más información):

\documentclass[12pt,a4paper]{book}
\usepackage{lipsum}
\usepackage[skins, breakable]{tcolorbox}


\newcommand{\figref}[1]{Figure \ref{fig:#1}}

\newtcolorbox[auto counter]{Figure}[1]{
    title = {Figure~\thetcbcounter~$-$ #1}
    }
    
\newtcolorbox[
        auto counter,
        number within=tcb@cnt@Figure,
        number freestyle = {(\noexpand\alph{\tcbcounter})}
        ]
        {Subfigure}[3][]{
    width = (\linewidth - 4\dimexpr (#2pt - 1pt)\relax)/#2,
    before =,
    after = \hfill,
    box align = center,
    title = {\thetcbcounter~#3},
    #1
    }

\labelformat{tcb@cnt@Subfigure}{\arabic{tcb@cnt@Figure}\alph{tcb@cnt@Subfigure}}

\begin{document}

\begin{Figure}
    {Title figure}
    \begin{Subfigure}[label={fig:a}]{2}
        {Title again}
        \lipsum[1]
    \end{Subfigure}%
    %
    \begin{Subfigure}{2}
        {A nice Subfigure}
        \lipsum[2]
    \end{Subfigure}
\end{Figure}


See \figref{a}.

\end{document}

ingrese la descripción de la imagen aquí

Por cierto: sugeriría utilizar también cleverefen lugar de definir el suyo propio \figref.

información relacionada