hexo中如何正确使用mathjax
今天我在使用hexo写博客的时候,惊讶的发现md文档写的mathjax公式在vscode编辑器上预览是可以正常显示的,但是在部署到博客上时却未能正确显示,按照如下5个步骤操作,即可实现
部署步骤
一、使用 kramed 代替 marked
1 | hexo默认使用hexo-renderer-marked引擎去渲染网页,它会把利用Markdown语法写的文本去转换为相应的html标签。 |
- 卸载marked,改装kramed
1 | npm uninstall hexo-renderer-marked --save |
- 更改相应的规则
找到根目录下的 /node_modules/hexo-renderer-kramed/lib/renderer.js
文件
找到以下内容
1 | // Change inline math rule |
改为
1 | // Change inline math rule |
二、使用 hexo-renderer-mathjax 代替 hexo-math
1 | npm uninstall hexo-math --save |
三、更新 Mathjax 的 CDN 链接
找到根目录下的 /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> |
四、更改默认转义规则
找到根目录下的 /node_modules/kramed/lib/rules/inline.js
文件
将第 11 行
1 | escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/, |
改成
1 | escape: /^\\([`*\[\]()#$+\-.!_>])/, |
将第 21 行
1 | em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, |
改成
1 | em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, |
五、开启mathjax
先打开主题的配置文件,以 next 主题为例,打开\theme\next\_config.yml
,搜索mathjax,设置成如下:
1 | mathjax: |
在文章的 Front-matter 里打开 mathjax 开关
1 | title: hexo中启用 mathjax 的方式 |
测试
md 文档中使用 mathjax 语法
1 | $$F(n)=\frac{1}{\sqrt5}\left[\left(\frac{1+\sqrt5}{2}\right)^n-\left(\frac{1-\sqrt5}{2}\right)^n\right]$$ |
显示效果
至此大功告成!