![同时使用 amsmath、ntheorem 和 autonum 会导致水平盒子溢出](https://linux22.com/image/319168/%E5%90%8C%E6%97%B6%E4%BD%BF%E7%94%A8%20amsmath%E3%80%81ntheorem%20%E5%92%8C%20autonum%20%E4%BC%9A%E5%AF%BC%E8%87%B4%E6%B0%B4%E5%B9%B3%E7%9B%92%E5%AD%90%E6%BA%A2%E5%87%BA.png)
amsmath
我尝试使用++组合并启用该选项。这会导致错误。重现的最小情况ntheorem
是autonum
thmmarks
\documentclass{article}
\usepackage{amsmath}
\usepackage[amsmath,thmmarks]{ntheorem}
\usepackage{autonum}
\begin{document}
\end{document}
编译时出现以下错误信息:
Overfull \hbox (2.22221pt too wide) detected at line 7
现在,我不是乳胶专家,但我一直在查看这些包的源代码,我发现问题发生在线上462
,ntheorem.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}{%
}
但是,由于第一个选项可能更安全,所以我坚持选择它。
如果有更好的解决方案,我很乐意听到。