前言
写技术博客经常遇到数学公式的编辑,使用Hexo+Github搭建的博客,在本地写的博客都是md格式的,因此我们需要一些操作,来渲染我们在Markdown上编辑的数学公式。
更换markdown渲染引擎
我们把markdown的渲染引擎由marked改为更为轻量级的kramed
1 | $ npm uninstall hexo-renderer-marked --save |
你可以在/node_modules里面搜索一下你是否安装了这两个插件
(注意:不要安装pandoc插件,如果有,请卸载
1 | $ npm uninstall hexo-renderer-pandoc --save |
笔者因为这个插件而导致了node端口被占用出现node.js:141报错,当初查了很久也没找到原因,后来把这个插件一卸载就好了。。。)
接下来找到/node_modules/kramed/lib/rules/inline.js把第11行的escape变量的值做相应的修改:
1 | // escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/, |
这一步是在原基础上取消了对\,{,}的转义(escape)。
同时把第20行的em变量也要做相应的修改。
1 | // em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, |
打开Mathjax开关
在next主题中打开mathjax开关:/theme/next/_config.yml 把enable改为true
1 | # MathJax Support |
还需要在文章的Front-matter里打开mathjax开关,如下:
1 | title: xxxx |
在文章开头设置mathjax开关,只有需要编辑数学公式的文章页面才加载mathjax渲染,这样不需要渲染数学公式也不会影响加载速度。
假如你不想每篇文章都手动打上mathjax: true,那么你可以在/scaffolds/post.md中修改,添加上mathjax这一项:
1 | --- |
这样你每次写博客时Front-matter都会有这一项(实际上我们修改的就是博客Front-matter的模板)
显示数学公式序号
我们经常需要对行间公式编序号,这样会方便我们的语言叙述(可能是习惯于$\LaTeX$),要在我们博客上显示序号,只需要下面的操作:
在/theme/next/layout/_third-party/mathjax.swig中加上下面这段代码
1 | <script type="text/x-mathjax-config"> |
然后在markdown的tex公式编辑里面只要使用equation环境的公式就会被编号
1 | \begin{equation} |