Markdownオプション

Jekyllがサポートする様々なMarkdownレンダラーには、追加のオプションが用意されている場合があります。

Kramdown

KramdownはJekyllのデフォルトのMarkdownレンダラーであり、多くの場合、追加の設定なしでうまく機能します。ただし、多くの設定オプションをサポートしています。

Kramdownプロセッサー

デフォルトでは、JekyllはKramdownにGitHub Flavored Markdown (GFM)プロセッサーを使用します。(input: GFMの指定も可能ですが、冗長です。) GFMは、kramdown-parser-gfmでドキュメント化されているいくつかの追加のKramdownオプションをサポートしています。これらのオプションは、以下のようにKramdown Jekyll設定で直接使用できます。

kramdown:
  gfm_quirks: [paragraph_end]

また、Kramdownで使用されるプロセッサーを変更することもできます(Kramdown RDocinputキーで指定されているように)。たとえば、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コンバーターを使用することに注意してください。remove_block_html_tags(RemoveHtmlTagsコンバーターで使用)など、他のコンバーターのみで使用されるKramdownオプションは機能しません。

CommonMark

CommonMarkは、Markdown構文を合理化したもので、Cで実装されているため、Rubyで実装されたデフォルトのKramdownよりも高速です。元のMarkdownとはわずかに異なりブロックインライン属性リストのように、Kramdownで実装されているすべての構文要素をサポートしていません。

基本のCommonMarkとjekyll-commonmarkプラグイン、そしてGitHub PagesがサポートするGitHub Flavored Markdownの2つの種類があります。

カスタム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