Hexo 中 Mathjax 渲染出错问题解决
问题
Hexo 在使用 Mathjax 渲染数学公式的时候,由于 Markdown 语法与 Mathjax 语法冲突的问题,可能会导致使用到_
, \
符号的公式渲染出现错误。
解决方法
有多种解决该问题的方法,但是不同的方法都有各自的优缺点,根据自己的需要选择合适的方法即可。
-
修改源码
优点:部署简单,渲染的兼容性最好
缺点:修改源码可能引入额外的bug,不利于自动化部署
-
使用
pandoc
渲染引擎优点:操作简单,可用于自动化部署
缺点:需要安装
pandoc
, 引入额外的开销,博客的部分格式需要注意
修改源码
更换kramed
渲染引擎
hexo-renderer-kramed
渲染引擎是基于hexo-renderer-marked
引擎修改的,该引擎修复了一些marked
引擎存在的bug,但是仍然无法完美的渲染数学公式。
1 | npm uninstall hexo-renderer-marked --save |
修改kramed
引擎代码
到博客根目录下,找到node_modules/kramed/lib/rules/inline.js
文件,把第11行的escape
值做出以下修改:
1 | // escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/, |
在把第20行的em
值做出相应的修改:
1 | // em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, |
在配置文件中配置插件
在根目录下找到_config.yml
文件,粘贴下列内容到里面:
1 | ## Markdown Katex |
更换pandoc
作为渲染引擎
安装pandoc
不同的操作系统,在pandoc
官网提供了不同的安装包,建议下载v2.0以上的版本进行安装。下面以ubuntu
64位为例:
下载链接:https://github.com/jgm/pandoc/releases/download/2.10/pandoc-2.10-1-amd64.deb
下载完毕后在终端中输入以下命令安装pandoc
1 | sudo dpkg -i pandoc* |
安装完毕后,可以测试pandoc
是否运行正常
1 | pandoc --version |
更换渲染引擎
1 | npm uninstall hexo-renderer-marked --save |
如果已经安装了hexo-renderer-kramed
,建议将其也同时卸载,只保留hexo-renderer-pandoc
。
自动化部署
在Github Actions中也可以利用pandoc
作为渲染引擎,在main.yml
文件中加入以下代码即可:
1 | steps: |
完整的main.yml
配置可以查看main.yml。