在 Hexo 中插入 LaTeX 数学公式

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

插件安装

安装方法如下:

1
$ npm install hexo-math --save

执行:

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_HTM

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

使用 MathJax 插入数学公式

具体用法请见 Hexo MathJax 插件

解决 Hexo 与 LaTeX 语法冲突问题

问题描述:

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

解决方法:

找到 /node_modules/marked/lib/ 中的 marked.js 作如下修改:

  1. 修改 escape

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

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

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

测试效果

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