【问题标题】:Github flavored Markdown and pygments highlighting in Jekyll在 Jekyll 中突出显示 Github 风格的 Markdown 和 pygments
【发布时间】:2012-11-08 00:16:57
【问题描述】:

我已经在 VPS 上部署了我的 Jekyll 博客。我现在想在其中添加 Github 风格的 Markdown,使用 Pygments 突出显示,但我不知道我必须编辑哪些文件以及如何编辑。

到目前为止,我配置的唯一文件是_config.yml,如下所示:

  1 safe:        false
  2 auto:        false
  3 server:      false
  4 server_port: 4000
  5 baseurl:    /
  6 url: http://localhost:4000
  7 
  8 source:      .
  9 destination: ./_site
 10 plugins:     ./_plugins
 11 
 12 future:      true
 13 lsi:         false
 14 pygments:    false
 15 markdown:    maruku
 16 permalink:   date
 17 
 18 maruku:
 19   use_tex:    false
 20   use_divs:   false
 21   png_engine: blahtex
 22   png_dir:    images/latex
 23   png_url:    /images/latex
 24 
 25 rdiscount:
 26   extensions: []
 27 
 28 kramdown:
 29   auto_ids: true,
 30   footnote_nr: 1
 31   entity_output: as_char
 32   toc_levels: 1..6 
 33   use_coderay: false
 34 
 35 coderay:
 36   coderay_wrap: div
 37   coderay_line_numbers: inline
 38   coderay_line_numbers_start: 1
 39   coderay_tab_width: 4
 40   coderay_bold_every: 10
 41   coderay_css: style

如何正确配置 Jekyll 以使用 Github 风格的 Markdown 和 Pygments 突出显示?

【问题讨论】:

    标签: github markdown jekyll pygments


    【解决方案1】:

    自从cboettig 发布了他的答案,GitHub 已经停止支持redcarpet。如果你想要 GitHub Flavored Markdown,现在直接在 _config.yml 中将其指定为 markdown: GFM

    【讨论】:

      【解决方案2】:

      正如here 所说,Jekyll 最好的部分是,

      ...它需要一个模板目录(代表网站的原始形式),通过 Textile 或 Markdown 和 Liquid 转换器运行它,并吐出一个完整的静态网站...

      这意味着,默认情况下,您会得到 Markdown 和 pygments 突出显示。

      您可以放弃或使用默认的 _config.yaml 进行此设置。使用现有配置,您可能希望将 pygments 设置为 true:pygments: true

      这就是你所做的

      • 降价: 只需将您的文件命名为 *.markdown,例如 2012-12-01-my-post.markdown 并将其放在根目录内的任何位置。通常,您会将其放在 _posts 中。

        当 jekyll 解析这个文件时,它会通过 markdown 过滤器。 作为额外的奖励,您可以保存为 *.textile 并使用 textile 进行解析。而且,当然,您可以将其保留为 .html,这样就不会对 markdown 进行解析。

      • pygments:只需使用您的代码即可:

        {% highlight python %}
        def yourfunction():
             print "Hello World!"
        {% endhighlight %}
        

        您还可以通过以下方式获得行号:

        {% highlight python linenos %}   
        {% endhighlight %}
        

      编辑:另外,您需要使用命令生成语法样式表

      pygmentize -S default -f html > style.css
      

      here 和@joshuahornby10 所述。显然,在您的 html 中包含 style.css。然后,您的代码将使用 pygments 进行语法高亮显示。

      哦,您无需更改 _config.yaml 中的任何设置即可使用。 只需使用jekyll --server --auto 运行您的网站,看看它是否看起来不错。 旁注,编辑 _config 文件时,您需要停止自动运行并重新运行 jekyll 以进行任何更改。

      【讨论】:

        【解决方案3】:

        编辑:现在更容易了

        从 Jekyll 开始 >= 0.12.1 redcarpet2 由 Jekyll 原生支持,因此您只需将配置设置为 markdown: redcarpet,您就可以很好地使用 GFM / 围栏代码块,而无需使用其他的 mumbojumbo...

        原答案

        您明确要求 Github 风格的降价,所以我认为您不是在寻找使用非降价液体格式创建代码块的答案:

        {% highlight python %}
        def yourfunction():
             print "Hello World!"
        {% endhighlight %}
        

        但宁愿能够用围栏代码块编写一些东西:

        ```python
        def yourfunction():
             print "Hello World!"
        ```
        

        等等。为此,您需要使用 redcarpet 降价解析器。

        Github 风格的降价使用一个名为“Redcarpet”1 的降价解析器。具有讽刺意味的是,尽管 Github 风格的 markdown 使用 redcarpet2,但 Jekyll 默认不支持此 Markdown 解析器。相反,您可以通过安装该 ruby​​ gem 将其添加为插件

        gem install redcarpet
        

        然后添加redcarpet2 Jekyll plugin。 (在 Jekyll 中安装插件相当于将在该存储库中提供的 .rb ruby​​ 脚本放入您的 _plugins 目录中。也可以在 _plugins 的子目录中)。

        然后,如那里的文档所述,编辑您的 _config.yml 以使用 redcarpet2:

        markdown: redcarpet2
        redcarpet:
          extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "strikethrough", "superscript"]
        

        它添加了 github-flavored-markdown aka redcarpet2 提供的通用扩展(嗯,差不多。这不会做 github 特定的 markdown 事情,比如通过数字识别问题,或者通过哈希提交,所以它们在技术上并不相同)。

        拥有该插件意味着,目前,如果您在此处托管您的网站,您将不得不在本地构建您的网站并将_site 复制到 github,因为在 Github 版本的 jekyll 引擎上不提供 redcarpet2 (请参阅 Jekyll 上的 open issue

        注意:顺便说一下,您不需要在_config.yml 中指定的所有降价编辑器。对于使用 redcarpet2 的基本示例,您可能希望查看此 config 以及与之相关的 jekyll 目录。

        【讨论】:

        • 如果我理解正确的话,这个has been merged in to Jekyll master 可以在他们的最新版本中找到。也许您应该在顶部更新您的答案,以免人们感到困惑?
        • 让我再次建议您将您的编辑放在顶部,您的答案足够长,以至于像我这样的人可能会错过底部的回报 :) 感谢您的快速响应。
        • 这适用于最新版本的 jekyll # Conversion markdown: redcarpet highlighter: pygments redcarpet: extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "strikethrough", "superscript"] 但您必须在您的 html 标头中包含 pygments 的 style.css 文件才能使用。
        【解决方案4】:

        在配置文件中修改

         pygments:    false 
        

         pygments:    true
        

        这意味着当您在 markdown 文件中编写代码部分时(伟大的资源 http://daringfireball.net/projects/markdown/),它们将使用 pygments 样式。确保您已安装,这是我犯的错误。此外,一旦安装,您将需要创建一个 CSS 文件以进行样式设置(听起来很明显,但我犯了这个错误)

         pygmentize -S default -f html > stylesheets/pygments.css
        

        您可以将默认更改为此处找到的任何主题:

        http://pygments.org/demo/35195/

        关于降价,我已经读过,为了让 pygments 工作,你需要降价为你已经在配置文件中设置的 maruku。

        希望这会有所帮助,我发现 Jekyll 是一个出色的博客平台,但文档很少。

        【讨论】:

        • 谢谢!这正是帮助我的原因!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-09
        • 2010-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-14
        相关资源
        最近更新 更多