Markdownで改行が反映されない理由と、確実に改行する方法
Markdownのコラム
箇条書きの下に一行足したら、前の行とつながって表示された。
Markdownを書いていると、たいてい一度は遭遇する現象だと思います。
原因はエディタの不具合ではなく、Markdownの仕様です。
改行の扱いには段階があって、書き方によって結果が変わります。
なぜ1行の改行は消えるのか
標準のMarkdownでは、単独の改行は「行の区切り」ではなく「単語の区切り」として扱われます。
HTMLに変換される時点で、改行は半角スペース1つに置き換えられます。
たとえば次のように書いたとします。
朝ごはんを食べた
昼ごはんも食べたこれは1つの段落として扱われ、表示はこうなります。
朝ごはんを食べた 昼ごはんも食べた意図的にそうなっているもので、ソースの見た目を整えるための改行と、文章として意味のある改行を区別するための仕様です。
1行が長くなったところで適当に折り返してソースを読みやすくしても、表示は崩れない。そういう作りになっています。
意図どおりに改行する3つの書き方
1. 空行を入れる
最も確実です。前後が別々の段落に分かれます。
※段落として分かれるため、行間に余白が入ります。詰めて改行したい場合は次の方法へ。
2. 行末に半角スペースを2つ置く
同じ段落の中で改行されます。
ただし、この2つのスペースは画面上では見えません。
エディタの「保存時に行末の空白を削除する」設定が効いていると消えますし、コピー&ペーストの経路によっても落ちます。
書いたときは効いていたのに、後から開くと改行が消えている。そういうことが起きます。
3. 行末にバックスラッシュを置く
CommonMarkに準拠した処理系であれば、行末の \ でもスペース2つと同じ結果になります。
スペースと違って目に見えるので、消えたかどうかが分かります。
そのほか、<br> タグを直接書く方法もあります。
MarkdownはHTMLをそのまま書ける仕様なので、これも機能します。
※HTMLを許可していない処理系では取り除かれます。
ツールによって挙動が違う
ややこしいのは、単独の改行の扱いが処理系によって変わることです。
LiteMDは、単独の改行をそのまま反映する設定にしています。
1行で改行すれば、プレビューでもそのとおりに改行されます。
一方、標準どおりに動く処理系では、同じ文章が1行につながります。
LiteMDのプレビューで整えた文章を別の場所に貼ったら見た目が変わった、という場合はこれが原因です。
持ち出す予定があるなら明示的に書く
自分の中だけで完結する文書なら、使っているツールの挙動に合わせて構いません。
別の場所に貼る予定があるなら、空行かバックスラッシュで明示的に改行を指定しておくほうが安全だと思います。
行末スペース2つは、書いた本人にも見えないのが難点です。
消えても気づけないため、後から読み返す文書には向かないところがあります。
ブラウザだけで動くMarkdownエディタ
LiteMDは入力したテキストを外部に送信しません。読み込みも変換もプレビューも、すべてブラウザの中で完結します。