在以下示例中
\documentclass{scrartcl}
\usepackage{blindtext}
%
\usepackage{amsthm}
\usepackage{thmtools}
%
\declaretheoremstyle[%
spaceabove=60pt, spacebelow=60pt, % just for testing
shaded={rulecolor=black,rulewidth=.5pt,bgcolor={rgb}{1,1,1}}
]{framed}
\declaretheorem[style=framed]{theorem}
%
\begin{document}
\blindtext
%
\begin{theorem}
$ \int $ and some text
\end{theorem}
%
\blindtext
\end{document}
上下不会添加任何空间。没有阴影声明,一切都很好。我如何才能在上下添加一些空间?
答案1
这似乎是 中的一个疏忽thmtools
。包定义shaded
为在定理周围添加\begin{shadebox}
和\end{shadebox}
,但没有考虑空间设置。
您可以shaded
通过显式添加设置来重新定义样式。这也需要在您自己的序言中加载一些相关的包,以便在定义期间可以使用必要的设置。
梅威瑟:
\documentclass{scrartcl}
\usepackage{blindtext}
%
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{shadethm}
\usepackage{thmdef-shaded}
%
\makeatletter
\define@key{thmdef}{shaded}[{}]{%
\addtotheorempreheadhook[\thmt@envname]{%
\setlength\shadedtextwidth{\linewidth}%
\kvsetkeys{thmt@shade}{#1}\vspace{\thmt@style@spaceabove}\begin{shadebox}}%
\addtotheorempostfoothook[\thmt@envname]{\end{shadebox}\vspace{\thmt@style@spacebelow}}%
}
\makeatother
\declaretheoremstyle[%
spaceabove=60pt, spacebelow=30pt, % just for testing
shaded={rulecolor=black,rulewidth=.5pt,bgcolor={gray}{0.5}}
]{framed}
\declaretheorem[style=framed]{theorem}
%
\begin{document}
\blindtext
%
\begin{theorem}
$ \int $ and some text
\end{theorem}
%
\blindtext
\end{document}
结果:
答案2
评论:我找到了一个解决方案mdframed
:
\declaretheoremstyle[mdframed={outerlinewidth=6pt,
innertopmargin=6pt,
innerbottommargin=6pt}
]{mystyle}
\declaretheorem[style=mystyle]{theorem}
但它ntheorem
应该是更好的解决方案,因为它“尊重”分页符。