是否可以使用 declaredtheoremstyle 和 newtheorem 来修改定理样式?

是否可以使用 declaredtheoremstyle 和 newtheorem 来修改定理样式?

我正在输入一些包含一些定理、命题、公理等的讲义,我想修改此类环境的样式:添加宏、阴影背景或任何简单的修改(使用 declaredtheoremstyle 更改标题的背景颜色)。

我以前使用过这个解决方案:使用 \declaretheoremstyle 中的 mdframed 样式来更改标题。它用于\declaretheorem实现这种样式,但我现在使用的模板改用 \newtheorem。这是我的尝试,但由于我声明的样式不适用,因此不起作用。

\documentclass{article}

\usepackage{amsmath,amsthm}
\usepackage{mathtools,thmtools,framed}
\usepackage{lipsum}

\declaretheoremstyle[
    mdframed={
        backgroundcolor=gray!20, 
            linecolor=gray!30, 
            innertopmargin=6pt,
            innerbottommargin=6pt} 
]{box}

\newtheorem*{definition}{Definition}
\theoremstyle{box} 
\newtheorem{theorem}{Theorem}[section]
\newtheorem{axiom}{Axiom}
\newtheorem{corollary}[theorem]{Corollary}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{proposition}[theorem]{Proposition}

\begin{document}

\section{Intro}

\begin{theorem}
\lipsum[2][4]
\end{theorem}

\end{document}

所以,我的问题是如何在环境中实现修改后的样式\newtheorem。欢迎任何其他解决方案或评论。

答案1

我建议改用tcolorbox

\documentclass{article}

\usepackage{amsmath,amsthm}
\usepackage[many]{tcolorbox}

\usepackage{lipsum}

\newtheorem*{definition}{Definition}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{axiom}{Axiom}
\newtheorem{corollary}[theorem]{Corollary}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{proposition}[theorem]{Proposition}

% defina a style to be applied for theorem-like environments
\tcbset{
  manuel-theorems/.style={
    sharp corners,
    skin=tile,
    colback=gray!20,
  },
}

% wrap the desired environments
\ExplSyntaxOn
\clist_map_inline:nn {theorem,axiom,corollary,lemma,proposition}
 {
  \tcolorboxenvironment{#1}{manuel-theorems}
 }
\ExplSyntaxOff

\begin{document}

\section{Intro}

\begin{theorem}
\lipsum[2][4]
\end{theorem}

\begin{proposition}
\lipsum[2][4]
\end{proposition}

\end{document}

在此处输入图片描述

我使用了列表映射,而不是一长串声明,例如

\tcolorboxenvironment{theorem}{manuel-theorems}

适用于每个环境。

相关内容