Markdown PDF 改ページ:好きな場所で新しいページを始める

執筆 pdftomd.tools チーム · 更新日 · 約8分で読めます

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

イラスト:破線の改ページ線と新しいページへの矢印がある、並んだ2枚のページ

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.
私たちが知る限り、どのHTMLベースの書き出しツールでも通じる古いプロパティ名。
  • 新しい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 は両方を説明しています。

“主ボックスの前/後で常にページ区切りを強制する。”
W3C, CSS Fragmentation Module Level 3、値 page の定義(翻訳)

私たちの書き出しツールでの手動の改ページの扱い

2026年10月19日まで、私たちの書き出しツールは手動の改ページを無視し、すべての改ページを自分で決めていました。今は、表示された文書の各要素について計算済みの break-before と break-after の値を読むので、style 属性でCSSを使った改ページは、古い書き方でも新しい書き方でも反映されます。ライブプレビューでは新しいページが始まる場所に「改ページ」というラベル付きの破線を引き、書き出し後には手動の改ページをいくつ反映したかを知らせます。

スクリーンショット:私たちのエディターでの改ページ。左にdiv、右のプレビューに破線の改ページ線
スクリーンショット:ソースの改ページの行と、プレビューの破線の印。

いくつかの規則で出力をきれいに保ちます。

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

テストの内容と、Chromeの印刷との比較

改ページの書き方を1つずつ試す小さな文書を9個書き、それぞれ実際の「PDFをダウンロード」ボタンで書き出して、pdfinfo と pdftotext でページを読み戻し、どのテキストがどのページに入ったかを調べました。基準として、同じHTMLを Chrome のPDFプリンターでも出力しました。私たちのテストでは、9件すべてで想定どおりのページになり空白のページはなく、9件中8件がページ単位で Chrome と一致しました。

私たちの書き出しツールと Chrome のPDF印刷での手動の改ページ(私たちのテストによる。2026年10月19日)
マークアップ私たちのページ数Chromeのページ数空白のページ(私たち)想定どおりChromeとの比較
<div style="page-break-after: always">220はい同じ
<div style="break-before: page">220はい同じ
<div style="break-after: page">220はい同じ
<h2 style="page-break-before: always">220はい同じ
改ページの後にMarkdownの見出し220はい同じ
改ページのdivを2つ連続230はい異なる
先頭と末尾に改ページ110はい同じ
---(Markdownの水平線)110はい同じ
手動と自動の改ページの混在440はい同じ
唯一の違いは連続する2つの改ページです。Chrome は空白のページを入れ、私たちの書き出しツールは入れません。書き出したPDFをMarkdownに戻すと、見出しとテキストが元どおりになりました。

見出しをテキストと離さない、その他の不自然な改ページ

手動の改ページは、わかっている場所を解決します。残りは書き出しツール次第で、典型的な失敗は、見出しだけがページの下に取り残され、本文が次のページから始まることです。ワープロではこの対策を「次の段落と分離しない」と呼びます。CSSで対応する指示は見出しへの break-after: avoid ですが、印刷時の avoid の値への対応はエンジンによって異なるので、頼る前に試してください。

イラスト:左はページの下に1つだけ残った見出し、右は同じ見出しが次のページの先頭にある
左:取り残された見出し。右:見出しが本文と一緒に次のページへ移っています。

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

イラスト:ブロックの間の改ページできる場所に破線、表の中の改ページできない場所に赤い印があるページ
改ページはブロックの間(青)に入れられ、行や表の行の中(赤)には入れられません。

表には特に注意が必要です。表の印刷のガイドでは長い表と幅の広い表を扱っています。本番の文書の前にレイアウトを試すなら、MD→PDFで短く書き出すのが最速です。

改ページのよくある失敗

改ページが効かないとき、原因はほぼ必ず次の4つのどれかです。

  • divの後に空行がない。 CommonMark では、<div> で始まるHTMLブロックは次の空行まで続きます。すぐ下のテキストはHTMLに飲み込まれ、## や ** がそのままの文字として書式なしで表示されます。
  • divがリスト、引用、表の中にある。 文書の最上位に置けば、どの書き出しツールも独立したブロックとして認識します。
  • 生のHTMLが無効になっている。 初期設定でHTMLを無効にし、タグを文字として表示するレンダラーもあります。設定でHTMLを有効にするか、ツールに独自の改ページの記法があればそれを使ってください。
  • プレビューで判断している。 サニタイズするプレビューはインラインスタイルを取り除くことが多く、画面上では改ページがないように見えても、書き出しでは機能します。私たちのプレビューは破線の印を表示しますが、本当のテストは書き出したファイルです。

もう1つ役立つ習慣があります。手動の改ページは、新しく始めたい部分の見出しのすぐ上に置き、決して下には置かないことです。そうすれば見出しと最初の段落は常に一緒で、あとで改ページを消しても文書は正しい順番で読めます。

PDFを共有する前の簡単な確認

  1. すべてのページをスクロールして、空白のページがないか見ます。多くの場合、連続する2つの改ページか末尾の改ページが原因です。
  2. 各部分が、見出しを先頭にしてページの上から始まっているか確認します。
  3. 最後のページの単語を検索して、テキスト層が本物であることを確かめます。
  4. PDFを両面印刷し、章を右ページから始める必要があるなら、break-before: right に対応したツールを使ってください。私たちのツールはこれを単なる新しいページとして扱います。

よくある質問

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"> と書いてください。