Github在Jekyll中突出了Markdown和pygments

时间:2012-11-20 00:01:26

标签: github markdown jekyll pygments

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

到目前为止,我配置的唯一文件是_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突出显示?

4 个答案:

答案 0 :(得分:47)

编辑:现在更容易

截至Jekyll> = 0.12.1 jekyll本身支持redcarpet2,因此您只需将配置设置为markdown: redcarpet即可使用GFM / fenced代码块,而无需使用其余的mumbojumbo ...

原始答案

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

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

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

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

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

Github-flavored markdown使用名为“Redcarpet”1的降价解析器。具有讽刺意味的是,虽然Github风格的markdown使用redcarpet2,但默认情况下Jekyll不支持这种降价解析器。相反,您可以通过安装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又名redcarpet2提供的公共扩展(好吧,差不多。这不会做github特定的降价事情,比如通过数字识别问题,或者通过哈希提交,所以它们在技术上并不相同)。

拥有插件意味着,目前,您必须在本地构建您的网站并将_site复制到github如果您在那里托管您的网站,因为redcarpet2在Github版本上不可用jekyll引擎(见Jekyll上的这个open issue

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

答案 1 :(得分:11)

杰基尔最好的部分是here

  

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

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

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

这是你为

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

    当jekyll解析此文件时,它会通过降价过滤器传递它。 作为额外的奖励,您可以保存为* .textile并使用textile进行解析。而且,当然,你可以保留它.html所以不会对降价进行解析。

  • 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以进行任何更改。

答案 2 :(得分: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/

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

希望这有帮助,我发现Jekyll是一个睿智的博客平台,但很少有记录。

答案 3 :(得分:0)

cboettig发布答案以来,GitHub已停止支持redcarpet。如果您想使用GitHub Flavored Markdown,现在可以在markdown: GFM中直接将其指定为_config.yml