【问题标题】:Use kramdown with pygments in Jekyll在 Jekyll 中使用 kramdown 和 pygments
【发布时间】:2013-08-13 16:30:11
【问题描述】:

我想使用kramdown(具有防护代码块、内联属性列表、标题 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(下)的帮助下,我能够为 Jekyll 1.x 准备这个 Kramdown+Pygments plugin。

【问题讨论】:

    标签: jekyll pygments kramdown


    【解决方案1】:

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

    这取决于 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.

    【讨论】:

    • 谢谢!这终于解决了这个问题。我真的希望 Jekyll 开箱即用地支持 kramdown+pygments。
    • 再次感谢您的帮助,这是我终于能够制作的plugin。
    • 把它放到 GitHub 上真是个好主意!谢谢你。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-11-19
      • 2012-12-09
      • 1970-01-01
      • 2015-04-02
      • 2012-06-21
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 2012-11-04
      相关资源
      最近更新 更多