内联列表项内的 displaymath 之后 qed 符号放错了位置

内联列表项内的 displaymath 之后 qed 符号放错了位置

我的问题涉及一个出现得太早的 qed 符号。我的观察是,它发生在一个未装箱的内联列表项内的 displaymath 之后。所有这些似乎都是产生错误的必要条件。

涉及的软件包有ntheoremthmtoolsenumitem

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}

输出变为:

qed 符号位于证明结束之前

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 环境。该算法包括对这些环境的修改,以追踪结束标记的归属位置(有关实现,请参阅其文档)。

由于有几十个定义了自己环境的包,因此不可能支持所有包。

相关内容