我正在使用shadethm.sty
-package,我想抑制某个定理的编号,但命令\newshadetheorem*
未定义。有什么建议吗?
答案1
tcolorbox
这是包含包和theorems
属于它的库的解决方案。要给出未编号的定理,只需指定theorem name
为选项即可。
精确的形式、颜色、填充、阴影、阴影可以稍后指定,但由于没有给出进一步的条件,我限制为最简单的形式。
\documentclass[paper=a4,12pt]{scrbook}
\usepackage{blindtext}%
\usepackage[theorems,breakable]{tcolorbox}%
\begin{document}
\chapter{First}
\section{First}
\newtcbtheorem{lem}{Lemma}{%
theorem name,%
colback=green!5,%
colframe=green!35!black,%
fonttitle=\bfseries,title after break={Lemma -- \raggedleft Continued}%
}{lem}
\begin{lem}{On Brontosaurs}{}
\textbf{By Ann Elk (Misses)}
Brontosaurs are thin at one end, thick in the middle and thin again on the other end.
\end{lem}
\end{document}
答案2
尝试mdframed
包装。它可以创造美丽的阴影区域正如你所看到的文档,其命令 \newmdenv[<options>]{env-name}
。
这个包的优点是,如果需要的话,环境的内容可以跨页面。
也可以定义自己的风格对于命令的选项\mdfdefinestyle{<style name>}{<options>}
。对于这个特殊情况,我定义了myshadedthm
定理的样式(以及我想要使用的其他结构),并用 来调用它style=<style name>
。
\mdfdefinestyle{myshadedthm}{backgroundcolor=gray!20,linewidth=0pt,innerleftmargin=1ex}
正如代码中所解释的,如果您使用该amsthm
包,这会在定理顶部添加一个额外的空间,这可以修复附加到样式的选项innertopmargin=-0.5ex
。(如果您使用ntheorem
此修复程序,则不能这样做)。
定义定理mdframed
mdframed
依赖于命令 \newmdtheoremenv
语法相同,\newtheorem
只是它有第一个选修的[<options>]
的论据mdframed
。
比较
\newmdtheoremenv[<mdframed-options>]{<envname>}[<numberedlike>]{<caption>}[<within>]
\newtheorem{<envname>}[<numberedlike>]{<caption>}[<within>]
不幸的是,没有\newmdtheoremenv
与使用相同的带星号的版本,但我们可以重新定义\newtheorem*{<envname>}{<caption>}
命令\newmdtheoremenv
实现这个目标:
重新定义\newmdtheoremenv
接受星标版本
\DeclareDocumentCommand\newmdtheoremenv{s O{} m o m o }{%
\IfBooleanTF{#1}{%
\newtheorem*{#3}{#5}%
}{%
\ifboolexpr{ test {\IfNoValueTF {#4}} and test {\IfNoValueTF {#6}} }%
{\newtheorem{#3}{#5}}{%
\IfValueTF{#4}{\newtheorem{#3}[#4]{#5}}{}%
\IfValueTF{#6}{\newtheorem{#3}{#5}[#6]}{}%
}
}%
\BeforeBeginEnvironment{#3}{%
\begin{mdframed}[#2]}%
\AfterEndEnvironment{#3}{%
\end{mdframed}}%
}
以下是我们可以做什么的示例:
完整代码
\documentclass{article}
\usepackage{amsthm}
%\usepackage{ntheorem}
\usepackage{mdframed}
\usepackage{xcolor} % For using `gray!20` for example
%--------------------------------
% Redefinition of `\newmdtheoremenv` for accepting a starred version
\DeclareDocumentCommand\newmdtheoremenv{s O{} m o m o }{%
\IfBooleanTF{#1}{%
\newtheorem*{#3}{#5}%
}{%
\ifboolexpr{ test {\IfNoValueTF {#4}} and test {\IfNoValueTF {#6}} }%
{\newtheorem{#3}{#5}}{%
\IfValueTF{#4}{\newtheorem{#3}[#4]{#5}}{}%
\IfValueTF{#6}{\newtheorem{#3}{#5}[#6]}{}%
}
}%
\BeforeBeginEnvironment{#3}{%
\begin{mdframed}[#2]}%
\AfterEndEnvironment{#3}{%
\end{mdframed}}%
}
%--------------------------------
\newtheorem{theorem}{Theorem}[section]
\mdfdefinestyle{myshadedthm}{backgroundcolor=gray!20,linewidth=0pt,innerleftmargin=1ex,%
%--------------------------------
% If you use `amsthm` can adjust `innertopmargin` to avoid extra space in top.
innertopmargin=-0.5ex% % Comment or remove this line if you use `ntheorem`.
%--------------------------------
}
\newmdtheoremenv[style=myshadedthm]{stheorem}[theorem]{Theorem}
\newmdtheoremenv*[style=myshadedthm]{lemma}{Lemma}
\begin{document}
\section{First}
Text
\begin{theorem}
Let $f$ \dots (a normal theorem)
\end{theorem}
Text
\begin{stheorem}
If $a$, $b$ and $c$ \dots (a shaded theorem)
\end{stheorem}
More text
\begin{lemma}
Like $a^2=a$ we have \dots (shaded) and no numbered
\end{lemma}
\end{document}
结果
答案3
ntheorem
以下是使用和包可以完成的操作的演示framed
。框架或阴影定理可以跨页面拆分:
\documentclass[12pt,a4paper, x11names]{book}%]
\usepackage[utf8]{inputenc}%
\usepackage[T1]{fontenc}
\usepackage{fourier}
\usepackage{heuristica}
\usepackage{cabin}
\usepackage{pstricks} %
\usepackage{xcolor}
\usepackage{lipsum}
\usepackage{framed} %
\usepackage{amsmath}
\usepackage[thmmarks, amsmath, framed]{ntheorem}%
\theoreminframepostskip{1ex}
\shadecolor{Thistle3!30!}
\theoremstyle{nonumberplain}
\theoremheaderfont{\color{Tomato4}\sffamily\bfseries}
\theoremseparator{.}
\theorembodyfont{\itshape}
\newshadedtheorem{thm}{Theorem}%\danger
\begin{document}
\vspace*{0.6\textheight}
\lipsum[2]
\begin{thm}[unnumbered]
\lipsum[1]\vskip-3\baselineskip
\end{thm}
\end{document}