这是将 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
,但当然您可以根据需要使用所需的长度。