0x00 起因
为了让数学公式在博客上被成功的渲染,我找了半天的教程。最后按照这篇next主题这篇官方指导来解决了公式渲染问题。
具体思路如下。
- 在 next/config.yml 文件中修改如下。
1 | # Math Formulas Render Support |
- 删除原有的
hexo-renderer-marked
包,安装hexo-renderer-pandoc
包。
1 | $ npm un hexo-renderer-marked |
- 安装 pandoc。
0x01 问题
数学公式渲染得非常完美,但是markdown文档的无序列表出了问题。
起因在于我使用vscode编辑markdown文档,markdown使用两个空格来表示无序列表和子列表的缩进。
markdown格式并没有非常严格统一的标准,各家都有自己小小的不同。pandoc则默认使用4个空格来做列表和子列表的缩进。
0x02 解决
在网上查了一下,五年前就有人在pandoc项目下提出了相关的issue。程序员们为应该使用4个空格还是2个空格进行缩进吵得不亦乐乎。
issue串中有人提出了解决方案。
Sorry about the necro post.
Using --tab-stop 2 in the command line will allow you to use 2 spaces for nesting lists. Not sure of this is a deprecated or undocumented feature, works in 1.17.0.2-win.
也就是说pandoc提供了 --tab-stop 2
这一标签来确定这类缩进的空格数。我们可以轻易的猜想到hexo使用了 hexo-renderer-pandoc
这一npm包来调用pandoc以渲染markdown。
找到调用的js源代码并修改。
目录:myblog/node_modules/hexo-renderer-pandoc/index.js
源代码为:
1 | var args = [ '-f', 'markdown-smart'+extensions, '-t', 'html-smart', math] |
修改为:
1 | var args = [ '-f', 'markdown'+extensions, '-t', 'html', math, '--tab-stop', '2'] |
其中,去掉两个smart是解决另一个bug。不在此赘述。