修复使用 parskip 包时 thmtool 间距的问题

修复使用 parskip 包时 thmtool 间距的问题

虽然在精心设计的文档中,段落间距通常很好,但在个人笔记中,我更喜欢用空行分隔非缩进段落。使用软件包可以轻松实现这一点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}会使remarks 看起来像 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}

相关内容