Guida alla Notazione di LilyPond: 4.3.2 Interruzioni di pagina

### 4.3.2 Interruzioni di pagina

Questa sezione descrive i diversi metodi di interruzione di pagina e spiega come modificarli.

#### Interruzione di pagina manuale

L’interruzione di pagina predefinita può essere sovrascritta con i comandi `\pageBreak` o `\noPageBreak`. Questi comandi, analoghi a `\break` e `\noBreak`, devono essere inseriti dopo una stanghetta e forzano o proibiscono l’interruzione di pagina in quel punto. Ovviamente il comando `\pageBreak` forza anche un’interruzione di linea.

I comandi `\pageBreak` e `\noPageBreak` possono essere inseriti anche nel livello superiore, tra le partiture e i testi (nel blocco `markup`) di livello superiore.

In un brano, le interruzioni di pagina automatiche sono vietate per la musica compresa tra i comandi `\autoPageBreaksOff` e `\autoPageBreaksOn`. Le interruzioni di pagina manuali non sono interessate da questi comandi.

Esistono impostazioni analoghe a `ragged-right` e `ragged-last` che hanno lo stesso effetto sulla spaziatura verticale. Se `ragged-bottom` è impostato su `#t`, i sistemi non saranno giustificati verticalmente. Quando `ragged-last-bottom` è impostato su `#t` (valore predefinito), è permesso dello spazio vuoto in fondo all’ultima pagina (o in fondo all’ultima pagina di ciascun `\bookpart`). Vedi Variabili fisse della spaziatura verticale di `\paper`.

Le interruzioni di pagina sono calcolate dalla funzione `page-breaking`. LilyPond fornisce vari algoritmi per calcolare le interruzioni di pagina, tra cui `ly:optimal-breaking`, `ly:page-turn-breaking` e `ly:minimal-breaking`. Quello predefinito è `ly:optimal-breaking`, ma il valore può essere modificato nel blocco `\paper`:

>     \paper {
>       page-breaking = #ly:page-turn-breaking
>     }

Quando un libro ha molte partiture e pagine, il problema delle interruzioni di pagina potrebbe essere difficile da risolvere e richiedere lunghi tempi di elaborazione e molta memoria. Per semplificare il processo di interruzione delle pagine, si usano i blocchi `\bookpart` per dividere il libro in varie parti: in questo modo l’interruzione di pagina si verifica separatamente in ciascuna parte. Si possono anche usare algoritmi di interruzione di pagina diversi per le diverse parti del libro.

>     \bookpart {
>       \header {
>         subtitle = "Prefazione"
>       }
>       \paper {
>          %% In una parte contenente soprattutto testo,
>          %% ly:minimal-breaking potrebbe essere preferibile
>          page-breaking = #ly:minimal-breaking
>       }
>       \markup { … }
>       …
>     }
>     \bookpart {
>       %% In questa parte, contenente musica, si usa l'algoritmo di
>       %% interruzione di pagina ottimale.
>       \header {
>         subtitle = "Primo movimento"
>       }
>       \score { … }
>       …
>     }

#### Comandi predefiniti

`\pageBreak`, `\noPageBreak`, `\autoPageBreaksOn`, `\autoPageBreaksOff`.

#### Vedi anche

Guida alla notazione: Variabili di `\paper` per l’interruzione di pagina.

Frammenti: Spacing.

#### Problemi noti e avvertimenti

Il prefisso `\once` non funziona con i comandi `\autoPageBreaksOn` e `\autoPageBreaksOff`. Se l’interruzione di pagina automatica è disabilitata e poi viene abilitata per permettere un’interruzione di pagina, deve restare attiva per alcune battute (il numero preciso di battute dipende dalla partitura) prima di essere disattivata, altrimenti la possibilità di interrompere la pagina non verrà considerata.

#### Interruzione di pagina ottimale

La funzione `ly:optimal-breaking` è il metodo predefinito di LilyPond per determinare le interruzioni di pagina. Tenta di individuare un’interruzione di pagina che minimizzi la densità e l’allungamento, sia orizzontalmente che verticalmente. Diversamente da `ly:page-turn-breaking`, non prende in considerazione le voltate di pagina.

#### Vedi anche

Frammenti: Spacing.

#### Interruzione di pagina minimale

La funzione `ly:minimal-breaking` fa dei calcoli minimi per valutare l’interruzione di pagina: riempie una pagina col maggior numero possibile di sistemi prima di passare a quella successiva. Dunque potrebbe essere preferibile per le partiture con molte pagine, per le quali le altre funzioni di interruzione di pagina potrebbero essere troppo lente o richiedere troppa memoria, o con molto testo. Si abilita con:

>     \paper {
>       page-breaking = #ly:minimal-breaking
>     }

#### Vedi anche

Frammenti: Spacing.

#### Interruzione di pagina di una pagina

La funzione `ly:one-page-breaking` è un algoritmo di interruzione di pagina per casi speciali che regola automaticamente l’altezza della pagina per farci entrare la musica, in modo che stia tutto in una sola pagina. La variabile `paper-height` del blocco paper viene ignorata, ma le altre impostazioni funzionano normalmente. In particolare, la spaziatura tra l’ultimo sistema (o il testo markup di livello superiore) e il piè di pagina può essere personalizzata grazie a `last-bottom-spacing` nel blocco paper. La larghezza della pagina non viene modificata ma può essere impostata con `paper-width` nel blocco paper.

#### Problemi noti e avvertimenti

`ly:one-page-breaking` non è attualmente compatibile con `\bookpart`.

#### Interruzione di pagina su una linea

La funzione `ly:one-line-breaking` è un algoritmo di interruzione di pagina per uso speciale in quanto pone ogni brano su una sola pagina e una singola linea. Non appaiono né titoli né margini, ma viene mostrato solo il brano musicale.

La larghezza della pagina è regolata in modo che il brano più lungo stia su una sola linea. In particolare, le variabili `paper-width`, `line-width` e `indent` del blocco `\paper` vengono ignorate, sebbene `left-margin` e `right-margin` siano comunque considerate. L’altezza della pagina resta invariata.

#### Interruzione di pagina su una linea con altezza automatica

La funzione `ly:one-line-auto-height-breaking` funziona proprio come `ly:one-line-breaking` con la differenza che l’altezza della pagina viene modificata automaticamente per adattarsi all’altezza della musica. Più precisamente, la variabile `paper-height` del blocco `\paper` viene impostata in modo che abbracci l’altezza della partitura più alta e i margini superiore e inferiore (`top-margin` e `bottom-margin`).

Fare attenzione al fatto che l’impostazione `top-system-spacing` avrà effetto sulla posizione verticale della musica. Impostarla su `##f` in un blocco `\paper` per posizionare la musica tra i margini superiore e inferiore.

#### Voltata di pagina ottimale

È spesso necessario trovare una configurazione delle interruzioni di pagina in cui ci sia una pausa al termine di ogni due pagine. In questo modo il musicista può voltare la pagina senza perdere le note. La funzione `ly:page-turn-breaking` tenta di trovare un’interruzione di pagina che minimizzi densità e allungamento, ma con l’ulteriore restrizione che le voltate di pagina sono permesse solo in punti specifici.

Ci sono due passi da seguire per usare questa funzione. Prima occorre abilitarla nel blocco `\paper`, come è spiegato in Interruzioni di pagina. Poi bisogna indicare alla funzione dove sono permesse le interruzioni di pagina.

Ci sono due modi per fare il secondo passo. Si può specificare manualmente ogni potenziale voltata di pagina, inserendo `\allowPageTurn` nei punti adatti del file di input.

Oppure, se ciò è troppo noioso, si può aggiungere l’incisore `Page_turn_engraver` a un contesto Staff o Voice. L’incisore `Page_turn_engraver` analizzerà il contesto in cerca di sezioni senza note (non cerca pause, bensì l’assenza di note, in modo che la polifonia su un singolo rigo con pause in una delle parti non confonda `Page_turn_engraver`). Quando trova una sezione senza note abbastanza lunga, `Page_turn_engraver` inserirà il comando `\allowPageTurn` nella stanghetta finale di quella sezione, a meno che non ci sia una stanghetta ‘speciale’ (come una doppia stanghetta), nel qual caso il comando `\allowPageTurn` sarà inserito nella stanghetta finale “speciale” della sezione.

L’incisore `Page_turn_engraver` legge la proprietà di contesto `minimumPageTurnLength` per determinare quanto deve essere lunga una sezione senza note prima che una voltata di pagina sia considerata. Il valore predefinito di `minimumPageTurnLength` è `(ly:make-moment 1/1)`. Per disabilitare le voltate di pagina, impostarla su un valore “molto grande”.

>     \new Staff \with { \consists "Page_turn_engraver" }
>     {
>       a4 b c d |
>       R1 | % voltata di pagina permessa qui
>       a4 b c d |
>       \set Staff.minimumPageTurnLength = #(ly:make-moment 5/2)
>       R1 | % voltata di pagina non permessa qui
>       a4 b r2 |
>       R1*2 | % voltata di pagina permessa qui
>       a1
>     }

Quando si usano ripetizioni con finali alternativi, l’incisore `Page_turn_engraver` permetterà una voltata di pagina durante la ripetizione soltanto se c’è abbastanza tempo all’inizio e alla fine della ripetizione per voltare indietro la pagina. Se la ripetizione è troppo breve, si può usare `Page_turn_engraver` per disabilitare le voltate impostando un valore appropriato per la proprietà di contesto `minimumRepeatLengthForPageTurn`. In questo caso `Page_turn_engraver` consentirà le voltate soltanto nelle ripetizioni la cui durata sia maggiore del valore specificato.

I comandi per le voltate di pagina (`\pageTurn`, `\noPageTurn` e `\allowPageTurn`), possono essere usati anche nel livello superiore, nei blocchi markup di livello superiore e tra una partitura e l’altra.

#### Comandi predefiniti

`\pageTurn`, `\noPageTurn`, `\allowPageTurn`.

#### Vedi anche

Guida alla notazione: Variabili di `\paper` per l’interruzione di linea.

Frammenti: Spacing.

#### Problemi noti e avvertimenti

Usare soltanto un incisore `Page_turn_engraver` per partitura. Se ce n’è più d’uno, interferiranno uno con l’altro.

#### Vedi anche

Guida alla notazione: Spaziatura verticale.

Frammenti: Spacing.

#### LilyPond — Guida alla Notazione v2.22.2 (ramo stabile).