*今条头日**的数学公式输入初探

外!号外!*今条头日**终于支持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 1\cdot \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 开关,例如:

\sum\nolimits_{i=1}^n ➤

反过来,当我们希望另外一些运算符,例如:

积分 \int_a^b ➤

的上下标符号写在上下时,可以使用 \limits 开关,例如:

\int\limits_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^t\right|_0^{+\infty} = 1 ➤

有时候,需要更宽的空格,这时用多个空格拼接起来不划算,我们可以使用 \quad 命令,例如:

x_i \in \R,\quad i = 1, 2, ..., n ➤

转义符 \ 在数学中也用作 差集,这时可以使用 \setnimus 命令,例如:

R\setminus0 ➤

可以用 \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{b\cdots 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/。

(这是小石头的第一篇头条文章,结束比较匆忙,写得也比较仓促,出错之处在所难免,欢迎各位条友批评指正!)