UnicodeMath编码教程(转载)

原地址:https://www.cnblogs.com/1024th/p/10393218.html

目录

参考UnicodeMath官方文档,原文看这
word插入公式不自动斜体的解决办法
建议先看:微软官网Word 中使用 UnicodeMath 和 LaTeX 的线性格式公式
本文持续更新。

1. 简介#

用UnicodeMath写数学表达式很简单,而且编码非常易读,比较接近手写的数学表达式。因此这种编码叫做“近纯文本格式”。

后文中近纯文本格式称为 线性格式 ,将构建的表示格式称为 构建格式

线性格式比[La]TeX或MathML更紧凑、易读。来个对比:

公式:(a+c)d(a+c)d

线性格式:((a+c))/d

[La]Tex:$\frac{(a+c)}{d}$

MathML:

 

Copy

<mfrac> <mrow> <mi>a</mi> <mo>+</mo> <mi>c</mi> </mrow> <mi>d</mi> </mfrac>

大多数数学表达式可以用线性格式明确表示,线性格式也可导出为[La]TeX、MathML格式。线性格式借用了部分TeX的符号,用来表示自己表示不了的东西,例如矩阵。

提示:后文中或将出现许多键盘上没有的Unicode符号,但它们大都可以用word的数学符号自动更正输入。你可以查看word的所有数学符号自动更正:

UnicodeMath编码教程(转载)

部分自动更正附在文后的自动更正列表

2. 编码简单数学表达式#

2.1 分数#

表示分数可以用LaTeX的\frac{numerator} {denominator}

在线性格式中:输入a/b,再敲个空格,完事。比Tex快多了。

给几个例子:

 

abcdabcd

线性格式是abc/d。要强制显示正常大小的线性分数(横着写),可以使用\ /(反斜杠后跟斜杠)。

线性格式(a+c)/d显示为a+bda+bd。
那问题来了,怎么才能输入(a+b)d(a+b)d?很简单,再打一对括号:((a+b))/d

另外,分数线样式有三种:

  1. “分数斜线”U+2044(可以通过\sdiv输入)
  2. “除法斜线”U+2215(\ldiv
  3. 带圆圈的斜线(U+2298,\ndiv
    三种分别显示成
    UnicodeMath编码教程(转载)

提示:由于分数线/后面不可能跟着运算符,所以/号被定义为取反,即键入/=就可得到(类似编程语言中的!=)。类似的有:

Operator Negated op Input
< /<
= /=
> />
/\exists
/\in
/\ni
/\sim
/\simeq
/\cong
/\approx
/\asymp
/\equiv
/\le
/\ge
/\lessgtr
/\gtrless
/\succeq
/\prec
/\succ
/\preceq
/\subset
/\supset
/\subseteq
/\supseteq
/\sqsubseteq
/\sqsupseteq

分数的另一个技巧是两个数字之间或斜杠和数字之间的句点或逗号被认为是数字的一部分,而不是终结符。例如,1/3.1416为 13.141613.1416,而不是13.141613.1416。

2.2 上标和下标#

_实现下标:δμνδμν 写为δ_μν

类似地,^实现上标。所以 a^b 表示 abab 。

复杂一点,加个括号: δμ+νδμ+ν 写为δ_(μ+ν)

上/下标的嵌套:a_b_c代表abcabc。类似地,a^b^c 代表abcabc。

abcabc 写为a^(b_c),而不是a^b_c。因为a^b_c(或a_c^b)显示为abcacb。

稍微复杂的例子,想想这个表达式怎么写?
W3βδ1ρ2σ3Wδ1ρ2σ33β

其线性格式为W^(3β)_(δ_1ρ_1σ_2)。而在TeX中,需要这样输入
$W^{3\beta}_{\delta_1\rho_1\sigma_2}$

对于

 

α32β32+γ32α23β23+γ23


线性格式文本可以为α_2^3/(β_2^3+γ_2^3),而标准的TeX版本为$$\alpha_2^3 \over \beta_2^3 + \gamma_2^3$$

更长的:

 

W3βδ1ρ1σ2=U3βδ1ρ1+18π2∫α2α1dα′2⎡⎣U2βδ1ρ1−α′2U1βρ1σ2U0βρ1σ2⎤⎦Wδ1ρ1σ23β=Uδ1ρ13β+18π2∫α1α2dα2′[Uδ1ρ12β−α2′Uρ1σ21βUρ1σ20β]

它的线性格式版本为
W_(δ1ρ1σ2)^(3β)=U_(δ1ρ1)^(3β)+1/8π^2 ∫_α1^α2▒dα'_2 [(U_(δ1ρ1)^(2β)-α'_2U_(ρ1σ2)^(1β))/U_(ρ1σ2)^(0β)]
而标准的TeX版本为

 

Copy

$$W_{\delta_1\rho_1\sigma_2}^{3\beta}= U_{\delta_1\rho_1}^{3\beta}+ {1 \over 8\pi^2} \int_{\alpha_1}^{\alpha_2} d\alpha_2’ \left[ {U_{\delta_1\rho_1}^{2\beta}-\alpha_2’ U_{\rho_1\sigma_2}^{1\beta}\over U_{\rho_1\sigma_2}^{0\beta}} \right] $$

2.3 空白(空格)字符使用#

输入\alpha跟一个空格将获得α,当α替换\alpha时,空格被消除。类似地,a_1 b_2会显示a1b2a1b2(中间没有空格)。

空格可以理解为局部写完了,进行提交。推荐一篇在Word中使用UnicodeMath和Latex优雅地输入线性公式对空格的叙述比较详细。
补充:x=(-b\pm<space>\sqrt(b^2-4ac))/(2a)<space>输入时在这两处空格。

在嵌套的下标/上标表达式中,空格一次构建一个上/下标。例如,要用编码a^b^c建立abcabc,需要两个空格。

UnicodeMath编码教程(转载)

+这样的其他运算符会构建整个表达式,因为这些运算符明确地终止了操作。

UnicodeMath编码教程(转载)

3. 编码其他数学公式#

3.1 open/close分隔符#

├(\open)和┤(\close)用于标志分隔(类似LaTeX的“\begin” “\end”)。

关于\open \close:4.6 线性格式自动更正列表

关于大括号方程组(cases)#

分段函数
|x|={x−xx≥0x<0|x|={xx≥0−xx<0
的线性格式为:|x|={█(x &x≥[email protected] &x<0)┤

关于操作符“ █ ”见3.19 方程组

补充:输入大括号括起来的方程组,还可以先输入\close,后输入方程组内容:

UnicodeMath编码教程(转载)

也可使用“&”进行对齐:

UnicodeMath编码教程(转载)

由于cases(分类讨论)很常见,线性格式v3中将符号“ Ⓒ ”(\cases)定义为cases的标志(类似于Tex的{cases}环境)。上面的编码等效于:|x|=Ⓒ(x &x≥[email protected] &x<0)

也就是说,{█(\close)可以用一个(\cases)替代。

关于缩放#

UnicodeMath提供了类似于LaTeX\big \Big \bigg \Bigg的对符号进行放大的用法。

Latex代码:

 

Copy

\Bigg\{ \bigg\{ \Big[ \big( (x) \big) \Big] \bigg\} \Bigg\}

效果:

 

{{[((x))]}}{{[((x))]}}

UnicodeMath编码:在├后加一个数字‘0’-‘4’,代表放大值。对照表:

Digit Meaning
0 Don't grow
1 big
2 Big
3 bigg
4 Bigg

因此上面例子线性格式为:
├4{├3{├2[├1(├0(x))]}}

但实际上,如果不是必须,不建议使用这种办法。因为不说明大小,程序也会自动进行放大。

关于绝对值#

UnicodeMath中绝对值直接用竖杆“|”(U+007C)表示(LaTeX是\left| \right|),按空格构建。

然而,如何输入∣∣|x|−|y|∣∣||x|−|y||?

如果直接输入||x|-|y||,结果将会是||x|−|y||||x|−|y||.

正确的线性格式为:|(|x|-|y|)|

从中我们了解到,不指明层级(使用括号)时,默认竖杆|与其后跟的第一个|为一对绝对值。

3.2 转义#

如果你想把UnicodeMath中某个“关键字”当作普通文本识别的话,在他前面加反斜杠。

例如,\[将显示为原原本本的方括号,程序不会为它匹配]

3.3 向上/向下操作符#

线性格式(_c^b)a_c^a b显示为bcacba。

线性格式lim┬(n→∞)a_n显示为limn→0anlimn→0an。

\above(┴)\below(┬)表示上下标。

3.4 第三个参数(n-aryand)#

像积分、求和、极限这样的运算符含有上/下标(\above \below ^ _),同时还含有第三个参数(n-aryand)。对于积分,n-aryand是被积函数,对于求和,它是加数。为了识别,符号“▒”(U+2592)作为链接n-aryand的“胶水”。

线性格式∫_0^a▒xⅆx/(x^2+a^2)显示为

∫a0xdxx2+a2∫0axdxx2+a2

中间的“ⅆ”(双线斜体小写d)在word中可用\dd输入。注意这个“ⅆ”在显示时前面有一个小空格(而直接打字母d就不会有这个效果)。

其实在word中打\int会自动匹配第三个参数(显示成虚框)。这个“胶水”了解就好。

3.19 方程组#

操作符“ █ ”(\eqarray)使一个方程相对于另一个方程垂直对齐。“&”符号标志对齐位置。
例如:

 

103x+x+313y=2y=410x+3y=23x+13y=4


线性格式:
█(10&x+&3&[email protected]&x+&13&y=4)

4. 输入方法#

4.6 线性格式自动更正列表#

输入"word"再空格,将替换为"Control"。

Control word Character Control word Character
\int (U+222B) \underbrace (U+23DF)
\oint (U+222E) \overbrace (U+23DE)
\sum (U+2211) \begin (U+3016)
\prod (U+220F) \end (U+3017)
\funcapply   (U+2061) \phantom (U+27E1)
\naryand,\of (U+2592) \box (U+25A1)
\rect (U+25AD) \hphantom (U+2B04)
\sqrt (U+221A) \vphantom (U+21F3)
\open (U+251C) \asmash (U+2B06)
\close (U+2524) \dsmash (U+2B07)
\above (U+2534) \hsmash (U+2B0C)
\below (U+252C) \smash (U+2B0D)
\underbar (U+2581) \matrix (U+25A0)
\overbar ̄ (U+00AF) \eqarray (U+2588)