我想使用kramdown (具有诸如围栏代码块、内联属性列表、 header ID 等功能)以及用于语法突出显示的 pygments(例如,用于 LaTeX 支持,而 kramdown 使用的 CodeRay 不提供该支持)。 Jekyll 同时支持 kramdown 和 pygments,但显然不支持两者一起使用(除非我使用 Liquid 标签,但我不想这样做)。
我还发现了一些plugin snippets如何使 kramdown 围栏代码块吐出 pygments 突出显示的代码,但不幸的是我不知道如何实现这一点。
我尝试将该站点的所有代码转储到某个 _plugins/krampygs.rb
文件中,但随后 jekyll build
提示:
Generating... error: undefined method `matches'
如果我按照 Jekyll plugin docs 的指示提供一些简单的 matches
和 output_ext
,但我不知道如何为我的 .md
文件选择这个新转换器。添加类似的内容
markdown: MarkdownConverter
在我的_config.yml
上只是提示这不是一个有效的选项。
那么,好吧,我重申我的问题:如何在 Jekyll 中将 kramdown 与 pygments 一起使用?
解决方案
在 Matthias(下)的帮助下,我能够准备这个 Kramdown+Pygments plugin对于 Jekyll 1.x。
最佳答案
这里是“那个网站”的作者。
这取决于 Jekyll 版本。对于写这篇文章时的版本来说,这就足够了。至少 Jekyll 1.x 要求在 MarkdownConverter
中定义 matches
,如下所示:
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
中。
关于jekyll - 在 Jekyll 中将 kramdown 与 pygments 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18214424/