amsmath 和 ntheorem 之间的冲突,或者说我是如何陷入无限的故障排除循环的

amsmath 和 ntheorem 之间的冲突,或者说我是如何陷入无限的故障排除循环的

该网站上有类似的问题,但没有一个能完全解决我的问题。

当使用时amsmathntheorem我要么得到一个缺少定理结尾符号(当我的定理以方程式结束时)或者我的交叉引用被搞砸了。

以下是缺少定理结尾标记的简单示例:

\documentclass{article}

\usepackage{amsmath}
\usepackage[thmmarks,amsmath]{ntheorem}
\theoremsymbol{*}
\newtheorem{myDefinition}{Definition}

\begin{document}

\begin{myDefinition}
    I don't get my end of definition mark \ldots
    \begin{equation}
        x=y
        \label{test}
    \end{equation}
\end{myDefinition}

\ldots but the equation cross-reference works: \eqref{test}.

\end{document}

这是一个错误的交叉引用的最小例子(包调用amsmath中省略了参数ntheorem):

\documentclass{article}

\usepackage{amsmath}
\usepackage[thmmarks]{ntheorem}
\theoremsymbol{*}
\newtheorem{myDefinition}{Definition}

\begin{document}

\begin{myDefinition}
    Now I get my end of definition mark \ldots
    \begin{equation}
        x=y
        \label{test}
    \end{equation}
\end{myDefinition}

\ldots but the equation cross-reference fails: \eqref{test}.

\end{document}

我可能忽略了一些显而易见的东西。

答案1

我可以在最新的 TL 2012 上验证您的问题。我同意 @egreg 的观点,它看起来不太好,但如果你想坚持自己的观点,那么您可以使用它\mbox{}来让事情“运作”起来。

在此处输入图片描述

此技巧在使用mdframedframeequation

\documentclass{article}

\usepackage{amsmath}
\usepackage[thmmarks,amsmath]{ntheorem}
\theoremsymbol{*}
\newtheorem{myDefinition}{Definition}

\begin{document}

\begin{myDefinition}
    I don't get my end of definition mark \ldots
    \begin{equation}
        x=y
        \label{test}
    \end{equation}
    \mbox{}
\end{myDefinition}
\ldots but the equation cross-reference works: \eqref{test}.

\end{document}

答案2

这有效

\documentclass{article}

\usepackage{amsmath}
\usepackage[ntheorem]{empheq}
\usepackage[thmmarks,amsmath]{ntheorem}
\theoremsymbol{*}
\newtheorem{myDefinition}{Definition}

\begin{document}

\begin{myDefinition}
I don't get my end of definition mark \ldots
\begin{empheq}{equation}
x=y
\label{test}
\end{empheq}
\end{myDefinition}
\ldots but the equation cross-reference works: \eqref{test}.

\end{document}

答案3

请尝试使用“开发”版本 1.33ntheorem

这个版本,虽然已经存在一年多了,但仍然有点不稳定,而且由于我在处理跳过时做了重大改变,所以没有经过充分的测试 - 所以请检查您的文档中的跳过。

相关内容