我有一个文档,其中我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}