parskip 与 thmtools 的 thmbox 发生冲突

parskip 与 thmtools 的 thmbox 发生冲突

我在使用帕斯基普thm工具包。我想使用 thmtools 提供的框来构建我的定理引理等。我感兴趣的是鍵盤=M盒子,但一旦装载 parskip 包,一切都出错了。我不想放弃的原因帕斯基普是我不喜欢自动缩进,而它对于段落之间的间隔很实用。

让我用代码和图像来说明这一点。

未加载 parskip:

\documentclass[12pt]{article}
\usepackage{amsmath}
%\usepackage{parskip}

\usepackage{amsthm,thmtools}

\declaretheorem[thmbox=M]{theorem}

\begin{document}

\begin{theorem}[without parskip]
blabla bla bla,
\[\sum_{k=1}^n k^2 = \dfrac{n(n+1)(2n+1)}{6}.\]
\end{theorem}

\end{document}

结果如下,

在此处输入图片描述

加载 parskip 后:

\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{parskip}

\usepackage{amsthm,thmtools}

\declaretheorem[thmbox=M]{theorem}

\begin{document}

\begin{theorem}[with parskip]
blabla bla bla,
\[\sum_{k=1}^n k^2 = \dfrac{n(n+1)(2n+1)}{6}.\]
\end{theorem}

\end{document}

导致一片混乱,

在此处输入图片描述

有谁有解决方案来解决这个问题?

多谢!

答案1

thmbox将 option 的值初始化leftmargin\parindent。因此,如果thmbox加载 parskipleftmargin设置为 0pt 后问题再次出现:

\documentclass[12pt]{article}
\usepackage{parskip}
\usepackage{thmbox}

\begin{document}
\begin{thmbox}[M]{The title}
  Some text, some more text, asufficient amount to get afull box with several lines.
\end{thmbox}

% with `article` class option 12pt, \parindent defaults to 1.5em
\begin{thmbox}[M,leftmargin=1.5em]{The title}
  Some text, some more text, asufficient amount to get afull box with several lines.
\end{thmbox}
\end{document}

thmbox 示例

如需直接使用thmbox,请在工作前加载parskip

情况有点混乱thmtools:它只在第一次使用选项thmbox时加载。在所有这些用法之后加载仍然是可行的,但在这里我建议在整个序言之后和之前使用的后期钩子中加载:(它相当于来自包。)\declaretheoremthmbox={<thmbox options>}parskip\declaretheoremparskipbegindocumentbegindocument/before\AtEndPreambleetoolbox

\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{amsthm,thmtools}
\usepackage[pass,showframe]{geometry}

\declaretheorem[thmbox={M,leftmargin=1.5em}]{theorem}

\AddToHook{begindocument/before}{%
  \usepackage{parskip}%
}

\begin{document}
\begin{theorem}[with parskip]
  blabla bla bla,
  \[\sum_{k=1}^n k^2 = \dfrac{n(n+1)(2n+1)}{6}.\]
\end{theorem}
\end{document}

thmtools 示例,使用钩子“begindocument/before”

\parindent还可以在加载之前备份值parskip,然后将该值传递给thmbox选项leftmargin,例如

\newlength{\origparindent}
\setlength{\origparindent}{\parindent}
\usepackage{parskip}
...
\declaretheorem{thmbox={M,leftmargin=\origparindent}}{theorem}

相关内容