如何正确地使用 MS Word 公式输入

近日水群的时候,有些群友奋力地吐槽 MS Word 的公式编辑器之难用,认为这种完全用鼠标点点的东西非常低效,也没有 LaTeX 那样有逼格。事实上,说出这样的话的人,对 MS Word 的数学公式编辑缺乏一定的了解。

其实很多人不会用 Office 系列软件:会用 Word 排版文科作业,但所有样式全是“正文”;会用 PowerPoint 做动效夸张的幻灯片,但每一页的背景图都要手动添加;会用 Excel 求求平均值、排排序,但对数据透视表和汇总分析一无所知。其实这些日常生活中常用的软件,其内部大有玄机;但上述这些就不在本文的讨论范围内了,本文来讲讲数学公式的排版。

众所周知,大家都会用 LaTeX 写公式,就连本博客也是用 MathJax 进行的渲染;但 LaTeX 并不是唯一的数学公式输入方案,还有 AsciiMath 和 UnicodeMath 等。LaTeX 本身是一个泛用的排版软件,其通用性导致了它在排版数学公式的时候会较为冗长、不太可读,例如 \(\left(\lambda\odot \mu\right)_{n\in \mathbb{Z}}=\sum\limits_{i=0}^n\left(\frac{n!}{i!}\lambda_i \mu_{n-i}\right)\) 这一公式,其 LaTeX 源码为 \left(\lambda\odot \mu\right)_{n\in \mathbb{Z}} = \sum_{i=0}^n\left(\frac{n!}{i!}\lambda_i \mu_{n-i}\right) ,比较冗长;为了数学排版而专门设计的语言,例如 AsciiMath,会相对简短一些,例如同一公式在 AsciiMath 中写作 (lambda o. mu)_(n in ZZ) =sum_(i=0)^n ((n!)/(i!) lambda_(i) mu_(n-i))

为了进一步提高可读性,人们发明了 UnicodeMath,充分利用 Unicode 字符的多样性来表示数学公式,例如上述公式写作 (λ⊙μ)_(n∈ℤ)=∑_(i=0)^n▒(n!/i! λ_i μ_(n-i) ) 。这便是 Word 中采用的方案。

那一个很明显的问题就来了,这些奇形怪状的字符比较难以输入;但既然本文是用中文写就的,那么本文的读者就应当清楚有一个叫输入法的东西,可以帮你输入奇怪的 Unicode 字符(汉字)。Word 也内建一个这样的“输入法”,名字叫做“数学符号自动更正”。在顶栏“公式-转换(右边的箭头)-数学符号自动更正”中,你可以看到其全表。比如说,\sum 被自动更正为 ,那么你只要在公式环境下(插入公式,或者Alt-=),输入BACKSLASH-S-U-M-SPACE,就会帮你变为 。这里的自动更正选用了和 LaTeX 相似的用词,因此如果对 LaTeX 比较熟悉的可以直接上手一部分。

Word 的公式有两个模式,一个叫做“专业”,一个叫做“线性”;线性就是上述 UnicodeMath,专业就是渲染好了的实体公式,下文默认在专业模式下。

出于书写的方便,下文在写公式的时候,会写下键盘实际上输入的东西,这样读者读起来也比较方便。

  • 上下标:略。
  • 希腊字母:和 LaTeX 一样。
  • 粗体,斜体:直接使用 Word 的粗体和斜体,快捷键是 Ctrl-BCtrl-I。也可以使用 "qaq" 来表示类似于 mathrm 的效果 \(\mathrm{qaq}\)
  • 黑板粗体:使用 \doubleZ 表示 \(\mathbb{Z}\)
  • 德文尖角体:\frakturC 表示 \(\mathfrak{C}\)
  • 分数线:直接使用 a/b 表示 (LaTeX)\frac{a}{b}。如果比较长,使用括号,例如 ((a+b))/(c+d)\(\frac{(a+b)}{c+d}\) 。TeX 的 \left, \right 不需要了,括号会自动增长。
  • 根式:\sqrt 2\sqrt(3&2) 表示立方根。
  • 求和:\sum_(i=1)^n a_i 。专业模式下,这一公式按下空格之后,就会把求和号的上下标展开为实体公式,然后出现一个被求和数的框,直接继续键盘输入 a_i 即可。在“线性”模式下,需要输入 \sum_(i=1)^n\naryand a_i,其中 U+2592 ▒ \naryand 是像 \sum 这种多个参数的符号(下标、上标、被求和数),用于分割后续参数的符号。\prod 同理。
  • 二元运算:一般 \times \cdot,带圈 \circ \oplus \otimes \odot ,集合与逻辑\cap \cup \wedge \vee 。他们各自有大操作数版本 \bigvee 等。加减号直接使用 +- \(\pm\)-+ \(\mp\)
  • 箭头:\leftarrow \Rightarrow 等和 LaTeX 一样。
  • 对于不成对的括号,使用 \open\close 。例如如果左括号是大括号,右括号是竖线,那么有 \open{x\close| ,得到\(\left\{x\right|\) 。对于空的一边(类似 TeX 的 \right. ,直接写 \close 然后空格。
  • 使用 \eqarray 排版多行的公式对齐;使用 \matrix 排版矩阵。用法类似于 \matrix(a_11&a_12&a_13@a_21&a_22&a_23) ,用 @ 换行、& 缩进。eqarray 类似,但 & 不会提供空格,而是在行之间对齐(比如用于对齐等号)。矩阵的省略号 \cdots \vdots 等和 LaTeX 差不多。
  • 分类讨论使用上两条合起来,即 { \eqarray( &x," if "x>=0 @ -&x," if "x<0) \close 最后加一个空格。外层的 { \close 用于表示分类讨论的框,内层的 eqarray 表示那个两层的对齐结构。
  • 向量符号、横线:a\vec··x\bar·· ,其中的 · 表示空格。第一次空格把 \vec 展开成相应的 Unicode 字符,第二次空格把它和前面的字母组合起来。前面如果是多个字母的话加括号。
  • 组合数使用 (n\atop i) ,上升幂、下降幂使用 a^\underbar 2

如果想知道更多,可以看 UnicodeMath 的标准文档 ,使用 Ctrl-F 在 PDF 内查询。

推荐使用 WordTeX 模板,其内建了 LaTeX 的字体,在正确的排版下可以做到和 LaTeX 输出的 PDF 非常类似的效果。我使用这一方法在一年内混淆了三名助教。如果需要导出 PDF,请使用 Adobe Acrobat。别的都有各种各样的小问题。

对于不支持 Word 的环境(或者说,大部分网络发布环境),可以使用 pandoc 将 Word 导出为 Markdown 等格式。