Markdown記法

adiaryでは本家Markdown記法をかなり忠実に再現しています。

また拡張として「さつき記法タグ[tag:xxxx]」や目次記法([*toc]関連のみ)*1が使えます。

*1 : [*toc2]は使えますが、今のところ[*toc1]と同等です。

Markdown記法に対する拡張

URL自動リンクが必要な場合は、ブログ設定画面の自動リンクをonにしてください。

独自拡張

  • 空行に続き「====」または「=====」のみの行を記述することで、以降を「続きを読む」にすることができます。
  • さつき記法と同様に「記法タグ」が使用できます。*3
  • 目次機能も使用できます。

その他。

  • 見出し記法の最高位を<H3>に設定しました。
  • <section>タグによるセクショニングを行い、最高位の見出し記法を使った地点でセクションを分割するようにしました。
  • 通常の文章ブロック中で改行する際、行末も次の行頭もASCII文字以外ならば、改行コードを除去するように仕様変更しました。*4
  • HTMLブロックとして認識するタグは「p div h[1-6] blockquote pre table dl ol ul script noscript form fieldset iframe math ins del」のみでしたが、「style article section nav aside header footer details audio video figure canvas map address aside base hr option source」を追加しました。

*2 : Fenced code blocks と Syntax highlighting。生成されるHTMLはadiary準拠のものになります。

*3 : Markdownのリンク記法と重複した場合は、リンク記法が優先されます。

*4 : 日本語を改行しつつ記述する際に、HTMLの仕様上、改行位置にスペースが1つ入ってしまうため、それを防止するための措置。

仕様書にはないMarkdownの仕様と準拠状況

  • HTMLコメントは退避してその中はいじらない。
  • 行末スペース2個以上を改行に置き換える際、例えスペースがいくつあっても、スペース1つと<br />に置き換える。
  • リンク記法は、リンクテキストが空文字でもリンクを生成する。
  • 下線「==」「--」による見出し記法は、2個以上の連続した記号であって、文末にスペース以外の文字を含まないときのみ有効。
  • 参照リンク記法の定義は、参照名が空文字の場合、無効となる(そのまま出力)。
  • 参照リンク記法は、参照名が定義されてない場合、無効となる(そのまま出力)。
  • 引用ブロック中で更にHTMLブロックや見出しなどあらゆる記法が使える(無限に入れ子できる)。
  • 引用ブロック(>)の手前には3つまでスペースを置くことができる。
  • TABはタブ幅4としてスペースに置換される。
  • コードブロックの手前は空行でなくてはならない。
  • コードブロックの途中に空行を挟んでも良い。
  • リストブロック中に空白行があると、リスト要素に対して段落処理をする。
  • リストブロックのネストインデントは、1段目が0~3つ、それ以降が「段数×4 + 3個」まで有効。

以下、Ver3.20以降対応。

  • 空行後の先頭スペースの行は、リストの項目が続いているとみなす。
  • リスト中も、行末スペース2つ以上は<br />に置換する。

非準拠の挙動

  • 段落ブロック中の改行(行連結)時に、文末と次の行頭がマルチバイト文字ならば改行を除去するよう変更。*5
  • コメント内に空白行を含むとき、コメント中の文字列をパースする。
    • コメント内はいかなる場合でもパースしないよう変更しました。
  • 自動リンク記法でメールアドレスを書いた場合、@より左側は「[\w\.\-]+」のみ使用可能。
    • @より左側に「+」記号も記述できるよう変更しました。
  • タグ中の **強調** 等でも、タグが2行にわたる場合は処理してしまう。*6

*5 : こうしないと日本語の文章中に空白が入り違和感のある表示になります。

*6 : 対応は可能ですが、実用性に対して中の処理が汚くなってしまうので今のところ対応見送りです。

その他

拡張部分が問題になる場合は、設定ファイル*7をいじればオフにすることができます。

Markdown記法はあまり使用しないので、使用する方で以下の場合は連絡してください。

  • Markdownの仕様に準拠してない挙動を見つけた場合。
  • 拡張した部分が邪魔である場合。
  • 逆に、実装してほしい拡張がある場合。

*7 : skel/_parser/markdown.html

OK キャンセル 確認 その他