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オプションが2つあります

remove_block_html_tagsremove_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