Markdown で改行されないのはなぜ? 改行のしかた
標準の仕様(CommonMark)では、Enter で 1 回改行しただけの行は「やわらかい改行」になり、表示では前の行とつながります。仕様は、これを改行として出しても空白として出してもよいとしていて、ブラウザでの見た目はどちらも同じ(つながる)です。
表示でも改行したいときは、行の終わりに空白を 2 つ以上置くか、行の終わりにバックスラッシュ(\)を書きます。HTML が使えるところなら <br> でも改行できます。段落を分けたいときは、間に空行を 1 行入れます。
なぜ 1 回の改行では改行されない?
Markdown は、文章を書くときの折り返しを自由にできるように、1 回の改行を「同じ段落の続き」として扱います。CommonMark の仕様では、行の終わりに何もつけない改行はやわらかい改行(soft line break)と呼ばれ、HTML では改行か空白として出してよいとされています。どちらでも、ブラウザでは前の行とつながって見えます。
仕様は、やわらかい改行を、そのまま改行として表示する設定をアプリが持ってもよいとしています。GitHub も、課題やコメントでは 1 回の改行をそのまま改行として表示し、.md のファイルでは改行しない、と案内しています。同じ文でも、アプリや場所で改行のされ方が違うのはこのためです。
改行するには、どう書く?
| 書き方 | 例 | メモ |
|---|---|---|
| 行の終わりに空白 2 つ以上 | 1 行目␣␣(␣ は空白) | 見えないので、消えたり気づかれなかったりしやすい |
行の終わりに \ | 1 行目\ | CommonMark の書き方。目で見てわかる |
<br> を書く | 1 行目<br> | HTML が使えるところだけ |
行の終わりに空白 2 つ以上
例1 行目␣␣(␣ は空白)メモ見えないので、消えたり気づかれなかったりしやすい行の終わりに
\例1 行目\メモCommonMark の書き方。目で見てわかる<br>を書く例1 行目<br>メモHTML が使えるところだけ
どの書き方も、段落の最後の行では改行になりません(CommonMark の決まり)。次の例は、上の 2 行が空白 2 つ、次がバックスラッシュで改行しています。コピーすると、行の終わりの空白もそのまま入ります。
空白 2 つで改行する 次の行 バックスラッシュで改行する\ 次の行
段落を分けるには? 空行を何行も入れたいときは?
段落を分けるときは、間に空行を 1 行入れます。空行を 2 行、3 行と入れても、段落の区切りは 1 つのままで、すき間は広がりません。
大きくすき間をあけたいときは、HTML が使えるところなら <br> を重ねる方法がありますが、標準の書き方ではありません。読みやすさのためなら、見出しや区切り線(---)で区切るほうが、どのアプリでも崩れません。
表・見出し・箇条書きの中では、改行できる?
- 表のセル: 表のセルの中に改行の書き方はありません。表の行は 1 行で書くので、Enter を押すと表が崩れます。HTML が使えるところでは
<br>で改行する方法が使われます。くわしくは表の書き方で。 - 見出し: 見出しは 1 行で書きます(
#の見出しは、その行で終わる)。 - 箇条書き: 項目の中で改行するときは、空白 2 つか
\を使い、次の行を項目の文の頭にそろえて字下げします。
よくある質問
- 行の終わりの空白 2 つは、なぜ消えてしまうことがある?
- エディターや保存のときに、行の終わりの空白を自動で消す設定があるためです。見えない空白は消えても気づきにくいので、確実に改行したいときは、行の終わりにバックスラッシュを書く方法が向いています。
- 改行コードは CRLF と LF のどちらでもいい?
- CommonMark の仕様では、行の終わりは LF・CR・CRLF のどれでもよいとされています。改行の表示のされ方は、改行コードではなく、上の書き方で決まります。