まず結論:段落・ハード改行・ソフト改行を分ける
Markdownでは、ソース上の改行がすべて同じ意味を持つわけではありません。最初に決めるべきなのは「別の段落にしたいのか」「同じ段落内で見た目だけ改行したいのか」です。
話題を分けるなら空行を1行入れます。同じ段落内で改行位置を固定したいならハード改行を使います。何も付けずに1回だけ改行した場合は、通常ソフト改行です。
| 目的 | Markdownソース | 一般的な結果 | 扱いやすさ |
|---|---|---|---|
| 新しい段落 | 空行を1行入れる | 別々の段落ブロック | 通常の文章で最も分かりやすい |
| 同じ段落内で強制改行 | 行末に半角スペース2つ | 次の行へ送る | 持ち運びやすいが空白が見えにくい |
| 見える記号で強制改行 | 行末に \ | 次の行へ送る | CommonMark互換でソース上も確認しやすい |
| HTMLで改行 | <br> | 明示的な改行 | 生HTMLを許可する環境だけ |
Enterを1回押しても改行されないように見える理由
CommonMarkでは、行末に半角スペース2つやバックスラッシュがない通常の改行はソフト改行として解釈されます。ソフト改行は段落を終わらせません。
HTML表示では、その境界が通常の空白と同じように見えることがあります。長いMarkdownソースを読みやすく途中で折り返しても、意図しない見た目の改行を増やさないための挙動です。
この行でソースを折り返します。
次の行も同じ段落です。この行でソースを折り返します。 次の行も同じ段落です。段落を変えるなら空行を1行入れる
記事、README、仕様書、メモなどで話題を分けるときは、2つの文の間に空行を1行入れるのが基本です。これは単なる余白ではなく、別の段落を作ります。
見た目の余白を増やすためだけに各段落へ <br> を入れる必要はありません。段落同士の最終的な余白は、表示側のスタイルに任せるほうが再利用しやすくなります。
移行作業が完了しました。
次にレビュー担当が内容を確認します。2つの独立した段落になります。同じ段落内で改行するなら行末に半角スペース2つ
1行目の末尾へ半角スペースを2つ入れてから改行すると、CommonMark互換のレンダラーではハード改行になります。住所、署名、短い詩など、段落は分けたくないが行位置は保ちたい場合に使えます。
弱点は、その2つの空白が画面上で見えにくいことです。エディター、リンター、フォーマッターが行末空白を自動削除すると、改行も消えます。
山田 花子··
ドキュメントチーム同じ段落の中で、名前と所属が別の行に表示されます。改行記号を目で確認したいならバックスラッシュを使う
CommonMarkでは、行末のバックスラッシュもハード改行として使えます。半角スペース2つと違ってソース上に記号が見えるため、レビュー時に改行意図を確認しやすい方法です。
バックスラッシュは行末に置きます。文章途中のバックスラッシュは、後ろの記号をエスケープする別の意味になる場合があります。
1行目\
2行目同じ段落の中で2行に表示されます。<br> は貼り付け先がHTMLを許可するときだけ
生HTMLを受け付けるMarkdown環境では <br> を明示的な改行として使えます。ただし、すべてのMarkdown環境がHTMLをそのまま通すわけではありません。
CMSや社内ツールによってはHTMLを無効化またはサニタイズします。複数のサービスへ同じ文書を移すなら、空行、半角スペース2つ、バックスラッシュを優先し、最終表示を確認してください。
1行目<br>
2行目レンダラーが生HTMLを許可している場合だけ、<br> が改行として働きます。リスト・引用・表では周囲の構造も確認する
リスト項目の途中で別段落を作る場合は、その内容が同じ項目に属するよう必要なインデントを保ちます。引用では各行に > を付けると、どこまでが引用かソース上でも明確です。
パイプで書く一般的なMarkdown表には、持ち運び可能な複数行セルの標準記法はありません。セル内で <br> が使える環境もありますが、使えない環境もあるため最終レンダラーで確認が必要です。
| 場所 | 確認すること |
|---|---|
| リスト | 同じ項目に属する続きの内容は必要なインデントを保つ。 |
| 引用 | > を各行と段落間の空行に付けると構造が明確。 |
| パイプ表 | 複数行セルを標準機能だと思わない。<br> は環境依存。 |
改行が効かないときの切り分け手順
まず、問題が再現する最小の2行だけにします。そこできちんと改行できたら、リスト、引用、表、コードフェンスなど周囲の構造を1つずつ戻します。
- 別段落が必要なのか、同じ段落内のハード改行が必要なのか決める。
- 半角スペース2つを使った場合、保存時に削除されていないか確認する。
- 目で確認しやすいバックスラッシュ方式を試す。
- <br> を使う場合は、公開先が生HTMLを許可するか確認する。
- リスト・引用・表など、周囲のブロック構造を確認する。
- 閉じ忘れたコードフェンスの中に入っていないか確認する。フェンス内ではMarkdown記法が文字列として扱われます。
CommonMarkとGFMを基準に、最終レンダラーでも確認する
CommonMarkはソフト改行とハード改行を定義し、ハード改行として行末の半角スペース2つとバックスラッシュを扱います。GFMはCommonMarkを基礎に拡張を加えています。
そのため、一般的なMarkdownプレビューで構造を確認することは役立ちますが、別のCMS、エディター、コメント欄などがまったく同じ設定で表示するとは限りません。
関連ツール
よくある質問
Markdownで改行するには?
同じ段落内で改行したい場合は、行末に半角スペース2つ、またはバックスラッシュを置いてから改行します。別段落にしたい場合は空行を1行入れます。
段落を変えずに次の行へ送るには?
行末の半角スペース2つ、または行末のバックスラッシュを使います。どちらもCommonMark互換環境でハード改行として扱われます。
Enterを1回押したのに、なぜ表示では改行されませんか?
通常の改行はソフト改行として同じ段落内に残り、HTML表示では空白のように見えることがあります。見える改行が必要ならハード改行か新しい段落を使います。
半角スペース2つと<br>はどちらがよいですか?
複数のMarkdown環境へ移すなら、半角スペース2つのほうが一般に扱いやすい方法です。<br> は生HTMLを許可する環境だけで使えます。バックスラッシュは目で確認しやすい代替です。
Markdown表のセル内で改行できますか?
一般的なパイプ表には、持ち運び可能な複数行セルの標準記法はありません。一部の環境では <br> が使えますが、最終レンダラーで確認してください。
空行とハード改行は同じですか?
違います。空行は新しい段落を作ります。ハード改行は同じ段落のまま、表示だけを次の行へ送ります。
