如何去除彩色定理框周围的空间?

如何去除彩色定理框周围的空间?

这是将 spacebelow 与 thmtools 包中的阴影参数相结合。有错误吗?。我怎样才能去掉定理框上方的空间?如果我注释掉该mdframed=...行,它就可以工作,但我还想要一个漂亮的灰色定理框。有解决方法吗?

\documentclass{article}
\usepackage{xcolor}
\usepackage{amsthm}
\usepackage{thmtools}

\declaretheoremstyle[
    mdframed={backgroundcolor=gray!80, hidealllines=true, innertopmargin=6pt, innerbottommargin=60pt, skipabove=\topsep, skipbelow=\topsep },
    spaceabove=0pt, spacebelow=0pt
 ]{mystyle}
\declaretheorem[style=mystyle]{BoxI}

\begin{document}
Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text
  \begin{BoxI}[Euclid]
    Text...
  \end{BoxI}
Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text
\end{document}

答案1

我认为这可能是包之间不完全顺畅的交互;skipbelow接受负值,但skipabove,甚至spaceabove(从thmtools)当mdframed键起作用时,似乎忽略了小于的值0pt。这可能与使用thmtools\addtotheorempreheadhook选项传递给mdframed环境有关。

无论如何,您都可以使用 来preheadhook控制结构前的间距:

\documentclass{article}
\usepackage{xcolor}
\usepackage{amsthm}
\usepackage{thmtools}

\declaretheoremstyle[
preheadhook={\vskip\dimexpr\topsep-0.5\ht\strutbox\relax},
mdframed={
  backgroundcolor=gray!80,
  hidealllines=true,
  innertopmargin=6pt,
  innerbottommargin=60pt,
  skipabove=0pt,
  skipbelow=\topsep}
 ]{mystyle}
\theoremstyle{remark}
\declaretheorem[style=mystyle]
{BoxI}

\begin{document}
Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text
  \begin{BoxI}[Euclid]
Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text
Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text
  \end{BoxI}
Text, Text, Text, Text, Text, Text, Text, Text, Text, Text, Text
\end{document}

在此处输入图片描述

我用的\vskip\topsep-0.5\ht\strutbox,但当然您可以根据需要使用所需的长度。

相关内容