如何在 hexo 中支持 Mathjax?

Github 地址
简书地址
CSDN地址

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

第一步: 使用Kramed代替 Marked

hexo 默认的渲染引擎是 marked,但是 marked 不支持 mathjaxkramed 是在 marked 的基础上进行修改。我们在工程目录下执行以下命令来安装 kramed.

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

然后,更改<your-project-dir>/node_modules/hexo-renderer-kramed/lib/renderer.js,更改:

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

为:

// Change inline math rule
function formatText(text) {
    return text;
}

第二步: 停止使用 hexo-math

首先,如果你已经安装 hexo-math, 请卸载它:

npm uninstall hexo-math --save

然后安装 hexo-renderer-mathjax 包:

npm install hexo-renderer-mathjax --save

第三步: 更新 Mathjax 的 CDN 链接

首先,打开<path-to-your-project>/node_modules/hexo-renderer-mathjax/mathjax.html

然后,把<script>更改为:

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

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

因为 hexo 默认的转义规则会将一些字符进行转义,比如 _ 转为 <em>, 所以我们需要对默认的规则进行修改.
首先, 打开<path-to-your-project/node_modules/kramed/lib/rules、inline.js,

然后,把:

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

更改为:

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

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

更改为:

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

第五步: 开启mathjax

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

mathjax:
    enable: true

这一步可选,在博客中开启 Mathjax,, 添加以下内容:

---
title: Testing Mathjax with Hexo
category: Uncategorized
date: 2017/05/03
mathjax: true
---

通过以上步骤,我们就可以在 hexo 中使用 Mathjax 来书写数学公式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在Hexo中渲染MathJax数学公式 在用markdown写技术文档时,免不了会碰到数学公式。常用的Markdo...
    ShallowLearner阅读 29,713评论 22 31
  • 经过各种找资料,踩过各种坑,终于搭建好了hexo,域名是在万维网上买的,我的hexo是3.1.1版本,hexo不同...
    iplaycodex阅读 4,136评论 0 0
  • 前言 作为一位程序猿,最近迷上了Markdown的写作。于是找了一些笔记、博客的软件来测试,包括(为知笔记、有道笔...
    采姑娘的小魔钴阅读 9,331评论 0 0
  • 我由于自己不小心被勾子带到了飞机上面,但我不能在上面所以我现在面临着被丢下来的处境。 但幸运的是我们开到了一个橡皮...
    爱梦的我阅读 1,328评论 0 0
  • 春暖花開,在美丽的四月初应邀来到浓郁特色的侗乡黎平參加贵州黎平瑜伽艺术文化节,当侗族大歌与瑜伽融合时,是两个非物质...
    涵予阅读 1,441评论 0 3

友情链接更多精彩内容