簡體   English   中英

Github 風味的 Markdown 和 pygments 在 Jekyll 中突出顯示

[英]Github flavored Markdown and pygments highlighting in Jekyll

我已經在 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 突出顯示?

編輯:現在更容易

從 Jekyll >= 0.12.1 開始,Jekyll 原生支持 redcarpet2,所以你可以簡單地將你的配置設置為markdown: redcarpet並且你很高興使用 GFM/fenced 代碼塊,而沒有這個 mumbojumbo 的其余部分......

原答案

您明確要求使用 Github 風格的 Markdown,所以我認為您不是在尋找使用非 Markdown 液體格式創建代碼塊的答案:

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

但寧願能夠用圍欄代碼塊寫一些東西:

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

等等。為此,您將需要使用redcarpet markdown 解析器。

Github 風格的降價使用名為“Redcarpet” 1的降價解析器。 具有諷刺意味的是,盡管 Github 風格的降價使用redcarpet2 ,但默認情況下 Jekyll 不支持此降價解析器。 相反,您可以通過安裝該 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 特定的降價操作,例如通過數字識別問題或通過哈希提交,因此它們在技術上並不相同)。

擁有插件意味着,目前,如果您在那里托管您的網站,您必須在本地構建您的網站並將_site復制到 github,因為_site_site引擎的 Github 版本上不可用(請參閱此未解決的問題在 Jekyll 上)

注意:順便說一下,您不需要在_config.yml指定的所有降價編輯器。 對於使用 redcarpet2 的基本示例,您可能希望查看此配置以及與之相關的 jekyll 目錄。

Jekyll 最好的部分是,正如這里所說,

...它需要一個模板目錄(代表網站的原始形式),通過 Textile 或 Markdown 和 Liquid 轉換器運行它,並吐出一個完整的靜態網站...

這意味着,默認情況下您會突出顯示 Markdown 和 pygments。

您可以為此設置放棄或使用默認的 _config.yaml。 使用現有的配置,您可能希望將 pygments 設置為 true: pygments: true

這就是你的目的

  • Markdown :只需將您的文件命名為 *.markdown,例如2012-12-01-my-post.markdown並將其放置在根目錄中的任何位置。 通常,您會將其放在 _posts 中。

    當 jekyll 解析這個文件時,它會通過 markdown 過濾器。 作為額外的獎勵,您可以保存為 *.textile 並使用textile 進行解析。 而且,當然,您可以將其保留為 .html,這樣就不會進行降價解析。

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

在配置文件中更改

 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 是一個出色的博客平台,但文檔不足。

自從cboettig發布了他的回答后,GitHub 已經停止支持redcarpet 如果您想要 GitHub Flavored Markdown,您現在可以在_config.yml直接將其指定為markdown: GFM

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM