使用 thmtools 中的“阴影”并在下方和上方添加空间

使用 thmtools 中的“阴影”并在下方和上方添加空间

在以下示例中

\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应该是更好的解决方案,因为它“尊重”分页符。

相关内容