hexo nexT 主题插入数学公式

Hexo 默认使用 hexo-renderer-marked 引擎渲染网页,语义冲突的符号还包括_,*, {,}, \\等。

更换渲染器

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

修改inline.js

在博客根目录下,找到node_modules\kramed\lib\rules\inline.js,把第11行的 escape 变量的值做相应的修改:

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

这一步是在原基础上取消了对\,{,}的转义(escape)。

同时把第20行em变量也要做相应的修改:

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

在 Next 主题中开启 MathJax 开关

在主题配置文件中修改:

1
2
3
4
5
math:
enable: true
per_page: true

engine: mathjax

文章发布时打开开关:

1
2
3
4
5
title: hexo nexT 主题插入数学公式
mathjax: true
date: 2019-02-26 13:45:18
tags: hexo
categories: 其他

测试1

$$
P = \frac
{\sum_{i=1}^n (x_i- x)(y_i- y)}
{\displaystyle \left[
\sum_{i=1}^n (x_i-x)^2
\sum_{i=1}^n (y_i-y)^2
\right]^{1/2} }
$$

一些问题

更改了渲染器,修改了inline.js,确实有效;但有些嵌入的html标签不能够识别,/已经被取消了转义的原因?

换回原来的渲染器,打开公式开关,也能照样显示公式,html标签也能够识别。新版本的 hexo 博客是对这个问题已经进行了修复???不懂。

已经换回原来的渲染器,将开关打开就可以。

测试2

$$
P = \frac
{\sum_{i=1}^n (x_i- x)(y_i- y)}
{\displaystyle \left[
\sum_{i=1}^n (x_i-x)^2
\sum_{i=1}^n (y_i-y)^2
\right]^{1/2} }
$$

好吧,够折腾的,就这样用吧。




参考:

  1. link-01
  2. link-02
  3. link-03
  4. link-04
感谢支持!