Hello World III

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

找了好几篇博客,参考了一下各个指南,终于搞定了公式渲染的问题。

原因

Hexo 默认使用 hexo-renderer-marked 引擎渲染网页,该引擎会把一些特殊的 markdown 符号转换为相应的 html 标签,比如在 markdown 语法中,下划线_代表斜体,会被渲染引擎处理为标签。

解决方法

更换 Hexo 的 markdown 渲染引擎

将原hexo-renderer-marked 引擎修改为 hexo-renderer-kramed

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

然后打开博客根目录,在node_modules\kramed\lib\rules\inline.js修改变量

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

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

在 Next 主题中开启 MathJax 开关

在主题下找到 _config.yml 配置文件,把 math 默认的 false 修改为true

1
2
3
4
5
6
7
8
9
10
# 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

最后在文章头打开mathjax开关

1
2
3
4
title: Hello World III
date: 2018-03-17 22:14:51
tags:
mathjax: true

大功告成