我有以下非常具体的问题,这可能只是 thmtools 包中的一个错误,但我想知道我是否可以解决它。
基本上,如果我包含该parskip
包并尝试使用shaded
该包的样式thmtools
,那么定理环境内的垂直间距就会变得混乱,段落之间和枚举列表项之间的所有空白都会消失,如下所示:
有什么方法可以解决这个问题吗?
这是 MWE 代码:
\documentclass{article}
\usepackage{amsthm}
\usepackage{thmtools}
\declaretheorem[shaded]{theorem}
\usepackage{parskip}
\begin{document}
\begin{theorem}
The following is an enumerated list:
\begin{enumerate}
\item one
\item two
\item three
\end{enumerate}
This is a paragraph.
This is another paragraph.
\end{theorem}
Here is the same content outside of a theorem environment:
\begin{enumerate}
\item one
\item two
\item three
\end{enumerate}
This is a paragraph.
This is another paragraph.
\end{document}
答案1
这实际上不是 的一个错误thmtools
。使用shaded
样式时,thmtools
会加载包,并使用包的环境shadethm
包装定理。shadebox
shadethm
环境shadebox
将其内容排版在里面minipage
,默认情况下,\parskip=0pt
它位于其中(参见为什么 \parskip 在小页面中为零?)。
幸运的是,shadebox
环境有一个名为的钩子,它在内部\shadesetinsideminipage
恢复,所以我们也可以让他恢复:\parindent
shadebox
\parskip
\documentclass{article}
\usepackage{amsthm}
\usepackage{thmtools}
\declaretheorem[shaded]{theorem}
\usepackage{parskip}
\newlength\saveparskip
\setlength\saveparskip\parskip
\renewcommand\shadesetinsideminipage{%
\setlength\parindent\saveparindent % \saveparindent is defined inside `shadethm' package
\setlength\parskip\saveparskip % this line restores \parskip
}
\begin{document}
\begin{theorem}
The following is an enumerated list:
\begin{enumerate}
\item one
\item two
\item three
\end{enumerate}
This is a paragraph.
This is another paragraph.
\end{theorem}
Here is the same content outside of a theorem environment:
\begin{enumerate}
\item one
\item two
\item three
\end{enumerate}
This is a paragraph.
This is another paragraph.
\end{document}