“限制控制必须遵循数学运算符”是什么意思?

“限制控制必须遵循数学运算符”是什么意思?

当我尝试编译这个时:

\documentclass{article}
\usepackage{amsmath}
\usepackage{nath}
\DeclareMathOperator{\argmin}{arg\,min}
\begin{document}
    \begin{equation}
        \argmin \log(\sum_{x=1}^2 x^2)
    \end{equation}
\end{document}

我得到:

Test.tex:7: Limit controls must follow a math operator
Test.tex:7: Limit controls must follow a math operator

这到底是什么意思?我该如何解决?

答案1

为了使分隔符的自动调整功能正常工作,nath重新定义了许多 TeX 内部函数。amsmath还定义了许多 TeX 内部函数。既没有nath考虑amsmath到其他包可能会重新定义内部宏,因此也未考虑到错误。

默认情况下,\log定义如下:

> \log=macro:
->\mathop {\operator@font log}\nolimits .
l.3 \show\log

但是,在加载amsopn(由 加载amsmath)之后,我们得到

> \log=macro:
->\qopname \relax o{log}.
l.5 \show\log

这就是以下最小文档失败的原因:

\documentclass{article}
\usepackage{nath}
\usepackage{amsopn}

\begin{document}
$\log$
\end{document}

因此,您必须在加载amsmath和之间进行选择nath。例如,您的最小示例可以是没有加载的进程amsmath

\documentclass{article}
\usepackage{nath}
\makeatletter
\def\argmin{\mathop{\operator@font arg\,min}\nolimits}
\makeatother

\begin{document}
\begin{equation}
  \argmin \log( \sum_{i=1}^2 x^2)
\end{equation}
\end{document}

另一个选择是保存并恢复诸如\log、、、等运算符的含义\max\arg\sin

\documentclass{article}
\let\normallog \log
\usepackage{amsmath,nath}
\let\log \normallog
\makeatletter
\def\argmin{\mathop{\operator@font arg\,min}\nolimits}
\makeatother

\begin{document}
\begin{equation}
  \argmin \log( \sum_{i=1}^2 x^2)
\end{equation}
\end{document}

nath提供了一些用于显示数学的宏(\wall .. \return);捆绑包中的其他一些包amsmathamsgenamstextamsfonts)可以与之配合使用nath

编辑:看来这nath是错的。nath重新定义\mathop。引用自nath.sty

\mathop 被重新定义以避免将以下 Bins 误解为一元运算符(参见 TeXbook,第 170 页)。

以下定义确定了 Op 和 Bin 之间的间距。(根据 [TeXBook,第 170 页],“这种情况从未发生过,因此纯 TeX 将其保留为未定义,从而使 Bin 成为一元的。”)

如果你只是恢复 的定义\mathop,那么一切都正常:

\documentclass{article}
\usepackage{amsmath,nath}
\makeatletter
\let\mathop\o@mathop
\makeatother
\DeclareMathOperator{\argmin}{arg\,min}
\begin{document}
    \begin{equation}
        \argmin \log(\sum_{x=1}^2 x^2)
    \end{equation}
\end{document}

相关内容