Guida alla Notazione di LilyPond: 3.2.2 Titoli intestazioni e piè di pagina personalizzati

### 3.2.2 Titoli intestazioni e piè di pagina personalizzati

#### Titoli personalizzati

Si possono usare i normali comandi `\markup` per personalizzare qualsiasi intestazione, piè di pagina e titolo di un blocco `\header`.

>     \score {
>       \header {
>         piece = \markup { \fontsize #4 \bold "PRAELUDIUM I" }
>         opus = \markup { \italic "BWV 846" }
>       }
>       { s1 }
>     }

#### Vedi anche

Guida alla notazione: Formattazione del testo.

#### Formattazione personalizzata dei titoli

I comandi `\markup` nel blocco `\header` sono utili solo per la formattazione del testo, ma non consentono un controllo preciso sul posizionamento dei titoli. Per personalizzare il posizionamento dei campi testuali, cambiare una o entrambe le seguenti variabili `\paper`:

- `bookTitleMarkup`
- `scoreTitleMarkup`

Il posizionamento dei titoli secondo i valori predefiniti di queste variabili `\markup` è mostrato negli esempi in Formattazione predefinita dei titoli delle parti e dei brani.

Le impostazioni predefinite di `scoreTitleMarkup`, definite in ‘`ly/titling-init.ly`’, sono:

>     scoreTitleMarkup = \markup { \column {
>       \on-the-fly \print-all-headers { \bookTitleMarkup \hspace #1 }
>       \fill-line {
>         \fromproperty #'header:piece
>         \fromproperty #'header:opus
>       }
>     }
>     }

Questo pone i campi testuali `piece` e `opus` alle estremità opposte della stessa riga:

>     \score {
>       \header {
>         piece = "PRAELUDIUM I"
>         opus = "BWV 846"
>       }
>       { s1 }
>     }

L’esempio seguente ridefinisce `scoreTitleMarkup` in modo che il campo testuale di `piece` sia centrato e in un tipo di carattere più grande e in grassetto.

>     \book {
>       \paper {
>         indent = 0\mm
>         scoreTitleMarkup = \markup {
>           \fill-line {
>             \null
>             \fontsize #4 \bold \fromproperty #'header:piece
>             \fromproperty #'header:opus
>           }
>         }
>       }
>       \header { tagline = ##f }
>       \score {
>         \header {
>           piece = "PRAELUDIUM I"
>           opus = "BWV 846"
>         }
>         { s1 }
>       }
>     }

I campi testuali che non sono normalmente attivi nei blocchi `\header` compresi in un blocco `\score` possono essere stampati nello spazio dedicato al titolo del brano aggiungendo `print-all-headers` nel blocco `\paper`. Lo svantaggio di questo metodo è che i campi testuali intesi esclusivamente per lo spazio del titolo della parte devono essere manualmente soppressi in ogni blocco `\score`. Vedi Come funzionano i titoli.

Per evitare ciò, è meglio mettere il campo testuale desiderato nella definizione di `scoreTitleMarkup`. Nell’esempio seguente il campo `composer` (solitamente associato a `bookTitleMarkup`) viene aggiunto a `scoreTitleMarkup`, facendo sì che ogni brano possa elencare un diverso compositore:

>     \book {
>       \paper {
>         indent = 0\mm
>         scoreTitleMarkup = \markup {
>           \fill-line {
>             \null
>             \fontsize #4 \bold \fromproperty #'header:piece
>             \fromproperty #'header:composer
>           }
>         }
>       }
>       \header { tagline = ##f }
>       \score {
>         \header {
>           piece = "MENUET"
>           composer = "Christian Petzold"
>         }
>         { s1 }
>       }
>       \score {
>         \header {
>           piece = "RONDEAU"
>           composer = "François Couperin"
>         }
>         { s1 }
>       }
>     }

È anche possibile creare un campo testuale personalizzato e fare riferimento ad esso nella definizione di markup.

>     \book {
>       \paper {
>         indent = 0\mm
>         scoreTitleMarkup = \markup {
>           \fill-line {
>             \null
>             \override #`(direction . ,UP)
>             \dir-column {
>               \center-align \fontsize #-1 \bold
>                 \fromproperty #'header:mycustomtext %% Campo definito dall'utente
>               \center-align \fontsize #4 \bold
>                 \fromproperty #'header:piece
>             }
>             \fromproperty #'header:opus
>           }
>         }
>       }
>       \header { tagline = ##f }
>       \score {
>         \header {
>           piece = "FUGA I"
>           mycustomtext = "A 4 VOCI" %% Campo definito dall'utente
>           opus = "BWV 846"
>         }
>         { s1 }
>       }
>     }

#### Vedi anche

Guida alla notazione: Come funzionano i titoli.

#### Formattazione personalizzata di intestazioni e piè di pagina

I comandi `\markup` nel blocco `\header` sono utili solo per la formattazione del testo, ma non consentono un controllo preciso sul posizionamento di intestazioni e piè di pagina. Per personalizzare il posizionamento dei campi testuali, usare una o entrambe le seguenti variabili `\paper`:

- `oddHeaderMarkup`
- `evenHeaderMarkup`
- `oddFooterMarkup`
- `evenFooterMarkup`

Il comando `\on-the-fly` – usato all’interno di un blocco `\markup` – permette di aggiungere del testo a intestazioni e piè di pagina definiti nel blocco `\paper`, solo se certe condizioni sono soddisfatte, tramite la seguente sintassi:

>     variabile = \markup {
>       …
>       \on-the-fly  \procedura  testo
>       …
>     }

La procedura viene chiamata ogni volta che viene elaborato il comando `\markup` nel quale essa si trova. La procedura verifica una precisa condizione e interpreta (ovvero stampa) l’argomento testo se e solo se la condizione è vera.

Sono disponibili varie procedure pronte per verificare varie condizioni:

> Nome della procedura | Condizione verificata
> --- | ---
> print-page-number-check-first | stampare questa pagina?
> create-page-number-stencil | print-page-numbers è vero?
> print-all-headers | print-all-headers è vero?
> first-page | prima pagina del libro?
> not-first-page | non la prima pagina del libro?
> (on-page nmbr) | numero pagina = nmbr?
> last-page | ultima pagina del libero?
> part-first-page | prima pagina della parte?
> not-part-first-page | non la prima pagine della parte?
> part-last-page | ultima pagina della parte?
> not-single-page | pagine della parte > 1?

L’esempio seguente centra i numeri di pagina in fondo a ogni pagina. Innanzitutto vengono annullate le impostazioni predefinite per `oddHeaderMarkup` e `evenHeaderMarkup` definendo ciascuno di essi come un markup null. Poi `oddFooterMarkup` viene ridefinito col numero di pagina centrato. Infine a `evenFooterMarkup` viene assegnata la stessa formattazione di `\oddFooterMarkup`:

>     \book {
>       \paper {
>         print-page-number = ##t
>         print-first-page-number = ##t
>         oddHeaderMarkup = \markup \null
>         evenHeaderMarkup = \markup \null
>         oddFooterMarkup = \markup {
>           \fill-line {
>             \on-the-fly \print-page-number-check-first
>             \fromproperty #'page:page-number-string
>           }
>         }
>         evenFooterMarkup = \oddFooterMarkup
>       }
>       \score {
>         \new Staff { s1 \break s1 \break s1 }
>       }
>     }

Varie condizioni `\on-the-fly` possono essere combinate insieme come se si utilizzasse l’operatore logico ‘AND’ e il testo apparirà solo se tutte le condizioni sono vere. Per esempio, queste due condizioni

>       \on-the-fly \first-page
>       \on-the-fly \last-page
>       { \markup … \fromproperty #'header: … }

verificano se l’output è una pagina singola.

#### Vedi anche

Guida alla notazione: Come funzionano i titoli, Formattazione predefinita dei titoli delle parti e dei brani.

File installati: ‘`../ly/titling-init.ly`’.

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