从Redcarpet切换到Pandoc的方法

176 阅读1分钟

在写一篇数学方面的博文的过程中,我在现有的Jekyll配置中遇到了几个问题。我将Jekyll设置为使用Redcarpet作为Markdown渲染器,但它与MathJax根本不兼容:它会在MathJax代码中搞砸\&

据说Kramdown与MathJax配合得更好,但它不支持在有栅栏的代码块上进行语法高亮,而且它的MathJax语法非常不标准:$$ ,用于内联数学,实在太奇怪了。

作为最后的手段,我决定将Jekyll与Pandoc整合,Pandoc可以说标记格式中的瑞士军刀。它是没有主见的,在它能做的事情上有很大的灵活性。

幸运的是,已经有一个jekyll-pandoc插件可以做到这一点。这就像运行gem install jekyll-pandoc ,然后调整一下配置文件一样简单:

markdown: Pandoc
gems:
- 
- jekyll-pandoc
pandoc:
  extensions:
  - mathjax

我本来也想和Pygments集成,但Pandoc的高亮门并不坏,而且我不觉得在这个过程中又增加了一个复杂的东西,所以我将坚持使用它,除非我遇到了我不喜欢的东西。

为了使颜色显示出来,我只需要写一些类似于默认主题的CSS(关于分类的细节,见Kate文档):

code.sourceCode span.co { color: …; } /* comment */
code.sourceCode span.al { color: …; } /* alert (warning) */
code.sourceCode span.er { color: …; } /* error (wrong_syntax) */
code.sourceCode span.bn { color: …; } /* base_n (nondecimal) */
code.sourceCode span.dv { color: …; } /* decimal_value */
code.sourceCode span.fl { color: …; } /* float */
code.sourceCode span.ch { color: …; } /* character */
code.sourceCode span.st { color: …; } /* string */
code.sourceCode span.dt { color: …; } /* data_type */
code.sourceCode span.fu { color: …; } /* function */
code.sourceCode span.im { color: …; } /* import */
code.sourceCode span.cf { color: …; } /* control_flow */
code.sourceCode span.kw { color: …; } /* keyword */
code.sourceCode span.pp { color: …; } /* preprocessor */
code.sourceCode span.re { color: …; } /* region_marker */
code.sourceCode span.ot { color: …; } /* other */

希望旧的帖子没有破损,如果是这样,请告诉我