![是否可以使用 declaredtheoremstyle 和 newtheorem 来修改定理样式?](https://linux22.com/image/470579/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20declaredtheoremstyle%20%E5%92%8C%20newtheorem%20%E6%9D%A5%E4%BF%AE%E6%94%B9%E5%AE%9A%E7%90%86%E6%A0%B7%E5%BC%8F%EF%BC%9F.png)
我正在输入一些包含一些定理、命题、公理等的讲义,我想修改此类环境的样式:添加宏、阴影背景或任何简单的修改(使用 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}
适用于每个环境。