31

我已经在 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 突出显示?

4

4 回答 4

48

编辑:现在更容易了

从 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 markdown 解析器。

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

gem install redcarpet

然后添加redcarpet2 Jekyll 插件。(在 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,因为在 jekyll 引擎的 Github 版本上不提供 redcarpet2(请参阅这个开放问题杰基尔)

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

于 2012-11-28T20:42:38.423 回答
11

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

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

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

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

这就是你所做的

  • Markdown:例如,只需将您的文件命名为 *.markdown2012-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

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

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

于 2012-11-24T21:23:49.930 回答
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 是一个出色的博客平台,但文档很少。

于 2012-11-27T23:52:40.070 回答
0

自从cboettig发布他的答案后,GitHub 已经停止支持redcarpet. 如果你想要 GitHub Flavored Markdown,你现在可以直接markdown: GFM_config.yml.

于 2020-06-23T02:04:54.590 回答