Enterを押したのに2行がひとつの段落になり、打ったとおりに見えない。Markdownで誰もが最初に驚くところで、しかもこれは意図された設計です。原稿の中の改行1つは、ただの空白として扱われます。おかげで長い段落をエディタの中で折り返しても、出てくるものは変わりません。
欲しかった改行を得る方法は3つあります。下のパネルを編集して、どれがどれか確かめてください。
この行と、この行は
同じ段落に収まります。
上に空行があると、新しい段落が始まります。
行末に半角スペース2つで
同じ段落の中で改行できます。
バックスラッシュでも同じです\
こちらは目に見えます。この行と、この行は 同じ段落に収まります。
上に空行があると、新しい段落が始まります。
行末に半角スペース2つで
同じ段落の中で改行できます。
バックスラッシュでも同じです
こちらは目に見えます。
その裏にある規則
Markdownには別々の概念が2つあり、混同することが混乱のもとです。
- 段落の区切りは、2つの文章の塊のあいだに間を空けます。
<p>要素が2つに分かれます。空行で作ります。 - 改行は、同じ段落の中で次の行に移ります。
<br>になります。行末の空白2つ、またはバックスラッシュで作ります。
たいていの場合、欲しいのは段落の区切りで、それには空行1つで足ります。
空白2つの問題
行末の空白2つは元からある記法で、ほぼどこでも動きます。ただし目に見えません。書いているあいだは確認できず、たいていのエディタは保存時に行末の空白を削り、コードレビューにも現れません。自分の手元では正しく出るファイルが、他人が開いて保存した瞬間に静かに壊れることがあります。
バックスラッシュのほうが新しく、CommonMarkの一部で、原稿の上で見えます。エディタと出力先の両方がCommonMarkに対応しているなら(いまどきのものはたいてい対応しています)、こちらを選んでください。古いものや変わったものに向けて書くなら、空白2つを使い、エディタの「行末の空白を削除」を切っておいてください。
バラは赤い
スミレは青い
バラは赤い\
スミレは青いバラは赤い
スミレは青い
バラは赤い
スミレは青い
出てくるものは同じです。保存を生き延びるのは片方だけです。
改行がいちばん効く場面
住所、詩、歌詞、署名。違いが目に見え、段落の区切りでは間違いになる場面です。
Carlo Di Giuseppe\
AppJuice\
イタリアCarlo Di Giuseppe
AppJuice
イタリア
改行がなければ1行につながってしまいます。あいだに空行を入れれば3つの段落になり、今度は離れすぎます。
よくある間違い
リストの中でEnterを2回押す。 項目のあいだの空行は、詰まったリストをゆるいリストに変えます。各項目が <p> に包まれ、間隔が広がります。これは本物の機能ですが、人を驚かせます。リストのガイドを参照してください。
保存時に行末の空白が消される。 エディタの設定を確認してください。同じMarkdownファイルが他人のところで違って見える理由として、いちばん多いものです。
<br> を直接書く。 たいていの処理系は生のHTMLを許すので動きます。ただし文書の持ち運びやすさ、つまりMarkdownの存在理由そのものを損ないますし、HTMLが無効な場所ではそのまま文字として出ます。
空行を増やせば余白が広がると思う。 空行3つは空行1つと同じ結果になります。Markdownはまとめてしまいます。縦の余白が要るなら、それは内容ではなく体裁の判断です。
よくある質問
Markdownが改行を無視するのはなぜですか?
そういう設計だからです。Markdownは改行1つを空白として扱います。おかげで長い段落を原稿の中で何行にも折り返しても、出力では切れません。改行を入れたいときは行末を空白2つかバックスラッシュで終え、新しい段落にしたいときは空行を入れます。
空白2つとバックスラッシュの違いは?
結果はまったく同じで、いまの段落の中の <br> になります。空白2つは2004年の元の記法でほぼどこでも通りますが、原稿の上では見えません。バックスラッシュはCommonMarkで加わったもので、目に見え、行末の空白を削るエディタでも生き残ります。
GitHubでは改行の扱いが違いますか?
場所によっては違います。イシュー、プルリクエスト、コメントでは、GitHubは改行1つを本物の改行として表示するので、Enterを1回押せば期待どおりになります。リポジトリの中の .md ファイルでは標準の規則に従い、行をつなげます。同じ文章がREADMEとコメントで違ってふるまうのは、このためです。
段落のあいだに空行を入れるには?
空行1つで足ります。Markdownは連続する空行を何行あっても1つの段落区切りにまとめます。目に見えるほど余白を足したいならHTMLかCSSが要りますが、それは体裁の話で、Markdownが表現するものではありません。
段落を1行の長い行として書いてもいいですか?
はい、多くの人がそうしています。改行1つは空白として扱われるので、段落をとても長い1行で書いても、80文字で折り返しても、出力は変わりません。編集しやすいほうを選んで、そろえておいてください。