使用 \label 的 tcolorbox 定理

使用 \label 的 tcolorbox 定理

如何通过 \label 创建带有标签的 tcolorbox 定理环境

我有一些自动生成的代码,看起来像

\begin{thm}[Title with \(\LaTeX\)]
\label{label}    
Here is a theorem
\end{thm}

我想在 tcolorbox 中渲染该定理。我可以使用\newtheorem{thm}{Theorem}命令\tcolrboxenvironment{thm}{options}在它周围放置一个框,但我不想只在环境周围放置一个框。我想更好地控制它的显示方式。我想使用 tcolorboxes 来显示该定理,这样它就会像下面这样出现(当然我会有一个更有趣的风格):

\usepackage[most]{tcolorbox}
\tcbset{mystyle/.style={}}
\newtcbtheorem{thm}{Theorem}{mystyle}{}
\newcommand{\thmautorefname}{Theorem}

\begin{thm}[label=label]{My theorem \(x^2\)}{}
Here is a theorem
\end{thm}

并使用各种 ref 命令引用定理,例如

\nameref{label} with number \ref{label} and autoref \autoref{label}

带有 tcolorbox 的定理环境

问题是创建的环境\newtcbtheorem需要的语法与自动生成的代码不同。

我有一个方法,即创建自己的环境,但我觉得要实现这个目标需要重新发明很多轮子。我希望可以使用tcolorbox和的某种组合来完成这项工作。amsthm

这是当前解决方案的 MWE,我在其中创建了环境来包装 tcolorboxes。我的实际解决方案稍微复杂一些,因为我创建了一个类似于\newtheorem{thm}{Theorem} 创建环境的宏,带有共享计数器,然后我感觉我开始重新发明 amsthm!

\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{hyperref}


\tcbset{mystyle/.style={}}

\makeatletter
\newcounter{thm}
\newenvironment{thm}[1][]
{\refstepcounter{thm}
\protected@edef\@currentlabelname{#1}
\begin{tcolorbox}[title={Theorem \@currentlabel{}: #1}, mystyle]}
{\end{tcolorbox}}
\newcommand{\thmautorefname}{Theorem}
\makeatother

\begin{document}

\begin{thm}[My Theorem \(x^2\)]
\label{label}
Here is a theorem.
\end{thm}

\nameref{label} with number \ref{label} and autoref \autoref{label}
\end{document}

相关内容