此篇讨论很小的「一点」——关于如何正确排版微分算子。 所谓微分算子,其英文名字叫做 differential operator,也就是 dx 中的 d 。由于微分算子,形式上就是拉丁字母 d;并且中国人读起来也就是简单粗暴的「滴埃克斯」。所以,在书写 LaTeX 手稿时,很多人简单粗暴地将微分算子写作 dx,例如不定积分 \int f(x)dx。 我们说,数学算式是精美而珍贵的。在排版数学算式时,你不能马虎,应该小心谨慎。这也是为什么 Knuth 在设计 TeX 时,将数学式子都包含在美元符号 $ 之间的原因。对待微分算子,我们也应该有这样的心态。 粗话说:「如果没有标准,那所有的争执都是瞎扯淡」。正如单位制有所谓的 ISO 国际单位制一样,数学符号也有对应的 ISO 标准。数学符号的标准,首先是定义在 ISO 31-11 当中;而后这个标准被 ISO 80000-2:2009 取代。因此,此篇讨论的内容,都是基于 ISO 80000-2:2009 的。 在 ISO 80000-2:2009 中,微分算子被描述为

  • 直立的拉丁字母 d;
  • 一个右边没有间距的操作符。
对于直立的拉丁字母 d,我们可以使用 \mathrm{d} 达成效果。而若要微分算子的左边有间距,而右边没有,这个问题就值得思考了。 最简单的办法,是将微分算子做如下实现
\newcommand*{\dif}{\,\mathrm{d}}
看起来,这样是没有问题的。但是,在某些情况下,就会出现尴尬的问题。比如
关于 $x$ 的微分 $\dif x$ 是指的思考的问题。
因为在 \dif 的定义中,\mathrm{d} 之前有不可省略的铅空 \,。于是,这份代码中 \dif x 与前后正文之间的距离就不一致了。为了解决这个问题,更有经验的人可能会选择这样定义
\newcommand*{\dif}{\mathop{\mathrm{d}}\!}
这份代码,试图利用 \mathop,只在必要的时候于左边插入空白,修复了上面的问题。不过,这样一来也带来了一些副作用——在 \mathop 的作用下,\mathrm{d} 的基线发生了改变,不再与正常的数学变量保持在同一个基线上。这也是不好的。 最终解决问题,应该对微分算子有这样的定义
\newcommand*{\dif}{\mathop{}\!\mathrm{d}}
在这个定义中,拉丁字母 d 本身的特点得到了保留(比如基线是正常的)。此外,在 \mathrm{d} 的左边,插入了一个空白的 \mathop{};其左边的空白保留,而右边与 \mathrm{d} 之间的距离,则由 \! 抑制。这样就达成了我们的目标。
参考:http://www.tug.org/TUGboat/Articles/tb18-1/tb54becc.pdf#page=8
选自:https://liam0205.me/2017/05/01/the-correct-way-to-use-differential-operator/

点赞(17)

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部