同时使用 amsmath、ntheorem 和 autonum 会导致水平盒子溢出

同时使用 amsmath、ntheorem 和 autonum 会导致水平盒子溢出

amsmath我尝试使用++组合并启用该选项。这会导致错误。重现的最小情况ntheoremautonumthmmarks

\documentclass{article}

\usepackage{amsmath}
\usepackage[amsmath,thmmarks]{ntheorem}
\usepackage{autonum}

\begin{document}
\end{document}

编译时出现以下错误信息:

Overfull \hbox (2.22221pt too wide) detected at line 7

现在,我不是乳胶专家,但我一直在查看这些包的源代码,我发现问题发生在线上462ntheorem.sty使用以下命令:

\make@display@tag

删除此行可使错误消失。此宏定义在amsmath.sty

\def\make@display@tag{%
  \if@eqnsw \incr@eqnum \print@eqnum
  \else \iftag@ \df@tag \global\let\df@tag\@empty \fi
  \fi
  \ifmeasuring@
  \else
    \ifx\df@label\@empty
    \else
      \@xp\ltx@label\@xp{\df@label}%
      \global\let\df@label\@empty
    \fi
  \fi
}

我没有足够的乳胶专业知识来了解如何修复此错误以及向何处报告。有人有什么建议吗?

答案1

在找到更好的答案之前,我通过以下重新定义修复了错误\make@display@tag

\let\ams@make@display@tag=\make@display@tag
\renewcommand{\make@display@tag}{%
    \ifdefempty{\df@label}{% can happen with package `autonum`.
        %\ams@make@display@tag% don't execute
    }{% not empty, show refs
        \ams@make@display@tag%
    }%
}

我从网上拼凑了这些,不知道是否正确。但是,它似乎确实有效。下面的方法似乎也有效:

\renewcommand{\make@display@tag}{%
}

但是,由于第一个选项可能更安全,所以我坚持选择它。

如果有更好的解决方案,我很乐意听到。

相关内容