jekyll - 在 Jekyll 中将 kramdown 与 pygments 结合使用

标签 jekyll pygments kramdown

我想使用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 的指示提供一些简单的 matchesoutput_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/

相关文章:

html - Jekyll CSS 没有出现在 Github.io 上

javascript - 如何在 Jekyll Liquid 语法的 for 循环中获取图像的宽度和高度并将其转换为 js $ 变量?

python - Python 中的动态语法突出显示

ruby - 使用 Kramdown 渲染 span-level 字符串

ruby - 无法从 Jekyll 插件获取页面数据

html - 在 Jekyll 的 CSS 中使用 liquid tempting 以每页为基础调整 div 的背景颜色

IPython qtconsole 高亮显示

jekyll - jekyll 中的 pygments 问题

css - Jekyll 语法高亮显示不起作用 - 未添加类

html - 页面内的 Jekyll/Kramdown 链接