0%

Mathjax in hexo and gitbook

介绍一下 mathjax 在 vscode,hexo,gitbook 中的使用以及 LaTeX 中数学公式书写的基本规则

MathJax 简介

MathJax 是一款运行在浏览器中的开源的数学符号渲染引擎,使用 MathJax 可以方便的在浏览器中显示数学公式,不需要使用图片。目前,MathJax 可以解析 Latex、MathML 和 ASCIIMathML 的标记语言。

顺便安利一款软件 ,可以直接截图将图片公式转化为 LaTeX 代码
Mathpix Snipping Tool

VScode

在 VScode 中进行实施浏览,我使用的是Markdown+Math这个插件,安装好之后直接在 markdown 中进行书写公式就可以非常方便得进行转化
VScode-math.jpg

Hexo

我使用的是 Hexo博客next 主题,非常贴心地在主题的配置文件中给出了是否打开的选项。在 blog/themes/next/_config.yml 中进行修改,将 math 选项打开,我这里对于 per_page 的选项选择的是 true(我觉得并不是每一篇文章都需要显示数学公式,让每一页都加载对应的 CSS 之类的反而比较臃肿)
对于需要的文章,在文章开头的部分添加 mathjax: true 即可。在使用 hexo ghexo s 之后就可以看到对应的公式了。

Gitbook

Gitbook 官方插件地址 -> https://plugins.gitbook.com/

Gitbook 里面当然也有对应的插件了。有两种插件 katexmathjax,我还是先选择了 mathjax。在官网上katex上写的是比 mathjax 更快,但是我选择 mathjax 还有的一个点是因为可以在网页上右键非常方便得显示出 MathML 格式的代码和 LaTeX 格式的代码。
首先对 book.json 进行编辑,在 plugins 中加入对应的插件名字(去掉插件则是加个 -,如何 -search)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"title" : "Gitbook Use",
"author" : "Xuan",
"language" : "zh-hans",
"links" : {
"sidebar" : {
"Home" : "http://notes.cugxuan.cn"
}
},
"plugins": [
"mathjax",
"splitter",
"github-buttons",
"copy-code-button",
"-lunr",
"-search",
"search-plus",
"ad"
]
}

然后在该目录下面进行gitbook install就会自动安装所需要的插件

基本效果

1
$2_{X1}*1^1$

显示出来的效果是

2X111

在公式上右键可以查看该公式的 MathML 的写法和 LaTeX 的写法
Web-Mathjax.jpg

LaTeX 公式书写

上面说了一堆安装使用的方法,最重要的当然还是怎么进行公式的书写。

公式标记

使用$来进行公式的表标记

  • $...$表示行内公式
  • $$...$$表示整行公式

希腊字母表

名称 大写 Tex 小写 Tex
alpha A A α \alpha
beta B B β \beta
gamma Γ \Gamma γ \gamma
delta Δ \Delta δ \delta
epsilon E E ϵ \epsilon
zeta Z Z ζ \zeta
eta H H η \eta
theta Θ \Theta θ \theta
iota I I ι \iota
kappa K K κ \kappa
lambda Λ \Lambda λ \lambda
mu M M μ \mu
nu N N ν \nu
xi Ξ \Xi ξ \xi
omicron O O ο \omicron
pi Π \Pi π \pi
rho P P ρ \rho
sigma Σ \Sigma σ \sigma
tau T T τ \tau
upsilon Υ \Upsilon υ \upsilon
phi Φ \Phi ϕ \phi
chi X X χ \chi
psi Ψ \Psi ψ \psi
omega Ω \Omega ω \omega

注:此表的 markdown 形式是alpha | $A$ | A | $\alpha$ | \alpha
如果想要进行摘录复制,只能复制三列的话(网页复制下来是alpha A \alpha)可以存到文件中使用 awk 进行转换,awk '{print $1,"$"$2"$",$2,"$"$3"$",$3}' in.txt,可得到alpha $A$ A $\alpha$ \alpha

上标与下标

  • 上标和下标分别使用^与_
  • 例如x_i^2显示的效果就是xi2
  • 使用大括号{}括起来表示一个单元,同时可以消除二义性

括号

  • 小括号与方括号: 使用原始的(),[]即可,如(2+3)[4+4]的显示效果就是(2+3)[4+4]
  • 大括号: 由于大括号{}被用来分组,因此需要使用\{ 和 \}表示大括号,也可以使用\lbrace\rbrace来表示。如\{a*b\}的显示效果为${ab}$,\lbrace a*b \rbrace的效果也为$\lbrace ab \rbrace$。
  • 尖括号:使用\langle\rangle表示左尖括号和右尖括号。如\langle x \rangle将表示为x
  • 上取整:使用\lceil\rceil表示。 如,\lceil x \rceilx
  • 下取整:使用\lfloor\rfloor表示。如,\lfloor x \rfloorx
  • 不可见括号:使用.表示。
  • 需要注意的是,原始符号并不会随着公式大小缩放。如,(\frac12)(12)。可以使用\left( … \right)(\left\lbrave...\right\rbrace,可以理解成\left,\right是对括号的修饰词)来自适应的调整括号大小。如下,
1
2
3
$$\lbrace \sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}\rbrace \tag{1.1}$$

$$\left\lbrace \sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}\right\rbrace \tag{1.2}$$

(1.1){i=0ni2=(n2+n)(2n+1)6}

(1.2){i=0ni2=(n2+n)(2n+1)6}
可以看到,公式 1.2 中的括号是经过缩放的。

求和与积分

  • \sum 用来表示求和符号,其下标表示求和下限,上标表示上限。如,\sum_1^n1n
  • \int 用来表示积分符号,同样地,其上下标表示积分的上下限。如,\int_1^\infty1
  • 与此类似的符号还有,\prod\bigcup:\bigcap\iint

分式与根式

  • 分式的表示。第一种,使用\frac ab\frac作用于其后的两个组 a,b,结果为ab。如果你的分子或分母不是单个字符,请使用{..}来分组。第二种,使用\over 来分隔一个组的前后两部分,如{a+1\over b+1}a+1b+1
  • 根式使用\sqrt来表示。如,\sqrt[4] {\frac xy}xy4

字体

  • 使用\mathbb 或\Bbb 显示黑板粗体字,此字体经常用来表示代表实数、整数、有理数、复数的大写字母。如,

CHNQRZ

  • 使用\mathbf 显示黑体字,如

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz

  • 使用\mathtt 显示打印机字体,如

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz

  • 使用\mathrm 显示罗马字体,如

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz

  • 使用\mathscr 显示手写体,如

ABCDEFGHIJKLMNOPQRSTUVWXYZ

  • 使用\mathfrak 显示 Fraktur 字母(一种德国字体),

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz

特殊函数与符号

  • 常见的三角函数,求极限符号可直接使用+缩写即可。如\sin x表示为sinx,\arctan表示为arctan,lim_{1\to\infty}表示为lim1
  • 比较运算符:\lt \gt \le \ge \neq<>≤≥≠
  • 可以在这些运算符前面加上\not,如\not\lt
  • \times \div \pm \mp表示:×÷±\cdot表示居中的点x \cdot y : xy
  • 集合关系与运算:\cup \cap \setminus \subset \subseteq \subsetneq \supset \in \notin \emptyset \varnothing⊂⊆⊊⊃∈∉.
  • 表示排列使用{n+1 \choose 2k}\binom{n+1}{2k}(n+12k)
  • 箭头:\to \rightarrow \leftarrow \Rightarrow \Leftarrow \mapsto : →←⇒⇐↦
  • 逻辑运算符:\land \lor \lnot \forall \exists \top \bot \vdash \vDash¬
  • \star \ast \oplus \circ \bullet
  • \approx \sim \cong \equiv \prec≈∼≅≡≺
  • \infty \aleph_0 0 \nabla \partial \Im \Re:
  • 模运算 \pmode, 如,a\equiv b\pmod nab(modn)
  • \ldots与\cdots,其区别是 dots 的位置不同,ldots 位置稍低,cdots 位置居中。a1+a2++ana1,a2,,an
  • 一些希腊字母具有变体形式,如 \epsilon \varepsilon : ϵε, \phi \varphi: ϕφ

空间

通常 MathJax 通过内部策略自己管理公式内部的空间,因此 a…b 与 a…….b(.表示空格)都会显示为。可以通过在 ab 间加入,增加些许间隙,;增加较宽的间隙,\quad 与 \qquad 会增加更大的间隙,如a\qquad b: ab

顶部符号

对于单字符,\hat xx^,多字符可以使用\widehat xy: x^y.类似的还有\hat x \quad \overline {xyz} \quad \vec a \quad \overrightarrow {x} \quad \dot x \quad \ddot x : x^xyzaxx˙x¨

特殊字符

特殊字符可以使用\转义为原来的含义。如\$表示 $$$,\_表示下划线 Missing superscript or subscript argument

参考资料

听说好看的人都关注了我的公众号《泫言》
Powered By Valine
v1.4.14