Cómo tener entornos de teorema tcolorbox reestablecibles, evitando al mismo tiempo que las etiquetas se definan múltiples veces

Cómo tener entornos de teorema tcolorbox reestablecibles, evitando al mismo tiempo que las etiquetas se definan múltiples veces

Tengo un documento en el que me gustaría definir un teorema desde el principio y luego reformular el mismo teorema más adelante, cuando llegue el momento de demostrarlo.

Normalmente esto se podría hacer usando el thm-restatepaquete. Sin embargo, los teoremas en mi documento usan un entorno tcolorbox, por lo que intenté usar el enfoque sugerido enesta respuesta.

Ese enfoque funciona para reformular teoremas, pero luego LaTeX genera advertencias acerca de que las etiquetas están "definidas múltiplemente". Debido a este error, no puedo hacer referencia correctamente a los teoremas reformulados.

Mi pregunta:¿Cómo puedo reformular los teoremas de tcolorbox sin encontrarme con el problema de que las etiquetas estén duplicadas?

Aquí hay un ejemplo mínimo que muestra la configuración y el problema:

\documentclass{article}

\usepackage{amsmath}
\usepackage[colorlinks=true, allcolors=blue]{hyperref}
\usepackage{cleveref}

\usepackage{tcolorbox}
\tcbuselibrary{theorems}
\tcbuselibrary{magazine}
\usepackage{amsthm}

\theoremstyle{definition}

% The tcolorbox theorem
\newtcbtheorem{theorem}{Theorem}{colback=gray!10,colframe=gray!40!black}{theorem}

% Commands to restate the theorem
\newcommand{\recallthm}[2][1]{\par\noindent\useboxarray[#2]{#1}}
\usepackage{environ}
\NewEnviron{restatablethm}[2]{%
\newboxarray{#2}%
\begin{theorem}[reset box array=#2, store to box array=#2]{#1}{#2}
    \BODY%
\end{theorem}%
\recallthm{#2}%
}

% Other theorem environments might be on the same counter
\newtheorem{lemma}[tcb@cnt@theorem]{Lemma}

\begin{document}

    % The first theorem
    \begin{restatablethm}{Serious Algorithm}{coollabel}
        An example boxed theorem..
    \end{restatablethm}

    \begin{lemma}
        A simple lemma.
    \end{lemma}

    % The restated theorem
    \recallthm{coollabel}

    By \Cref{thm:collabel} we are done. % The reference here does not work (yields ??). 

\end{document}

Respuesta1

Esto utiliza [nophantom] para crear el cuadro recuperable, pero no el original. Todavía genera una advertencia sobre hiperobjetivos duplicados, más una sobre la caja de envío. \Crefno funciona en absoluto, aunque theorem:coollabel@crefse creó una etiqueta.

\documentclass{article}

\usepackage{amsmath}
\usepackage[colorlinks=true, allcolors=blue]{hyperref}
\usepackage{cleveref}

\usepackage{tcolorbox}
\tcbuselibrary{theorems}
\tcbuselibrary{magazine}
\usepackage{amsthm}

\theoremstyle{definition}

% The tcolorbox theorem
\newtcbtheorem{theorem}{Theorem}{colback=gray!10,colframe=gray!40!black}{theorem}

% Commands to restate the theorem
\newcommand{\recallthm}[2][1]{\par\noindent\useboxarray[#2]{#1}}
\usepackage{environ}
\makeatletter
\NewEnviron{restatablethm}[2]{% print this copy
\newboxarray{#2}%
\begin{theorem}[reset box array=#2, store to box array=#2,nophantom]{#1}{#2}
    \BODY%
\end{theorem}%
\addtocounter{tcb@cnt@theorem}{-1}%
\begin{theorem}{#1}{#2}
    \BODY%
\end{theorem}%
%\recallthm{#2}%
}

% Other theorem environments might be on the same counter
\newtheorem{lemma}[tcb@cnt@theorem]{Lemma}

\begin{document}

    % The first theorem
    \begin{restatablethm}{Serious Algorithm}{coollabel}
        An example boxed theorem..
    \end{restatablethm}

    \begin{lemma}
        A simple lemma.
    \end{lemma}

    % The restated theorem
    \recallthm{coollabel}

    By \ref{theorem:coollabel} we are done. % The reference here does not work (yields ??). 

\end{document}

información relacionada