Markdown PDF 改ページ:好きな場所で新しいページを始める
執筆 pdftomd.tools チーム · 更新日 · 約8分で読めます
Markdownには改ページの記法がありません。PDFで改ページするには、代わりにHTMLを1行入れます:<div style="page-break-after: always"></div>。上下に空行を入れてください。私たちのMarkdownをPDFに変換するツールを含む、HTMLベースの書き出しツールはそこで新しいページを始めます。LaTeXを経由する Pandoc の方法では \newpage と書きます。その後、PDFに空白のページがないか確認しましょう。

Markdownに改ページがない理由
Markdownはウェブのために作られ、ウェブページにはページがありません。元の記法にも CommonMark にも改ページの定義はありません。最も近いのは3つのハイフン --- の行で、これは区切り線(thematic break)です。新しいページではなく <hr> の線になります。多くの人がまずこれを改ページとして試し、何も起きない理由に首をかしげます。
Markdownが許しているのは生のHTMLです。ほとんどの書き出しツールはMarkdownをまずHTMLにし、そのHTMLをPDFとして印刷します。つまり改ページとは、実際にはHTMLの要素に付けたCSSの指示です。例外は Pandoc の標準の方法で、LaTeXを経由するため、代わりにLaTeXのコマンドを求めます。
使える改ページのスニペット
書き出しツールに合う行を選び、前後に空行を入れて1行だけで置きます。そうすればMarkdownのパーサーがHTMLブロックとして扱います。
Last paragraph of the first part.
<div style="page-break-after: always"></div>
## Part two
This heading starts a new page.- 新しいCSS:
<div style="break-after: page"></div>、またはページを始めたい要素にbreak-before: page。 - 見出しに直接: その見出しをHTMLで書いてもかまわなければ
<h2 style="page-break-before: always">第2部</h2>。 - VS Code の拡張機能 Markdown PDF: README には
<div class="page"/>とあり、拡張機能のスタイルシートが改ページを入れます。VS Code では定番の答えで、上のインラインスタイルもそこで使えます。 - LaTeXを使う Pandoc(PDFへの標準の方法):
\newpageだけの行。raw_tex拡張は、それをLaTeXとConTeXtのライターにだけそのまま渡します。Pandoc の newpage コマンドはHTML出力向けではないので、PDFにHTMLエンジンを使う場合は代わりにdivを使ってください。
なぜ名前が2つあるのか? CSSのフラグメンテーションの仕様は page-break-before と page-break-after を break-before と break-after に置き換え、古い名前を別名として残しました。page-break-after: always は break-after: page と同じように動作します。古いツールには古い形のほうが安全で、MDN は両方を説明しています。
“主ボックスの前/後で常にページ区切りを強制する。”
私たちの書き出しツールでの手動の改ページの扱い
2026年10月19日まで、私たちの書き出しツールは手動の改ページを無視し、すべての改ページを自分で決めていました。今は、表示された文書の各要素について計算済みの break-before と break-after の値を読むので、style 属性でCSSを使った改ページは、古い書き方でも新しい書き方でも反映されます。ライブプレビューでは新しいページが始まる場所に「改ページ」というラベル付きの破線を引き、書き出し後には手動の改ページをいくつ反映したかを知らせます。

いくつかの規則で出力をきれいに保ちます。
- 文書の先頭や末尾の改ページは無視されるので、最初や最後に空白のページができることはありません。
- 連続する2つの改ページは1つとして数えます。Chrome はその間に空白のページを印刷しますが、それが意図されることはまれだと考えています。
- 値
left、right、recto、versoは新しいページを始めます。左右どちらかのページに合わせるための空白のページは入れません。 ---はMarkdownの定義どおり、水平線のままです。- 長い部分の中では引き続き自動の改ページが働き、行、表の行、画像を切らないようにします。

テストの内容と、Chromeの印刷との比較
改ページの書き方を1つずつ試す小さな文書を9個書き、それぞれ実際の「PDFをダウンロード」ボタンで書き出して、pdfinfo と pdftotext でページを読み戻し、どのテキストがどのページに入ったかを調べました。基準として、同じHTMLを Chrome のPDFプリンターでも出力しました。私たちのテストでは、9件すべてで想定どおりのページになり空白のページはなく、9件中8件がページ単位で Chrome と一致しました。
| マークアップ | 私たちのページ数 | Chromeのページ数 | 空白のページ(私たち) | 想定どおり | Chromeとの比較 |
|---|---|---|---|---|---|
<div style="page-break-after: always"> | 2 | 2 | 0 | はい | 同じ |
<div style="break-before: page"> | 2 | 2 | 0 | はい | 同じ |
<div style="break-after: page"> | 2 | 2 | 0 | はい | 同じ |
<h2 style="page-break-before: always"> | 2 | 2 | 0 | はい | 同じ |
| 改ページの後にMarkdownの見出し | 2 | 2 | 0 | はい | 同じ |
| 改ページのdivを2つ連続 | 2 | 3 | 0 | はい | 異なる |
| 先頭と末尾に改ページ | 1 | 1 | 0 | はい | 同じ |
---(Markdownの水平線) | 1 | 1 | 0 | はい | 同じ |
| 手動と自動の改ページの混在 | 4 | 4 | 0 | はい | 同じ |
見出しをテキストと離さない、その他の不自然な改ページ
手動の改ページは、わかっている場所を解決します。残りは書き出しツール次第で、典型的な失敗は、見出しだけがページの下に取り残され、本文が次のページから始まることです。ワープロではこの対策を「次の段落と分離しない」と呼びます。CSSで対応する指示は見出しへの break-after: avoid ですが、印刷時の avoid の値への対応はエンジンによって異なるので、頼る前に試してください。

私たちの書き出しツールは、マークアップなしでこれを行います。見出しは直後の最初の行と離れず、表の行と画像は1ページに収まるなら分割されません。それでもページの終わり方が気に入らなければ、見出しの直前に手動の改ページを入れてください。下の図は、改ページが入れる場所と入れない場所を示しています。

表には特に注意が必要です。表の印刷のガイドでは長い表と幅の広い表を扱っています。本番の文書の前にレイアウトを試すなら、MD→PDFで短く書き出すのが最速です。
改ページのよくある失敗
改ページが効かないとき、原因はほぼ必ず次の4つのどれかです。
- divの後に空行がない。 CommonMark では、
<div>で始まるHTMLブロックは次の空行まで続きます。すぐ下のテキストはHTMLに飲み込まれ、##や**がそのままの文字として書式なしで表示されます。 - divがリスト、引用、表の中にある。 文書の最上位に置けば、どの書き出しツールも独立したブロックとして認識します。
- 生のHTMLが無効になっている。 初期設定でHTMLを無効にし、タグを文字として表示するレンダラーもあります。設定でHTMLを有効にするか、ツールに独自の改ページの記法があればそれを使ってください。
- プレビューで判断している。 サニタイズするプレビューはインラインスタイルを取り除くことが多く、画面上では改ページがないように見えても、書き出しでは機能します。私たちのプレビューは破線の印を表示しますが、本当のテストは書き出したファイルです。
もう1つ役立つ習慣があります。手動の改ページは、新しく始めたい部分の見出しのすぐ上に置き、決して下には置かないことです。そうすれば見出しと最初の段落は常に一緒で、あとで改ページを消しても文書は正しい順番で読めます。
PDFを共有する前の簡単な確認
- すべてのページをスクロールして、空白のページがないか見ます。多くの場合、連続する2つの改ページか末尾の改ページが原因です。
- 各部分が、見出しを先頭にしてページの上から始まっているか確認します。
- 最後のページの単語を検索して、テキスト層が本物であることを確かめます。
- PDFを両面印刷し、章を右ページから始める必要があるなら、
break-before: rightに対応したツールを使ってください。私たちのツールはこれを単なる新しいページとして扱います。
出典
- CSS Fragmentation Module Level 3 — W3C
- break-before — MDN Web Docs
- page-break-after — MDN Web Docs
- CommonMark Spec 0.31.2, Thematic breaks — CommonMark, 2024
- Pandoc User’s Guide (raw_tex extension) — pandoc.org
- Markdown PDF (VS Code extension) — yzane, GitHub
よくある質問
MarkdownでPDF用の改ページを入れるには?
Markdownにはそのための記法がありません。前後に空行を入れて、HTMLの行 <div style="page-break-after: always"></div> を挿入してください。HTMLベースのPDF書き出しツールはそこで新しいページを始めます。
`---` で改ページになりますか?
いいえ。3つのハイフンは区切り線になり、水平線として表示されます。PDFでも線のままです。
page-break-after と break-after のどちらを使うべきですか?
どちらでもかまいません。break-after: page が現在のCSSの名前で、page-break-after: always は古い別名です。古いツールでは古いほうが少し安全で、私たちの書き出しツールは両方を読みます。
Pandoc で改ページを入れるには?
LaTeX経由のPDFなら、\newpage を1行で置きます。HTML経由でPDFを作る場合(HTMLエンジンを使うなど)は、LaTeXのコマンドはLaTeXとConTeXtのライターにしか渡されないので、代わりにCSSのdivを使ってください。
空白のページができたのはなぜですか?
たいていは改ページが2つ続いているか、改ページが末尾にあります。Chrome はどちらの場合も空白のページを印刷しますが、私たちの書き出しツールはそれを飛ばします。
すべてのH2を新しいページから始められますか?
独自のCSSを受け付けるツールなら、スタイルシートの h2 { break-before: page; } で実現できます。私たちのエディターでは、各H2の前にdivの行を置くか、見出しを <h2 style="page-break-before: always"> と書いてください。

