Benutzerdefinierter Referenztext für (Unter-)Beschriftungen (hier für unterabbildungsähnliche tcolorboxen)

Benutzerdefinierter Referenztext für (Unter-)Beschriftungen (hier für unterabbildungsähnliche tcolorboxen)

Aus den GründenFloats können nicht in Tcolorbox verschachtelt werdenund ich möchte, dass meine (Unter-)Figur schicker wird, ich habe neue Figureund Subfigureneue Colorbox-Umgebungen programmiert. Hier ist eine vereinfachte Version meines Codes

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

mit der Ausgabe

MWE

Das Ergebnis gefällt mir, aber ich möchte den Text Figure 1astatt Figure (a)und drucken, ohne den Titel der Unterabbildung zu ändern. Genauer gesagt könnte ich das number freestyleArgument von newtcolorbox ändern, um 1aals Zähler meiner Unterabbildung zu haben, aber dies würde den Titel von (a) blablain ändern 1a blabla, was ich nicht möchte.

Beachten Sie, dass ich das Paket verwende, hyperrefauch wenn ich es aus meinem minimalen Arbeitsbeispiel entfernt habe.

Ich kenne eineähnliche Fragewurde gefragt, aber ich weiß nicht, wie nah es an meiner Frage ist, da ich nicht verstehe, was

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

macht gerade...

Antwort1

Sie können das Etikettenformat ändern mit \labelformat(sieheltnews30.pdffür mehr Informationen):

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

Bildbeschreibung hier eingeben

Übrigens: Ich würde auch vorschlagen, zu verwenden, cleverefanstatt Ihr eigenes zu definieren \figref.

verwandte Informationen