我的问题涉及一个出现得太早的 qed 符号。我的观察是,它发生在一个未装箱的内联列表项内的 displaymath 之后。所有这些似乎都是产生错误的必要条件。
涉及的软件包有ntheorem
、thmtools
和enumitem
。
lualatex
如果我使用编译此代码TeXLive 2011
。
\documentclass{scrreprt}
\PassOptionsToPackage{thmmarks}{ntheorem}
\PassOptionsToPackage{inline}{enumitem}
\usepackage{amsmath,MnSymbol}
\usepackage{ntheorem,thmtools}
\usepackage{
enumitem,
}
\declaretheoremstyle[qed={\quad\blacksquare}]{plain}
\declaretheorem[style=plain,numbered=no,name=Proof]{proof}%
\begin{document}
\begin{proof}
\begin{enumerate*}[mode=unboxed]
\[a\]
Still proof.
\end{enumerate*}
\end{proof}
\end{document}
输出变为:
enumerate*
如果未使用环境或者使用 或$$
和 而\begin{displaymath
不是\end{displaymath}
和 来标记 displaymath 模式,\[
则符号放置正确\]
。
显然,qed 符号应该位于“静止证明”之后的证明末尾。——我做错了什么?到目前为止找不到任何东西。
答案1
根据我之前的评论,ntheorem
似乎将添加\qed
到最后一个显示模式方程中。因此黑客是结束证明
\vspace{-\belowdisplayskip}\[\]
代码:
\documentclass{scrreprt}
\PassOptionsToPackage{thmmarks}{ntheorem}
\PassOptionsToPackage{inline}{enumitem}
\usepackage{amsmath,MnSymbol}
\usepackage{ntheorem,thmtools}
\usepackage{
enumitem,
}
\declaretheoremstyle[qed={\quad\blacksquare}]{plain}
\declaretheorem[style=plain,numbered=no,name=Proof]{proof}%
\begin{document}
\begin{proof}
\begin{enumerate*}[mode=unboxed]
\[a\]
Still proof.
\end{enumerate*}
\vspace{-\belowdisplayskip}\[\]
\end{proof}
\end{document}
答案2
该问题是由于使用 enumitem 包造成的。
Ntheorem 支持一组有限的标准 LaTeX 环境。该算法包括对这些环境的修改,以追踪结束标记的归属位置(有关实现,请参阅其文档)。
由于有几十个定义了自己环境的包,因此不可能支持所有包。