在Jekyll中使用kramdown和pygments

时间:2013-08-13 16:30:11

标签: jekyll pygments kramdown

我想使用kramdown(带有屏蔽代码块,内联属性列表,标题ID等功能)以及用于语法突出显示的pygments(例如,对于LaTeX支持,kramdown使用的CodeRay不支持) 。 Jekyll支持kramdown和pygments,但显然不是两者一起(除非我使用Liquid标签,我不愿意)。

我还发现了一些plugin snippets如何使kramdown fenced代码块吐出pygments突出显示的代码,但不幸的是我不知道如何使其工作。

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

Generating... error: undefined method `matches'

如果我按照Jekyll plugin docs的指示提供了一些简单的matchesoutput_ext,但我不知道如何为我的.md文件选择这个新的转换器。添加类似

的内容
markdown: MarkdownConverter
_config.yml上的

仅抱怨这不是一个有效的选项。

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

解决方案

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

2 个答案:

答案 0 :(得分:3)

“该网站”的作者。

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

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

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

def output_ext(ext)
  ".html"
end

告诉Jekyll通过设置

寻找伪造的Markdown扩展
markdown_ext: foo
_config.yml中的

答案 1 :(得分:1)

我更新了plugin创建的Juan,与Jekyll 2.x兼容,以及其他一些改进。

可在此处找到:https://github.com/mvdbos/kramdown-with-pygments.git