Markdown記法
概要
adiaryでは本家Markdown記法を忠実に再現しています。
Markdown記法に対する拡張
- PHP Markdown Extra の「Markdown Inside HTML Blocks」 に対応。
- GitHub Flavored Markdownへの対応(下記のみ)。
- Multiple underscores hack
- 打ち消し線(Strikethrough : ~~str~~)
- シンタックスハイライト(Fenced code blocks と Syntax highlighting)*2
- テーブル記法
- リストのチェックボックス拡張 (Ver3.14~)
- Qiitaのmathブロック記法*3 (Ver3.21~)
URL自動リンクが必要な場合は、ブログ設定画面の自動リンクをonにしてください。
オリジナルの拡張
その他の調整
- 見出し記法の最高位を<H3>に設定しました。
- <section>タグによるセクショニングを行い、最高位の見出し記法を使った地点でセクションを分割するようにしました。
- 通常の文章ブロック中で改行する際、行末も次の行頭もASCII文字以外ならば、改行コードを除去するように仕様変更しました。*5
- 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」を追加しました。
仕様書にはないMarkdownの仕様と準拠状況
- HTMLコメントは退避してその中はいじらない。
- 行末スペース2個以上を改行に置き換える際、例えスペースがいくつあっても、スペース1つと<br />に置き換える。
- リンク記法は、リンクテキストが空文字でもリンクを生成する。
- 下線「==」「--」による見出し記法は、2個以上の連続した記号であって、文末にスペース以外の文字を含まないときのみ有効。
- 参照リンク記法の定義は、参照名が空文字の場合、無効となる(そのまま出力)。
- 参照リンク記法は、参照名が定義されてない場合、無効となる(そのまま出力)。
- 引用ブロック中で更にHTMLブロックや見出しなどあらゆる記法が使える(無限に入れ子できる)。
- 引用ブロック(>)の手前には3つまでスペースを置くことができる。
- TABはタブ幅4としてスペースに置換される。
- コードブロックの手前は空行でなくてはならない。
- コードブロックの途中に空行を挟んでも良い。
- リストブロック中に空白行があると、リスト要素に対して段落処理をする。
- リストブロックのネストインデントは、1段目が0~3つ、それ以降が「段数×4 + 3個」まで有効。
- 【Ver3.20】空行後の先頭スペースの行は、リストの項目が続いているとみなす。
- 【Ver3.20】リスト中も、行末スペース2つ以上は<br />に置換する。
- 【Ver3.30/GFM】テーブル記法の"-"(ダッシュ)は最低3つ必要。*6
非準拠の挙動
要望受け付けます
拡張部分は個別にオフにできます。skel/_parser/markdown.html を skel.local/_parser/markdown.html にコピーして編集してください。
Markdown記法はあまり使用していないので、使ってみて要望がある方は気軽にご連絡ください。
- 要望例
- 実装(仕様)を変更してほしい。
- 実装してほしい拡張がある場合。
- Markdownの仕様に準拠してない挙動を見つけた。
- 拡張した部分が邪魔である。