Interruzione di pagina Markdown PDF: inizia una nuova pagina esattamente dove vuoi
Di Team di pdftomd.tools · Aggiornato il · 8 min di lettura
Markdown non ha una sintassi per le interruzioni di pagina. Per un'interruzione di pagina nel PDF si inserisce invece una riga di HTML: <div style="page-break-after: always"></div>, con una riga vuota sopra e una sotto. Gli esportatori basati su HTML, compreso il nostro strumento per convertire Markdown in PDF, iniziano lì una nuova pagina. Con Pandoc e la sua strada via LaTeX, scrivi \newpage. Poi controlla che nel PDF non ci siano pagine bianche.

Perché Markdown non ha l'interruzione di pagina
Markdown è nato per il web, e una pagina web non ha pagine. Né la sintassi originale né CommonMark definiscono un'interruzione di pagina. La cosa più vicina è una riga di tre trattini ---, un'interruzione tematica: diventa una linea <hr>, non una nuova pagina. Molti la provano per prima come interruzione di pagina e poi si chiedono perché non succede niente.
Quello che Markdown consente è l'HTML grezzo. Quasi tutti gli esportatori convertono prima il Markdown in HTML e poi stampano quell'HTML come PDF; un'interruzione di pagina è quindi, in pratica, una regola CSS su un elemento HTML. L'eccezione è la strada predefinita di Pandoc, che passa da LaTeX e si aspetta invece un comando LaTeX.
Gli snippet per l'interruzione di pagina che funzionano
Scegli la riga adatta al tuo esportatore e mettila da sola sulla sua riga, con una riga vuota prima e dopo, così il parser Markdown la tratta come un blocco HTML:
Last paragraph of the first part.
<div style="page-break-after: always"></div>
## Part two
This heading starts a new page.- CSS moderno:
<div style="break-after: page"></div>, oppurebreak-before: pagesull'elemento che deve aprire la pagina. - Direttamente su un titolo:
<h2 style="page-break-before: always">Seconda parte</h2>, se non ti dispiace scrivere quel titolo in HTML. - Estensione Markdown PDF di VS Code: il suo README indica
<div class="page"/>; è il foglio di stile dell'estensione a produrre l'interruzione. È la risposta abituale per VS Code, e lo stile inline qui sopra funziona anche lì. - Pandoc con LaTeX (la strada predefinita verso il PDF): una riga con
\newpage. L'estensioneraw_texla passa invariata solo ai writer LaTeX e ConTeXt. Il comando newpage di Pandoc non è pensato per l'output HTML; se usi un motore HTML per il PDF, usa invece il div.
Perché due nomi? La specifica CSS sulla frammentazione ha sostituito page-break-before e page-break-after con break-before e break-after, mantenendo i vecchi nomi come alias: page-break-after: always si comporta come break-after: page. La forma vecchia è la scelta più sicura per gli strumenti datati; MDN le documenta entrambe.
“Forza sempre un'interruzione di pagina prima/dopo il box principale.”
Come il nostro esportatore gestisce un'interruzione manuale
Fino al 19 ott 2026, il nostro esportatore ignorava le interruzioni di pagina manuali e sceglieva da solo ogni taglio. Ora legge i valori calcolati break-before e break-after di ogni elemento del documento renderizzato, quindi un'interruzione di pagina CSS in un attributo style viene rispettata, sia con la scrittura vecchia sia con quella nuova. L'anteprima dal vivo disegna una linea tratteggiata con l'etichetta «Interruzione di pagina» dove inizia la nuova pagina, e dopo l'esportazione un avviso ti dice quante interruzioni manuali sono state applicate.

Alcune regole mantengono pulito il risultato:
- Un'interruzione proprio all'inizio o proprio alla fine del documento viene ignorata, quindi non avrai mai una prima o un'ultima pagina bianca.
- Due interruzioni di fila contano come una. Chrome stampa una pagina bianca in mezzo; diamo per scontato che raramente sia voluto.
- I valori
left,right,rectoeversoiniziano una nuova pagina. Non aggiungiamo una pagina bianca per arrivare su una pagina sinistra o destra. ---resta una linea orizzontale, come la definisce Markdown.- Le interruzioni automatiche continuano a valere dentro le sezioni lunghe e continuano a evitare di tagliare una riga, una riga di tabella o un'immagine.

Cosa abbiamo testato, a confronto con la stampa da Chrome
Abbiamo scritto 9 piccoli documenti, ognuno con un modo diverso di scrivere un'interruzione di pagina. Li abbiamo esportati tutti con il vero pulsante Scarica PDF e riletti con pdfinfo e pdftotext per vedere quale testo fosse finito su quale pagina. Come riferimento, abbiamo stampato lo stesso HTML anche con la stampante PDF di Chrome. Nei nostri test, tutti i 9 casi hanno dato le pagine attese senza pagine bianche, e 8 su 9 coincidevano con Chrome pagina per pagina.
| Markup | Le nostre pagine | Pagine in Chrome | Pagine bianche (nostre) | Risultato atteso | Rispetto a Chrome |
|---|---|---|---|---|---|
<div style="page-break-after: always"> | 2 | 2 | 0 | Sì | Uguale |
<div style="break-before: page"> | 2 | 2 | 0 | Sì | Uguale |
<div style="break-after: page"> | 2 | 2 | 0 | Sì | Uguale |
<h2 style="page-break-before: always"> | 2 | 2 | 0 | Sì | Uguale |
| Interruzione, poi un titolo Markdown | 2 | 2 | 0 | Sì | Uguale |
| Due div di interruzione di fila | 2 | 3 | 0 | Sì | Diverso |
| Interruzione proprio all'inizio e proprio alla fine | 1 | 1 | 0 | Sì | Uguale |
--- (una riga Markdown) | 1 | 1 | 0 | Sì | Uguale |
| Interruzioni di pagina manuali e automatiche insieme | 4 | 4 | 0 | Sì | Uguale |
Tenere un titolo con il suo testo, e altri tagli scomodi
Le interruzioni manuali risolvono i punti che conosci. Al resto pensa l'esportatore, e l'errore classico è un titolo da solo in fondo a una pagina mentre il suo testo inizia nella successiva. I programmi di videoscrittura chiamano la soluzione «mantieni con il successivo». In CSS la regola corrispondente è break-after: avoid sui titoli, ma il supporto dei valori avoid in stampa varia da un motore all'altro; provalo prima di fidarti.

Il nostro esportatore lo fa senza alcun markup: un titolo resta con la prima riga che lo segue, e righe di tabella e immagini non vengono spezzate se stanno in una pagina. Se comunque non ti piace dove finisce una pagina, metti un'interruzione di pagina manuale subito prima del titolo. L'immagine qui sotto mostra dove un taglio può cadere e dove no.

Le tabelle richiedono un'attenzione particolare. La nostra guida per stampare le tabelle tratta tabelle lunghe e larghe, e un'esportazione veloce con MD in PDF è il modo più rapido per provare un layout prima del documento vero.
Errori comuni con le interruzioni di pagina
Quando un'interruzione di pagina non fa nulla, la causa è quasi sempre uno di questi quattro punti:
- Manca la riga vuota dopo il div. In CommonMark, un blocco HTML che inizia con
<div>prosegue fino alla prossima riga vuota. Il testo subito sotto viene inglobato nell'HTML e appare senza formattazione, con##e**come caratteri letterali. - Il div è dentro un elenco, una citazione o una tabella. Mettilo al livello più alto del documento, dove qualsiasi esportatore lo vede come un blocco a sé.
- L'HTML grezzo è disattivato. Alcuni renderer disattivano l'HTML per impostazione predefinita e mostrano il tag come testo. Attiva l'HTML nelle impostazioni o usa la sintassi di interruzione propria dello strumento, se ne ha una.
- Giudicare dall'anteprima. Le anteprime che ripuliscono l'HTML spesso rimuovono gli stili inline, così l'interruzione sembra mancare sullo schermo ma all'esportazione funziona lo stesso. La nostra anteprima mostra il segno tratteggiato, ma la vera prova è il file esportato.
Un'altra abitudine aiuta: metti ogni interruzione manuale subito sopra il titolo della sezione che deve iniziare su una nuova pagina, mai sotto. Così titolo e primo paragrafo restano sempre insieme, e se più avanti cancelli l'interruzione, il documento si legge comunque nell'ordine giusto.
Controllo rapido prima di condividere il PDF
- Scorri tutte le pagine cercando pagine bianche; di solito indicano due interruzioni di fila o un'interruzione alla fine.
- Verifica che ogni sezione inizi in cima alla sua pagina, con il titolo per primo.
- Cerca una parola dell'ultima pagina per confermare che il livello di testo sia reale.
- Se il PDF viene stampato fronte-retro e i capitoli devono iniziare a destra, usa uno strumento che supporti
break-before: right; il nostro lo tratta come una semplice nuova pagina.
Fonti
- 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
Domande frequenti
Come inserisco un'interruzione di pagina in Markdown per il PDF?
Markdown non ha una sintassi per questo. Aggiungi la riga HTML <div style="page-break-after: always"></div> con righe vuote prima e dopo; gli esportatori PDF basati su HTML iniziano lì una nuova pagina.
`---` crea un'interruzione di pagina?
No. Tre trattini danno un'interruzione tematica, che appare come una linea orizzontale. Nel PDF resta una linea.
Meglio page-break-after o break-after?
Vanno bene entrambi. break-after: page è il nome CSS attuale, page-break-after: always il vecchio alias. Il vecchio è un po' più sicuro con gli strumenti datati; il nostro esportatore li legge tutti e due.
Come inserisco un'interruzione di pagina con Pandoc?
Per un PDF via LaTeX, metti \newpage su una riga a sé. Se produci il PDF via HTML (per esempio con un motore HTML), usa invece il div CSS, perché il comando LaTeX passa solo ai writer LaTeX e ConTeXt.
Perché ho ottenuto una pagina bianca?
Di solito ci sono due interruzioni di fila, oppure un'interruzione proprio alla fine. Chrome stampa una pagina bianca in entrambi i casi; il nostro esportatore la salta.
Ogni H2 può iniziare su una nuova pagina?
Con un foglio di stile, h2 { break-before: page; } se ne occupa negli strumenti che accettano CSS personalizzato. Nel nostro editor, metti la riga del div prima di ogni H2 oppure scrivi il titolo come <h2 style="page-break-before: always">.

