外!号外!今日头条终于支持LaTeX数学公式输入了!作为一个数学作品创作者,小石头真是 普大喜奔!这真是头条给广大数学爱好者的最好新年礼物呀!
以前,要输入数学公式,必须将其转为图片,然后再插入;现在,只需打开PC端的文章编辑页面,在文章编辑区中选择公式要插入位置,然后在工具栏里下拉 “插入更多插入卡” ,再点击 “插入公式” ,就可以打开头条提供的 公式编辑器,进行录入公式了。
图1:打开公式编辑器
公式编辑器分为:工具栏、公式编辑区、公式预览区,三部分,
图2:公式编辑器
在公式编辑区输入LaTeX公式,就可以实时地在公式预览区看到公式呈现的效果,而工具栏中提供了丰富的LaTeX命令按钮,帮助我们输入LaTeX命令。
当公式输入完成后,点击确定按钮,就会将所输入的公式插入到文章编辑区中之前所选插入位置,
图3:公式成功插入
之后,还可以通过点击该公式,再次将它在公式编辑器中打开进行修。
条的数学公式采用LaTeX数学公式的语法。LaTeX是TeX的宏扩展,而TeX是著名数学家,计算机学家 Donald 为他的巨著《计算机程序设计的艺术》专门开发的计算机排版系统。后来,美国数学学会(AMS)又在LaTeX基础上提供了 “amsmath” 宏包,这就是今天的LaTeX数学公式。
TeX是一个命令式宏语言,我们在公式编辑区中所输入的公式其实就是TeX代码。TeX类似Python这样的计算机语言,只不过TeX代码的执行结果是生成格式文本,也就是预览区和文章编辑区中所呈现的东西。
TeX的这种特性,使得头条的数学公式编辑器 异于World这样的可见即可得的编辑器,要玩转它我们必须对 LaTeX数学公式的语法有一定的了解。
LaTeX数学公式由文字和命令组成,其中LaTeX文字代表自己本身,例如:
e ➤
而LaTeX命令,均以斜杠”“(称为转义符)开头,用于和普通文字区别,命令生成格式和符号, 例如:
pi ➤
通常,命令之后带有参数,例如:
sqrt 2 ➤
也可以带有多个参数,例如:
frac 1 2 ➤
除去命令名外,每个字符(包括,字母、数字、符号)是各自独立的,例如:
sqrt ab+2 ➤
要让多个字符组成一个整体需要用花括号"{, }"将它们包裹起来,例如:
sqrt {ab+2} ➤
TeX在输出格式文本时,会默认将符号之间的空格过滤掉,例如:
a b ➤
如果想要显示输出空格需要在每个空格前加转义符,例如:
a b ➤
换行同样也被过滤掉,想要换行使用 双斜杠 \ ,例如:
a \ b ➤
有些命令因为非常用,所以TeX提供了关键字,例如:上下标命令分别是^和_,
a_b, a^c, a_b^c ➤
一般数学公式中不使用这些关键字,如果非要使用可以在之前加转义符,例如:
a_b ➤
注意:花括号"{, }" 也是关键字,所以也需要转义符,例如:
[n]={1,2, ..., n} ➤
数学公式分为行内和行外之分,当公式插入在一行文字之间时,称为行内,当公式单独占据一行时,称为行外。我们可以在文章编辑区,用鼠标拖拽公式,改变它的插入位置,从而在行内行外切换。
图4:行内行外切换
同时,我们还可以通过工具栏,来调节行外公式的 对其方式情况。
图5:行外居中
于,初学者来说,常用的LaTeX数学命令并不需要记忆,因为头条公式编辑器已经将它们做成了工具栏中的快捷按钮,如下图,按下 按钮,就会在 公式编辑器 生成 命令 sqrt x ,然后只需要将 参数 x 改成我们需要的 表达式就可以了。
图6:快捷的LaTeX命令输入
但是,想要完全玩转数学公式输入,大家还需要还需掌握更多命令,以应付世界上最复杂的事物——数学。以下是小石头(作者)这两年,在头条用图片输入数学公式所积累的经验,在这里与大家分享。
在数学公式中,变量、函数参数 等 普通字符 默认为 斜体 ,而 函数名 需要写成 正体(罗马体) ,绝大多数 数学函数都已经被 LaTeX支持,例如:
sin x ➤
但是有少部分 函数没有,例如:值域 ran,这时就需要使用 operatorname 命令,例如:
operatorname{ran} f ➤
除了函数名外,某些字母被用于特殊意义时,也需要被写成 正体,例如:虚单位i,微分符号 d,这时可使用 mathrm 命令将字符指定为正体 例如:
mathrm{i}, mathrm{d}x ➤
特殊数集被要求被写成板书粗体,LaTeX支持的有,
- 自然数集: N ➤ ;
- 整数集: Z ➤ ;
- 有理数集: Q ➤ ;有Bug
- 实数集: R ➤ ;
- 复数集: C ➤ ; 有Bug
注意:数集也可以写成(普通)粗体。
如果不支持可以使用 mathbb 命令,例如:
mathbb{A} ➤
下面的字体,也经常在数学公式中使用,
- 意大利体 mathit{A} ➤ , 默认字体;
- (普通)粗体 mathbf{A} ➤ ,用于向量、特殊集合;
- 手写体 mathcal{A} ➤ ,用于 辅助线、特殊对象;
- 花体 mathscr{A} ➤ ,用于 集族、范畴;
- 哥特体 mathfrak{A} ➤ ,用于 可测集、特殊集合;
对每一个 特殊符号, 例如:上面的微分符号d,都要用命令指定字体,是非常麻烦的事情!我们可以用 def 命令,来创建新的命令,例如:
def d{mathrm{d}}
然后,就可以使用新命令了,例如:
int 1cdot d x = x + C ➤
当然,def 命令也可以带参数,例如:
def cat#1{mathbf{#1}}
cat{Set} ➤
注意:头条文章编辑器,目前,要求每个公式必须自己定义自己的命令,公式之间自定义命令不能共享。
前面的字体是针对拉丁字母而言的,而希腊字母并不支持这些字体,但是有希腊字母有两种写法(LaTeX通过在原始命令前加var来提供另外一种写法),可以分别用于不同的地方,例如:
直径 phi ➤ ,角度 varphi ➤
伽马函数 Gamma ➤ ,伽马分布 varGamma ➤
还有些希腊字母和拉丁字母完全相同,如:A,K,因此没有对应的LaTeX命令。
对于某些运算符,例如:
累加 sum_{i=1}^n ➤
当作为行内公式时,一般要求,将 上下标写在右上下角,这时可以使用 nolimits 开关,例如:
sumnolimits_{i=1}^n ➤
反过来,当我们希望另外一些运算符,例如:
积分 int_a^b ➤
的上下标符号写在上下时,可以使用 limits 开关,例如:
intlimits_a^b ➤
注意:nolimits 和 limits 开关 仅仅对 操作符有效,对于普通符号想要使用它们,需要用 mathop 命令将其转为操作符,例如:
mathop{a}limits_b^c ➤
组合命令:
binom {n}{k} = frac{n!}{(n-k)!k!} ➤
在行内可改写为:
tbinom {n}{k} = n! / (n-k)!k! ➤
两种括号比较:
(frac 1 2), left( frac12 right) ➤
只显示一边的括号:
left. frac12 right) , left( frac12 right. ➤
定义集合时需要用 竖杠命令 mid 将 元素 和 属性分开,例如:
N = {x in Z mid x geq 0} ➤
但是,如果 属性表达式是多行时,我们需要使用 两对 left right 配合使用,并且由于 mid 不能应用,所以必须使用 原始 的 竖杠 | 搭配空格,例如:
left{x in Z left| x geq frac 1 2 right.right} ➤
在求定积分时,也有类似的技巧,例如:
0!=Gamma(1)=left.int_0^{+infty} t^0 e^t d t = -e^tright|_0^{+infty} = 1 ➤
有时候,需要更宽的空格,这时用多个空格拼接起来不划算,我们可以使用 quad 命令,例如:
x_i in R,quad i = 1, 2, ..., n ➤
转义符 在数学中也用作 差集,这时可以使用 setnimus 命令,例如:
Rsetminus0 ➤
可以用 dots 命令 取代 ... 输入来省略符 ,例如:
1, 2, dots, n ➤
算式的 省略符号 一般写在中间,用 cdots 命令,例如:
a_0x^n + a_1x^{n-1} + cdots + a_{n-1}x + a_n ➤
有时候需要标注累加式或累积式的项数,我们可以这样:
na=overbrace{a + cdots + a}^n ➤
b^m=underbrace{bcdots b}_m ➤
也可以在关系运算符上标注:
stackrel{a}{Longrightarrow} ➤
中学数学,要求用箭头表示矢量:
vec{a} ➤
类似的还有:
overline{A cap B} = overline A cup overline B ➤
a_1 + cdots + hat{a}_i + cdots + a_n ➤
注意:^{a}和 hat{a}完全类似,因为^用于了加帽命令,所以要单独输入^可写为 ^{} 或 hat{}。另外,^在LaTeX公式里无效,只能使用hat。
在公式中可是使用下列命令来控制字体大小:
{Huge A} {huge A} {LARGE A} {Large A}{large A} A{small A}{scriptsize A}{tiny A} ➤
也可以使用color命令来控制文字颜色,例如:
{color{red} R}{color{green} G}{color{blue} B} ➤
同余方程命令:
f(x) equiv c pmod m ➤
f(x) bmod m = c ➤
方程组命令:
begin{cases}
x_1 + x_2 = -frac b a \
x_1x_2 = frac c a
end{cases}
qquad
left{begin{array}{c}
x_1 + x_2 &=& -frac b a \
x_1x_2 &=& frac c a
end{array}right.
➤
矩阵命令:
begin{matrix}
1 & 0 \
0 & 1
end{matrix}
➤
添加括号(包括行列式符号):
begin{pmatrix} M end{pmatrix}, begin{bmatrix} M end{bmatrix}, begin{vmatrix} M end{vmatrix}
➤
添加省略符和角标:
begin{bmatrix}
1 & cdots & 1 \
vdots & ddots & 0 \
1 & 0 & 1
end{bmatrix}_{m times n}
➤
添加分割线:
begin{array}{|c:c|}
hline
1 & 0 \
hdashline
0 & 1 \
hline
end{array}
➤
算术竖式:
begin{matrix}
& A & B & C & D \
times & & & & 9 \
hline
& D & C & B & A
end{matrix}
➤
begin{array}{c}
begin{matrix}
\ Box & Box & Box & / \ \ \ \ \ \ \ \ \
end{matrix}
begin{matrix}
&&&Box & 7 & Box & Box & Box \
hline
Box & Box & Box & Box & Box & Box & Box & Box \
Box & Box & Box & Box \
hline
&& Box & Box & Box \
&& Box & Box & Box \
hline
&& Box & Box & Box & Box \
&&& Box & Box & Box \
hline
&&&& Box & Box & Box & Box \
&&&& Box & Box & Box & Box \
hline
&&&&&&&0
end{matrix}
end{array}
➤
了,目前小石头经常用的就这么多了,希望对大家有所帮助。
就小石头分析,头条数学公式,具体使用的是 MathJax 的 KaTeX引擎,更详细的内容大家可以参考:https://www.mathjax.org/。
(这是小石头的第一篇头条文章,结束比较匆忙,写得也比较仓促,出错之处在所难免,欢迎各位条友批评指正!)