0%

hexo中公式无法正常显示问题的解决方案

对obsidian的markdown格式转hexo格式时,一些公式无法正常显示,及根号显示异常的解决方案。


一些内嵌公式无法正常显示的问题

内嵌公式:文字内嵌入的公式
我的解决方案是:

替换公式渲染引擎:

1
2
npm uninstall hexo-renderer-marked --save
npm install hexo-renderer-kramed --save

修改 node_modules/kramed/lib/rules/inline.js:
修改第 11 行:

1
2
// escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
escape: /^\\([`*\[\]()#$+\-.!_>])/,

修改第 20 行:

1
2
// em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,

重启:

1
hexo clean && hexo g && hexo s

根号无法正常显示


打开浏览器的开发者工具,发现控制台上有报错,如下图所示。原因是MathJax 在尝试执行某些 DOM 操作时遇到了问题。

我的解决方案是:
hexo根目录的_config.yml添加:

1
2
3
4
5
6
7
8
9
mathjax:
enable: true
per_page: false
engine: mathjax
version: 2.7.7
config:
tex2jax:
inlineMath: [["$", "$"], ["\\(", "\\)"]]
processEscapes: true

主题的配置文件,我的是themes/next/_config.yml 中添加:

1
2
mathjax:
enable: true

在主题布局文件中添加 MathJax 脚本(例如 themes/next/layout/_partials/head.swig 或 themes/next/layout/_partials/head.njk)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{% if theme.mathjax %}
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [['$', '$'], ['\\(', '\\)']],
processEscapes: true
},
"HTML-CSS": { availableFonts: ["TeX"] },
SVG: { font: "TeX" }
});
</script>
<script type="text/javascript" async
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
{% endif %}