Texto de referência personalizado para (sub) rótulos (aqui para tcolorbox semelhante a subfigura)

Texto de referência personalizado para (sub) rótulos (aqui para tcolorbox semelhante a subfigura)

Pelas razõesfloats não podem ser aninhados em tcolorboxe quero que minha (sub)figura seja mais sofisticada, codifiquei ambientes novos Figuree Subfigurenewtcolorbox. Aqui está uma versão simplificada do meu 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}

com a saída

MWE

Gostei do resultado, mas gostaria que o texto fosse impresso Figure 1aem vez de Figure (a)e assim sem alterar o título da subfigura. Mais precisamente, eu poderia mudar o number freestyleargumento do newtcolorbox para ter 1acomo contador da minha subfigura, mas isso mudaria o título de (a) blablapara 1a blablao qual não quero.

Observe que eu uso hyperrefpackage mesmo que o tenha removido do meu Exemplo Mínimo de Trabalho.

Eu conheço umpergunta semelhantefoi perguntado, mas não sei o quão próximo da minha pergunta está, pois não entendo o que

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

está fazendo...

Responder1

Você pode alterar o formato da etiqueta usando \labelformat(vejaltnews30.pdfPara maiores informações):

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

insira a descrição da imagem aqui

BTW: eu sugeriria usar também cleverefem vez de definir o seu próprio arquivo \figref.

informação relacionada