本文主要讲述LaTex的基础语法作用方式以及MathJax插件的使用,事实上LaTex拥有不输脚本语言或者HTML的语法复杂度,更加复杂的语言将会在其它文章中出现。MathJax是一款运行在浏览器中的开源数学符号渲染引擎,使用MathJax可以方便的在浏览器中显示数学公式并且在例如WordPress驱动的网站中使用HTML编写数学公式,非常方便。并且因为其使用了嵌入浏览器的渲染方式,所以不用依赖图片显示公式,清晰度不会随着网页的缩放而改变。
A.LaTex的语法基础教程
有两种公式显示形式,首先是使用单个$符号对包括的公式,这种公式的显示方式是嵌入行内文字的显示也就是俗称的Inline,另一种使用$$符号对包括的公式将会另起一行单独渲染也就是俗称的Display,例如如下区别:(当然在Wordpress中单个$要使用$latex开头,在语句后附加\tag{标签内容}可以在公式后附加标号标签,这通常在文献书写过程中作为标号使用。)
$ \sum_{i=0}^n i^2=\frac{(n^2+n)(2n+1)}{6} $内嵌显示 $$\sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}$ $单独显示
- 希腊字母的表示应当使用小写英文加以\符号,例如\alpha显示为\(\alpha\)
- 大写希腊字母的表示应当使用首字母大写的英文例如\Pi显示为\(\Pi\)
- 有些希腊字母例如\(\alpha\)的大写字母就是英文字母A,此状况无需单独写
- 上标与下标符号使用^与_符号并且不区分顺序,例如x_1^2显示为\(x_1^2\)
- 在使用上下标号时如果需要用多个字母应当用花括号包括例如x_{qed}显示为\(x_{qed}\)
- 当然LaTeX本身支持嵌套,例如x_{i^2}显示为\(x_{i^2}\)
- 在LaTeX语法中小括号( )与中括号[ ]都是普通的符号,但是花括号需要用\转义为\{ \}
- 括号不会自动随着公式变换大小例如(\frac{\sqrt x}{y^3})显示为\((\frac{\sqrt x}{y^3})\)
- 可以通过\left 与 \right标签调整括号显示大小\left(\frac{\sqrt x}{y^3}\right)显示为\(\left(\frac{\sqrt x}{y^3}\right)\)
- left与right标签可以直接用于小括号和中括号,转义后的花括号(也可写作\lbrace\rbrace)
- 尖括号<>在LaTeX中使用\langle与\rangle;上下取整使用\lceil \rceil \lfloor \rfloor即可表示
- 也可以使用 . 不显示括号,例如\left.\frac{1}{2}\right\}显示为\(\left.\frac{1}{2}\right\rbrace\)
- 求和符号写作\sum即\(\sum\),积分符号写作\int即\(\int\),求积符号为\prod即\(\prod\) 重积分为\iint即\(\iint\)
- 以上三类符号均含有三个参数,即下条件,上条件以及运算主体,使用上下标结合{}花括号书写
- 分数有两种实现方式:\frac{分子}{分母} 或者 {分子}\over{分母} 显示\({top}\over{bottom}\)
- 开根号使用\sqrt,例如\sqrt x显示为\(\sqrt x\),三次根\sqrt[3] x显示为\(\sqrt[3] x\)
- 在LaTex语法中,常规使用空格是不会现实的,需要使用\quad,例如x\quad y为\(x\quad y\)
B.LaTex较为复杂语法使用
- \Vert表示向量括号||,例如\vert x\vert显示为\(\Vert x\Vert\)
- sin,cos等函数不应当直接写作纯文本,应当写作\sin \cos显示为\(\sin x\quad\cos x\)
- 求极限写作lim,极限条件应当通过下标方式书写例如\lim\limits_{x\to 0}f(x)显示为\(\lim\limits_{x\to 0}f(x)\)
- 双重极限使用\substack例如\lim\limits_{\substack{x\to 0\\ x\to 0}}f(x)显示为\(\lim\limits_{\substack{x\to 0\\ y\to 0}}f(x,y)\)
- 求和符号与极限符号对齐上下标使用\limits,例如\sum\limits_{down}^{up}{content}为\(\sum_\limits{down}^{up}{content}\) 但是\sum_{down}^{up}{content}为\(\sum_{down}^{up}{content}\)
- 虽然left和right标签能够自适应大小,但是可以使用\big \bigg \Big \Bigg与l、r组合标签来控制
- 单空格\,双空格\; 四空格\quad 八空格\qquad
- 希腊字母在做变量的时候可以添加var字段,例如从\phi到\varphi显示为\(\phi\to\varphi\)
- \ell显示小写 l 为\(\ell\),仅此一例,目的是避免和竖线 | 或者阿拉伯数字 1 混淆
- 在公式代码中可以使用\text{content}直接显示content位置所输入的文字,不改动其中的内容
- 以下展示日常用到的操作符,更多更完全的符号说明参照 LaTeX官方网站
LaTeX符号 | LaTeX语法 | LaTeX符号 | LaTeX语法 |
大并集号 \(\bigcup\) | \bigcup | 乘号 \(\times\) | \times |
大交集号 \(\bigcap\) | \bigcap | 除号 \(\div\) | \div |
并集 \(\cup\) | \cup | 正负 \(\pm\) | \pm |
交集 \(\cap\) | \cap | 负正 \(\mp\) | \mp |
差集 \(\setminus\) | \setminus | 大于号 \(\gt\) | \gt |
包含 \(\subset\) | \subset | 小于号\(\lt\) | \lt |
包含 \(\subseteq\) | \subseteq | 大于等于号 \(\ge\) | \ge |
真包含\(\subsetneq\) | \subsetneq | 小于等于号 \(\le\) | \le |
反包含 \(\supset\) | \supset | 不等于 \(\neq\) | \neq |
属于 \(\in\) | \in | 无限符号 \(\infty\) | \infty |
不属于 \(\notin\) | \notin | 极限箭头 \(\to\) | \to |
空集 \(\emptyset\) | \emptyset | 左箭头 \(\leftarrow\) | \leftarrow |
空集 \(\varnothing\) | \varnothing | 右箭头 \(\rightarrow\) | \rightarrow |
排列符号 \(A\binom {n}{m}\) | A\binom {n}{m} | 大左箭头 \(\Leftarrow\) | \Leftarrow |
组合符号 \(C {{n}\choose{m}}\) | C{{n}\choose {m}} | 大右箭头 \(\Rightarrow\) | \Rightarrow |
并运算 \(\land\) | \land | 映射箭头 \(\mapsto\) | \mapsto |
或运算 \(\lor\) | \lor | 五星号 \(\star\) | \star |
非运算 \(\lnot\) | \lnot | 六星号 \(\ast\) | \ast |
全称量词 \(\forall\) | \forall | 圈加运算 \(\oplus\) | \oplus |
存在量词 \(\exists\) | \exsits | 空心圆 \(\circ\) | \circ |
向上取 \(\top\) | \top | 实心圆 \(\bullet\) | \bullet |
向下取 \(\bot\) | \bot | 约等于 \(\approx\) | \approx |
微分算子 \(\nabla\) | \nabla | 相似等于 \(\cong\) | \cong |
偏微分 \(\partial\) | \partial | 恒等于 \(\equiv\) | \equiv |
求模 \(\pmod n\) | \pmod n | 预测估计 \(\prec\) | \prec |
省略号 \(\ldots\) | \ldots | 省略号 \(\cdots\) | \cdots |
断定符 \(\vdash\) | \vdash | 相似于 \(\sim\) | \sim |
满足符 \(\vDash\) | \vDash | 相似等于 \(\simeq\) | \simeq |
实部号 \(\Re\) | \Re | 虚部号 \(\Im\) | \Im |
顶部符号 \(\hat x\) | \hat x | 大顶部符 \(\widehat{xy}\) | \widehat {xy} |
右箭头符号 \(\overrightarrow x\) | \overrightarrow x | 左箭头符号 \(\overleftarrow x\) | \overleftarrow x |
向量符号 \(\vec x\) | \vec x | 双箭头符号 \(\overleftrightarrow x\) | \overleftrightarrow x |
顶部点号 \(\dot x\) | \dot x | 顶部双点 \(\ddot x\) | \ddot x |
C. 矩阵与方程组语法
无括号矩阵开始\begin{matrix}结束\end{matrix},行与行之间使用"\\"隔开,列之间用&隔开,举例\begin{matrix} 1&0&0 \\ 0&1&0 \\ 0&0&1 \end{matrix}显示为:
$$\begin{matrix} 1&0&0 \\ 0&1&0 \\ 0&0&1 \end{matrix}\tag{无括号矩阵}$$
若要使用有符号矩阵,那么需要将\begin{matrix}和\end{matrix}中的matrix替换为其他内容,例如小括号使用pmatrix,中括号使用bmatrix,花括号使用Bmatrix,竖线使用vmatrix,双竖线Vmatrix,当然也可以使用前文提到的\left和\right的方法,实例如下:
$$\begin{pmatrix} 1&0&0 \\ 0&1&0 \\ 0&0&1 \end{pmatrix}\begin{bmatrix} 1&0&0 \\ 0&1&0 \\ 0&0&1 \end{bmatrix}\begin{Bmatrix} 1&0&0 \\ 0&1&0 \\ 0&0&1 \end{Bmatrix}\begin{vmatrix} 1&0&0 \\ 0&1&0 \\ 0&0&1 \end{vmatrix}\begin{Vmatrix} 1&0&0 \\ 0&1&0 \\ 0&0&1 \end{Vmatrix}$$
当我们在公式或者证明过程中使用矩阵时很可能要用到省略号代表省略矩阵的部分内容,横向的省略号可以使用上文提到过的\cdots,纵向省略号\vdots,斜向省略号使用\ddots,例如:
$$\begin{bmatrix} a_{11}&a_{12}&\cdots&a_{1n} \\ a_{21}&a_{22}&\cdots&a_{2n} \\ \vdots&\vdots&\ddots&\vdots \\ a_{n1}&a_{n2}&\cdots&a_{nn} \end{bmatrix}\tag{带省略号矩阵}$$
在学术文件的撰写和笔记的书写过程中,我们经常会遇到需要用一组公式或者方程来描述某种系统或者某种数学模型的情况,处理方式可以是用一个单边自适应的括号结构例如\left \lbrace + \right.将方程组括起来,在括起来的内容中使用\begin{array}{c}和\end{array}构建一个纵向扩展的数组来描述内容。当然array也可以换成align,或者抛弃自适应括号,直接换用cases,代码如下:
$$f(n)=\left\lbrace\begin{array}{c}n/2,&\text{if n is even}\\3n+1,&\text{if n is odd}\end{array}\right.\tag{Use-Array}$$
$$f(n)=\begin{cases}n/2,&\text{if n is even}\\3n+1,&\text{if n is odd}\end{cases}\right.\tag{Use-Cases}$$
$$f(n)=\left\lbrace\begin{array}{c} n/2, & \text{if n is even} \\ 3n+1, & \text{if n is odd}\end{array}\right.\tag{Use-Array}$$
$$f(n)=\begin{cases}n/2,&\text{if n is even}\\3n+1,&\text{if n is odd}\end{cases}\tag{Use-Cases}$$
D. LaTeX语法中字符和字体设置
希腊字母大小写以及LaTeX写法与中文发音表
编号 | LaTeX代码 | 大写字母 | 小写字母 | 中文发音 |
1 | \alpha | A | \(\alpha\) | 阿尔法 |
2 | \beta | B | \(\beta\) | 贝塔 |
3 | \gamma | \(\Gamma\) | \(\gamma\) | 伽马 |
4 | \delta | \(\Delta\) | \(\delta\) | 德尔塔 |
5 | \epsilon | E | \(\epsilon\) | 伊普西隆 |
6 | \zeta | Z | \(\zeta\) | 截塔 |
7 | \eta | H | \(\eta\) | 埃塔 |
8 | \theta | \(\Theta\) | \(\theta\) | 西塔 |
9 | \iota | I | \(\iota\) | 约塔 |
10 | \kappa | K | \(\kappa\) | 卡帕 |
11 | \lambda | \(\Lambda\) | \(\lambda\) | 拉姆达 |
12 | \mu | M | \(\mu\) | 缪 |
13 | \nu | N | \(\nu\) | 纽 |
14 | \xi | \(\Xi\) | \(\xi\) | 克西 |
15 | \omicron | O | \(\omicron\) | 奥密克戎 |
16 | \pi | \(\Pi\) | \(\pi\) | 派 |
17 | \rho | P | \(\rho\) | 肉 |
18 | \sigma | \(\Sigma\) | \(\sigma\) | 西格玛 |
19 | \tau | T | \(\tau\) | 涛 |
20 | \upsilon | \(\Upsilon\) | \(\upsilon\) | 宇普西隆 |
21 | \phi | \(\Phi\) | \(\phi\) | 佛埃 |
22 | \chi | X | \(\chi\) | 西 |
23 | \psi | \(\Psi\) | \(\psi\) | 普西 |
24 | \omega | \(\Omega\) | \(\omega\) | 欧米伽 |
在使用LaTeX书写数学公式的工程中,有可能需要使用花体,圆体等等不同的字体来表示不同字母在代数表达中的用途,尽管LaTeX可以使用在标签中插入var字段设置字体为变量的方法,但是使用起来仍然非常不便,所以LaTeX又提供了大面积改动字体的方法。
- 黑板粗体,使用\mathbb{},例如\(\mathbb{Content}\)
- 黑体字符,使用\mathbf{},例如\(\mathbf{Content}\)
- 打印字体,使用\mathtt{},例如\(\mathtt{Content}\)
- 罗马字体,使用\mathrm{},例如\(\mathrm{Content}\)
- 灯芯字体,使用\mathsf{},例如\(\mathsf{Content}\)
- 书法花体,使用\mathcal{},例如\(\mathcal{Content}\)
- 手写花体,使用\mathscr{},例如\(\mathscr{Content}\)
- 德文活体,使用\mathfrak{},例如\(\mathfrak{Content}\)
E.MathJax插件在WordPress等网站中的使用
MathJax插件可以在WordPress后台管理页面中的插件市场直接安装,可以选择较为轻量化的插件版本Simple-MathJax或者是对于LaTeX支持较为完善的MathJax-LaTeX版本。直接在插件市场中选择下载安装即可,这里要说明该插件的作用方式,分为前后端两部分,所谓的前端部分就是直接将网页编辑器中嵌入HTML的部分提取并且替换成LaTeX公式加载内容,后端部分负责接收内容并且完成事实上的渲染加载过程。这个过程默认使用官方提供的CDN服务完成,由于该服务器在国外,所以有大量内容需要加载或者是服务器入口带宽不够大时容易卡顿。以下提供安装代码:
#首先从GitHub下载相关软件包并且解压
sudo wget https://github.com/mathjax/MathJax/archive/master.zip
unzip master.zip
#/***代表wordpress的网站根目录,例如宝塔面板即/www/wwwroot/wordpress/wp-content
mv master MathJax && mv MathJax /***/wp-content/
#注意将MathJax文件夹及其子文件夹设置为正确的拥有者以及文件权限,例如宝塔环境:
chown www:www -R /***/wp-content/MathJax
完成上述配置后即可在WordPress设置界面中改变插件MathJax的选项,首选取消勾选使用官方默认的CDN服服务,并在文本框内填写https://xxx/wp-Content//es5/tex-mml-chtml.js作为新设定的CDN,xxx代表wordpress服务器域名。而后完成其他相关选项设置如下图所示: