Markdownオプション
Jekyllでサポートされている様々なMarkdownレンダラーには、追加のオプションがある場合があります。
Kramdown
KramdownはJekyllのデフォルトMarkdownレンダラーです。以下は現在サポートされているオプションのリストです。
- auto_id_prefix - 自動的に生成された見出しのIDのプレフィックス
- auto_id_stripping - 自動ID生成のために見出しテキストからすべてのフォーマットを削除
- auto_ids - 自動見出しID生成を使用
- coderay_bold_every - 行番号を太字にする頻度を定義
- coderay_css - 強調表示されたコードのスタイル設定方法の定義
- coderay_default_lang - ハイライトコードブロックのデフォルト言語を設定
- coderay_line_number_start - 行番号の開始番号
- coderay_line_numbers - 行番号を表示するかの定義
- coderay_tab_width - 強調表示されたコードのtabの長さ
- coderay_wrap - 強調表示されたコードをどのように折り返すかを定義
- enable_coderay - 構文の強調表示にcoderayを使う
- entity_output - エンティティの出力方法を定義
- footnote_backlink - 脚注のバックリンクに使用するテキストを定義
- footnote_backlink_inline - 脚注のバックリンクを常にインラインにするかどうかを指定
- footnote_nr - 最初の脚注の番号
- gfm_quirks - GFM特有の癖のセットを有効にします
- hard_wrap - 改行を文字通りに解釈する
- header_offset - ヘッダの出力オフセットを設定します
- html_to_native - HTML要素をネイティブ要素に変換する
- line_width - 文書を出力するときに使用される線の長さを定義
- link_defs - リンク定義を事前定義
- math_engine - mathエンジンの設定
- math_engine_opts - mathエンジンのオプションを設定
- parse_block_html - blockHTMLタグでkramdown構文を処理する
- parse_span_html - spanHTMLタグでkramdown構文を処理する
- smart_quotes - スマートクォート出力用のHTMLエンティティ名またはコードポイントを定義
- syntax_highlighter - シンタックスハイライトの設定
- syntax_highlighter_opts - シンタックスハイライトのオプションの設定
- toc_levels - 目次に使用されるレベルを定義
- transliterated_header_ids - IDを生成する前にヘッダテキストを音訳する
- typographic_symbols - 活版印刷シンボルから出力文字へのマッピングを定義
使用例
kramdown:
html_to_native: true
サポートされていないkramdownオプションが2つあります
remove_block_html_tags
とremove_span_html_tags
は、kramdown HTMLコンバータに含まれていないため、現在Jekyllではサポートされていません。
これらのオプションの詳細は、Kramdown configuration documentationをご覧ください。
CommonMark
CommonMarkはMarkdown構文の合理化バージョンであり、Cで実装されているため、Rubyで実装されているデフォルトのKramdownよりも高速です。元のMarkdownとは少し異なり、Block Inline Attribute ListsのようにKramdownで実装されているすべての構文要素をサポートするわけではありません。
jekyll-commonmarkプラグインを使った基本CommonMarkとGitHub PagesでサポートされているGitHub Flavored Markdownの2種類があります。
Redcarpet
Redcarpetは、文字列の配列のextensions
サブ設定を提供することによって、設定することができます。 各文字列は、Redcarpet::Markdown
クラスの拡張の名前でなければなりません。配列内に存在する場合は、対応する拡張子をtrue
に設定します。
Jekyllは2つの特別なRedcarpet拡張を扱えます。
-
no_fenced_code_blocks
— デフォルトで、Jekyllは(チルダ3つまたはバッククォート3つでコードブロックを区切るため)fenced_code_blocks
拡張をtrue
に設定しています。おそらく、GitHubが積極的に採用しており、不可避の設定になってきています。Redcarpetの通常のfenced_code_blocks
はJekyllで使用するときは無効です。——言い換えれば、区切られたコードを無効にするためにこの反転の拡張を使用できます。
最初の区切り文字の後に言語のハイライトを設定できます。
```ruby
# ...ruby code
```
コードブロックとハイライトは共に有効にできます。これはコードを静的にハイライトします。シンタックスハイライトがない場合は、<code>
要素に class =" LANGUAGE "
属性を追加します。これは様々なJavaScriptコードハイライトライブラリでヒントとして使用できます。
-
smart
— この擬似拡張はSmartyPantsを有効にします。これは、ストレート引用符を中引用符に変換し、ハイフンをem(---
)とen(--
)ダッシュとします。
他のすべての拡張はRedcarpetからの通常の名前を保持しており、Jekyllではsmart
以外のレンダラオプションは指定できません。利用可能な拡張のリストはRedcarpetのREADMEファイルにあります。Redcarpetの正しいバージョンのREADMEを見ていることを確認してください:Jekyllは現在v3.2.xを使っています。 最も一般的に使用されている拡張は次のとおりです。
tables
no_intra_emphasis
autolink
カスタム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