问题陈述

问题陈述

问题陈述

我想引入一个新的数学运算符(散度运算符)。不幸的是,我想要使用的宏已经定义,所以我使用“释放”它

\let\div\undefined

并声明新的运算符

\DeclareMathOperator{\div}{div}

如果我仅使用,amsmath一切都会正常工作,但一旦我添加,unicode-math一切都会中断。

执行

考虑以下 MWE

\documentclass{scrartcl}\pagestyle{empty}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{TeX Gyre Pagella Math}
\let\div\undefined
\DeclareMathOperator{\div}{div}
\begin{document}
\[ \int_V \div \vec{F} \, \mathrm{d}V = \oint_A \vec{F} \cdot \vec{n} \, \mathrm{d}A \]
\end{document}

输出

我得到的输出包含原始宏的输出\div

真实的

预期输出

预期的

答案1

unicode-math大部分工作在 完成\begin{document},因此您也必须延迟声明:

\documentclass{scrartcl}

\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{TeX Gyre Pagella Math}

\newcommand{\diff}{\mathop{}\!\mathrm{d}} % better than using \,\mathrm{d}

\AtBeginDocument{
  \let\div\relax
  \DeclareMathOperator{\div}{div}
}

\begin{document}
\[
\int_V \div \vec{F} \diff V = \oint_A \vec{F} \cdot \vec{n} \diff A
\]
\end{document}

在此处输入图片描述

请注意,这仅仅是因为您想要覆盖由 定义的命令时才需要的unicode-math。使用\DeclareMathOperator{\Div}{div}不需要特别注意。

答案2

\documentclass{scrartcl}\pagestyle{empty}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{TeX Gyre Pagella Math}

\AtBeginDocument{
\let\div\undefined\DeclareMathOperator{\div}{div}
}
\begin{document}


\[ \int_V \div \vec{F} \, \mathrm{d}V = \oint_A \vec{F} \cdot \vec{n} \, \mathrm{d}A \]
\end{document}

相关内容