Пользовательский справочный текст для (под)меток (здесь для tcolorbox, похожего на подрисунок)

Пользовательский справочный текст для (под)меток (здесь для tcolorbox, похожего на подрисунок)

По причинамплавающие элементы не могут быть вложены в tcolorboxи я хочу, чтобы моя (под)фигура была более нарядной, я закодировал новые Figureи Subfigurenewtcolorbox среды. Вот упрощенная версия моего кода

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

с выходом

МВЭ

Мне нравится результат, но я бы хотел, чтобы текст печатался Figure 1aвместо Figure (a)и так без изменения заголовка подрисунка. Точнее, я мог бы изменить аргумент number freestylenewtcolorbox, чтобы иметь 1aв качестве счетчика моего подрисунка, но это изменило бы заголовок с (a) blablaна 1a blabla, что мне не нужно.

Обратите внимание, что я использую hyperrefpackage, даже если удалил его из своего минимального рабочего примера.

Я знаюаналогичный вопросбыл задан, но я не знаю, насколько он близок к моему вопросу, так как я не понимаю, о чем идет речь.

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

делается...

решение1

Вы можете изменить формат этикетки, используя \labelformat(см.ltnews30.pdfЧтобы получить больше информации):

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

введите описание изображения здесь

Кстати: я бы также предложил использовать cleverefвместо определения своего собственного \figref.

Связанный контент