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 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_offset
やsmart_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