GFMと素のMarkdownの違い。表・タスクリスト・打ち消し線
Markdownのコラム
Markdownには決まった標準が無い、という言い方をされることがあります。
正確には、最初に作られた仕様があり、そこに各サービスが独自の拡張を足してきた結果、書ける記法が場所によって違う状態になっています。
いま一般に「Markdown」と呼ばれて通じるものの多くは、GitHubが定めた拡張版です。
GitHub Flavored Markdown、略してGFMと呼ばれます。
素のMarkdownにあるもの
もともとのMarkdownで書けるのは、次のあたりです。
- 見出し(
#) - 箇条書きと番号付きリスト
- 強調(
*または_) - リンクと画像
- 引用(
>) - コード(バッククォート)
- 水平線
文章を書くうえで必要なものはひととおり揃っています。
逆に言えば、ここに無いものは後から足された拡張です。
GFMで足されたもの
よく使われるのは次の4つです。
表
| 項目 | 内容 |
| --- | --- |
| A | あ |素のMarkdownに表はありません。表が書けるかどうかは、拡張に対応しているかで決まります。
打ち消し線
~~取り消した文字~~チルダ2つで囲みます。
タスクリスト
- [ ] まだ
- [x] 済み箇条書きの先頭に [ ] を置く書き方です。GitHubのissueでチェックボックスとして表示されるのはこれです。
自動リンク
素のMarkdownでは、URLをそのまま書いてもリンクになりません。<> で囲むか、リンク記法で書く必要があります。
GFMでは、URLを書くだけでリンクとして扱われます。
コードブロックの言語指定
バッククォート3つで囲むコードブロックも、素のMarkdownには無い書き方です(もとの仕様では半角スペース4つの字下げでした)。
開始のバッククォートの後ろに言語名を書くと、対応している処理系では色が付きます。
指定しなくてもコードブロックにはなります。色が付かないだけです。
言語名が間違っていた場合の扱いは処理系によって違い、無視されることもあれば、そのまま出ることもあります。
改行の扱いも、場所によって違う
素のMarkdownでは、文の途中で1回改行しても、表示では改行になりません。
前後の行は1つの段落としてつながって表示されます。
改行したいときは、行末に半角スペースを2つ置くか、空行を1行入れて段落を分けます。
一方で、1回の改行をそのまま改行として表示する場所もあります。
GitHubでも、IssueやコメントとREADMEのようなファイルとで、扱いが違います。
LiteMD のプレビューは、1回の改行も改行として表示する設定にしています。
そのため、LiteMD で見た目どおりに改行されていても、貼り先によっては段落がつながって表示されることがあります。
改行の位置が大事な文章は、空行で段落を分けておくと、どこに貼っても崩れにくくなります。
脚注
GitHubでは、文中に [^1] と書き、文末に [^1]: 本文 と書くと、脚注として表示されます。
比較的新しく加わった記法なので、対応していない場所では、そのままでは表示されません。
対応していない場所では、[^1]: 本文 の行が「リンク先の定義」として読まれることがあります。
その場合、文中の [^1] は「本文」という名前のページへのリンクになり、押しても存在しないページに飛びます。
脚注の本文は、どこにも表示されません。
LiteMD のプレビューも脚注には対応しておらず、この形で表示されます。
脚注を使いたい文章は、本文の中に()で補足を書くか、文末に「※1」のような注記を普通の文として書いておくと、どこに貼っても内容が失われません。
どこまで書いてよいか迷ったら
貼り付け先が決まっているなら、その場所の仕様を見るのが確実です。
決まっていない、あるいは複数の場所に貼る予定があるなら、素のMarkdownの範囲に表を足したあたりまでに収めておくと、たいていの場所でそのまま通ります。
タスクリストや脚注のような後発の記法は、対応していない場所では記号のまま出ます。
消えるわけではないので致命的ではありませんが、読み手には意図が伝わりません。