Fork me on GitHub

Hexo搭建的GitHubPage中支持Mathjax数学公式

文章概述

在hexo中,你会发现我们不能用Latex语法来书写数学公式,这对于书写学术博客来说是很大的不便,因为我们会经常碰到很多的数学公式推导,但是我们可以通过安装第三方库来解决这一问题,本篇文章介绍配置步骤。


Hexo支持Mathjax的配置步骤如下:

使用Kramed渲染引擎

第一步: 使用Kramed代替Marked

  1. hexo 默认的渲染引擎是 marked,但是 marked 不支持 mathjax。 kramed 是在 marked 的基础上进行修改。我们在工程目录下执行以下命令来安装kramed:
1
2
3
4
//卸载原来的渲染引擎
$ npm uninstall hexo-renderer-marked --save
//安装kramed
$ npm install hexo-renderer-kramed --save
  1. 更改your-project/node_modules/hexo-renderer-kramed/lib/renderer.js,更改内容如下:
1
2
3
4
5
// Change inline math rule
function formatText(text) {
// Fit kramed's rule: $$ + \1 + $$
return text.replace(/`\$(.*?)\$`/g, '$$$$$1$$$$');
}

改为:

1
2
3
4
// Change inline math rule
function formatText(text) {
return text;
}

使用mathjax渲染库

第二步: 停止使用hexo-math,配置hexo-renderer-mathjax

  1. 安装和卸载:
1
2
3
4
//首先,如果你已经安装 hexo-math, 请卸载它:
$ npm uninstall hexo-math --save
//安装 hexo-renderer-mathjax 包:
$ npm install hexo-renderer-mathjax --save
  1. 更新Mathjax的CDN链接:

打开your-project/node_modules/hexo-renderer-mathjax/mathjax.html,把底部的script链接更改为:

1
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>

更改默认转义规则

第四步: 更改默认转义规则

因为 hexo 默认的转义规则会将一些字符进行转义,比如 _ 转为 , 所以我们需要对默认的规则进行修改.

  1. 打开your-project/node_modules/kramed/lib/rules/inline.js文件:

1> 修改:

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

更改为:

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

2> 修改:

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

更改为:

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

主题配置开启mathjax

在主题的配置文件 _config.yml 中开启 Mathjax, 找到 mathjax 字段添加如下代码:

1
2
mathjax:
enable: true

博客中使用数学公式

在博客的头部配置中开启Mathjax,添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
---
title: Testing Mathjax with Hexo
category: blog
tags: blog
date: 2017/05/03
mathjax: true
---

### 前言

<!-- more -->

### 使用数学公式

$\sum_{i=0}^N\int_{a}^{b}g(t,i)\text{d}t$

效果如下:

$\sum_{i=0}^N\int_{a}^{b}g(t,i)\text{d}t$

坚持原创技术分享,您的支持将鼓励我继续创作!