Markdown 選項

Jekyll 支援的各種 Markdown 渲染器有時會有額外的可用選項。

Kramdown

Kramdown 是 Jekyll 的預設 Markdown 渲染器,通常無需額外組態即可順利運作。但是,它支援許多組態選項。

Kramdown 處理器

預設情況下,Jekyll 使用 GitHub 風格 Markdown (GFM) 處理器 進行 Kramdown。(指定 input: GFM 也可以,但多餘。)GFM 支援一些額外的 Kramdown 選項,由 kramdown-parser-gfm 記錄。這些選項可以直接在您的 Kramdown Jekyll 組態中使用,如下所示

kramdown:
  gfm_quirks: [paragraph_end]

您也可以變更 Kramdown 使用的處理器(如 Kramdown RDoc 中的 input 鍵所指定的)。例如,若要在 Jekyll 中使用非 GFM Kramdown 處理器,請將以下內容新增至您的組態。

kramdown:
  input: Kramdown

Kramdown 剖析器的文件在 Kramdown 文件 中提供。如果您使用 Kramdown 或 GFM 以外的 Kramdown 剖析器,您需要新增其 gem。

語法高亮(CodeRay)

若要將 CodeRay 語法高亮器與 Kramdown 搭配使用,您需要新增對 kramdown-syntax-coderay gem 的依賴關係。例如,bundle add kramdown-syntax-coderay。然後,您就能在 syntax_highlighter 組態中指定 CodeRay

kramdown:
  syntax_highlighter: coderay

CodeRay 支援數個其自己的組態選項,在 kramdown-syntax-coderay 文件 中有說明,可以像這樣傳遞為 syntax_highlighter_opts

kramdown:
  syntax_highlighter: coderay
  syntax_highlighter_opts:
    line_numbers: table
    bold_every: 5

進階 Kramdown 選項

Kramdown 支援各種其他相對進階的選項,例如 header_offsetsmart_quotes。這些選項在 Kramdown 組態文件 中有說明,可以像這樣新增至您的 Kramdown 組態

kramdown:
  header_offset: 2
有數個不支援的 kramdown 選項

請注意,Jekyll 使用 Kramdown 的 HTML 轉換器。僅由其他轉換器使用的 Kramdown 選項,例如 remove_block_html_tags(由 RemoveHtmlTags 轉換器使用),將無法運作。

CommonMark

CommonMark 是 Markdown 語法的合理化版本,以 C 實作,因此比以 Ruby 實作的預設 Kramdown 更快。它與原始 Markdown 稍有不同,而且不支援 Kramdown 中實作的所有語法元素,例如區塊內聯屬性清單

它有兩種形式:基本 CommonMark,搭配jekyll-commonmark 外掛程式,以及GitHub Pages 支援的 GitHub 風味 Markdown

自訂 Markdown 處理器

如果您有興趣建立自訂 Markdown 處理器,您運氣真好!在Jekyll::Converters::Markdown命名空間中建立一個新的類別

class Jekyll::Converters::Markdown::MyCustomProcessor
  def initialize(config)
    require 'funky_markdown'
    @config = config
  rescue LoadError
    STDERR.puts 'You are missing a library required for Markdown. Please run:'
    STDERR.puts '  $ [sudo] gem install funky_markdown'
    raise FatalException.new("Missing dependency: funky_markdown")
  end

  def convert(content)
    ::FunkyMarkdown.new(content).convert
  end
end

建立好類別並妥善設定為_plugins資料夾中的外掛程式或 gem 之後,在您的_config.yml中指定它

markdown: MyCustomProcessor