在Hexo中插入LaTeX数学公式

由于最近开始学习机器学习,同时想利用博客做点笔记,并且经常会出现大量数学公式,而原生Hexo并不支持LaTeX公式,但通过一些插件可以解决这个问题,如MathJax。所以本文主要说明如何在Hexo中利用MathJax显示数学公式以及如何解决其中遇到的一些冲突问题。

插件安装

安装方法如下:

1
$ npm install hexo-math --save

在hexo文件夹中执行:

1
$ hexo math install

在_config.yml中添加:

1
2
plugins:
- hexo-math

另外,有些Hexo主题是自带MathJax的,如本站使用的主题NexT。这样的话就简单了,只需要在主题配置文件_config.yml中找到Third Party Services Settings,将false改为ture。如下:

1
2
3
4
mathjax:
enable: true
per_page: false
cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML

之后就可以在markdown中插入LaTeX数学公式了。

使用MathJax插入数学公式

具体用法请见Hexo MathJax插件

解决Hexo与LaTeX语法冲突问题

问题描述:

有些时候会出现无法正确渲染的问题,原因是当遇到某些特殊符号时,如\或者_,转HTML文件中优先按Markdown语法处理,导致MathJax无法得到正确的LaTex语句。

解决方法:

在Hexo安装文件夹中找到/node_modules/marked/lib/中的marked.js并打开。
1.找到

1
escape: /^\\([\\`*{}\[\]()# +\-.!_>])/,

注释掉此行,并在下面添加

1
escape: /^\\([`*\[\]()#+\-._>])/,

2.找到

1
em: /^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,

同样注释掉此行,并在下面添加

1
em:/^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,

这样就取消了对某些特殊字符的转义。

测试效果

1
$$\int_{0}^{\frac{\pi}{2}}dxdy$$

$$\int_{0}^{\frac{\pi}{2}}dxdy$$