mathjax数学公式

一开始想写笔记的时候加入一点公式时觉得用html也无所谓,后面写了几行还是觉得用包吧……GitHub不支持Latex也没有办法,找了一下发现Mathjax是支持的,所以就找了一下教程把Mathjax弄好了。

不过因为转义规则变了,所以本来_会被转义成<em>或是<i>的语法被修改了。不过用*<i>__bold目前看来不受影响。

当然,在Hexo 的 Next 主题中渲染 MathJax 数学公式一文的开头就有说:

类似的语义冲突的符号还包括*, {, }, \\等。

目前还未碰到,之后碰到再加吧。


安装

两篇文章都说,使用kramed比原生的marked要好,所以卸载原本的marked渲染引擎,然后换上新的kramed渲染引擎:

1
2
$ npm uninstall hexo-renderer-marked --save
$ npm install hexo-renderer-kramed --save

可选可不选……?

如何在 hexo 中支持 Mathjax?中还加了其他的几个步骤,我也按照这个步骤做了。不过其他的文章里好像并没有说需要下面的步骤:

更改/node_modules/hexo-renderer-kramed/lib/renderer.js:

1
2
3
4
5
6
7
8
// Change inline math rule
function formatText(text) {
// Fit kramed's rule: $$ + \1 + $$
// 这是原本的
// return text.replace(/`\$(.*?)\$`/g, '$$$$$1$$$$');
// 这是替换的
return text;
}

随后下载hexo-renderer-mathjax

1
npm install hexo-renderer-mathjax --save

原po也有说需要更新mathjax的cdn,但是我看了下我用的是NexT 7,算是比较新的版本了,而mathjax更新并没有这么平凡,所以就略过了。


设置

以下是为了解决kramed引擎的语义冲突。

修改node_modules\kramed\lib\rules\inline.js中的escapeem部分:

1
2
3
4
5
//escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
escape: /^\\([`*\[\]()#$+\-.!_>])/,
...
//em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,

启用

_config.yml中找到math,并且启用mathjax

1
2
3
4
5
6
7
8
9
10
11
# Math Equations Render Support
math:
enable: true

# Default(true) will load mathjax/katex script on demand
# That is it only render those page who has 'mathjax: true' in Front Matter.
# If you set it to false, it will load mathjax/katex srcipt EVERY PAGE.
per_page: true

engine: mathjax
#engine: katex

最后在文章的头部开启mathjax的渲染:

1
mathjax: true

如果不添加这一行,mathjax是不会渲染的;选择false和不添加是一样的,出现的就是源代码。


Example

来自hexo中插入数学公式,不过他好像没有渲染。

矩阵:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$$\left[
\begin{matrix}
V_A \\\\
V_B \\\\
V_C \\\\
\end{matrix}
\right] =
\left[
\begin{matrix}
1 & 0 & L \\\\
-cosψ & sinψ & L \\\\
-cosψ & -sinψ & L
\end{matrix}
\right]
\left[
\begin{matrix}
V_x \\\\
V_y \\\\
W \\\\
\end{matrix}
\right] $$

$\left[
\begin{matrix}
V_A \\
V_B \\
V_C \\
\end{matrix}
\right] =
\left[
\begin{matrix}
1 & 0 & L \\
-cosψ & sinψ & L \\
-cosψ & -sinψ & L
\end{matrix}
\right]
\left[
\begin{matrix}
V_x \\
V_y \\
W \\
\end{matrix}
\right] $

表格与矩阵

1
2
3
4
5
6
7
$$\begin{array}{c|lcr}
n & \text{Left} & \text{Center} & \text{Right} \\\\
\hline
1 & 1.97 & 5 & 12 \\\\
2 & -11 & 19 & -80 \\\\
3 & 70 & 209 & 1+i \\\\
\end{array}$$

其他教程

MathJax basic tutorial and quick reference


Reference

hexo中插入数学公式

如何在 hexo 中支持 Mathjax?

Hexo 的 Next 主题中渲染 MathJax 数学公式

-------The end of this article  Thank you for your reading-------
0%