hexo + yilia-plus + mathjax 显示数学公式

hexo + yilia-plus + mathjax 显示数学公式

1. 使用 Kramed 代替 hexo 自带的 Marked

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


更改/node_modules/hexo-renderer-kramed/lib/renderer.js

function formatText(text) {
    // Fit kramed's rule: $$ + \1 + $$
    return text.replace(/`\$(.*?)\$`/g, '$$$$$1$$$$');
}

function formatText(text) {
    return text;
}

2. 停止使用 hexo-math 并安装 mathjax

如果你已经安装 hexo-math, 请卸载它,然后安装 hexo-renderer-mathjax 包

npm uninstall hexo-math --save
npm install hexo-renderer-mathjax --save

注意: 由于一些原因,当使用yilia-plus主题时,使用mathjax会报错,如果仍要使用mathjax,根据 yilia-plus作者 JoeyBling提供的解决方案,需要进入 node_modules/hexo-renderer-mathjax文件夹执行如下代码:

npm uninstall ejs -S
# 安装最新版ejs
npm i ejs@latest -S

3. 更改默认转义规则

因为 hexo 默认的转义规则会将一些字符进行转义,所以我们需要对默认的规则进行修改.
对文件 node_modules/kramed/lib/rules/inline.js 参考半路出家的coder进行如下更改:

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

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

我只是修改了上面的 em 项,这一项好像对应的是行内公式转义问题,我没有更改 escape 项,可以正常显示。

4. 配置 Mathjax

在文件 node_modules\hexo-renderer-mathjax\mathjax.html 中添加如下一行代码:


注意,我之前查了很多网上的 hexo 配置 Mathjax 的文章,它们在该文件中加入的代码通常是


但是这行代码仅在本地(即执行hexo s时)可以渲染 tex 数学公式,但是部署到 github 后就不能渲染 tex 数学公式了,所以强烈推荐使用第一种代码,这是Mathjax官网给出的url。

最后在你使用的主题中添加

mathjax: 
  enable: true
  # 是不是没页都使用mathjax
  perpage: false

最后执行

hexo clean
hexo g
hexo d

这时打开博客就能看到渲染效果了,渲染很快哦。

你可能感兴趣的:(hexo + yilia-plus + mathjax 显示数学公式)