在 Hexo 中渲染 LaTeX 公式
一直用LaTeX写公式很久了,但发现在Hexo中渲染存在问题。推荐使用Mathjax插件解决。
方案一
这个方案可以解决LaTeX特殊字符(如*
,{
,}
,\\
)和Markdown语法的冲突。
但是我在用的时候,发现它和表格之间存在冲突。就是在有序列表中使用表格时,不能正确渲染表格。
更改渲染引擎
将hexo-renderer-marked
更改为hexo-renderer-kramed
安装Mathjax插件
解决语义冲突
更改node_modules/kramed/lib/rules/inline.js
的第11行,取消对\
,{
,}
的转义
1 | // escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/, |
第20行的em
变量也要做相应的修改
1 | // em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, |
开启Mathjax
在博客根目录的_config.yml
添加如下配置:
1 | # MathJax Support |
在需要的文章的Front-matter
区打开mathjax开关:
1 |
|
方案二
上面方案会造成有序列表中表格解析异常,后来我经过搜索,发现hexo-filter-mathjax这个插件可以解决。
但是,这个方案不能解决语义冲突的问题,所以这个时候要对LaTeX公式进行转义。
比如对于公式:
其正常的写法是:
1 | \left\{ |
使用hexo-filter-mathjax
需要对\
进行转义:
1 | \left\\{ |
推荐一个在线工具,输入LaTeX公式后可以进行转义。
安装MathJax插件
注意这个方案不需要更换渲染引擎。
开启MathJax
在博客根目录的_config.yml
添加如下配置:
1 | mathjax: |
在需要的文章的Front-matter里打开mathjax开关:
1 |
|