Github在Jekyll中突出了Markdown和pygments

oFc*_*Fca 31 markdown github pygments jekyll

我在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
Run Code Online (Sandbox Code Playgroud)

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

cbo*_*tig 47

编辑:现在更容易

杰基尔> = 0.12.1 redcarpet2的是原生支持杰基尔,因此您可以配置简单的设置markdown: redcarpet,你是好去与GFM /围栏代码块没有这个mumbojumbo休息...

原始答案

您明确要求使用Github的口味降价,所以我想你是不是在找那个创建代码块与非降价液体形式的答案:

{% highlight python %}
def yourfunction():
     print "Hello World!"
{% endhighlight %}
Run Code Online (Sandbox Code Playgroud)

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

```python
def yourfunction():
     print "Hello World!"
```
Run Code Online (Sandbox Code Playgroud)

对于此,您将需要使用redcarpet markdown解析器.

Github-flavored markdown使用名为"Redcarpet" 1的降价解析器.具有讽刺意味的是,尽管Github风格的markdown使用了redcarpet2,但默认情况下Jekyll不支持这种降价解析器.相反,您可以通过安装该ruby gem将其添加为插件

gem install redcarpet
Run Code Online (Sandbox Code Playgroud)

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

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

markdown: redcarpet2
redcarpet:
  extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "strikethrough", "superscript"]
Run Code Online (Sandbox Code Playgroud)

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

具有插件的手段,就目前而言,你必须在当地建立自己的网站,并复制_site到Github上,如果您有托管你的网站redcarpet2不可用的哲基尔发动机的Github上版本(看到这个开放的问题上杰奇)

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

  • 如果我理解正确,这[已合并到Jekyll master](https://github.com/mojombo/jekyll/pull/619)并在最新版本中提供.也许你应该通过顶部的更新来更新你的答案,这样人们就不会感到困惑? (2认同)
  • 这适用于最新版本的jekyll`#Conversion markdown:redcarpet highlighter:pygments redcarpet:extensions:["no_intra_emphasis","fenced_code_blocks","autolink","strikethrough","superscript"]但是你必须**将pygments的style.css文件包含在您的html标头中,以便工作. (2认同)

Sid*_*aRT 11

杰奇的最好的部分是,如说在这里,

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

这意味着,默认情况下,您将获得Markdown和pygments突出显示.

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

这就是你要做的

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

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

  • pygments:用你的代码做这个:

    {% highlight python %}
    def yourfunction():
         print "Hello World!"
    {% endhighlight %}
    
    Run Code Online (Sandbox Code Playgroud)

    您还可以通过以下方式获得亚麻布:

    {% highlight python linenos %}   
    {% endhighlight %}
    
    Run Code Online (Sandbox Code Playgroud)

编辑:而且,需要使用该命令生成语法样式表

pygmentize -S default -f html > style.css
Run Code Online (Sandbox Code Playgroud)

正如这里提到的那样,@ joshuahornby10.显然,在你的html中包含style.css.然后,您的代码将使用pygments以语法突出显示.

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