Guida alla Notazione di LilyPond: 1.8.2 Formattazione del testo

### 1.8.2 Formattazione del testo

Questa sezione presenta la formattazione del testo basilare e quella avanzata, usando la sintassi specifica della modalità `\markup`.

#### Introduzione al testo a margine

Un blocco `\markup` permette di comporre del testo con un’ampia sintassi chiamata “modalità markup”.

La sintassi di markup è simile alla solita sintassi di LilyPond: un’espressione `\markup` viene racchiusa tra parentesi graffe `{… }`. Una singola parola viene considerata un’espressione minima, e quindi non è necessario racchiuderla tra parentesi.

Diversamente dalle indicazioni testuali “tra virgolette”, i blocchi `\markup` possono contenere espressioni o comandi di markup annidati, inseriti col carattere di barra inversa `\`. Tali comandi hanno effetto solo sulla prima espressione che segue.

>     \relative {
>       a'1-\markup intenso
>       a2^\markup { poco \italic più forte  }
>       c e1
>       d2_\markup { \italic "string. assai" }
>       e
>       b1^\markup { \bold { molto \italic  agitato } }
>       c
>     }

Un blocco `\markup` può contenere anche stringhe di testo tra virgolette. Tali stringhe vengono trattate come espressioni testuali minime, e quindi qualsiasi comando di markup o carattere speciale (come `\` e `#`) apparirà alla lettera senza influenzare la formattazione del testo. Le stesse doppie virgolette possono essere stampate facendole precedere da una barra inversa.

>     \relative {
>       a'1^"\italic markup..."
>       a_\markup { \italic "... prints \"italic\" letters!" }
>       a a
>     }

Perché sia trattata come un’espressione distinta, una lista di parole deve essere racchiusa tra virgolette doppie o preceduta da un comando. Il modo in cui le espressioni musicali sono definite influenza il modo in cui saranno sistemate, centrate e allineate; nell’esempio seguente, la seconda espressione di `\markup` viene trattata nello stesso modo della prima:

>     \relative c'' {
>       c1^\markup { \center-column { a bbb c } }
>       c1^\markup { \center-column { a { bbb c } } }
>       c1^\markup { \center-column { a \line { bbb c } } }
>       c1^\markup { \center-column { a "bbb c" } }
>     }

I markup possono essere salvati in delle variabili, che possono poi essere attaccate direttamente alle note:

>     allegro = \markup { \bold \large Allegro }

>     {
>       d''8.^\allegro
>       d'16 d'4 r2
>     }

Una lista completa dei comandi specifici di `\markup` si trova in Comandi per markup.

#### Vedi anche

Guida alla notazione: Comandi per markup.

Frammenti: Text.

File installati: ‘`scm/markup.scm`’.

#### Problemi noti e avvertimenti

I messaggi di errore di sintassi relativi alla modalità markup possono essere poco chiari.

#### Scelta del tipo di carattere e della dimensione

La modalità markup permette di cambiare il tipo di carattere:

>     \relative {
>       d''1^\markup {
>         \bold { Più mosso }
>         \italic { non troppo \underline Vivo }
>       }
>       r2 r4 r8
>       d,_\markup { \italic quasi \smallCaps Tromba }
>       f1 d2 r
>     }

Si può modificare la dimensione del tipo di carattere, rispetto alla dimensione globale del rigo, in vari modi.

Si può impostare su una dimensione predefinita.

>     \relative b' {
>       b1_\markup { \huge Sinfonia }
>       b1^\markup { \teeny da }
>       b1-\markup { \normalsize camera }
>     }

oppure in modo proporzionale rispetto al valore precedente.

>     \relative b' {
>       b1_\markup { \larger Sinfonia }
>       b1^\markup { \smaller da }
>       b1-\markup { \magnify #0.6  camera }
>     }

Può essere aumentata o diminuita rispetto al valore impostato per la dimensione globale del rigo.

>     \relative b' {
>       b1_\markup { \fontsize #-2 Sinfonia }
>       b1^\markup { \fontsize #1 da }
>       b1-\markup { \fontsize #3 camera }
>     }

Si può impostare anche su una dimensione fissa (in punti), indipendentemente dalla dimensione globale del rigo.

>     \relative b' {
>       b1_\markup { \abs-fontsize #20 Sinfonia }
>       b1^\markup { \abs-fontsize #8 da }
>       b1-\markup { \abs-fontsize #14 camera }
>     }

Se il testo contiene degli spazi, è meglio racchiuderlo tutto tra virgolette, in modo che la dimensione di ciascun spazio sia adatta alla dimensione degli altri caratteri.

>     \markup \fontsize #6 \bold { Sinfonia da camera }
>     \markup \fontsize #6 \bold { "Sinfonia da camera" }

È possibile stampare il testo come pedice o apice. Per impostazione predefinita, questo appaiono in corpo più piccolo, ma si può usare anche un corpo normale:

>     \markup {
>       \column {
>         \line { 1 \super st movement }
>         \line { 1 \normal-size-super st movement
>           \sub { (part two) }  }
>       }
>     }

La modalità di markup fornisce un modo semplice per scegliere famiglie di caratteri diverse. Se non specificato altrimenti, viene scelto automaticamente il carattere tipografico con grazie (il tipo romano); nell’ultima linea dell’esempio seguente non c’è differenza tra la prima e la seconda parola.

>     \markup {
>       \column {
>         \line { Act \number 1 }
>         \line { \sans { Scene I. } }
>         \line { \typewriter { Verona. An open place. } }
>         \line { Enter \roman Valentine and Proteus. }
>       }
>     }

Alcune di queste famiglie di caratteri, usate per elementi specifici come i numeri o le dinamiche, non forniscono tutti i caratteri, come accennato in Nuove indicazioni dinamiche e Indicazioni di ripetizione manuali.

Se usati all’interno di una parola, alcuni comandi che cambiano il tipo di carattere o la formattazione potrebbero produrre uno spazio vuoto indesiderato. Si può facilmente risolvere concatenando insieme gli elementi testuali:

>     \markup {
>       \column {
>         \line {
>           \concat { 1 \super st }
>           movement
>         }
>         \line {
>           \concat { \dynamic p , }
>           \italic { con dolce espressione }
>         }
>       }
>     }

Una lista completa dei comandi per cambiare il tipo di carattere o per usare tipi di carattere personalizzati si trova in Font.

È possibile anche definire i propri gruppi di tipi di carattere, come è spiegato in Tipi di carattere.

#### Comandi predefiniti

`\teeny`, `\tiny`, `\small`, `\normalsize`, `\large`, `\huge`, `\smaller`, `\larger`.

#### Vedi anche

Guida alla notazione: Font, Nuove indicazioni dinamiche, Indicazioni di ripetizione manuali, Tipi di carattere.

File installati: ‘`scm/define-markup-commands.scm`’.

Frammenti: Text.

Guida al funzionamento interno: TextScript.

#### Problemi noti e avvertimenti

L’uso dei comandi di dimensionamento dei caratteri `\teeny`, `\tiny`, `\small`, `\normalsize`, `\large` e `\huge` produce una spaziatura della linea imprevedibile rispetto all’uso di `\fontsize`.

#### Allineamento del testo

Questa sottosezione spiega come posizionare il testo nella modalità markup. Gli oggetti markup possono anche essere spostati interamente tramite la sintassi descritta in Spostare gli oggetti.

Gli oggetti di markup possono essere allineati in vari modi. Per impostazione predefinita, l’indicazione testuale è allineata rispetto al suo margine sinistro: nell’esempio seguente, non c’è differenza tra il primo e il secondo markup.

>     \relative {
>       d''1-\markup { poco }
>       f
>       d-\markup { \left-align poco }
>       f
>       d-\markup { \center-align { poco } }
>       f
>       d-\markup { \right-align poco }
>     }

L’allineamento orizzontale può essere ritoccato usando un valore numerico:

>     \relative {
>       a'1-\markup { \halign #-1 poco }
>       e'
>       a,-\markup { \halign #0 poco }
>       e'
>       a,-\markup { \halign #0.5 poco }
>       e'
>       a,-\markup { \halign #2 poco }
>     }

Alcuni oggetti possono avere proprie procedure di allineamento, e dunque non sono influenzate da questi comandi. È possibile spostare tali oggetti di markup tutti insieme, come mostrato ad esempio in Indicazioni testuali.

L’allineamento verticale è un po’ più complesso. Come si è detto prima, gli oggetti di markup possono essere spostati tutti insieme; tuttavia è anche possibile spostare elementi specifici all’interno di un blocco markup. In questo caso l’elemento da spostare deve essere preceduto da un punto di riferimento, che può essere un altro elemento markup o un oggetto invisibile. L’esempio seguente illustra queste due possibilità; l’ultimo markup in questo esempio non ha un punto di riferimento e di conseguenza non si muove.

>     \relative {
>       d'2^\markup {
>         Acte I
>         \raise #2 { Scène 1 }
>       }
>       a'
>       g_\markup {
>         \null
>         \lower #4 \bold { Très modéré }
>       }
>       a
>       d,^\markup {
>         \raise #4 \italic { Une forêt. }
>       }
>       a'4 a g2 a
>     }

Alcuni comandi possono cambiare l’allineamento sia orizzontale che verticale degli oggetti testuali in modalità markup. Qualsiasi oggetto interessato da questi comandi deve essere preceduto da un punto di riferimento:

>     \relative {
>       d'2^\markup {
>         Acte I
>         \translate #'(-1 . 2) "Scène 1"
>       }
>       a'
>       g_\markup {
>         \null
>         \general-align #Y #3.2 \bold "Très modéré"
>       }
>       a
>       d,^\markup {
>         \null
>         \translate-scaled #'(-1 . 2) \teeny "Une forêt."
>       }
>       a'4 a g2 a
>     }

Un oggetto markup può includere varie linee di testo. Nell’esempio seguente, ogni elemento o espressione viene posizionato sulla sua linea, allineato a sinistra o centrato:

>     \markup {
>       \column {
>         a
>         "b c"
>         \line { d e f }
>       }
>       \hspace #10
>       \center-column {
>         a
>         "b c"
>         \line { d e f }
>       }
>     }

Analogalmente, una lista di elementi o espressioni può essere distesa per riempire l’intera larghezza orizzontale della linea (se c’è un solo elemento, verrà centrato sulla pagina). Queste espressioni possono a loro volta includere del testo multilinea o una qualsiasi altra espressione di markup:

>     \markup {
>       \fill-line {
>         \line { William S. Gilbert }
>         \center-column {
>           \huge \smallCaps "The Mikado"
>           or
>           \smallCaps "The Town of Titipu"
>         }
>         \line { Sir Arthur Sullivan }
>       }
>     }
>     \markup {
>       \fill-line { 1885 }
>     }

Indicazioni testuali lunghe possono andare a capo automaticamente in base alla larghezza della linea specificata. Possono essere allineate a sinistra o giustificate, come mostra l’esempio seguente.

>     \markup {
>       \column {
>         \line  \smallCaps { La vida breve }
>         \line \bold { Acto I }
>         \wordwrap \italic {
>           (La escena representa el corral de una casa de
>           gitanos en el Albaicín de Granada.  Al fondo una
>           puerta por la que se ve el negro interior de
>           una Fragua, iluminado por los rojos resplandores
>           del fuego.)
>         }
>         \hspace #0

>         \line \bold { Acto II }
>         \override #'(line-width . 50)
>         \justify \italic {
>           (Calle de Granada.  Fachada de la casa de Carmela
>           y su hermano Manuel con grandes ventanas abiertas
>           a través de las que se ve el patio
>           donde se celebra una alegre fiesta)
>         }
>       }
>     }

Una lista completa dei comandi di allineamento del testo si trova in Align.

#### Vedi anche

Manuale d’apprendimento: Spostare gli oggetti.

Guida alla notazione: Align, Indicazioni testuali.

File installati: ‘`scm/define-markup-commands.scm`’.

Frammenti: Text.

Guida al funzionamento interno: TextScript.

#### Notazione grafica nel blocco markup

Si possono aggiungere vari oggetti grafici a una partitura attraverso i comandi di markup.

Alcuni comandi di markup consentono di decorare gli elementi testuali con degli elementi grafici, come è illustrato nell’esempio seguente.

>     \markup \fill-line {
>       \center-column {
>         \circle Jack
>         \box "in the box"
>         \null
>         \line {
>           Erik Satie
>           \hspace #3
>           \bracket "1866 - 1925"
>         }
>         \null
>         \rounded-box \bold Prelude
>       }
>     }

Alcuni comandi possono richiedere un aumento del padding intorno al testo; per farlo si usano dei comandi di markup, descritti in modo esaustivo in Align.

>     \markup \fill-line {
>       \center-column {
>         \box "Charles Ives (1874 - 1954)"
>         \null
>         \box \pad-markup #2 "THE UNANSWERED QUESTION"
>         \box \pad-x #8 "A Cosmic Landscape"
>         \null
>       }
>     }
>     \markup \column {
>       \line {
>         \hspace #10
>         \box \pad-to-box #'(-5 . 20) #'(0 . 5)
>           \bold "Largo to Presto"
>       }
>       \pad-around #3
>           "String quartet keeps very even time,
>     Flute quartet keeps very uneven time."
>     }

Si possono produrre altri elementi grafici o simboli che non richiedono alcun testo. Come con qualsiasi espressione di markup, tali oggetti possono essere combinati.

>     \markup {
>       \combine
>         \draw-circle #4 #0.4 ##f
>         \filled-box #'(-4 . 4) #'(-0.5 . 0.5) #1
>       \hspace #5

>       \center-column {
>         \triangle ##t
>         \combine
>           \draw-line #'(0 . 4)
>           \arrow-head #Y #DOWN ##f
>       }
>     }

Le funzionalità grafiche avanzate comprendono la possibilità di includere file di immagini convertite nel formato Encapsulated PostScript (eps), oppure di inserire la grafica direttamente nel file di input, usando del codice PostScript nativo. In tal caso, può essere utile specificare esplicitamente la dimensione del disegno, come è mostrato sotto:

>     c'1^\markup {
>       \combine
>         \epsfile #X #10 "./context-example.eps"
>         \with-dimensions #'(0 . 6) #'(0 . 10)
>         \postscript "
>           -2 3 translate
>           2.7 2 scale
>           newpath
>           2 -1 moveto
>           4 -2 4 1 1 arct
>           4 2 3 3 1 arct
>           0 4 0 3 1 arct
>           0 0 1 -1 1 arct
>           closepath
>           stroke"
>       }
>     c'

Una lista completa dei comandi specifici per la grafica si trova in Graphic.

#### Vedi anche

Guida alla notazione: Align, Dimensioni, Note editoriali, Graphic.

File installati: ‘`scm/define-markup-commands.scm`’, ‘`scm/stencil.scm`’.

Frammenti: Text.

Guida al funzionamento interno: TextScript.

#### Notazione musicale nel blocco markup

Si possono aggiungere vari elementi della notazione musicale dentro un oggetto markup.

Per le note e le alterazioni esistono dei comandi markup appositi:

>     a'2 a'^\markup {
>       \note {4} #1
>       =
>       \note-by-number #1 #1 #1.5
>     }
>     b'1_\markup {
>       \natural \semiflat \flat
>       \sesquiflat \doubleflat
>     }
>     \glissando
>     a'1_\markup {
>       \natural \semisharp \sharp
>       \sesquisharp \doublesharp
>     }
>     \glissando b'

Anche altri oggetti della notazione possono essere stampati in modalità markup:

>     \relative {
>       g1 bes
>       ees\finger \markup \tied-lyric "4~1"
>       fis_\markup { \dynamic rf }
>       bes^\markup {
>         \beam #8 #0.1 #0.5
>       }
>       cis
>       d-\markup {
>         \markalphabet #8
>         \markletter #8
>       }
>     }

Più in generale, qualsiasi simbolo musicale disponibile può essere incluso separatamente in un oggetto markup, come è illustrato sotto. Una lista completa di questi simboli e dei loro nomi si trova in Il font Emmentaler.

>     \relative {
>       c''2
>       c'^\markup { \musicglyph "eight" }
>       c,4
>       c,8._\markup { \musicglyph "clefs.G_change" }
>       c16
>       c2^\markup { \musicglyph "timesig.neomensural94" }
>     }

Un altro modo per stampare glifi non testuali è descritto in Tipi di carattere in dettaglio. È utile per stampare parentesi di varie dimensioni.

La modalità markup supporta anche i diagrammi per strumenti specifici:

>     \relative {
>       c''1^\markup {
>         \fret-diagram-terse "x;x;o;2;3;2;"
>       }
>       c^\markup {
>         \harp-pedal "^-v|--ov^"
>       }
>       c
>       c^\markup {
>         \combine
>           \musicglyph "accordion.discant"
>           \combine
>     	\raise #0.5 \musicglyph "accordion.dot"
>     	\raise #1.5 \musicglyph "accordion.dot"
>       }
>     }

Questi diagrammi sono documentati in Instrument Specific Markup.

È possibile annidare perfino un’intera partitura in un oggetto markup:

>     \relative {
>       c'4 d^\markup {
>         \score {
>           \relative { c'4 d e f }
>         }
>       }
>       e f |
>       c d e f
>     }

Una lista completa dei comandi relativi alla notazione musicale si trova in Music.

#### Vedi anche

Guida alla notazione: Music, Il font Emmentaler, Tipi di carattere in dettaglio.

File installati: ‘`scm/define-markup-commands.scm`’, ‘`scm/fret-diagrams.scm`’, ‘`scm/harp-pedals.scm`’.

Frammenti: Text.

Guida al funzionamento interno: TextScript.

#### Problemi noti e avvertimenti

La spaziatura verticale di un blocco `\score` interno a un oggetto markup è regolata da `baseline-skip`. Le impostazioni in `\paper` vengono ignorate.

#### Testo formattato su più pagine

Sebbene gli oggetti di markup standard non possano avere interruzioni, una specifica sintassi permette di inserire linee di testo che possono estendersi per varie pagine:

>     \markuplist {
>       \justified-lines {
>         Un testo molto lungo di linee giustificate.
>         ...
>       }
>       \wordwrap-lines {
>         Un altro paragrafo molto lungo.
>         ...
>       }
>       ...
>     }

Questa sintassi accetta una lista di oggetti di markup, che possono essere

- il risultato di un comando \markuplist,
- una lista di markup,
- una lista di \markuplists.

Una lista completa dei comandi che si possono usare con \markuplist si trova in Comandi per una lista di markup.

#### Vedi anche

Guida alla notazione: Comandi per una lista di markup.

Estendere LilyPond: New markup list command definition.

File installati: ‘`scm/define-markup-commands.scm`’.

Frammenti: Text.

Guida al funzionamento interno: TextScript.

#### Comandi predefiniti

`\markuplist`.

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