结合 mdframed、amsmath 和 amsthm 时校样标题移动

结合 mdframed、amsmath 和 amsthm 时校样标题移动

我有一个文档,其中我thm使用 声明了一个环境amsthm,然后我使用\surroundwithmdframed来自mdframed包的修饰这些定理。此外,我还有用于amsmath其他目的的。

proof在我的定理中,我使用标准环境(来自)来包含证明amsthm。此证明环境以“证明。”标题开始证明,以方块(\qed)结束。

在这种情况下,当我以数学环境 ( ) 开头编写定理时\[...\],不会打印证明标题(即“证明。”)。更令人惊讶的是,“证明。”标题是已移动在以下(非 thm)环境的开始处。

例如,在下面的例子中,定理 1 的证明应为“证明。微不足道。\qed”。但是,“*证明。”被移到了“居中。”之前。

\documentclass{article}
\usepackage{mdframed}
\usepackage{amsmath}
\usepackage{amsthm}
\theoremstyle{plain}
\newtheorem{thm}{Theorem}

\mdfdefinestyle{thm-frame}{}
\surroundwithmdframed[style=thm-frame]{thm}

\begin{document}

\begin{thm}
    \[\forall P\cdot P\]
    \begin{proof}
            Trivial.
    \end{proof}
\end{thm}
\begin{thm}

\end{thm}
\begin{center}
    Centered.
\end{center}
\end{document}

在此处输入图片描述


请注意:

  • 如果删除这 3 个包中的任何一个(并相应地修改文件,例如删除\surroundwithmdframed),问题就不会再发生
  • 如果定理确实不是从数学环境开始\[ ... \](例如\(...\)数学环境或句子),问题不会发生
  • 这是迄今为止我遇到的最奇怪的 LaTeX 行为......

答案1

我建议放弃 mdframed。它有错误,并且不再维护。改用 tcolorbox:

\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\theoremstyle{plain}
\newtheorem{thm}{Theorem}

\usepackage{tcolorbox}
\tcbuselibrary{theorems,skins,breakable}

\tcolorboxenvironment{thm}{
enhanced jigsaw,colframe=cyan,interior hidden,
breakable,before skip=10pt,after skip=10pt }


\begin{document}

\begin{thm}{}
    \[\forall P\cdot P\]
    \begin{proof}
            Trivial.
    \end{proof}

\end{thm}
\begin{thm}

\end{thm}
\begin{center}
    Centered.
\end{center}
\end{document}

在此处输入图片描述

相关内容