\renewcommand 未对 \div 执行

\renewcommand 未对 \div 执行

在下面的代码中, \div 的数学文本是错误的:

\documentclass[]{scrbook} 

\usepackage{amsmath}
\usepackage{unicode-math}

\renewcommand{\i}{\symup{i}}  
\newcommand{\const}{\symup{const}}  
\DeclareMathOperator{\e}{e}
\DeclareMathOperator{\rot}{rot}
\DeclareMathOperator{\grad}{grad}
\DeclareMathOperator{\rect}{rect}

\renewcommand{\div}{\symup{div}\,}
\begin{document}    
\begin{equation}
    \rot \vec{a} + \grad \vec{a} + \div \vec{a} + \rect f(x) + \e^{-\i x} = \const
\end{equation} 
\end{document}

不会\div被改变\renewcommand 在此处输入图片描述

答案1

您需要在开始文档时延迟重新定义,因为unicode-math需要在那里进行设置,此时所有字体都已确定。

\documentclass[]{scrbook} 

\usepackage{amsmath}
\usepackage{unicode-math}

\renewcommand{\i}{\symup{i}}  
\newcommand{\const}{\symup{const}}  
\DeclareMathOperator{\e}{e}
\DeclareMathOperator{\rot}{rot}
\DeclareMathOperator{\grad}{grad}
\DeclareMathOperator{\rect}{rect}

\AtBeginDocument{\renewcommand{\div}{\operatorname{div}}}

\begin{document}    

\begin{equation}
    \rot \vec{a} + \grad \vec{a} + \div \vec{a} + \rect f(x) + \e^{-\i x} = \const
\end{equation} 

\end{document}

在此处输入图片描述

我是肯定“i” 和 “e” 不应该是直立的(至少在很多人的文档中,包括我的文档中),但这只是个人看法。不过,我不明白为什么会有这种不同的处理方式。

请注意,\symup{div}\,以及还提出了

\ensuremath{\text{div}}

是错误的。你的\symup{div}操作不符合数学运算符应有的表现。\text{div}如果 Miyase 的运算符出现在定理的陈述中(并且它周围的间距完全错误),它就会让人大吃一惊。

答案2

我想做同样的事情,但遇到了一些重新定义的包的问题\div。下面是我最终做的事情,到目前为止,它一直运行良好:

\AddToHook{begindocument/end}{\let\div\relax\newcommand{\div}{\ensuremath{\text{div}}}}

它在我的序言里。

使用\text可能不是最好的选择,但这是一个不同的(且次要的)问题。

答案3

我已经将\divg命令替换\div为除法符号的预定义命令。

  \DeclareMathOperator{\divg}{\symup{div}\,}

在此处输入图片描述

\documentclass[]{scrbook} 

\usepackage{amsmath}
\usepackage{unicode-math}

\renewcommand{\i}{\symup{i}}  
\newcommand{\const}{\symup{const}}  
\DeclareMathOperator{\e}{e}
\DeclareMathOperator{\rot}{rot}
\DeclareMathOperator{\grad}{grad}
\DeclareMathOperator{\rect}{rect}
\DeclareMathOperator{\divg}{\symup{div}\,}

\begin{document}    
\begin{equation}
    \rot \vec{a} + \grad \vec{a} + \divg  \vec{a} + \rect f(x) + \e^{-\i x} = \const 
\end{equation} 
\end{document}

相关内容