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.

Illustrazione: due pagine affiancate con una linea di interruzione tratteggiata e una freccia verso la nuova pagina

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.
Il vecchio nome della proprietà, che capiscono tutti gli esportatori HTML che conosciamo.
  • CSS moderno: <div style="break-after: page"></div>, oppure break-before: page sull'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'estensione raw_tex la 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.”
W3C, CSS Fragmentation Module Level 3, definizione del valore page (tradotto)

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.

Screenshot: un'interruzione di pagina nel nostro editor, il div a sinistra e una linea di interruzione tratteggiata nell'anteprima a destra
Screenshot: la riga di interruzione nel sorgente e il segno tratteggiato nell'anteprima.

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, recto e verso iniziano 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.
Screenshot: le due pagine del PDF esportato, un breve riepilogo a pagina uno e la tabella dell'appendice in cima a pagina due
Screenshot: il PDF esportato dall'esempio qui sopra. L'appendice inizia a pagina due.

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.

Interruzioni di pagina manuali nel nostro esportatore vs stampa in PDF da Chrome, secondo i nostri test (19 ott 2026)
MarkupLe nostre paginePagine in ChromePagine bianche (nostre)Risultato attesoRispetto a Chrome
<div style="page-break-after: always">220SìUguale
<div style="break-before: page">220SìUguale
<div style="break-after: page">220SìUguale
<h2 style="page-break-before: always">220SìUguale
Interruzione, poi un titolo Markdown220SìUguale
Due div di interruzione di fila230SìDiverso
Interruzione proprio all'inizio e proprio alla fine110SìUguale
--- (una riga Markdown)110SìUguale
Interruzioni di pagina manuali e automatiche insieme440SìUguale
L'unica differenza sono due interruzioni di fila: Chrome aggiunge una pagina bianca, il nostro esportatore no. Il PDF esportato, riconvertito in Markdown, ha restituito titoli e testo.

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.

Illustrazione: a sinistra un titolo da solo in fondo a una pagina, a destra lo stesso titolo in cima alla pagina successiva
Sinistra: un titolo orfano. Destra: il titolo passa alla pagina successiva insieme al suo testo.

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.

Illustrazione: una pagina con linee tratteggiate tra i blocchi, dove un taglio è permesso, e segni rossi dentro una tabella, dove non lo è
I tagli possono cadere tra i blocchi (blu), non a metà di una riga o di una riga di tabella (rosso).

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

  1. Scorri tutte le pagine cercando pagine bianche; di solito indicano due interruzioni di fila o un'interruzione alla fine.
  2. Verifica che ogni sezione inizi in cima alla sua pagina, con il titolo per primo.
  3. Cerca una parola dell'ultima pagina per confermare che il livello di testo sia reale.
  4. 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.

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">.