虽然在精心设计的文档中,段落间距通常很好,但在个人笔记中,我更喜欢用空行分隔非缩进段落。使用软件包可以轻松实现这一点parskip
。
但是,当与之结合使用时thmtools
,定理环境周围的间距完全偏离。
\documentclass{article}
\usepackage{amsmath,amsthm}
\usepackage{parskip}
\usepackage{thmtools}
\declaretheorem{theorem}
\declaretheorem[style=remark]{remark}
\usepackage{lipsum}
\begin{document}
\lipsum[2]
\lipsum[2]
\begin{theorem}
This is cool maths.
\end{theorem}
\lipsum[2]
\begin{remark}
This is cool maths.
\end{remark}
\lipsum[2]
\end{document}
我知道我可以定义自己的样式并设置spaceabove=\parskip
和,spacebelow=0pt
但这有负面副作用,即要求重新指定所有其他参数,即使是预定义的样式也是如此。例如,\declaretheoremstyle[spaceabove=\parskip, spacebelow=0pt]{remark}
会使remark
s 看起来像 theorem,而如果没有,\declaretheoremstyle
名称将以斜体显示。
我有一个解决方案,我将其作为答案发布,但我对其并不完全满意。
问题是:一个补丁能否thmtools
正确使用以便拾取\parskip
?
答案1
一个不令人满意的解决方案是使用preheadhook
选项插入一些垂直空间。为了更加方便,可以通过自定义键安装挂钩parskip
:
\documentclass{article}
\usepackage{amsmath,amsthm}
\usepackage{parskip}
\usepackage{thmtools}
%%%%%% Here we define the parskip key
\makeatletter
\define@key{thmdef}{parskip}[]{\thmt@trytwice{}{\addtotheorempreheadhook[\thmt@envname]{\vspace{\parskip}}}}
\def\thmt@proof@preheadhook{\vspace{-\parskip}}
\makeatother
%%%%%% Here we use it to add the vertical space
\declaretheorem[parskip]{theorem}
\declaretheorem[style=remark,parskip]{remark}
\usepackage{lipsum}
\begin{document}
\lipsum[2]
\lipsum[2]
\begin{theorem}
This is cool maths.
\end{theorem}
\lipsum[2]
\begin{remark}
This is cool maths.
\end{remark}
\lipsum[2]
\end{document}