1 | <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> |
由于MathJax默认没有开启单个美元符号的inline模式,需要手动打开,代码如下:
1 | <script type="text/x-mathjax-config">MathJax.Hub.Config({ tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});</script><script type="text/javascript" src="path-to-mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> |
测试发现,对于大部分的公式都可以渲染成功,然而对于部分公式,由于markdown语法和latex语法有冲突,因此造成部分公式内容被marked先转义,导致公式渲染失败,经过权衡,决定放弃部分markdown功能,确保latex的正确。该冲突主要是由于对\
和_
的转义造成的。找到marked脚本文件
C:\Users\maple\AppData\Roaming\npm\node_modules\hexo\node_modules\marked\lib\marked.js
,先备份一下,然后修改
第444行:
escape: /^\\([\\`*{}\[\]()# +\-.!_>])/,
修改为:
escape: /^\\([`*\[\]()# +\-.!_>])/,
第832行
return '<em>' + text + '</em>';
修改为:
return '_' + text + '_';
测试样例:
经测试,我需要用到的所有公式都可以显示,且未发现markdown有明显变化。说明此种方法切实可行。
附:修改后的文件下载
marked.js
直接替换原来的marked.js即可。
更新
可以直接用hexo-renderer-marked
插件
1 | npm uninstall hexo-renderer-marked --save |
2018/07/14 更新
pandoc插件更好用:
1 | npm install hexo-renderer-pandoc --save |