Markdown では、文章中で改行しても改行されずに半角スペースになる場合があります。
これを強制的に改行する方法を紹介します。
本記事では、ソース内文章中の 1 つ改行を Soft line break、明示的な改行を Hard line break と呼称します。(CommonMark と同じ)
また、半角スペースを ␣、改行を ↵ として明示的に表現しています。
明示的に改行する
Markdown ソース内で明示的に改行する場合、以下の 2 通りが主流です。この明示的な改行を Hard line break と呼びます。
- 連続した 2 つの半角スペース+改行:
␣␣↵ - バックスラッシュ+改行:
\↵
ここで␣␣↵
改行します。
ここでも\↵
改行します。
これらの明示的な改行は <br> として解釈されます。
しかし、このような明示的な改行が任意の Markdown 仕様に含まれているわけではありません。
仕様と Hard line break
Markdown は John Gruber によるオリジナル Markdown から派生して多くの仕様が存在します。
これらの仕様それぞれによって、Hard line break をどのように表現するか異なります。
そこで、主要な Markdown 仕様の Hard line break がどのように表現できるか表にしました。
| 仕様 | ␣␣↵ |
\↵ |
その他 |
|---|---|---|---|
| (Original) Markdown | ✓ | ||
| CommonMark | ✓ | ✓ | |
| Djot | ✓ | ||
| kramdown | ✓ | \\↵ |
|
| MultiMarkdown | ✓ | ✓ | |
| Pandoc’s Markdown | ✓ | ✓1 | |
| PHP Markdown Extra | ✓ | ||
| Python-Markdown | ✓ |
HTML が利用可能なのであれば、<br> でも強制改行できます。
Soft line break が強制改行に解釈される場合
Qiita のように Soft line break(ソース内の文書改行)が強制改行に解釈される場合、通常の改行だけでも改行されます。2
| Markdown | ⇒ | HTML |
|---|---|---|
| ⇒ |
|
ここに Hard line break による強制改行を行っても、2 重の強制改行にはなりません。(<br> が連続しない)
| Markdown | ⇒ | HTML |
|---|---|---|
| ⇒ |
|
ただし、<br> を明示的に利用する場合、2 重の強制改行になってしまいます。
| Markdown | ⇒ | HTML |
|---|---|---|
| ⇒ |
|
CommonMark を拡張した GFM が使われている GitHub.com では、改行が強制改行に解釈される領域(Issues や PRs、そのコメント等)と改行が無視され半角スペースになる領域(リポジトリのファイルや Gist 等)があります。
文章の途中で改行したいと強く願うならば、<br> で強制改行するよりも \↵ を利用した方が良いでしょう。
余談
「Markdown では ␣␣↵ で強制改行しなくてはならないのは不便だ」と言う主張もありますが、多くの場合で \↵ でも改行できます。
\↵ を使いましょう。