更改文档中的每个运算符

更改文档中的每个运算符

我正在写关于向量微积分的笔记,一直在使用包中的\curl和运算符。过了一段时间我才意识到使用的是粗体版本,而不仅仅是。\divphysics\curl\nabla\nabla

最初,我想让所有粗体 nabla 与标准 nabla 相同,并设法用这个来做到这一点(来自这篇文章):

\DeclareDocumentCommand\vnabla{}{\nabla}

不过,我觉得我其实更喜欢粗体版本,并且想改变所有现有的将文档中的 nablas 改为粗体,最好通过重新定义\nabla来生成粗体版本(而不是手动搜索文档中的每个 nabla)。

我该怎么做?抱歉,这个问题太简单了。任何建议都非常感谢。

答案1

\nabla命令被定义为一个字符,使用\mathchardef所以要将其重新定义为宏,您需要创建它的新版本,该版本可以按照包physics定义\vnabla宏的方式设为粗体。

\documentclass{article}
\usepackage{physics}
\mathchardef\NABLA"272
\newcommand*{\Nabla}{\boldsymbol\NABLA}
\let\nabla\Nabla
\begin{document}
\[ \nabla(\frac{a}{b}) \]
\[ \grad(\frac{a}{b}) \]
\end{document}

代码输出

答案2

您想将标准保存\nabla在某处并重新定义命令,以避免无限循环。

\documentclass{article}
\usepackage{amsmath,bm}

\AtBeginDocument{%
  \NewCommandCopy{\nablasymbol}{\nabla}%
  \DeclareRobustCommand{\nabla}{\bm{\nablasymbol}}%
}

\begin{document}

$\nabla$ (compare with $\nablasymbol$)

\end{document}

在此处输入图片描述

请注意,您无需了解一\nabla开始是如何定义的。此外,\AtBeginDocument如果您使用在文档开头延迟定义的数学字体包之一,则可能需要这样做;无论如何,这样做不会有什么坏处。

如果您使用unicode-math,方法类似。

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

\AtBeginDocument{%
  \NewCommandCopy{\nablasymbol}{\nabla}%
  \DeclareRobustCommand{\nabla}{\symbf{\nablasymbol}}%
}

\begin{document}

$\nabla$ (compare with $\nablasymbol$)

\end{document}

这里\AtBeginDocument当然是需要的,因为unicode-math它的大部分工作是在那一刻完成的,并且我们必须推迟在那项工作之后的重新定义。

答案3

如果您使用 Unicode 数学,则 nabla 的所有变体都已准备好单一字体。unicode-math-table.tex我们得到:

\UnicodeMathSymbol{"02207}{\nabla          }{\mathalpha}{nabla, del, hamilton operator}%
\UnicodeMathSymbol{"1D6C1}{\mbfnabla       }{\mathalpha}{mathematical bold nabla}%
\UnicodeMathSymbol{"1D6FB}{\mitnabla       }{\mathalpha}{mathematical italic nabla}%
\UnicodeMathSymbol{"1D735}{\mbfitnabla     }{\mathalpha}{mathematical bold italic nabla}%
\UnicodeMathSymbol{"1D76F}{\mbfsansnabla   }{\mathalpha}{mathematical sans-serif bold nabla}%
\UnicodeMathSymbol{"1D7A9}{\mbfitsansnabla }{\mathalpha}{mathematical sans-serif bold italic nabla}%

因此,如果您想使用 nabla 的粗体变体,您可以设置

\let\nabla=\mbfnabla

就这些。使用 Unicode 数学,更多事情会变得更简单。

相关内容