2

我想将kramdown(具有防护代码块、内联属性列表、标题 ID 等功能)与 pygments 一起用于语法突出显示(例如,用于 LaTeX 支持,这在 kramdown 使用的 CodeRay 中不可用)。Jekyll 同时支持 kramdown 和 pygments,但显然不能同时支持两者(除非我使用我不想使用的 Liquid 标签)。

我还发现了一些关于如何使 kramdown 围栏代码块吐出 pygments 突出显示的代码的插件片段,但不幸的是我不知道如何使它工作。

我尝试将该站点的所有代码转储到某个_plugins/krampygs.rb文件中,但随后jekyll build抱怨:

Generating... error: undefined method `matches'

如果我按照Jekyll 插件文档的指示提供了一些琐碎matches的内容,但是我不知道如何为我的文件选择这个新的转换器。添加类似的东西output_ext.md

markdown: MarkdownConverter

_config.yml唯一的抱怨是这不是一个有效的选择。

所以,好吧,我重申我的问题:如何在 Jekyll 中将 kramdown 与 pygments 一起使用?

解决方案

在 Matthias(下)的帮助下,我能够为 Jekyll 1.x准备这个Kramdown+Pygments 插件。

4

2 回答 2

3

“那个网站”的作者在这里。

这取决于 Jekyll 版本。对于写帖子时的版本,这就足够了。至少 Jekyll 1.x 需要在matches中定义MarkdownConverter,如下所示:

def matches(ext)
  ext =~ /^\.md$/i
end

Jekyll 1.x 出现的另一个问题是每个自定义 Markdown 转换器都被忽略了。我通过明确说明输出扩展来解决这个问题

def output_ext(ext)
  ".html"
end

并通过设置告诉 Jekyll 寻找虚假的 Markdown 扩展

markdown_ext: foo

_config.yml.

于 2013-08-13T17:16:57.957 回答
1

我更新了由Juan创建的插件,使其与 Jekyll 2.x 兼容,并进行了一些其他改进。

可以在这里找到:https ://github.com/mvdbos/kramdown-with-pygments.git

于 2014-07-22T11:23:24.697 回答