From: Federico Bruni Date: Wed, 9 Dec 2015 12:39:26 +0000 (+0100) Subject: Doc-it: add chapter 4 of Notation Reference X-Git-Tag: release/2.19.35-1~16 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=642803d71d0adae9acd962318b1a767f703f8222;hp=c3d635c31e077925895fb62eb3f0c207d1f23d34;p=lilypond.git Doc-it: add chapter 4 of Notation Reference --- diff --git a/Documentation/it/notation.tely b/Documentation/it/notation.tely index ac1bec5891..e96fe0d6ff 100644 --- a/Documentation/it/notation.tely +++ b/Documentation/it/notation.tely @@ -50,7 +50,7 @@ Copyright @copyright{} 1999--2015 degli autori. * Notazione musicale:: Notazione usata in quasi tutti i progetti. * Notazione specialistica:: Notazione usata solo in contesti specifici. * Input e output:: Informazioni generali su input e output. -* Spacing issues:: Impaginazione della musica sul foglio. @c Gestione dello spazio +* Gestione dello spazio:: Impaginazione della musica sul foglio. * Changing defaults:: Aggiustamento dell'output. @c Modifica delle impostazioni predefinite Appendici diff --git a/Documentation/it/notation/spacing.itely b/Documentation/it/notation/spacing.itely new file mode 100644 index 0000000000..c7de10a38e --- /dev/null +++ b/Documentation/it/notation/spacing.itely @@ -0,0 +1,3643 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- + +@ignore + Translation of GIT committish: 410fe169a1eeff173aed62d85b79686532b379ff + + When revising a translation, copy the HEAD committish of the + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. +@end ignore + +@c \version "2.19.22" + +@c Translators: Federico Bruni +@c Translation checkers: + +@ignore +GDP TODO list + +Negative numbers are allowed: +> Are you sure? The following works well +> \paper{ +> first-page-number = -2 +> } +> and prints page number -1 on the second page, for example. + + +Clarify +http://code.google.com/p/lilypond/issues/detail?id=68 + +@end ignore + + +@node Gestione dello spazio +@chapter Gestione dello spazio +@translationof Spacing issues + +La formattazione globale del foglio è determinata da tre fattori: la +formattazione della pagina, le interruzioni di linea e la spaziatura. +Ciascun fattore influenza l'altro. La scelta della spaziatura determina +la densità con cui vengono disposti i sistemi musicali, che a sua volta +influenza la scelta delle interruzioni di linea e quindi infine quante +pagine occupa un brano. + +Generalmente, questa procedura si svolge in quattro stadi. Inizialmente +vengono scelte le distanze flessibili (@q{springs}), in base alle +durate. Poi vengono tentate tutte le possibili combinazioni per le +interruzioni di linea e viene calcolato un punteggio @q{negativo} per +ciascuna di esse. Quindi viene calcolata l'altezza di ogni possibile +sistema. Infine viene scelta una combinazione di interruzioni di linea +e di interruzioni di pagina che assicuri che la spaziatura verticale e +quella orizzontale non siano né troppo compresse né troppo allungate. + +Due tipi di blocchi possono contenere le impostazioni di formattazione: +@code{\paper @{@dots{}@}} e @code{\layout @{@dots{}@}}. Il blocco +@code{\paper} contiene le impostazioni di formattazione della pagina +da applicare a tutte le partiture di un libro o di una parte, +come l'altezza del foglio o se stampare o meno i numeri di pagina, etc. +(vedi @ref{Page layout}). Il blocco @code{\layout} contiene le impostazioni +di formattazione della partitura, come il numero di sistemi da usare o lo +spazio tra i gruppi di righi, etc. (vedi @ref{Score layout}). + +@menu +* Formattazione della pagina:: +* Formattazione della partitura:: +* Interruzioni:: +* Spaziatura verticale:: +* Spaziatura orizzontale:: +* Riduzione del numero di pagine di una partitura:: +@end menu + + +@node Formattazione della pagina +@section Formattazione della pagina +@translationof Page layout + +Questa sezione tratta le opzioni di formattazione della pagina per il +blocco @code{\paper}. + +@menu +* Il blocco paper:: +* Formato carta e ridimensionamento automatico:: +* Variabili paper della spaziatura verticale fissa:: +* Variabili paper della spaziatura verticale flessibile:: +* Variabili paper della spaziatura orizzontale:: +* Altre variabili di paper:: +@end menu + + +@node Il blocco paper +@subsection Il blocco @code{@bs{}paper} +@translationof The paper block + +I blocchi @code{\paper} possono essere posizionati in tre punti diversi, in +modo da formare una gerarchia discendente di blocchi @code{\paper}: + +@itemize + +@item +All'inizio del file di input, prima di tutti i blocchi @code{\book}, +@code{\bookpart} e @code{\score}. + +@item +Dentro un blocco @code{\book} ma fuori da tutti i blocchi +@code{\bookpart} e @code{\score} in esso racchiusi. + +@item +Dentro un blocco @code{\bookpart} ma fuori da tutti i blocchi +@code{\score} in esso racchiusi. + +@end itemize + +Non è possibile inserire un blocco @code{\paper} in un blocco @code{\score}. + +I valori dei campi vengono filtrati dall'alto verso il basso attraverso +questa gerarchia: i valori impostati nei livelli più alti della +gerarchia persistono finché non sono sovrascritti da un valore +impostato in un livello più basso. + +Vari blocchi @code{\paper} possono apparire in ognuno di questi livelli, per +esempio come parti di vari file inclusi con @code{\include}. In questo caso, +i campi di ciascun livello vengono combinati e i valori riscontrati per +ultimi avranno la precedenza in caso di campi duplicati. + +Le impostazioni che possono apparire in un blocco @code{\paper} comprendono: + +@itemize + +@item +la funzione scheme @code{set-paper-size}, + +@item +le variabili @code{\paper} per personalizzare la formattazione della pagina e + +@item +le definizioni di markup usate per personalizzare la formattazione di intestazioni, +piè di pagina e titoli. + +@end itemize + +La funzione @code{set-paper-size} è trattata nella prossima +sezione, @ref{Paper size and automatic scaling}. Le variabili +@code{\paper} che si occupano della formattazione della pagina sono +trattate in sezioni successive. Le definizioni di markup relative a +intestazioni, piè di pagina e titoli sono trattate in +@ref{Custom titles headers and footers}. + +La maggior parte delle variabili @code{\paper} funzionano soltanto in +un blocco @code{\paper}. Le poche che funzionano anche in un blocco +@code{\layout} sono elencate in +@ref{The layout block,,Il blocco @code{@bs{}layout}}. + +Se non indicato diversamente, tutte le variabili @code{\paper} che +corrispondono a distanze sulla pagina sono misurate in millimetri, +a meno che un'unità di misura diversa non sia specificata dall'utente. +Per esempio, la seguente dichiarazione imposta @code{top-margin} su +dieci millimetri: + +@example +\paper @{ + top-margin = 10 +@} +@end example + +Per impostarla su @code{0.5} pollici, usare il suffisso di +unità @code{\in} (inch = pollice): + +@example +\paper @{ + top-margin = 0.5\in +@} +@end example + +I suffissi di unità disponibili sono @code{\mm}, @code{\cm}, +@code{\in} e @code{\pt}. Queste unità sono semplici valori utili +per convertire dai millimetri e sono definite in +@file{ly/paper-defaults-init.ly}. Solo per chiarezza, quando +si usano i millimetri, di solito si usa il suffisso @code{\mm}, +anche se non è tecnicamente necessario. + +È anche possibile definire i valori di @code{\paper} con Scheme. +L'equivalente Scheme dell'esempio precedente è: + +@example +\paper @{ + #(define top-margin (* 0.5 in)) +@} +@end example + +@seealso +Guida alla notazione: +@ref{Paper size and automatic scaling}, +@ref{Custom titles headers and footers}, +@ref{The layout block,,Il blocco @code{@bs{}layout}}. + +File installati: +@file{ly/paper-defaults-init.ly}. + + +@node Formato carta e ridimensionamento automatico +@subsection Formato carta e ridimensionamento automatico +@translationof Paper size and automatic scaling + +@cindex formato carta +@cindex formato pagina +@cindex carta, formato +@cindex pagina, formato + +@funindex \paper + +@menu +* Impostare il formato carta:: +* Ridimensionamento automatico al formato carta:: +@end menu + + +@node Impostare il formato carta +@unnumberedsubsubsec Impostare il formato carta +@translationof Setting the paper size + +@q{A4} è il valore predefinito quando non viene impostato esplicitamente +alcun formato carta. Esistono due funzioni che permettono di cambiare +formato: + +@table @code +@item set-default-paper-size + +@example +#(set-default-paper-size "quarto") +@end example + +che deve sempre trovarsi nel livello superiore, e + +@item set-paper-size + +@example +\paper @{ + #(set-paper-size "tabloid") +@} +@end example + +che deve sempre trovarsi in un blocco @code{\paper}. +@end table + +La funzione @code{set-default-paper-size}, se usata nel livello superiore, +deve precedere qualsiasi blocco @code{\paper}. +@code{set-default-paper-size} imposta il formato di tutte le pagine, +mentre @code{set-paper-size} imposta il formato soltanto di quelle +pagine a cui è applicato il blocco @code{\paper}. Per esempio, se il +blocco @code{\paper} si trova all'inizio del file, applicherà il formato +a tutte le pagine. Se il blocco @code{\paper} si trova dentro un blocco +@code{\book}, il formato verrà applicato a quel libro soltanto. + +Quando si usa la funzione @code{set-paper-size}, questa deve essere +posta @emph{prima} di qualsiasi altra funzione usata nello stesso blocco +@code{\paper}. Vedi @ref{Automatic scaling to paper size}. + +I formati carta sono definiti in @file{scm/paper.scm}, e sebbene sia +possibile aggiungere formati personalizzati in questo file, tali aggiunte +verrebbero sovrascritte da successivi aggiornamenti del software. I formati +disponibili sono elencati in @ref{Predefined paper sizes}. + +@c An appendix entry exists for paper sizes but is not auto-generated + +È tuttavia possibile aggiungere un formato personalizzato nel file di +input per poi utilizzarlo con @code{set-default-paper-size} o +@code{set-paper-size}: + +@example +#(set! paper-alist (cons '("mio formato" . (cons (* 15 in) (* 3 in))) paper-alist)) + +\paper @{ + #(set-paper-size "mio formato") +@} +@end example + +Si può usare qualsiasi unità di misura: @code{in} (inch, o pollici), @code{cm} +(centimetri) e @code{mm} (millimetri). + +@cindex formato carta, orientamento +@cindex pagina, orientamento +@cindex formato carta, orizzontale (landscape) + +Aggiungendo il simbolo @code{'landscape} alla funzione del formato, le pagine +vengono ruotate di 90 gradi e le linee occupano il maggior spazio a disposizione. + +@example +#(set-default-paper-size "a6" 'landscape) +@end example + +Appendendo @samp{landscape} (orizzontale) al nome del formato, è possibile +scambiare le dimensioni della carta @emph{senza} ruotare la stampa +(come quando si stampa in formato cartolina o si creano dei file +grafici da includere invece di un documento indipendente): + +@example +#(set-default-paper-size "a6landscape") +@end example + +Quando il formato termina con un esplicito @samp{landscape} (orizzontale) o +@samp{portrait} (verticale), la presenza di un simbolo @code{'landscape} +influisce @emph{solo} sull'orientamento della stampa, non sul formato +usato per la formattazione. + +@seealso +Guida alla notazione: +@ref{Automatic scaling to paper size}, +@ref{Predefined paper sizes}. + +File installati: +@file{scm/paper.scm}. + + +@node Ridimensionamento automatico al formato carta +@unnumberedsubsubsec Ridimensionamento automatico al formato carta +@translationof Automatic scaling to paper size + +Se il formato viene cambiato con una delle funzioni scheme +(@code{set-default-paper-size} o @code{set-paper-size}), i +valori di diverse variabili @code{\paper} sono automaticamente +ricalcolati in base alla nuova dimensione. Per aggirare il ridimensionamento +automatico di una certa variabile, impostare la variabile dopo aver +impostato il formato. Fare attenzione al fatto che il ridimensionamento +automatico non viene attivato se si impostano le variabili +@code{paper-height} o @code{paper-width}, anche se +@code{paper-width} può influenzare altri valori (ma questo +è un argomento diverso dal ridimensionamento ed è trattato in seguito). Le +funzioni @code{set-default-paper-size} e @code{set-paper-size} sono +descritte in @ref{Setting the paper size}. + +Le dimensioni verticali interessate dal ridimensionamento automatico +sono @code{top-margin} e @code{bottom-margin} (vedi +@ref{Fixed vertical spacing paper variables,,Variabili fisse della spaziatura verticale di @code{@bs{}paper}}). +Le dimensioni orizzontali interessate dal ridimensionamento automatico +sono @code{left-margin}, @code{right-margin}, @code{inner-margin}, +@code{outer-margin}, @code{binding-offset}, @code{indent} e @code{short-indent} (vedi +@ref{Horizontal spacing paper variables,,Variabili della spaziatura orizzontale di @code{@bs{}paper}}). + +I valori predefiniti di queste dimensioni sono impostati in +@file{ly/paper-defaults-init.ly} e salvati in variabili interne +chiamate @code{top-margin-default}, @code{bottom-margin-default}, etc. +Questi valori si riferiscono al formato predefinito @code{a4}. +Per riferimento, nel formato @code{a4} il valore di @code{paper-height} è +@code{297\mm} e quello di @code{paper-width} è @code{210\mm}. + +@seealso +Guida alla notazione: +@ref{Fixed vertical spacing paper variables,,Variabili fisse della spaziatura verticale di @code{@bs{}paper}}, +@ref{Horizontal spacing paper variables,,Variabili della spaziatura orizzontale di @code{@bs{}paper}}. + +File installati: +@file{ly/paper-defaults-init.ly}, +@file{scm/paper.scm}. + + +@node Variabili paper della spaziatura verticale fissa +@subsection Variabili @code{@bs{}paper} della spaziatura verticale fissa +@translationof Fixed vertical spacing paper variables + +@warning{Alcune dimensioni definite nel blocco @code{@bs{}paper} sono +ridimensionate automaticamente in base al formato carta, portando a +possibili risultati imprevisti. Vedi +@ref{Automatic scaling to paper size}.} + +I valori predefiniti (prima del ridimensionamento) sono definiti in +@file{ly/paper-defaults-init.ly}. + +@table @code +@item paper-height +@funindex paper-height + +L'altezza della pagina (valore predefinito: non impostata). Il ridimensionamento +automatico di alcune dimensioni verticali non è influenzato da questa. + +@item top-margin +@funindex top-margin + +Il margine tra il punto più alto della pagina e il punto più alto +dell'area di stampa. Se il formato viene modificato, il valore +predefinito di questa dimensione viene ridimensionato di conseguenza. + +@item bottom-margin +@funindex bottom-margin + +Il margine tra il punto più basso dell'area di stampa e il punto +più basso della pagina. Se il formato viene modificato, il valore +predefinito di questa dimensione viene ridimensionato di conseguenza. + +@item ragged-bottom +@funindex ragged-bottom + +Se impostato su vero, i sistemi avranno la loro naturale spaziatura. +Non saranno giustificati, ovvero non saranno né compressi né allungati +verticalmente per stare nella pagina. + +@item ragged-last-bottom +@funindex ragged-last-bottom + +Se impostato su falso, l'ultima pagina, e l'ultima pagina +di ogni sezione creata con un blocco @code{\bookpart}, saranno +giustificate verticalmente come nelle pagine precedenti. + +@end table + +@seealso +Guida alla notazione: +@ref{Automatic scaling to paper size}. + +File installati: +@file{ly/paper-defaults-init.ly}. + +Frammenti: +@rlsr{Spacing}. + +@knownissues +I titoli (definiti nel blocco @code{\header}) sono considerati +un sistema, dunque @code{ragged-bottom} e @code{ragged-last-bottom} +aggiungeranno spazio tra i titoli e il primo sistema della partitura. + +Formati carta definiti esplicitamente sovrascriveranno qualsiasi +impostazione di margine superiore o inferiore definito dall'utente. + + +@node Variabili paper della spaziatura verticale flessibile +@subsection Variabili @code{@bs{}paper} della spaziatura verticale flessibile +@translationof Flexible vertical spacing paper variables + +Nella maggior parte dei casi è preferibile che le distanze verticali +tra certi elementi (come margini, titoli, sistemi e partiture +separate) siano flessibili, così che siano ben compresse o allungate +a seconda della situazione. Sono disponibili diverse variabili +@code{\paper} (elencate sotto) per regolare il comportamento di +allungamento di queste dimensioni. + +Nota bene che le variabili @code{\paper} trattate in questa sezione +non regolano la spaziatura dei righi dei singoli sistemi. +La spaziatura interna ai sistemi è controllata dalle proprietà +del grob, solitamente inserite in un blocco @code{\score} o +@code{\layout} e non in un blocco @code{\paper}. Vedi +@ref{Flexible vertical spacing within systems}. + +@menu +* Struttura delle liste associative flessibili della spaziatura verticale:: +* Elenco delle variabili paper flessibili della spaziatura verticale:: +@end menu + + +@node Struttura delle liste associative flessibili della spaziatura verticale +@unnumberedsubsubsec Struttura delle liste associative flessibili della spaziatura verticale +@translationof Structure of flexible vertical spacing alists + +Ognuna delle variabili @code{\paper} flessibili della spaziatura verticale +è una lista associativa (alist) composta da quattro @emph{elementi}: + +@itemize + +@item +@code{basic-distance} -- la distanza verticale, misurata in +spazi rigo, tra i @emph{punti di riferimento} dei due +elementi, quando non si verificano collisioni e non sono +attivi allungamenti o compressioni. Il punto di riferimento +di un markup (un titolo o un markup di un livello superiore) +è il suo punto più alto, mentre quello di un sistema è il +centro verticale del più vicino @code{StaffSymbol}, anche se +una linea diversa da un rigo (come un contesto @code{Lyrics}) si +trova nel mezzo. Valori di @code{basic-distance} inferiori a quelli +di @code{padding} o @code{minimum-distance} non hanno senso, dato che +la distanza risultante non sarà mai inferiore a quella definita per +@code{padding} o @code{minimum-distance}. + +@item +@code{minimum-distance} -- la minima distanza verticale consentita, +misurata in spazi rigo, tra i punti di riferimento dei due +elementi, quando la compressione è attiva. Valori di +@code{minimum-distance} inferiori a quelli di @code{padding} non +hanno senso, perché la distanza risultante non sarà mai inferiore +a quella definita per @code{padding.} + +@c TODO: explain skylines somewhere and xref to it from here. + +@item +@code{padding} -- la quantità minima di spazio verticale libero +tra i profili (@emph{skyline}) dei due elementi, misurata in +spazi rigo. + +@item +@code{stretchability} -- una misura, priva di unità di misura, +della relativa propensione della dimensione a allungarsi. Se +pari a zero, la distanza non si allungherà (a meno che non ci +siano delle collisioni). Se positiva, il significato del valore +di @code{stretchability} di una certa dimensione sta nella sua +relazione con i valori di @code{stretchability} delle altre +dimensioni. Per esempio, se una dimensione ha un valore di +@code{stretchability} doppio rispetto a un'altra, si allungherà +il doppio. +I valori devono essere non negativi e finiti. Il valore @code{+inf.0} causa un +errore di programmazione e viene ingorato, ma si può usare @code{1.0e7} per +ottenere un'elasticità allungabile quasi all'infinito. Se non impostata, il +valore predefinito equivale a quello di @code{basic-distance}. Nota che la +propensione della dimensione a @emph{comprimersi} non può essere impostata +direttamente dall'utente ed è uguale a +(@code{basic-distance}@tie{}@minus{}@tie{}@code{minimum-distance}). + +@end itemize + +Se in una pagina lo spazio verticale non è giustificato (ovvero con +@code{ragged-bottom} impostato su vero) la distanza risultante è +data dal valore più grande assegnato a una di queste tre proprietà: + +@itemize + +@item +@code{basic-distance}, + +@item +@code{minimum-distance} e + +@item +@code{padding} con l'aggiunta della più piccola distanza necessaria a +eliminare collisioni. + +@end itemize + +In caso di partiture con molte pagine in cui l'ultima pagina non è +giustificata (ovvero con @code{ragged-last-bottom} impostato su vero), +l'ultima pagina usa la stessa spaziatura della pagina precedente, +purché ci sia abbastanza spazio. + +I metodi specifici per modificare le liste associative (alist) sono +trattati in @ref{Modifying alists}. L'esempio seguente illustra i +due modi in cui queste possono essere modificate. La prima dichiarazione +aggiorna un elemento-valore individualmente, mentre la seconda ridefinisce +completamente la variabile: + +@example +\paper @{ + system-system-spacing.basic-distance = #8 + score-system-spacing = + #'((basic-distance . 12) + (minimum-distance . 6) + (padding . 1) + (stretchability . 12)) +@} +@end example + + +@node Elenco delle variabili paper flessibili della spaziatura verticale +@unnumberedsubsubsec Elenco delle variabili @code{@bs{}paper} flessibili della spaziatura verticale +@translationof List of flexible vertical spacing paper variables + +I nomi di queste variabili hanno il formato +@code{@var{superiore}-@var{inferiore}-spacing}, dove @code{@var{superiore}} +e @code{@var{inferiore}} indicano gli elementi di cui stabilire la +distanza. Ogni distanza viene misurata tra i punti di riferimento +dei due elementi (vedi la descrizione precedente della struttura della +lista associativa). Nei nomi di queste variabili il termine @q{@code{markup}} +si riferisce sia ai @emph{titoli} (@code{bookTitleMarkup} o +@code{scoreTitleMarkup}) sia ai @emph{markup di livello superiore} (vedi +@ref{File structure}). Tutte le distanze sono misurate in spazi rigo. + +Le impostazioni predefinite sono definite in @file{ly/paper-defaults-init.ly}. + +@c TODO: Where do headers/footers fit in? -mp + +@table @code +@item markup-system-spacing +@funindex markup-system-spacing + +la distanza tra il testo (titolo o markup di livello superiore) e il sistema +che lo segue. + +@item score-markup-spacing +@funindex score-markup-spacing + +la distanza tra l'ultimo sistema di un brano e il testo (titolo o +markup di livello superiore) che lo segue. + +@item score-system-spacing +@funindex score-system-spacing + +la distanza tra l'ultimo sistema di un brano e il primo sistema +del brano successivo, quando non c'è alcun testo (titolo o +markup di livello superiore) tra di loro. + +@item system-system-spacing +@funindex system-system-spacing + +la distanza tra due sistemi di uno stesso brano. + +@item markup-markup-spacing +@funindex markup-markup-spacing + +la distanza tra due testi (titoli o markup di livello superiore). + +@item last-bottom-spacing +@funindex last-bottom-spacing + +la distanza tra l'ultimo sistema o l'ultimo markup di livello superiore di +una pagina e la fine dello spazio stampabile (ovvero la parte superiore +del margine inferiore). + +@item top-system-spacing +@funindex top-system-spacing + +la distanza tra l'inizio dello spazio stampabile (ovvero la parte +inferiore del margine superiore) e il primo sistema di una pagina, quando +non c'è alcun testo (titolo o markup di livello superiore) tra di loro. + +@item top-markup-spacing +@funindex top-markup-spacing + +la distanza tra l'inizio dello spazio stampabile (ovvero la parte +inferiore del margine superiore) e il primo testo (titolo o markup di +livello superiore) di una pagina, quando non c'è alcun sistema tra i due. +@end table + +@seealso +Guida alla notazione: +@ref{Flexible vertical spacing within systems}. + +File installati: +@file{ly/paper-defaults-init.ly}. + +Frammenti: +@rlsr{Spacing}. + + +@node Variabili paper della spaziatura orizzontale +@subsection Variabili @code{@bs{}paper} della spaziatura orizzontale +@translationof Horizontal spacing paper variables + +@warning{Alcune dimensioni in @code{@bs{}paper} sono ridimensionate +automaticamente in base al formato carta, producendo talvolta un +risultato inatteso. Vedi @ref{Automatic scaling to paper size}.} + +@menu +* Variabili paper per larghezze e margini:: +* Variabili paper per la modalità due pagine per foglio:: +* Variabili paper per spostamenti e indentazioni:: +@end menu + + +@node Variabili paper per larghezze e margini +@unnumberedsubsubsec Variabili @code{@bs{}paper} per larghezze e margini +@translationof paper variables for widths and margins + +I valori predefiniti (prima del ridimensionamento) non elencati qui si +trovano in @file{ly/paper-defaults-init.ly}. + +@table @code + +@item paper-width +@funindex paper-width + +Larghezza della pagina (non impostata inizialmente). @code{paper-width}, +pur non avendo effetto sul ridimensionamento automatico di alcune dimensioni +orizzontali, influenza la variabile @code{line-width}. Se sono impostate +sia @code{paper-width} che @code{line-width}, saranno modificate anche +@code{left-margin} e @code{right-margin}. Vedi anche @code{check-consistency}. + +@item line-width +@funindex line-width + +Se specificata in un blocco @code{\paper} definisce la lunghezza orizzontale +disponibile per i righi musicali nei sistemi non indentati. Se non specificata, +la larghezza della linea (@code{line-width}) del foglio è determinata dalla sottrazione +@code{(paper-width@tie{}@minus{}@tie{}left-margin@tie{}@minus{}@tie{}right-margin)}. +Se @code{line-width} è specificata nel blocco @code{\paper} e entrambi i margini, +@code{left-margin} e @code{right-margin}, non lo sono, questi saranno aggiornati +in modo da centrare i sistemi sulla pagina automaticamente. +Vedi anche @code{check-consistency}. + +Le variabili @code{line-width} per i singoli brani possono essere specificate +nel blocco @code{\layout} di ogni brano, ovvero dentro un blocco @code{\score}. +Questi valori regolano la larghezza delle linee prodotte brano per brano. Se +@code{line-width} non viene specificata per un brano, il suo valore predefinito +coincide con la larghezza della linea del foglio, ovvero col valore della +variabile @code{line-width} del blocco @code{\paper}. Impostando +@code{line-width} per un brano in particolare, ovvero all'interno di un blocco +@code{\score}, i margini del foglio non vengono modificati. Le linee del rigo, +la cui lunghezza è determinata dalla variabile @code{line-width} del brano, sono +allineate a sinistra all'interno dello spazio definito dalla variabile +@code{line-width} del foglio. Se le variabili @code{line-width} del brano e del +foglio sono uguali, le linee del rigo si estenderanno esattamente dal margine +sinistro al margine destro, ma se quella del brano è maggiore di quella del +foglio le linee del rigo andranno oltre il margine destro. + +@item left-margin +@funindex left-margin + +Margine tra il bordo sinistro della pagina e l'inizio delle linee +del rigo nei sistemi non indentati. Se il formato è modificato, il valore +predefinito di questa dimensione viene ridimensionato proporzionalmente. Se +@code{left-margin} non è impostato, e sono impostati sia @code{line-width} che +@code{right-margin}, allora @code{left-margin} equivale alla differenza +@code{(paper-width@tie{}@minus{}@tie{}line-width@tie{}@minus{}@tie{}right-margin)}. +Se è impostata soltanto @code{line-width}, entrambi i margini sono impostati su +@code{((paper-width@tie{}@minus{}@tie{}line-width)@tie{}/@tie{}2)}, +e di conseguenza i sistemi sono centrati sulla pagina. Vedi anche +@code{check-consistency}. + +@item right-margin +@funindex right-margin + +Margine tra il bordo destro della pagina e la fine delle linee +del rigo in sistemi giustificati. Se il formato è modificato, il valore +predefinito di questa dimensione viene ridimensionato proporzionalmente. Se +@code{right-margin} non è impostato, e sono impostati sia @code{line-width} che +@code{left-margin}, allora @code{right-margin} equivale a +@code{(paper-width@tie{}@minus{}@tie{}line-width@tie{}@minus{}@tie{}left-margin)}. +Se è impostata soltanto @code{line-width}, entrambi i margini sono impostati su +@code{((paper-width@tie{}@minus{}@tie{}line-width)@tie{}/@tie{}2)}, +e di conseguenza i sistemi sono centrati sulla pagina. Vedi anche +@code{check-consistency}. + +@item check-consistency +@funindex check-consistency + +Se impostata su vero (valore predefinito), appare un avvertimento nella +console se la somma di @code{left-margin}, @code{line-width} e +@code{right-margin} non corrisponde esattamente a @code{paper-width}, e a +ciascuna di queste variabili (eccetto @code{paper-width}) sarà assegnato il suo +valore predefinito (ridimensionato in base al formato, se richiesto). Se +impostato su falso, qualsiasi incongruenza viene ignorata e i sistemi potrebbero +andare oltre il bordo della pagina. + +@item ragged-right +@funindex ragged-right + +Se impostato su vero, i sistemi non occuperanno interamente la larghezza +della linea, ovvero non saranno giustificati. Termineranno invece alla loro +lunghezza orizzontale naturale. Valori predefiniti: @code{#t} (true = vero) +per i brani con un unico sistema, e @code{#f} (false = falso) per i brani +con due o più sistemi. Questa variabile può essere impostata anche in +un blocco @code{\layout}. + +@item ragged-last +@funindex ragged-last + +Se impostata su vero, l'ultimo sistema del brano non occuperà interamente +la larghezza della linea, ovvero non sarà giustificato. Terminerà invece +alla sua lunghezza orizzontale naturale. Valore predefinito: @code{#f} (false = falso). +Questa variabile può essere impostata anche in un blocco @code{\layout}. + +@end table + +@seealso +Guida alla notazione: +@ref{Automatic scaling to paper size}. + +File installati: +@file{ly/paper-defaults-init.ly}. + +@knownissues +Formati carta definiti esplicitamente sovrascriveranno qualsiasi margine +destro o sinistro definito dall'utente. + + +@node Variabili paper per la modalità due pagine per foglio +@unnumberedsubsubsec Variabili @code{@bs{}paper} per la modalità due pagine per foglio +@translationof paper variables for two-sided mode + +I valori predefiniti (prima del ridimensionamento) sono definiti in +@file{ly/paper-defaults-init.ly}. + +@table @code + +@item two-sided +@funindex two-sided + +@cindex rilegatura +@cindex margine di rilegatura + +Se impostata su vero, vengono usati @code{inner-margin}, @code{outer-margin} e +@code{binding-offset} per determinare i margini a seconda che il numero di +pagina sia dispari o pari. Questa variabile sovrascrive @code{left-margin} +e @code{right-margin}. + +@item inner-margin +@funindex inner-margin + +Margine del lato interno di tutte le pagine se queste fanno parte +di un libro. Se il formato è modificato, il valore predefinito di questa +dimensione viene ridimensionato proporzionalmente. Funziona soltanto con +@code{two-sided} impostato su vero. + +@item outer-margin +@funindex outer-margin + +È il margine del lato esterno di tutte le pagine se queste fanno parte +di un libro. Se il formato è modificato, il valore predefinito di questa +dimensione viene ridimensionato proporzionalmente. Funziona soltanto con +@code{two-sided} impostato su vero. + +@item binding-offset +@funindex binding-offset + +Quantità di spazio da aggiungere a @code{inner-margin} per assicurarsi che +niente sia nascosto dalla rilegatura. Se il formato è modificato, il valore +predefinito di questa dimensione viene ridimensionato proporzionalmente. +Funziona soltanto con @code{two-sided} impostato su vero. + +@end table + +@seealso +Guida alla notazione: +@ref{Automatic scaling to paper size}. + +File installati: +@file{ly/paper-defaults-init.ly}. + + +@node Variabili paper per spostamenti e indentazioni +@unnumberedsubsubsec Variabili @code{@bs{}paper} per spostamenti e indentazioni +@translationof paper variables for shifts and indents + +I valori predefiniti (prima del ridimensionamento) non elencati qui sono +visibili in @file{ly/paper-defaults-init.ly}. + +@table @code + +@item horizontal-shift +@funindex horizontal-shift + +@c This default value is buried in the middle of page.scm. -mp + +È la quantità di spazio di cui spostare a destra tutti i sistemi (inclusi +i titoli e i separatori dei sistemi). Valore predefinito: @code{0.0\mm}. + +@item indent +@funindex indent + +Livello di indentazione del primo sistema di un brano. +Se il formato è modificato, il valore predefinito di questa dimensione viene +ridimensionato proporzionalmente. Lo spazio compreso in @code{line-width} +disponibile per il primo sistema è ridotto di questa quantità. @code{indent} +può essere specificato anche in blocchi @code{\layout} per impostare +l'indentazione brano per brano. + +@item short-indent +@funindex short-indent + +Livello di indentazione di tutti i sistemi di un brano eccetto +il primo sistema. Se il formato è modificato, il valore predefinito di +questa dimensione viene ridimensionato proporzionalmente. Lo spazio +compreso in @code{line-width} disponibile per tutti i sistemi tranne il +primo è ridotto di questa quantità. @code{short-indent} può essere specificato +anche in blocchi @code{\layout} per impostare le brevi indentazioni brano per brano. + +@end table + +@seealso +Guida alla notazione: +@ref{Automatic scaling to paper size}. + +File installati: +@file{ly/paper-defaults-init.ly}. + +Frammenti: +@rlsr{Spacing}. + + +@node Altre variabili di paper +@subsection Altre variabili di @code{@bs{}paper} +@translationof Other paper variables + +@menu +* Variabili di paper per l'interruzione di linea:: +* Variabili di paper per l'interruzione di pagina:: +* Variabili di paper per la numerazione delle pagine:: +* Svariate variabili di paper:: +@end menu + + +@node Variabili di paper per l'interruzione di linea +@unnumberedsubsubsec Variabili di @code{@bs{}paper} per l'interruzione di linea +@translationof paper variables for line breaking + +@table @code + +@item max-systems-per-page +@funindex max-systems-per-page + +Il numero massimo di sistemi che saranno disposti in una pagina. Attualmente +ciò è supportanto soltanto dall'algoritmo @code{ly:optimal-breaking}. +Valore predefinito: non impostato. + +@item min-systems-per-page +@funindex min-systems-per-page + +Il numero minimo di sistemi che saranno disposti in una pagina. Ciò +potrebbe riempire troppo le pagine, se il numero è troppo grande. Attualmente +ciò è supportanto soltanto dall'algoritmo @code{ly:optimal-breaking}. +Valore predefinito: non impostato. + +@item systems-per-page +@funindex systems-per-page + +Il numero di sistemi da disporre in una pagina. Attualmente +ciò è supportanto soltanto dall'algoritmo @code{ly:optimal-breaking}. +Valore predefinito: non impostato. + +@item system-count +@funindex system-count + +Il numero di sistemi da usare per un brano. Valore predefinito: non impostato. +Questa variabile può essere impostata anche in un blocco @code{\layout}. + +@end table + +@seealso +Guida alla notazione: +@ref{Line breaking}. + + +@node Variabili di paper per l'interruzione di pagina +@unnumberedsubsubsec Variabili di @code{@bs{}paper} per l'interruzione di pagina +@translationof paper variables for page breaking + +I valori predefiniti non elencati qui sono visibili in +@file{ly/paper-defaults-init.ly} + +@table @code + +@item page-breaking +@funindex page-breaking + +L'algoritmo di interruzione di pagina da usare. Le opzioni sono +@code{ly:minimal-breaking}, @code{ly:page-turn-breaking}, +@code{ly:one-line-breaking} e @code{ly:optimal-breaking} +(predefinito). + +@item page-breaking-system-system-spacing +@funindex page-breaking-system-system-spacing + +Induce il sistema di interruzione di pagina a credere che +@code{system-system-spacing} sia impostato in modo diverso dal +modo in cui è impostato realmente. Per esempio, se +@code{page-breaking-system-system-spacing #'padding} è impostato su un +valore molto più grande di @code{system-system-spacing #'padding}, il +sistema di interruzione di pagina disporrà meno sistemi su ciascuna +pagina. Valore predefinito: non impostato. + +@item page-count +@funindex page-count + +Il numero di pagine da usare per un brano, non impostato. + +@end table + +Le variabili seguenti sono attive soltanto quando @code{page-breaking} +è impostato su @code{ly:page-turn-breaking}. Le interruzioni di pagina +vengono quindi scelte per minimizzare il numero di voltate di pagina. +Dato che le voltate di pagina si rendono necessarie quando si passa da +una pagina con numero dispari a una con numero pari, verrà solitamente +favorita una formattazione in cui l'ultima pagina abbia un numero dispari. +I punti preferiti per le voltate di pagina possono essere indicati +manualmente col comando @code{\allowPageTurn} o automaticamente +includendo l'incisore @code{Page_turn_engraver} (vedi @ref{Optimal page turning}). + +Se le scelte disponibili per avere voltate di pagina adeguate sono +insufficienti, LilyPond potrebbe inserire una pagina vuota all'interno +di un brano o tra i brani (se ce ne sono almeno due), oppure potrebbe +terminare un brano su una pagina pari. Aumentando i valori delle +seguenti tre variabili diminuisce la probabilità che queste entrino +in azione. + +I valori sono penalità: maggiore il valore, minore la probabilità +che si verifichi l'azione associata rispetto alle altre scelte. + +@table @code + +@item blank-page-penalty +@funindex blank-page-penalty + +La penalità per avere una pagina vuota nel mezzo di un brano. Se il +valore di @code{blank-page-penalty} è grande ed è selezionato +@code{ly:page-turn-breaking}, sarà meno probabile che LilyPond +insersica una pagina nel mezzo del brano. Aggiungerà invece +maggior spazio tra i sistemi per occupare la pagina vuota e +quella successiva. Valore predefinito: 5. + +@item blank-last-page-penalty +@funindex blank-last-page-penalty + +La penalità per terminare il brano su una pagina pari. Se il +valore di @code{blank-last-page-penalty} è grande ed è selezionato +@code{ly:page-turn-breaking}, sarà meno probabile che LilyPond +produca una partitura in cui l'ultima pagina sia pari. Regolerà +invece la spaziatura in modo da usare una pagina in più o in meno. +Valore predefinito: 0. + +@item blank-after-score-page-penalty +@funindex blank-after-score-page-penalty + +La penalità per avere una pagina vuota dopo la fine di un brano e +prima di quello successivo. Il valore predefinito è inferiore a +@code{blank-page-penalty}, in modo che siano inserite preferibilmente +pagine vuote al termine di un brano piuttosto che nel mezzo di un brano. +Valore predefinito: 2. + +@end table + + +@seealso +Guida alla notazione: +@ref{Page breaking}, +@ref{Optimal page breaking}, +@ref{Optimal page turning}, +@ref{Minimal page breaking}, +@ref{One-line page breaking}. + +File installati: +@file{ly/paper-defaults-init.ly}. + + +@node Variabili di paper per la numerazione delle pagine +@unnumberedsubsubsec Variabili di @code{@bs{}paper} per la numerazione delle pagine +@translationof paper variables for page numbering + +I valori predefiniti non elencati qui sono visibili in +@file{ly/paper-defaults-init.ly} + +@table @code + +@cindex numeri di pagina, numerazione automatica +@item auto-first-page-number +@funindex auto-first-page-number + +L'algoritmo di interruzione di pagina si comporta diversamente a seconda +che il numero della prima pagina sia dispari o pari. Se questa variabile +è impostata su vero, l'algoritmo di interruzione di pagina +deciderà se iniziare con un numero dispari o un numero pari. Quindi il +numero della prima pagina resterà lo stesso o aumenterà di uno. +Valore predefinito: @code{#f} (falso). + +@cindex numeri di pagina, indicare il primo +@item first-page-number +@funindex first-page-number + +Il valore del numero di pagina della prima pagina. + +@item print-first-page-number +@funindex print-first-page-number + +Se impostato su vero, appare il numero di pagina sulla prima pagina. + +@cindex numeri di pagina, sopprimere +@item print-page-number +@funindex print-page-number + +Se impostato su falso, non apparirano i numeri di pagina. + +@cindex numeri di pagina in numeri romani +@item page-number-type +@funindex page-number-type + +Il tipo di numero usato per numerare le pagine. Le opzioni possibili +sono @code{roman-lower}, @code{roman-upper} e @code{arabic}. +Valore predefinito: @code{'arabic}. + +@end table + +@seealso +File installati: +@file{ly/paper-defaults-init.ly}. + +@knownissues +I numeri di pagina dispari sono sempre sulla destra. Se la musica +deve iniziare a pagina 1, ci deve essere una pagina vuota sulla +seconda di copertina in modo che pagina 1 sia sul lato destro. + + +@node Svariate variabili di paper +@unnumberedsubsubsec Svariate variabili di @code{@bs{}paper} +@translationof Miscellaneous paper variables + +@table @code + +@item page-spacing-weight +@funindex page-spacing-weight + +L'importanza della spaziatura (verticale) e della linea (orizzontale) +della pagina. Valori più grandi renderanno la spaziatura della pagina +più importante. Valore predefinito: @code{10}. + +@item print-all-headers +@funindex print-all-headers + +Se impostato su vero, appariranno nell'output tutte le intestazioni di +ciascun blocco @code{\score}. Di norma appaiono soltanto le variabili +@code{piece} e @code{opus}. Valore predefinito: @code{#f}. + +@item system-separator-markup +@funindex system-separator-markup + +Un oggetto markup inserito tra i sistemi, spesso usato per le +partiture orchestrali. Valore predefinito: non impostato. È +disponibile il comando markup @code{\slashSeparator}, definito +in @file{ly/titling-init.ly}, che fornisce un ragionevole valore +predefinito, per esempio: + +@lilypond[quote,verbatim,noragged-right,line-width=30\mm] +#(set-default-paper-size "a8") + +\book { + \paper { + system-separator-markup = \slashSeparator + } + \header { + tagline = ##f + } + \score { + \relative { c''1 \break c1 \break c1 } + } +} +@end lilypond + +@end table + +@seealso +File installati: +@file{ly/titling-init.ly}. + +Frammenti: +@rlsr{Spacing}. + +@knownissues +L'intestazione di pagina predefinita pone sulla stessa linea il numero di +pagina e il campo @code{instrument} del blocco @code{\header}. + + +@node Formattazione della partitura +@section Formattazione della partitura +@translationof Score layout + +Questa sezione tratta le opzioni di formattazione della partitura disponibili +nel blocco @code{\layout}. + +@menu +* Il blocco layout:: +* Impostare la dimensione del rigo:: +@end menu + + +@node Il blocco layout +@subsection Il blocco @code{@bs{}layout} +@translationof The layout block + +@funindex \layout + +Mentre il blocco @code{\paper} contiene le impostazioni relative +alla formattazione della pagina per l'intero documento, il blocco +@code{\layout} contiene impostazioni di formattazione specifica +di un brano. Per impostare globalmente le opzioni di formattazione +del brano, inserirle in un blocco @code{\layout} del livello superiore. +Per impostare le impostazioni di formattazione per un singolo brano, inserirle +in un blocco @code{\layout} racchiuso in un blocco @code{\score}, dopo la +musica. Le impostazioni che possono apparire in un blocco +@code{\layout} includono: + +@itemize +@item la funzione scheme @code{layout-set-staff-size}, +@item le modifiche di contesto nei blocchi @code{\context} e +@item le variabili @code{\paper} che agiscono sulla formattazione del brano. +@end itemize + +La funzione @code{layout-set-staff-size} è spiegata nella prossima +sezione, @ref{Setting the staff size}. Le modifiche di contesto sono +trattate in un capitolo separato; vedi @ref{Modifying context plug-ins} e +@ref{Changing context default settings}. + +Le variabili @code{\paper} che possono apparire in un blocco @code{\layout}, +con valori predefiniti presi dal blocco @code{\paper}, sono: + +@itemize + +@item +@code{line-width}, @code{ragged-right} e @code{ragged-last} +(vedi @ref{paper variables for widths and margins,,variabili @code{@bs{}paper} per larghezze e margini}) + +@item +@code{indent} e @code{short-indent} +(vedi @ref{paper variables for shifts and indents,,variabili @code{@bs{}paper} per spostamenti e indentazioni}) + +@item +@code{system-count} +(vedi @ref{paper variables for line breaking,,variabili @code{@bs{}paper} per l'interruzione di linea}) + +@end itemize + +Ecco un esempio di blocco @code{\layout}: + +@example +\layout @{ + indent = 2\cm + \context @{ + \StaffGroup + \override StaffGrouper.staff-staff-spacing.basic-distance = #8 + @} + \context @{ + \Voice + \override TextScript.padding = #1 + \override Glissando.thickness = #3 + @} +@} +@end example + +Si possono inserire molteplici blocchi @code{\layout} come espressioni +di livello superiore. Ciò può essere utile, per esempio, se impostazioni +diverse sono salvate in file separati e incluse facoltativamente. +Internamente, quando un blocco @code{\layout} viene elaborato, viene fatta +una copia della configurazione del blocco @code{\layout} corrente, poi +qualsiasi modifica apportata nel blocco viene applicata e il risultato +viene salvato come la nuova configurazione corrente. Dalla prospettiva +dell'utente, i blocchi @code{\layout} sono combinati, ma in situazioni di +conflitto (ovvero quando viene modificata la stessa proprietà in blocchi +diversi) hanno precedenza le definizioni più recenti. + +Per esempio, se questo blocco + +@example +\layout @{ + \context @{ + \Voice + \override TextScript.color = #magenta + \override Glissando.thickness = #1.5 + @} +@} +@end example + +viene posto dopo quello dell'esempio precedente, le sovrascritture di +@code{'padding} e @code{'color} per @code{TextScript} sono combinate, mentre +quella più recente di @code{'thickness} per @code{Glissando} sostituisce +(o nasconde) quella precedente. + +I blocchi @code{\layout} possono essere assegnati a delle variabili per +poterli riusare successivamente, ma il modo in cui ciò funziona è +leggermente ma significativamente diverso rispetto a scriverle davvero. + +Se una variabile è definita in questo modo, + +@example +layoutVariable = \layout @{ + \context @{ + \Voice + \override NoteHead.font-size = #4 + @} +@} +@end example + +manterrà la configurazione attuale di @code{\layout} con l'aggiunta +della sovrascrittura @code{NoteHead.font-size}, ma questa combinazione +@emph{non} è salvata come la nuova configurazione corrente. Attenzione +al fatto che la @qq{configurazione corrente} viene letta quando la variabile +è definita e non quando viene usata, dunque il contenuto della variabile +dipende dalla sua posizione nel file di input. + +La variabile può quindi essere usata all'interno di un altro +blocco @code{\layout}, per esempio: + +@example +\layout @{ + \layoutVariable + \context @{ + \Voice + \override NoteHead.color = #red + @} +@} +@end example + +Un blocco @code{\layout} che contiene una variabile, come nell'esempio +precedente, @emph{non} copia la configurazione corrente bensì usa il +contenuto di @code{\layoutVariable} come configurazione di base per +altre aggiunte. Ciò significa che qualsiasi modifica definita tra la +definizione della variabile e il momento in cui essa viene usata è perduta. + +Se @code{layoutVariable} è definita (o inclusa con @code{\include}) subito +prima di essere usata, il suo contenuto comprende soltanto la configurazione +corrente più le sovrascritture definite al suo interno. Quindi nell'esempio +precedente che illustra l'uso di @code{\layoutVariable} il blocco @code{\layout} +finale conterrebbe: + +@example + TextScript.padding = #1 + TextScript.color = #magenta + Glissando.thickness = #1.5 + NoteHead.font-size = #4 + NoteHead.color = #red +@end example + +più le sovrascritture @code{indent} e @code{StaffGrouper}. + +Ma se la variabile fosse già stata definita prima del primo blocco +@code{\layout}, la configurazione corrente conterrebbe soltanto + +@example + NoteHead.font-size = #4 % (scritta nella definizione della variabile) + NoteHead.color = #red % (aggiunta dopo l'uso della variabile) +@end example + +Se ben organizzate, le variabili @code{\layout} possono essere un +valido strumento per strutturare le formattazioni dei sorgenti, e anche +per ripristinare la configurazione di @code{\layout} a uno stato conosciuto. + +@seealso +Guida alla notazione: +@ref{Changing context default settings}. + +Frammenti: +@rlsr{Spacing}. + + +@node Impostare la dimensione del rigo +@subsection Impostare la dimensione del rigo +@translationof Setting the staff size + +@cindex tipo di carattere, impostare la dimensione +@cindex rigo, impostare la dimensione +@funindex layout file +@funindex magnification->font-size +@funindex magstep +@funindex set-global-staff-size +@funindex layout-set-staff-size + +La dimensione del rigo (in inglese @strong{staff size}) è 20 punti, che +corrispondono a un'altezza del rigo di 7.03mm (un punto è uguale a 100/7227 +di un pollice o a 2540/7227 mm). La dimensione del rigo può essere +modificata in tre modi: + +@enumerate + +@item +Per impostare la dimensione del rigo globalmente per tutti i brani di un +file (o di un blocco @code{\book}, per essere precisi), usare +@code{set-global-staff-size}: + +@example +#(set-global-staff-size 14) +@end example + +@noindent +L'esempio precedente imposta la dimensione del rigo globale a 14pt (4.92mm) e +ridimensiona proporzionalmente tutti i tipi di carattere. + +@item +Per impostare la dimensione del rigo di una singola partitura in un libro, usare +@code{layout-set-staff-size} all'interno del blocco @code{\layout} di quel brano: + +@example +\score @{ + @dots{} + \layout @{ + #(layout-set-staff-size 14) + @} +@} +@end example + +@item +Per impostare la dimensione del rigo di un singolo rigo di un sistema, usare +il comando @code{\magnifyStaff}. Per esempio, le partiture di musica da camera +incise in modo tradizionale spesso usavano righi per pianoforte di 7mm mentre +gli altri righi erano solitamente tra 3/5 e 5/7 più grandi (tra 60% e 71%). +Per ottenere la proporzione 5/7, usare: + +@example +\score @{ + << + \new Staff \with @{ + \magnifyStaff #5/7 + @} @{ @dots{} @} + \new PianoStaff @{ @dots{} @} + >> +@} +@end example + +Se si desidera una dimensione del tipo di carattere (@code{fontSize}) ben +precisa, si può usare la seguente forma: + +@example +\score @{ + << + \new Staff \with @{ + \magnifyStaff #(magstep -3) + @} @{ @dots{} @} + \new PianoStaff @{ @dots{} @} + >> +@} +@end example + +Per emulare l'aspetto delle partiture incise coi metodi tradizionali, è meglio +evitare di ridurre lo spessore delle linee del rigo. + +@end enumerate + + +@subheading Corpo automatico dei tipi di carattere a dimensioni diverse + +Il tipo di carattere Feta fornisce simboli musicali in otto dimensioni +diverse. Ogni tipo di carattere è calibrato per una specifica dimensione +del rigo: via via che la dimensione del rigo diventa più piccola, il corpo +del carattere diventa più grosso, per abbinarsi alle linee del rigo più +spesse. Le dimensioni del carattere consigliate sono elencate nella +seguente tabella: + +@multitable @columnfractions .15 .2 .22 .2 +@item @b{nome del tipo di carattere} @tab @b{altezza del rigo (pt)} @tab @b{altezza del rigo (mm)} @tab @b{uso} +@item feta11 @tab 11.22 @tab 3.9 @tab partiture tascabili +@item feta13 @tab 12.60 @tab 4.4 @tab +@item feta14 @tab 14.14 @tab 5.0 @tab +@item feta16 @tab 15.87 @tab 5.6 @tab +@item feta18 @tab 17.82 @tab 6.3 @tab canzonieri +@item feta20 @tab 20 @tab 7.0 @tab parti standard +@item feta23 @tab 22.45 @tab 7.9 @tab +@item feta26 @tab 25.2 @tab 8.9 @tab @c modern rental material? +@end multitable + +@seealso +Guida alla notazione: +@ref{Selecting notation font size}. + +Frammenti: +@rlsr{Spacing}. + +@knownissues +@code{layout-set-staff-size} non modifica la distanza tra le linee del rigo. + + +@node Interruzioni +@section Interruzioni +@translationof Breaks + +@menu +* Interruzioni di linea:: +* Interruzioni di pagina:: +@end menu + + +@node Interruzioni di linea +@subsection Interruzioni di linea +@translationof Line breaking + +@funindex \break +@funindex \noBreak +@funindex \autoBreaksOff +@funindex \autoBreaksOn +@funindex \autoLineBreaksOff +@funindex \autoLineBreaksOn +@cindex manual line breaks +@cindex breaking lines + +Le interruzioni di linea di solito sono determinate automaticamente. Sono +decise in modo che le linee non sembrino né fitte né troppo spaziate, e che +le linee consecutive abbiano una densità simile. + +Per forzare manualmente un'interruzione di linea dopo una stanghetta, usare +il comando @code{\break}: + +@lilypond[quote,ragged-right,verbatim] +\relative c'' { + c4 c c c | \break + c4 c c c | +} +@end lilypond + +Per impostazione predefinita, un comando @code{\break} nel mezzo di una +misura viene ignorato e apparirà un avvertimento nella console. Per forzare +un'interruzione di linea nel mezzo di una misura, aggiungere una stanghetta +invisibile con @w{@samp{\bar ""}}: + +@lilypond[quote,ragged-right,verbatim] +\relative c'' { + c4 c c + \bar "" \break + c | + c4 c c c | +} +@end lilypond + +Un @code{\break} successivo a una stanghetta viene ignorato se la +misura precedente termina nel mezzo di una nota, come quando un +gruppo irregolare inizia e termina in misure diverse. Per far sì +che i comandi @code{\break} funzionino in queste situazioni, togliere +l'incisore @code{Forbid_line_break_engraver} dal contesto @code{Voice}. +@c TODO: frase originale non chiara - fb +Nota che le interruzioni di linea forzate manualmente devono essere +aggiunte in parallelo con la musica: + +@lilypond[quote,ragged-right,verbatim] +\new Voice \with { + \remove "Forbid_line_break_engraver" +} \relative { + << + { c''2. \tuplet 3/2 { c4 c c } c2. | } + { s1 | \break s1 | } + >> +} +@end lilypond + +Analogalmente, le interruzioni di linea sono normalmente proibite quando le +travature oltrepassano una stanghetta. Tale comportamento può essere +modificato impostando @code{\override Beam.breakable = ##t}: + +@lilypond[quote,ragged-right,verbatim] +\relative c'' { + \override Beam.breakable = ##t + c2. c8[ c | \break + c8 c] c2. | +} +@end lilypond + +Il comando @code{\noBreak} vieta un'interruzione di linea sulla +stanghetta in cui è inserito. + +In una partitura, l'interruzione di linea automatica è vietata per +la musica compresa tra i comandi @code{\autoLineBreaksOff} e +@code{\autoLineBreaksOn}. Per impedire anche le interruzioni di +pagina, usare i comandi @code{\autoBreaksOff} e @code{\autoBreaksOn}. +Le interruzioni manuali non sono interessate da questi comandi. +Nota che bloccare le interruzioni di linea automatiche potrebbe +far andare la musica oltre il margine destro se questa non può +essere contenuta in una linea. + +Le interruzioni di linea automatiche (ma non le interruzioni di pagina) +possono essere abilitate per singole stanghette usando +@code{\once \autoLineBreaksOn} all'inizio di una stanghetta. +Ciò identifica un'interruzione di linea permessa, invece che forzata. + +Le impostazioni fondamentali che influenzano la spaziatura della linea +sono @code{indent} e @code{line-width}, impostate nel blocco +@code{\layout}: regolano l'indentazione della prima linea e la +lunghezza delle linee. + +Se @code{ragged-right} è impostato su vero nel blocco @code{\layout}, allora +i sistemi terminano alla loro naturale lunghezza orizzontale, invece di +essere allungati orizzontalmente per riempire l'intera linea. Ciò è +utile per brevi frammenti e per verificare quanto è stretta la spaziatura +naturale. + +@c TODO Check and add para on default for ragged-right + +L'opzione @code{ragged-last} è simile a @code{ragged-right}, ma agisce +soltanto sull'ultima linea del brano. + +@example +\layout @{ + indent = 0\mm + line-width = 150\mm + ragged-last = ##t +@} +@end example + +@cindex interruzioni di linea regolari +@cindex musica a quattro battute + +Per inserire interruzioni di linea a intervalli regolari usare @code{\break} +separato da pause spaziatrici e ripetuto con @code{\repeat}. Per esempio, +per interrompere le seguenti 28 misure (considerando un tempo di 4/4) esattamente +ogni 4 misure, usare: + +@example +<< + \repeat unfold 7 @{ + s1 \noBreak s1 \noBreak + s1 \noBreak s1 \break + @} + @{ @var{la vera musica@dots{}} @} +>> +@end example + + +@predefined +@code{\break}, +@code{\noBreak}, +@code{\autoBreaksOff}, +@code{\autoBreaksOn}, +@code{\autoLineBreaksOff}, +@code{\autoLineBreaksOn}. +@endpredefined + +@snippets + +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{using-an-extra-voice-for-breaks.ly} + +@seealso +Guida alla notazione: +@ref{paper variables for line breaking} +@ref{The layout block}. + +Frammenti: +@rlsr{Spacing}. + +Guida al funzionamento interno: +@rinternals{LineBreakEvent}. + +@knownissues + +L'inserimento dei comandi @code{\autoLineBreaksOff} o @code{\autoBreaksOff} +prima della musica produrrà dei messaggi di errore. Inserire sempre questi +comandi dopo la musica. + + +@node Interruzioni di pagina +@subsection Interruzioni di pagina +@translationof Page breaking + +Questa sezione descrive i diversi metodi di interruzione di pagina e +spiega come modificarli. + +@menu +* Interruzione di pagina manuale:: +* Interruzione di pagina ottimale:: +* Interruzione di pagina minimale:: +* Interruzione di pagina su una linea:: +* Voltata di pagina ottimale:: +@end menu + + +@node Interruzione di pagina manuale +@unnumberedsubsubsec Interruzione di pagina manuale +@translationof Manual page breaking + +@funindex \pageBreak +@funindex \noPageBreak +@funindex \autoPageBreaksOn +@funindex \autoPageBreaksOff +@cindex page breaking, manual + +L'interruzione di pagina predefinita può essere sovrascritta con i +comandi @code{\pageBreak} o @code{\noPageBreak}. Questi comandi, +analoghi a @code{\break} e @code{\noBreak}, devono essere +inseriti dopo una stanghetta e forzano o proibiscono l'interruzione +di pagina in quel punto. Ovviamente il comando @code{\pageBreak} +forza anche un'interruzione di linea. + +I comandi @code{\pageBreak} e @code{\noPageBreak} possono essere +inseriti anche nel livello superiore, tra le partiture e i testi +(nel blocco @code{markup}) di livello superiore. + +In un brano, le interruzioni di pagina automatiche sono vietate per +la musica compresa tra i comandi @code{\autoPageBreaksOff} e +@code{\autoPageBreaksOn}. Le interruzioni di pagina manuali non +sono interessate da questi comandi. + +Esistono impostazioni analoghe a @code{ragged-right} e +@code{ragged-last} che hanno lo stesso effetto sulla spaziatura +verticale. Se @code{ragged-bottom} è impostato su @code{#t}, i +sistemi non saranno giustificati verticalmente. Quando +@code{ragged-last-bottom} è impostato su @code{#t} (valore +predefinito), è permesso dello spazio vuoto in fondo all'ultima +pagina (o in fondo all'ultima pagina di ciascun +@code{\bookpart}). Vedi +@ref{Fixed vertical spacing paper variables,,Variabili fisse della spaziatura verticale di @code{@bs{}paper}}. + +Le interruzioni di pagina sono calcolate dalla funzione @code{page-breaking}. +LilyPond fornisce tre algoritmi per calcolare le interruzioni di pagina: +@code{ly:optimal-breaking}, @code{ly:page-turn-breaking} e +@code{ly:minimal-breaking}. Quello predefinito è +@code{ly:optimal-breaking}, ma il valore può essere modificato nel +blocco @code{\paper}: + +@example +\paper @{ + page-breaking = #ly:page-turn-breaking +@} +@end example + +@funindex \bookpart + +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 @code{\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. + +@example +\bookpart @{ + \header @{ + subtitle = "Prefazione" + @} + \paper @{ + %% In una parte contenente soprattutto testo, + %% ly:minimal-breaking potrebbe essere preferibile + page-breaking = #ly:minimal-breaking + @} + \markup @{ @dots{} @} + @dots{} +@} +\bookpart @{ + %% In questa parte, contenente musica, si usa l'algoritmo di + %% interruzione di pagina ottimale. + \header @{ + subtitle = "Primo movimento" + @} + \score @{ @dots{} @} + @dots{} +@} +@end example + + +@predefined +@code{\pageBreak}, +@code{\noPageBreak}, +@code{\autoPageBreaksOn}, +@code{\autoPageBreaksOff}. +@endpredefined + +@seealso +Guida alla notazione: +@ref{paper variables for page breaking}. + +Frammenti: +@rlsr{Spacing}. + +@knownissues + +Il prefisso @code{\once} non funziona con i comandi @code{\autoPageBreaksOn} +e @code{\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. + + +@node Interruzione di pagina ottimale +@unnumberedsubsubsec Interruzione di pagina ottimale +@translationof Optimal page breaking + +@funindex ly:optimal-breaking + +La funzione @code{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 @code{ly:page-turn-breaking}, non prende in +considerazione le voltate di pagina. + +@seealso +Frammenti: +@rlsr{Spacing}. + + +@node Interruzione di pagina minimale +@unnumberedsubsubsec Interruzione di pagina minimale +@translationof Minimal page breaking + +@funindex ly:minimal-breaking + +La funzione @code{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: + +@example +\paper @{ + page-breaking = #ly:minimal-breaking +@} +@end example + +@seealso +Frammenti: +@rlsr{Spacing}. + + +@node Interruzione di pagina su una linea +@unnumberedsubsubsec Interruzione di pagina su una linea +@translationof One-line page breaking + +@funindex ly:one-line-breaking + +La funzione @code{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. Tale funzione non fa apparire titoli e margini, +viene mostrato solo il brano musicale. + +La larghezza della pagina sarà regolata in modo che il brano più +lungo stia su una sola linea. In particolare, le variabili @code{paper-width}, +@code{line-width} e @code{indent} del blocco @code{\paper} saranno +ignorati, sebbene @code{left-margin} e @code{right-margin} saranno +comunque considerati. L'altezza della pagina resterà invariata. + + +@node Voltata di pagina ottimale +@unnumberedsubsubsec Voltata di pagina ottimale +@translationof Optimal page turning + +@funindex ly:page-turn-breaking + +È 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 @code{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 @code{\paper}, come è spiegato in +@ref{Page breaking}. 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 +@code{\allowPageTurn} nei punti adatti del file di input. + +Oppure, se ciò è troppo noioso, si può aggiungere l'incisore +@code{Page_turn_engraver} a un contesto Staff o Voice. L'incisore +@code{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 @code{Page_turn_engraver}). Quando trova una sezione +senza note abbastanza lunga, @code{Page_turn_engraver} inserirà il +comando @code{\allowPageTurn} nella stanghetta finale di quella +sezione, a meno che non ci sia una stanghetta @q{speciale} (come +una doppia stanghetta), nel qual caso il comando @code{\allowPageTurn} +sarà inserito nella stanghetta finale @qq{speciale} della sezione. + +@funindex minimumPageTurnLength +L'incisore @code{Page_turn_engraver} legge la proprietà di contesto +@code{minimumPageTurnLength} per determinare quanto deve essere lunga +una sezione senza note prima che una voltata di pagina sia considerata. +Il valore predefinito di @code{minimumPageTurnLength} è +@code{(ly:make-moment 1/1)}. Per disabilitare le voltate di pagina, +impostarla su un valore @qq{molto grande}. + +@example +\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 +@} +@end example + +@funindex minimumRepeatLengthForPageTurn +In caso di ripetizioni con finali alternativi, @code{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 è molto breve, si può usare +@code{Page_turn_engraver} anche per disabilitare le voltate impostando +un valore per la proprietà di contesto @code{minimumRepeatLengthForPageTurn}, +dato che @code{Page_turn_engraver} consente le voltate soltanto nelle ripetizioni +la cui durata sia maggiore di questo valore. + +I comandi per le voltate di pagina (@code{\pageTurn}, @code{\noPageTurn} +e @code{\allowPageTurn}), possono essere usati anche nel livello superiore, +nei blocchi markup di livello superiore e tra una partitura e l'altra. + +@predefined +@funindex \pageTurn +@code{\pageTurn}, +@funindex \noPageTurn +@code{\noPageTurn}, +@funindex \allowPageTurn +@code{\allowPageTurn}. +@endpredefined + +@seealso +Guida alla notazione: +@ref{paper variables for line breaking}. + +Frammenti: +@rlsr{Spacing}. + +@knownissues +Usare soltanto un incisore @code{Page_turn_engraver} per partitura. Se ce +n'è più d'uno, interferiranno uno con l'altro. + + +@seealso +Guida alla notazione: +@ref{Vertical spacing}. + +Frammenti: +@rlsr{Spacing}. + + +@node Spaziatura verticale +@section Spaziatura verticale +@translationof Vertical spacing + +@cindex vertical spacing +@cindex spacing, vertical + +La spaziatura verticale è regolata da tre elementi: la quantità di +spazio disponibile (ovvero il formato e i margini), la quantità di +spazio tra i sistemi e la quantità di spazio tra i righi di un +sistema. + +@menu +* Spaziatura verticale flessibile all'interno dei sistemi:: +* Posizionamento esplicito di righi e sistemi:: +* Elusione delle collisioni verticali:: +@end menu + + +@node Spaziatura verticale flessibile all'interno dei sistemi +@subsection Spaziatura verticale flessibile all'interno dei sistemi +@translationof Flexible vertical spacing within systems + +@cindex distanza tra i righi +@cindex righi, distanza +@cindex spazio tra i righi +@cindex spazio dentro i sistemi + +Tre meccanismi distinti regolano la spaziatura verticale flessibile +all'interno dei sistemi, uno per ognuna delle seguenti categorie: + +@itemize + +@item +@emph{righi non raggruppati}, + +@item +@emph{righi raggruppati} (righi con un gruppo come +@code{ChoirStaff}, etc.), e + +@item +@emph{linee che non sono righi} (come @code{Lyrics}, @code{ChordNames}, +etc.). + +@end itemize + +@c TODO: Clarify this. This almost implies that non-staff lines +@c have NO effect on the spacing between staves. -mp + +L'altezza di ogni sistema è determinata in due fasi. Prima vengono +spaziati tutti i righi in base alla quantità di spazio disponibile. +Poi le linee che non sono righi sono distribuite tra i righi. + +Nota che i meccanismi di spaziatura trattati in questa sezione regolano +soltanto la spaziatura verticale dei righi e delle linee (che non sono +righi) all'interno di singoli sistemi. La spaziatura verticale tra +sistemi, partiture, testi e margini separati è regolata dalle variabili +@code{\paper} trattate in +@ref{Flexible vertical spacing paper variables,,Variabili @code{@bs{}paper} della spaziatura verticale flessibile}. + +@menu +* Proprietà della spaziatura dentro un sistema:: +* Spaziatura dei righi non raggruppati:: +* Spaziatura dei righi raggruppati:: +* Spaziatura delle linee che non sono righi:: +@end menu + + +@node Proprietà della spaziatura dentro un sistema +@unnumberedsubsubsec Proprietà della spaziatura dentro un sistema +@translationof Within-system spacing properties + +@funindex staff-affinity +@funindex staffgroup-staff-spacing +@funindex staff-staff-spacing +@funindex nonstaff-unrelatedstaff-spacing +@funindex nonstaff-relatedstaff-spacing +@funindex nonstaff-nonstaff-spacing +@funindex default-staff-staff-spacing +@funindex minimum-Y-extent +@funindex extra-offset +@funindex self-alignment-X +@funindex X-offset +@funindex VerticalAxisGroup + +I meccanismi di spaziatura verticale dentro un sistema sono regolati da +due gruppi di proprietà dei grob. Il primo gruppo è associato al grob +@code{VerticalAxisGroup}, creato da tutti i righi e tutte le linee che +non sono righi. Il secondo gruppo è associato al grob +@code{StaffGrouper}, che può essere creato da gruppi di righi, ma +solo se richiamato esplicitamente. Queste proprietà sono descritte +una per una alla fine di questa sezione. + +Il nome di queste proprietà (con l'eccezione di @code{staff-affinity}) +hanno il formato @code{@var{elemento1}-@var{elemento2}-spacing}, dove +@code{@var{elemento1}} e @code{@var{elemento2}} sono gli elementi di +cui determinare la distanza. Nota che @code{@var{elemento2}} non è +necessariamente sotto @code{@var{elemento1}}; per esempio, +@code{nonstaff-relatedstaff-spacing} prenderà le misure verso l'alto a +partire dalla linea che non è un rigo (nonstaff) se +@code{staff-affinity} è impostato su @code{UP}. + +Ogni distanza è calcolata tra i @emph{punti di riferimento} dei due +elementi. Il punto di riferimento di un rigo è il centro verticale +del suo @code{StaffSymbol} (ovvero la linea centrale se +@code{line-count} (il numero di linee) è dispari; lo spazio centrale +se @code{line-count} è pari). I punti di riferimento per ciascuna linea +che non è un rigo sono elencati nella seguente tabella: + +@multitable {Non-staff line} {Reference point} +@headitem Linea non-rigo @tab Punto di riferimento +@item @code{ChordNames} @tab linea di base +@item @code{NoteNames} @tab linea di base +@item @code{Lyrics} @tab linea di base +@item @code{Dynamics} @tab metà altezza di @q{m} +@item @code{FiguredBass} @tab punto più alto +@item @code{FretBoards} @tab linea più alta +@end multitable + +Nell'immagine seguente, le linee orizzontali indicano le posizioni di +questi punti di riferimento: + +@lilypond[quote,noragged-right,line-width=110\mm] +#(define zero-space '((padding . -inf.0) (basic-distance . 0))) + +alignToZero = \with { + \override VerticalAxisGroup.nonstaff-relatedstaff-spacing = #zero-space + \override VerticalAxisGroup.nonstaff-nonstaff-spacing = #zero-space + \override VerticalAxisGroup.staff-affinity = #DOWN + \remove Text_engraver % impedisce di averne due + \consists Text_engraver +} +lowerCaseChords = \with { + chordNameLowercaseMinor = ##t +} +labelContext = +#(define-music-function + (context) + (string?) + #{ s1*0^\markup { \upright {\typewriter #context } } #}) + +\layout { + \context { \Dynamics \alignToZero } + \context { \FiguredBass \alignToZero } + \context { \Lyrics \alignToZero } + \context { \NoteNames \alignToZero } + \context { \ChordNames \alignToZero \lowerCaseChords } + \context { \FretBoards \alignToZero } + \context { \Score + \omit BarLine + \override DynamicText.self-alignment-X = #-1 + \override FretBoard.X-offset = #1.75 + \override InstrumentName.minimum-Y-extent = #'(-1 . 2) + \textLengthOn + \omit TimeSignature + } +} + +%% Questi contesti hanno punti di riferimento nella linea di base: +%% ChordNames, NoteNames, and Lyrics +<< + \new ChordNames { \chords { \labelContext "ChordNames" g1:m } } + \new NoteNames { s1 |\labelContext "NoteNames" g1 | } + \new Lyrics { \lyrics { \skip 1*2 | \labelContext "Lyrics" ghijk1 | } } + \new RhythmicStaff \with { instrumentName = #"linea di base " } s1*3 +>> + +%% Il punto di riferimento per Dynamics è la linea centrale della 'm' nel tipo di carattere +<< + \new Dynamics { \labelContext "Dynamics" s1\mp s\fp } + \new RhythmicStaff \with { instrumentName = #"metà altezza " } s1*3 +>> + +%% Il punto di riferimento per FiguredBass è il suo punto più alto +<< + \new FiguredBass { \labelContext "FiguredBass" \figuremode { <6 5>1 } } + \new RhythmicStaff \with { instrumentName = #"punto più alto " } s1 +>> + +%% Il punto di riferimento per FretBoards è la linea più alta +\include "predefined-guitar-fretboards.ly" +<< + \new FretBoards { \labelContext "FretBoards" \chordmode { e1 } } + \new RhythmicStaff \with { instrumentName = #"linea più alta " } s1 +>> +@end lilypond + +Tutte le proprietà di spaziatura verticale del grob (eccetto +@code{staff-affinity}) usano la stessa struttura della lista +associativa usata dalle variabili di spaziatura di @code{\paper} +trattate in +@ref{Flexible vertical spacing paper variables,,Variabili @code{@bs{}paper} della spaziatura verticale flessibile}. +Metodi specifici per modificare queste liste sono spiegati in +@ref{Modifying alists}. Le proprietà dei grob devono essere +modificate con un comando @code{\override} dentro un blocco +@code{\score} o @code{\layout} e non in un blocco +@code{\paper}. + +L'esempio seguente illustra i due modi con cui si possono modificare +queste liste associative (alist). La prima dichiarazione trasforma un +elemento-valore singolarmente, mentre la seconda ridefinisce +completamente la proprietà: + +@example +\new Staff \with @{ + \override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #10 +@} @{ @dots{} @} + +\new Staff \with @{ + \override VerticalAxisGroup.default-staff-staff-spacing = + #'((basic-distance . 10) + (minimum-distance . 9) + (padding . 1) + (stretchability . 10)) +@} @{ @dots{} @} +@end example + +Per cambiare le impostazioni di spaziatura globalmente, inserirle in +un blocco @code{\layout}: + +@example +\layout @{ + \context @{ + \Staff + \override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #10 + @} +@} +@end example + +Le impostazioni predefinite delle proprietà di spaziatura verticale dei +grob sono elencate in @rinternals{VerticalAxisGroup} e +@rinternals{StaffGrouper}. Le modifiche predefinite con @code{\override} +per tipologie specifiche di linee che non sono righi sono elencate +nelle descrizioni del relativo contesto in @rinternals{Contexts}. + + +@subsubheading Proprietà del grob @code{VerticalAxisGroup} + +Le proprietà di @code{VerticalAxisGroup} sono solitamente modificate +con un @code{\override} nel livello @code{Staff} (o equivalente). + +@table @code +@item staff-staff-spacing + +Usata per determinare la distanza tra il rigo corrente e il rigo +inferiore nello stesso sistema, anche se tra i due si trovano una o +più linee che non sono righi (come @code{Lyrics}). +Non è applicata all'ultimo rigo di un sistema. + +Inizialmente, la proprietà @code{staff-staff-spacing} di un +@code{VerticalAxisGroup} è una funzione Scheme che applica le +proprietà di @code{StaffGrouper} se il rigo fa parte di un +gruppo, o la proprietà @code{default-staff-staff-spacing} del rigo +altrimenti. Questo permette ai righi di essere spaziati diversamente +quando sono raggruppati. Per ottenere una spaziatura uniforme +indipendentemente dal raggruppamento, questa funzione può essere +sostituita da un alist di spaziatura flessibile, usando la forma +di override che ridefinisce completamente la variabile, come mostrato +prima. + +@item default-staff-staff-spacing +Un alist di spaziatura flessibile che definisce la proprietà +@code{staff-staff-spacing} usata per i righi isolati, a meno che +@code{staff-staff-spacing} non sia stata impostata esplicitamente +con un @code{\override}. + +@item staff-affinity +La direzione del rigo da usare per spaziare la linea che non è un rigo. +Le opzioni sono @code{UP} (su), @code{DOWN} (giù) e +@code{CENTER} (centro). Se impostata su @code{CENTER}, la linea +fuori dal rigo si troverà in un punto equidistante tra i due righi +più vicini su qualunque lato, a meno che delle collisioni o altre +costrizioni di spazio non lo impediscano. Linee (che non sono righi) +adiacenti dovrebbero avere un valore di @code{staff-affinity} che +non cresce: per esempio, una linea che non è un rigo impostata su +@code{UP} non deve seguire immediatamente una linea impostata su +@code{DOWN}. Linee che non sono righi in cima a un sistema devono usare +@code{DOWN}; quelle in fondo @code{UP}. Impostando +@code{staff-affinity} per un rigo, questo sarà trattato come +una linea che non è un rigo. Impostando @code{staff-affinity} su @code{#f}, +una linea che non è un rigo sarà trattata come un rigo. Impostando +@code{staff-affinity} su @code{UP}, @code{CENTER} o @code{DOWN}, +un rigo verrà spaziato come se fosse una linea che non è un rigo. + +@item nonstaff-relatedstaff-spacing +La distanza fra la linea (che non è un rigo) corrente e il rigo più +vicino nella direzione di @code{staff-affinity}, se non ci sono +linee che non sono righi tra le due e @code{staff-affinity} è +impostato su @code{UP} o @code{DOWN}. Se @code{staff-affinity} è +impostato su @code{CENTER}, viene usato @code{nonstaff-relatedstaff-spacing} +per i righi più vicini su @emph{entrambi} i lati, anche se appaiono +altre linee tra quella corrente e uno qualsiasi dei righi. Ciò +significa che il posizionamento di una linea dipende sia dai righi +che dalle linee circostanti. Impostando la proprietà @code{stretchability} +di uno di questi tipi di spaziatura su un piccolo valore, quella spaziatura +sarà dominante. Impostando @code{stretchability} su un grande valore, quella +spaziatura avrà poco effetto. + +@item nonstaff-nonstaff-spacing +La distanza fra la linea (che non è un rigo) corrente e quella successiva +nella direzione di @code{staff-affinity}, se entrambe sono sullo stesso +lato del rigo in questione e se @code{staff-affinity} è impostata su +@code{UP} o @code{DOWN}. + +@item nonstaff-unrelatedstaff-spacing +La distanza fra la linea (che non è un rigo) corrente e il rigo nella +direzione opposta rispetto a @code{staff-affinity}, se non ci sono +altre linee tra i due e se @code{staff-affinity} è impostato su +@code{UP} o @code{DOWN}. Ciò può servire, per esempio, a imporre +un padding minimo tra una linea @code{Lyrics} e il rigo al quale non +appartiene. +@end table + + +@subsubheading Proprietà del grob @code{StaffGrouper} + +Le proprietà di @code{StaffGrouper} sono solitamente modificate con un +@code{\override} nel livello @code{StaffGroup} (o livello equivalente). + +@table @code +@item staff-staff-spacing +La distanza tra righi consecutivi del gruppo di righi +corrente. La proprietà @code{staff-staff-spacing} del grob +@code{VerticalAxisGroup} di un singolo rigo può essere +sovrascritta con varie impostazioni di spaziatura per quel rigo. + +@item staffgroup-staff-spacing +La distanza tra l'ultimo rigo del gruppo di righi corrente e +il rigo immediatamente successivo nello stesso sistema, anche se +tra i due righi ci sono una o più linee che non sono righi (come +@code{Lyrics}). Non è applicata al rigo inferiore di un sistema. La +proprietà @code{staff-staff-spacing} del grob @code{VerticalAxisGroup} +di un singolo rigo può essere sovrascritta con varie impostazioni di +spaziatura per quel rigo. +@end table + +@seealso +Guida alla notazione: +@ref{Flexible vertical spacing paper variables,,Variabili @code{@bs{}paper} della spaziatura verticale flessibile}, +@ref{Modifying alists}. + +File installati: +@file{ly/engraver-init.ly}, +@file{scm/define-grobs.scm}. + +Guida al funzionamento interno: +@rinternals{Contexts}, +@rinternals{VerticalAxisGroup}, +@rinternals{StaffGrouper}. + + +@node Spaziatura dei righi non raggruppati +@unnumberedsubsubsec Spaziatura dei righi non raggruppati +@translationof Spacing of ungrouped staves + +I @emph{righi} (come @code{Staff}, @code{DrumStaff}, +@code{TabStaff}, etc.) sono contesti che possono contenere uno o +più contesti voce, ma non possono contenere altri righi. + +Le seguenti proprietà influenzano la spaziatura di righi @emph{non raggruppati}: + +@itemize +@item Proprietà di @code{VerticalAxisGroup}: +@itemize +@item @code{default-staff-staff-spacing} +@item @code{staff-staff-spacing} +@end itemize +@end itemize + +Queste proprietà del grob sono state descritte una a una in precedenza; vedi +@ref{Within-system spacing properties}. + +Altre proprietà entrano in gioco per i righi che sono parte di un gruppo; +vedi @ref{Spacing of grouped staves}. + +L'esempio seguente mostra come la proprietà @code{default-staff-staff-spacing} +possa influenzare la spaziatura di righi non raggruppati. Le stesse +modifiche applicate a @code{staff-staff-spacing} avrebbero lo stesso +effetto, ma verrebbero applicate anche nel caso in cui i righi siano +combinati in uno o più gruppi. + +@lilypond[verbatim,quote,staffsize=16] +\layout { + \context { + \Staff + \override VerticalAxisGroup.default-staff-staff-spacing = + #'((basic-distance . 8) + (minimum-distance . 7) + (padding . 1)) + } +} + +<< + % Questa nota molto bassa ha bisogno di più spazio di quanto 'basic-distance + % possa fornirne, dunque la distanza tra questo rigo e quello successivo + % è determinato da 'padding. + \new Staff { b,2 r | } + + % Qui 'basic-distance fornisce abbastanza spazio, e non c'è bisogno + % di comprimere lo spazio (verso 'minimum-distance) per far spazio + % per qualcos'altro sulla pagina, dunque la distanza tra questo + % rigo e quello successivo è determinato da 'basic-distance. + \new Staff { \clef bass g2 r | } + + % Impostando 'padding su un valore negativo, è possibile far sì che + % i righi entrino in collisione. Il più basso valore accettabile per + % 'basic-distance è 0. + \new Staff \with { + \override VerticalAxisGroup.default-staff-staff-spacing = + #'((basic-distance . 3.5) + (padding . -10)) + } { \clef bass g2 r | } + \new Staff { \clef bass g2 r | } +>> +@end lilypond + +@seealso +File installati: +@file{scm/define-grobs.scm}. + +Frammenti: +@rlsr{Spacing}. + +Guida al funzionamento interno: +@rinternals{VerticalAxisGroup}. + + +@node Spaziatura dei righi raggruppati +@unnumberedsubsubsec Spaziatura dei righi raggruppati +@translationof Spacing of grouped staves + +Nelle partiture orchestrali e in alte grosse partiture, di norma i righi +vengono raggruppati. Lo spazio tra i gruppi è più ampio dello spazio +tra i righi dello stesso gruppo. + +I @emph{gruppi di righi} (come @code{StaffGroup}, @code{ChoirStaff}, +etc.) sono contesti che possono contenere uno o più righi +simultaneamente. + +Le seguenti proprietà influenzano la spaziatura dei righi nei gruppi: + +@itemize +@item Proprietà di @code{VerticalAxisGroup}: +@itemize +@item @code{staff-staff-spacing} +@end itemize +@item Proprietà di @code{StaffGrouper}: +@itemize +@item @code{staff-staff-spacing} +@item @code{staffgroup-staff-spacing} +@end itemize +@end itemize + +Queste proprietà dei grob sono descritte una a una in una sezione precedente; vedi +@ref{Within-system spacing properties}. + +L'esempio seguente mostra come le proprietà del grob +@code{StaffGrouper} possano influenzare la spaziatura dei righi raggruppati: + +@lilypond[verbatim,quote,staffsize=16] +\layout { + \context { + \Score + \override StaffGrouper.staff-staff-spacing.padding = #0 + \override StaffGrouper.staff-staff-spacing.basic-distance = #1 + } +} + +<< + \new PianoStaff \with { + \override StaffGrouper.staffgroup-staff-spacing.basic-distance = #20 + } << + \new Staff { c'1 } + \new Staff { c'1 } + >> + + \new StaffGroup << + \new Staff { c'1 } + \new Staff { c'1 } + >> +>> +@end lilypond + +@seealso +File installati: +@file{scm/define-grobs.scm}. + +Frammenti: +@rlsr{Spacing}. + +Guida al funzionamento interno: +@rinternals{VerticalAxisGroup}, +@rinternals{StaffGrouper}. + + +@node Spaziatura delle linee che non sono righi +@unnumberedsubsubsec Spaziatura delle linee che non sono righi +@translationof Spacing of non-staff lines + +Le @emph{linee che non sono righi} (come @code{Lyrics}, @code{ChordNames}, +etc.) sono contesti i cui oggetti della formattazione sono disposti come se +fossero su dei righi (ovvero su linee orizzontali all'interno dei sistemi). +Precisamente, le linee che non sono righi sono contesti non-rigo che contengono +l'incisore @rinternals{Axis_group_engraver}. + +Le seguenti proprietà influenzano la spaziatura delle linee che non sono righi: + +@itemize +@item Proprietà di @code{VerticalAxisGroup}: +@itemize +@item @code{staff-affinity} +@item @code{nonstaff-relatedstaff-spacing} +@item @code{nonstaff-nonstaff-spacing} +@item @code{nonstaff-unrelatedstaff-spacing} +@end itemize +@end itemize + +Queste proprietà del grob sono descritte una a una in una sezione +precedente, vedi @ref{Within-system spacing properties}. + +L'esempio seguente mostra come la proprietà +@code{nonstaff-nonstaff-spacing} influenza la spaziatura di linee +che non sono un rigo consecutive. Impostando l'elemento +@code{stretchability} su un valore molto alto, il testo vocale +riesce a allungarsi molto più del solito: + +@lilypond[verbatim,quote,staffsize=16] +\layout { + \context { + \Lyrics + \override VerticalAxisGroup.nonstaff-nonstaff-spacing.stretchability = #1000 + } +} + +\new StaffGroup +<< + \new Staff \with { + \override VerticalAxisGroup.staff-staff-spacing = #'((basic-distance . 30)) + } { c'1 } + \new Lyrics \with { + \override VerticalAxisGroup.staff-affinity = #UP + } \lyricmode { up } + \new Lyrics \with { + \override VerticalAxisGroup.staff-affinity = #CENTER + } \lyricmode { center } + \new Lyrics \with { + \override VerticalAxisGroup.staff-affinity = #DOWN + } \lyricmode { down } + \new Staff { c'1 } +>> +@end lilypond + +@seealso +File installati: +@file{ly/engraver-init.ly}, +@file{scm/define-grobs.scm}. + +Frammenti: +@rlsr{Spacing}. + +@c @lsr{spacing,page-spacing.ly}, +@c @lsr{spacing,alignment-vertical-spacing.ly}. + +Guida al funzionamento interno: +@rinternals{Contexts}, +@rinternals{VerticalAxisGroup}. + + +@node Posizionamento esplicito di righi e sistemi +@subsection Posizionamento esplicito di righi e sistemi +@translationof Explicit staff and system positioning + +Un modo per comprendere i meccanismi di spaziatura verticale +appena spiegati è di considerarli come un insieme di impostazioni +che regolano la quantità di @emph{padding} verticale tra righi +e tra sistemi. + +È possibile gestire la spaziatura verticale in un modo diverso +usando @code{NonMusicalPaperColumn.line-break-system-details}. +Mentre i meccanismi di spaziatura verticale flessibile specificano +il padding verticale, @code{NonMusicalPaperColumn.line-break-system-details} +indica precisamente le posizioni verticali esatte sulla pagina. + +@code{NonMusicalPaperColumn.line-break-system-details} accetta una +lista associativa di tre diverse impostazioni: + +@itemize +@item @code{X-offset} +@item @code{Y-offset} +@item @code{alignment-distances} +@end itemize + +Le modifiche del grob con @code{\override}, incluse quelle per @code{NonMusicalPaperColumn} +come nell'esempio successivo, possono trovarsi in uno di questi tre diversi +punti del file di input: + +@itemize +@item direttamente in mezzo alle note +@item in un blocco @code{\context} +@item nel blocco @code{\with} +@end itemize + +Quando si modifica @code{NonMusicalPaperColumn}, si usa il solito +comando @code{\override} nei blocchi @code{\context} e nel blocco +@code{\with}. Invece quando si modifica +@code{NonMusicalPaperColumn} in mezzo alle note, +si usa il comando speciale @code{\overrideProperty}. Ecco alcuni +esempi di modifiche di @code{NonMusicalPaperColumn} col comando +speciale @code{\overrideProperty}: + +@example +\overrideProperty NonMusicalPaperColumn.line-break-system-details + #'((X-offset . 20)) + +\overrideProperty NonMusicalPaperColumn.line-break-system-details + #'((Y-offset . 40)) + +\overrideProperty NonMusicalPaperColumn.line-break-system-details + #'((X-offset . 20) + (Y-offset . 40)) + +\overrideProperty NonMusicalPaperColumn.line-break-system-details + #'((alignment-distances . (15))) + +\overrideProperty NonMusicalPaperColumn.line-break-system-details + #'((X-offset . 20) + (Y-offset . 40) + (alignment-distances . (15))) +@end example + +Per comprendere come funziona ognuna di queste impostazioni, iniziamo +vedendo un esempio che non contiene alcuna modifica. + +@c \book { } is required in these examples to ensure the spacing +@c overrides can be seen between systems. -np + +@lilypond[verbatim,quote,staffsize=16] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + s1*5 \break + s1*5 \break + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new Staff { + \repeat unfold 15 { d'4 d' d' d' } + } + >> + } +} +@end lilypond + +Questa partitura isola l'informazione sulle interruzioni di linea e di pagina +in una voce apposita. Questa tecnica di creare una voce per le interruzioni +permette di tenere la formattazione separata dalla musica via via che il +nostro esempio diventa più complicato. Vedi @ref{Breaks}. + +I @code{\break} espliciti dividono proporzionalmente la musica in cinque +misure per linea. La spaziatura verticale è quella predefinita di +LilyPond. Per impostare esplicitamente il punto di inizio verticale di +ogni sistema, possiamo impostare la coppia @code{Y-offset} dell'attributo +@code{line-break-system-details} del grob @code{NonMusicalPaperColumn}: + +@lilypond[verbatim,quote,staffsize=16] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((Y-offset . 0)) + s1*5 \break + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((Y-offset . 40)) + s1*5 \break + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((Y-offset . 60)) + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new Staff { + \repeat unfold 15 { d'4 d' d' d' } + } + >> + } +} +@end lilypond + +Nota che @code{line-break-system-details} accetta una lista associativa di +molti valori, ma ne abbiamo impostato solo uno in questo esempio. Nota +anche che la proprietà @code{Y-offset} qui determina la posizione verticale +esatta sulla pagina in cui ogni nuovo sistema verrà visualizzato. + +Ora che abbiamo impostato esplicitamente il punto di inizio verticale di +ogni sistema, possiamo impostare manualmente anche le distanze verticali +tra i righi. Per farlo usiamo la sottoproprietà @code{alignment-distances} +di @code{line-break-system-details}. + +@lilypond[verbatim,quote,staffsize=16] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((Y-offset . 20) + (alignment-distances . (10))) + s1*5 \break + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((Y-offset . 60) + (alignment-distances . (15))) + s1*5 \break + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((Y-offset . 85) + (alignment-distances . (20))) + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new Staff { + \repeat unfold 15 { d'4 d' d' d' } + } + >> + } +} +@end lilypond + +Nota che qui assegnamo due valori diversi all'attributo +@code{line-break-system-details} del grob +@code{NonMusicalPaperColumn}. Sebbene l'attributo alist +@code{line-break-system-details} accetti molti altri parametri di +spaziatura (inclusa, per esempio, una coppia corrispondente +di @code{X-offset}), è sufficiente impostare soltanto le coppie @code{Y-offset} +e @code{alignment-distances} per regolare il punto di inizio verticale di +ogni sistema e ogni rigo. Infine nota che @code{alignment-distances} +specifica il posizionamento verticale dei righi ma non dei gruppi di righi. + +@lilypond[verbatim,quote,staffsize=16] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((Y-offset . 0) + (alignment-distances . (30 10))) + s1*5 \break + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((Y-offset . 60) + (alignment-distances . (10 10))) + s1*5 \break + \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details + #'((Y-offset . 100) + (alignment-distances . (10 30))) + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new StaffGroup << + \new Staff { \repeat unfold 15 { d'4 d' d' d' } } + \new Staff { \repeat unfold 15 { e'4 e' e' e' } } + >> + >> + } +} +@end lilypond + +Alcuni punti da considerare: + +@itemize +@item Quando si usa @code{alignment-distances}, il testo vocale e altre linee +che non sono righi non contano come rigo. + +@item Le unità dei numeri assegnati a @code{X-offset}, +@code{Y-offset} e @code{alignment-distances} sono interpretati come +multipli della distanza tra linee del rigo adiacenti. Valori positivi +spostano in su righi e testo, valori negativi li spostano in giù. + +@item Dato che le impostazioni di @code{NonMusicalPaperColumn.line-break-system-details} +illustrate qui permettono il posizionamento di righi e sistemi ovunque +sulla pagina, è possibile violare i confini del foglio o dei margini o +perfino sovrapporre righi e sistemi uno sopra l'altro. Ciò può essere +evitato assegnando valori ragionevoli a queste diverse impostazioni. +@end itemize + +@seealso +Frammenti: +@rlsr{Spacing}. + + +@node Elusione delle collisioni verticali +@subsection Elusione delle collisioni verticali +@translationof Vertical collision avoidance + +@funindex outside-staff-priority +@funindex outside-staff-padding +@funindex outside-staff-horizontal-padding + +Intuitivamente, ci sono alcuni oggetti della notazione musicale che +appartengono al rigo e altri che devono essere disposti fuori dal +rigo. Gli oggetti esterni al rigo comprendono i numeri di chiamata, +il testo e le dinamiche (d'ora in avanti tutti questi elementi saranno +chiamati oggetti esterni al rigo). La regola di LilyPond per il +posizionamento verticale degli oggetti esterni al rigo è di disporli +il più vicino possibile al rigo ma non così vicino da farli collidere +con un altro oggetto. + +LilyPond usa la proprietà @code{outside-staff-priority} per determinare +se un grob è un oggetto fuori dal rigo: se @code{outside-staff-priority} +è un numero, il grob è un oggetto esterno al rigo. @code{outside-staff-priority} +indica a LilyPond anche in quale ordine disporre gli oggetti. + +LilyPond posiziona prima tutti gli oggetti che non sono esterni al +rigo. Quindi ordina gli oggetti esterni al rigo in base al loro valore +di @code{outside-staff-priority} (in ordine crescente). Uno per volta, LilyPond +prende gli oggetti esterni al rigo e li dispone in modo che non entrino in +collisione con alcun oggetto che sia già stato disposto. Ovvero, se due +grob esterni al rigo si contendono lo stesso spazio, quello col valore +di @code{outside-staff-priority} più basso sarà posto più vicino al rigo. + +@lilypond[quote,ragged-right,verbatim] +\relative c'' { + c4_"Testo"\pp + r2. + \once \override TextScript.outside-staff-priority = #1 + c4_"Testo"\pp % stavolta il testo sarà più vicino al rigo + r2. + % impostando outside-staff-priority su un non-numero, + % disabilitiamo l'elusione automatica delle collisioni + \once \override TextScript.outside-staff-priority = ##f + \once \override DynamicLineSpanner.outside-staff-priority = ##f + c4_"Testo"\pp % qui entrano in collisione +} +@end lilypond + +Il padding verticale intorno agli oggetti esterni al rigo +può essere regolato con @code{outside-staff-padding}. + +@lilypond[quote,ragged-right,verbatim,staffsize=18] +\relative { + \once \override TextScript.outside-staff-padding = #0 + a'4-"outside-staff-padding = #0" + \once \override TextScript.outside-staff-padding = #3 + d-"outside-staff-padding = #3" + c-"outside-staff-padding predefinito" + b-"outside-staff-padding predefinito" + R1 +} +@end lilypond + + +Per impostazione predefinita, gli oggetti esterni al rigo sono disposti +in modo da evitare la collisione orizzontale con grob posizionati +precedentemente. Ciò può portare a situazioni in cui gli oggetti +sono posizionati uno vicino all'altro orizzontalmente. +Come è dimostrato nell'esempio successivo, impostando @code{outside-staff-horizontal-padding} +si aumenta la spaziatura orizzontale richiesta e in questo caso si sposta +in su il testo per impedire che si avvicini troppo ai tagli addizionali. + +@lilypond[quote,ragged-right,verbatim] +\relative { + c''4^"Parola" c c''2 + R1 + \once \override TextScript.outside-staff-horizontal-padding = #1 + c,,4^"Parola" c c''2 +} +@end lilypond + +@seealso +Frammenti: +@rlsr{Spacing}. + + +@node Spaziatura orizzontale +@section Spaziatura orizzontale +@translationof Horizontal spacing + +@cindex spaziatura orizzontale +@cindex orizzontale, spaziatura + +@menu +* Panoramica sulla spaziatura orizzontale:: +* Nuova spaziatura nel corso di un brano:: +* Modifica della spaziatura orizzontale:: +* Larghezza della linea:: +* Notazione proporzionale:: +@end menu + + +@node Panoramica sulla spaziatura orizzontale +@subsection Panoramica sulla spaziatura orizzontale +@translationof Horizontal spacing overview + +Il motore della spaziatura traduce le differenze delle durate delle +note in distanze allungabili (@q{springs}) di diversa lunghezza. Durate +più lunghe occupano più spazio, quelle più brevi ne occupano meno. +Le durate più brevi occupano una quantità fissa di spazio (regolata da +@code{shortest-duration-space} nell'oggetto @rinternals{SpacingSpanner}). +Più lunga è la durata, più spazio occupa: raddoppiando una durata +si aggiunge spazio alla nota di una quantità pari al valore di +@code{spacing-increment}. + +Per esempio, il brano seguente contiene molte minime, semiminime e +crome; la croma (1/8) è seguita da 1 Larghezza della Testa di Nota (LTN). +La semiminima (1/4) è seguita da 2 LTN, la minima (1/2) da 3 LTN, etc. + +@lilypond[quote,verbatim] +\relative c' { + c2 c4. c8 + c4. c8 c4. c8 + c8 c c4 c c +} +@end lilypond + +Solitamente, @code{spacing-increment} è impostato su 1.2 di spazio rigo, che +equivale all'incirca alla larghezza della testa di nota, e +@code{shortest-duration-space} è impostato su 2.0, che significa che +la nota più breve occupa 2.4 di spazio rigo (2 volte @code{spacing-increment}) +di spazio orizzontale. Questo spazio è calcolato dal margine sinistro +del simbolo, dunque le note più brevi sono generalmente seguite da +un LTN di spazio. + +Se si seguisse esattamente la procedura descritta, aggiungendo una +sola biscroma (1/32) a un brano che usa solo crome e semicrome, la +spaziatura orizzontale dell'intero brano sarebbe troppo larga. Infatti +la nota più breve non è più una semicroma ma una biscroma, aggiungendo +quindi 1 LTN a ogni nota. Per impedire ciò, la durata più breve per +la spaziatura non è la nota più breve, bensì la che ricorre più +frequentemente nel brano. + +La durata più breve più comune viene individuata nel modo seguente. In ogni +misura viene determinata la durata più breve e quella più frequente viene +scelta come base per la spaziatura, con la condizione che tale durata debba +essere sempre uguale o inferiore a una nota di un ottavo. + +Tali durate possono anche essere personalizzate. Impostando +@code{common-shortest-duration} in @rinternals{SpacingSpanner}, si +imposta la durata di base per la spaziatura. La durata massima per +essa (solitamente un ottavo), si imposta con @code{base-shortest-duration}. + +@funindex common-shortest-duration +@funindex base-shortest-duration +@funindex stem-spacing-correction +@funindex spacing + +Note ancora più brevi della nota più breve più comune sono seguite +da uno spazio proporzionale alla loro durata rispetto a essa. Dunque +se aggiungessimo solo alcuni sedicesimi all'esempio precedente, sarebbero +seguiti dalla metà di LTN: + +@lilypond[quote,verbatim] +\relative { c''2 c4. c8 | c4. c16[ c] c4. c8 | c8 c c4 c c } +@end lilypond + + +Nel saggio @emph{Essay on automated music engraving}, è spiegato che +le direzioni del gambo influenzano la spaziatura (vedi +@ressay{Optical spacing}). Ciò è regolato dalla proprietà +@code{stem-spacing-correction} nell'oggetto +@rinternals{NoteSpacing}. Questi oggetti sono generati per ogni +contesto @rinternals{Voice}. L'oggetto @code{StaffSpacing} +(generato nel contesto @rinternals{Staff}) contiene la stessa +propreità per regolare la spaziatura tra gambo e stanghetta. L'esempio +seguente mostra queste correzioni, una volta con le impostazioni predefinite +e una volta con correzioni esagerate: + +@lilypond[quote,ragged-right] +\fixed c' { + c4 e'4 e4 b4 | + b4 e'4 b4 e'4 | + \override Staff.NoteSpacing.stem-spacing-correction = #1.5 + \override Staff.StaffSpacing.stem-spacing-correction = #1.5 + c4 e'4 e4 b4 | + b4 e'4 b4 e'4 | +} +@end lilypond + +LilyPond supporta la notazione proporzionale, vedi @ref{Proportional notation}. + +@seealso +Essay on automated music engraving: +@ressay{Optical spacing}. + +Frammenti: +@rlsr{Spacing}. + +Guida al funzionamento interno: +@rinternals{SpacingSpanner}, +@rinternals{NoteSpacing}, +@rinternals{StaffSpacing}, +@rinternals{NonMusicalPaperColumn}. + +@knownissues +Non esiste un modo semplice per modificare manualmente la spaziatura. Per +aggirare il problema si può inserire dell'ulteriore spazio in una partitura, +regolando il valore di padding di quanto è necessario: + +@example + \override Score.NonMusicalPaperColumn.padding = #10 +@end example + +Non esiste alcun trucco per diminuire la quantità di spazio. + + +@c traduzione del titolo non letterale ma più chiara +@node Nuova spaziatura nel corso di un brano +@subsection Nuova spaziatura nel corso di un brano +@translationof New spacing area + +@funindex \newSpacingSection +@cindex nuova spaziatura nel corso di un brano +@cindex spaziatura nuova nel corso di un brano +@cindex note, spaziatura orizzontale + +Nuove sezioni con parametri di spaziatura diversi possono essere iniziati +con @code{newSpacingSection}. Ciò può essere utile quando ci sono sezioni +con nozioni diverse di note lunghe e brevi. + +Nell'esempio seguente, il cambio di indicazione di tempo introduce una +nuova sezione, quindi i sedicesimi hanno automaticamente una spaziatura +un po' più larga. + +@lilypond[verbatim,quote] +\relative c' { + \time 2/4 + c4 c8 c + c8 c c4 c16[ c c8] c4 + \newSpacingSection + \time 4/16 + c16[ c c8] +} +@end lilypond + +Il comando @code{\newSpacingSection} crea un nuovo oggetto +@code{SpacingSpanner} in quel momento musicale. +Se gli aggiustamenti automatici della spaziatura non producono la +spaziatura richiesta, si possono applicare degli @code{\override} +manuali alle sue proprietà. Questi devono essere applicati nello +stesso momento musicale del comando @code{\newSpacingSection} stesso. +Avranno effetto sulla spaziatura di tutta la musica seguente finché +le proprietà non vengono cambiate in una nuova sezione. Per esempio: + +@lilypond[verbatim,quote] +\relative c' { + \time 4/16 + c16[ c c8] + \newSpacingSection + \override Score.SpacingSpanner.spacing-increment = #2 + c16[ c c8] + \newSpacingSection + \revert Score.SpacingSpanner.spacing-increment + c16[ c c8] +} +@end lilypond + + +@seealso +Frammenti: +@rlsr{Spacing}. + +Guida al funzionamento interno: +@rinternals{SpacingSpanner}. + + +@node Modifica della spaziatura orizzontale +@subsection Modifica della spaziatura orizzontale +@translationof Changing horizontal spacing + +La spaziatura orizzontale può essere modificata tramite la proprietà +@code{base-shortest-duration}. Nel prossimo esempio confrontiamo +la stessa musica, prima senza cambiare la proprietà e poi cambiandola. +Valori più grandi di @code{ly:make-moment} produrranno musica più densa. +Nota che @code{ly:make-moment} constituisce una durata, dunque +@code{1 4} è una durata più lunga di @code{1 16}. + +@lilypond[verbatim,line-width=12\cm] +\score { + \relative { + g'4 e e2 | f4 d d2 | c4 d e f | g4 g g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + d4 d d d | d4 e f2 | e4 e e e | e4 f g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + } +} +@end lilypond + +@lilypond[verbatim,line-width=12\cm] +\score { + \relative { + g'4 e e2 | f4 d d2 | c4 d e f | g4 g g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + d4 d d d | d4 e f2 | e4 e e e | e4 f g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + } + \layout { + \context { + \Score + \override SpacingSpanner.base-shortest-duration = #(ly:make-moment 1/16) + } + } +} +@end lilypond + + +@snippets + +L'impostazione predefinita prevede che la spaziatura nei gruppi irregolari +dipenda da vari fattori diversi dalla durata (come alterazioni, cambi di +chiave, etc). Per ignorare tali simboli e forzare la spaziatura perché +sia uniforme, usare @code{Score.SpacingSpanner.uniform-stretching}. Questa +proprietà può essere modificata soltanto all'inizio di una partitura: + +@lilypond[quote,ragged-right,verbatim] +\score { + << + \new Staff { + \tuplet 5/4 { c8 c c c c } c8 c c c + } + \new Staff { + c8 c c c \tuplet 5/4 { c8 c c c c } + } + >> + \layout { + \context { + \Score + \override SpacingSpanner.uniform-stretching = ##t + } + } +} +@end lilypond + +Se si imposta @code{strict-note-spacing}, la spaziatura tra le note non tiene +conto di chiavi, stanghette e abbellimenti: + +@lilypond[quote,ragged-right,fragment,verbatim] +\override Score.SpacingSpanner.strict-note-spacing = ##t +\new Staff \relative { + c''8[ c \clef alto c \grace { c16 c } c8 c c] c32[ c] } +@end lilypond + +@seealso +Frammenti: +@rlsr{Spacing}. + + +@node Larghezza della linea +@subsection Larghezza della linea +@translationof Line width + +@cindex interruzioni di pagina +@cindex pagina, interruzioni + +@funindex indent +@funindex line-width +@funindex ragged-right +@funindex ragged-last + +@c Although line-width can be set in \layout, it should be set in paper +@c block, to get page layout right. +@c Setting indent in \paper block makes not much sense, but it works. + +@c Bit verbose and vague, use examples? +Le impostazioni fondamentali che influenzano la spaziatura sono @code{indent} e +@code{line-width}, impostate nel blocco @code{\layout}. Regolano l'indentazione +della prima linea musicale e la lunghezza delle linee. + +Se @code{ragged-right} è impostato su vero nel blocco @code{\layout}, i sistemi +terminano alla loro naturale lunghezza orizzontale, invece di essere espansi +orizzontalmente per riempire tutta la linea. Ciò è utile in caso di brevi +frammenti e per verificare quanto è compatta la spaziatura naturale. L'impostazione +predefinita è solitamente falso, ma se la partitura ha un solo sistema il +valore predefinito è vero. + +@cindex formattazione della pagina +@cindex spaziatura verticale +@cindex verticale, spaziatura + +L'opzione @code{ragged-last} è simile a @code{ragged-right}, ma ha effetto +soltanto sull'ultima linea del brano. Nessune restrizioni vengono poste su +quella linea. Il risultato è simile alla formattazione dei paragrafi di testo. +In un paragrafo l'ultima linea occupa la sua naturale lunghezza orizzontale. +@c Note that for text there are several options for the last line. +@c While Knuth TeX uses natural length, lead typesetters use the same +@c stretch as the previous line. eTeX uses \lastlinefit to +@c interpolate between both these solutions. + +@example +\layout @{ + indent = #0 + line-width = #150 + ragged-last = ##t +@} +@end example + +@seealso +Frammenti: +@rlsr{Spacing}. + + +@node Notazione proporzionale +@subsection Notazione proporzionale +@translationof Proportional notation + +LilyPond supporta la notazione proporzionale, un tipo di spaziatura orizzontale +in cui ogni nota occupa una quantità di spazio orizzontale esattamente +equivalente alla sua durata musicale. Questo tipo di spaziatura proporzionale +può essere paragonata alla spaziatura orizzontale su carta quadrettata. Alcune +partiture della fine del ventesimo secolo e dell'inizio del ventunesimo usano +la notazione proporzionale per chiarire relazioni ritmiche complesse o per +agevolare il posizionamento della linea del tempo o di altri elementi +grafici direttamente nella partitura. + +LilyPond supporta cinque diverse impostazioni per la notazione proporzionale, +che possono essere usate insieme o da sole: + +@itemize +@item @code{proportionalNotationDuration} +@item @code{uniform-stretching} +@item @code{strict-note-spacing} +@item @code{\remove "Separating_line_group_engraver"} +@item @code{\override PaperColumn.used = ##t} +@end itemize + +Nell'esempio seguente analizziamo queste cinque diverse impostazioni di +notazione proporzionale e valutiamo come esse interagiscono tra loro. + +Iniziamo con l'esempio seguente di una misura, che usa la spaziatura +classica con la giustificazione del rigo disattivata. + +@c The initial pitch is not necessary as long as RhythmicStaff is +@c not preceded by other material in the score, but we don't want +@c to explain that. +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } + } + >> +} +@end lilypond + +La minima all'inizio della misura occupa uno spazio molto inferiore alla metà +dello spazio orizzontale della misura. Ugualmente, i sedicesimi e le quintine +di sedicesimi alla fine della battuta insieme occupano molto più spazio della +metà dello spazio orizzontale della misura. + +Nell'incisione tipografica classica, questa spaziatura è solitamente proprio +ciò che si desidera, perché è possibile prendere in prestito dello spazio +orizzontale dalla minima e economizzare lo spazio orizzontale complessivo +della misura. + +D'altra parte, se vogliamo inserire una linea del tempo con tacche o altri +elementi grafici sopra o sotto la partitura, abbiamo bisogno della notazione +proporzionale. Per attivarla si usa l'impostazione proportionalNotationDuration. + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1/20) + } + } +} +@end lilypond + +La minima all'inizio della misura e le note più veloci nella seconda +metà della misura ora occupano la stessa quantità di spazio orizzontale. +Potremmo inserire una linea del tempo con tacche o un'immagine +grafica sopra o sotto questo esempio. + +L'impostazione @code{proportionalNotationDuration} è un'impostazione di +contesto che si trova in @code{Score}. Ricordiamo che le impostazioni di +contesto possono apparire in tre luoghi del file di input: in un blocco +@code{\with}, in un blocco @code{\context} o direttamente in mezzo alle +note preceduta dal comando @code{\set}. Come per tutte le impostazioni di +contesto, l'utente può scegliere in quale di questi tre luoghi impostare +@code{proportionalNotationDuration}. + +L'impostazione @code{proportionalNotationDuration} prende un solo argomento, +che è la durata di riferimento in base alla quale tutta la musica verrà +spaziata. La funzione Scheme di LilyPond @code{make-moment} prende due +argomenti: un numeratore e un denominatore che insieme esprimono una qualche +frazione di una nota intera. La funzione di chiamata @code{(ly:make-moment 1/20)} +produce quindi una durata di riferimento di un ventesimo di nota. Sono ammessi +anche valori come @code{(ly:make-moment 1/16)}, @code{(ly:make-moment 1/8)} e +@code{(ly:make-moment 3/97)}. + +Come scegliamo la durata di riferimento corretta da passare a +@code{proportionalNotationDuration}? Solitamente attraverso un processo di +prova e errore, iniziando con una durata vicina alla più veloce (o piccola) +durata del brano. Durate di riferimento più piccole determinano una spaziatura +della musica più larga; quelle più grandi causano una spaziatura più stretta. + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1/8) + } + } +} + +\score { + << + \new RhythmicStaff { + c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1/16) + } + } +} + +\score { + << + \new RhythmicStaff { + c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1/32) + } + } +} +@end lilypond + +Nota che una durata di riferimento troppo grande -- come la nota di +un ottavo, sopra -- determina una spaziatura della musica troppo stretta +e può causare collisioni tra le teste di nota. Fare attenzione anche al +fatto che la notazione proporzionale in generale occupa più spazio orizzontale +della spaziatura classica. Insomma, la spaziatura proporzionale fornisce +chiarezza ritmica al costo dello spazio orizzontale. + +Ora vediamo come spaziare in modo ottimale i gruppi irregolari sovrapposti. + +Iniziamo esaminando cosa succede al nostro esempio di partenza, con la +spaziatura classica, quando aggiungiamo un secondo rigo con un diverso +tipo di gruppo irregolare. + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } + } + \new RhythmicStaff { + \tuplet 9/8 { c8 8 8 8 8 8 8 8 8 } + } + >> +} +@end lilypond + +La spaziatura è pessima perché le note del rigo inferiore spaziate a distanze +uguali non si allungano in modo uniforme. Le incisioni classiche contengono +pochissime terzine complesse e quindi le regole di incisione classica possono +generare questo tipo di risultato. Impostando @code{proportionalNotationDuration} +ciò viene corretto. + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } + } + \new RhythmicStaff { + \tuplet 9/8 { c8 8 8 8 8 8 8 8 8 } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1/20) + } + } +} +@end lilypond + +Ma se osserviamo con attenzione possiamo vedere che le note della seconda +metà della nonina hanno una spaziatura leggermente più larga delle note +della prima parte della nonina. Per assicurare un allungamento uniforme, +attiviamo @code{uniform-stretching}, una proprietà di +@code{SpacingSpanner}. + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } + } + \new RhythmicStaff { + \tuplet 9/8 { c8 8 8 8 8 8 8 8 8 } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1/20) + \override SpacingSpanner.uniform-stretching = ##t + } + } +} +@end lilypond + +Il nostro esempio di due righi ora ha una spaziatura esatta, le relazioni +ritmiche sono visivamente chiare e possiamo includere una linea del tempo +con tacche o altro elemento grafico, se lo vogliamo. + +Nota che la notazione proporzionale di LilyPond si aspetta che tutte le +partiture proporzionali impostino l'attributo 'uniform-stretching di +SpacingSpanner su @code{##t}. Impostare proportionalNotationDuration senza +impostare anche l'attributo 'uniform-stretching di SpacingSpanner su +@code{##t} farà sì, per esempio, che le pause invisibili occupino una quantità +scorretta di spazio orizzontale. + +SpacingSpanner è un grob astratto che si trova nel contesto Score. +Come per le impostazioni di proportionalNotationDuration, le modifiche +@code{\override} a SpacingSpanner si possono trovare in uno dei tre diversi +punti del file di input – nel blocco \with del brano, nel blocco \context +del brano o direttamente in mezzo alle note. + +Per impostazione predefinita, esiste un solo @code{SpacingSpanner} per +@code{Score}. Ciò significa che @code{uniform-stretching} è attivato o +disattivato per l'intera partitura. Possiamo tuttavia modificare tale +comportamento e attivare diverse funzionalità di spaziatura in punti +diversi del brano. Per farlo si usa il comando @code{\newSpacingSection}. +Maggiori informazioni in @ref{New spacing area}. + +Ora esaminiamo gli effetti dell'incisore @code{Separating_line_group_engraver} e +vediamo perché le partiture proporzionali solitamente tolgano questo incisore. +L'esempio seguente mostra che c'è un piccolo spazio @qq{introduttivo} proprio +prima della prima nota di ogni sistema. + +@lilypond[quote,verbatim,ragged-right] +\paper { + indent = #0 +} + +\new Staff { + c'1 + \break + c'1 +} +@end lilypond + + +L'ampiezza di questo spazio introduttivo è la stessa sia dopo un'indicazione di +tempo che dopo un'armatura di chiave o una chiave. +È l'incisore @code{Separating_line_group_engraver} a causare questo spazio. +Togliendolo lo spazio diventa zero. + +@lilypond[quote,verbatim,ragged-right] +\paper { + indent = #0 +} + +\new Staff \with { + \remove "Separating_line_group_engraver" +} { + c'1 + \break + c'1 +} +@end lilypond + +Nella notazione proporzionale gli elementi non musicali come le indicazioni di +tempo, le armature di chiave, le chiavi e le alterazioni sono problematiche. +Nessuna di queste infatti ha una durata ritmica, ma tutte occupano spazio +orizzontale. Questi problemi sono affrontati diversamente dalle varie +partiture proporzionali. + +È possibile evitare i problemi di spaziatura dovuti alle armature di +chiave semplicemente omettendole. Questa è un'opzione valida dato che +la maggior parte delle partiture proporzionali sono di musica contemporanea. +Lo stesso potrebbe valere per le indicazioni di tempo, specialmente per quelle +partiture che includono una linea del tempo o altri elementi grafici. Ma queste +partiture sono un'eccezione e la maggior parte delle partiture proporzionali +hanno almeno qualche indicazione di tempo. Le chiavi e le alterazioni sono +ancora più fondamentali. + +Dunque quali strategie adottare per spaziare elementi non musicali nel contesto +di musica proporzionale? Una valida opzione è la proprietà @code{strict-note-spacing} +di @code{SpacingSpanner}. Confrontiamo i seguenti due righi: + +@lilypond[quote,verbatim,ragged-right] +\new Staff { + \set Score.proportionalNotationDuration = #(ly:make-moment 1/16) + c''8 8 8 \clef alto d'2 2 +} + +\new Staff { + \set Score.proportionalNotationDuration = #(ly:make-moment 1/16) + \override Score.SpacingSpanner.strict-note-spacing = ##t + c''8 8 8 \clef alto d'2 2 +} +@end lilypond + +Entrambi sono proporzionali, ma la spaziatura del primo è troppo +larga a causa del cambio di chiave. La spaziatura del secondo +resta invece stretta, perché è attivato strict-note-spacing. +Attivando strict-note-spacing, la larghezza di indicazioni di tempo, +armature di chiave, chiavi e alterazioni non ha alcun ruolo +nell'algoritmo di spaziatura. + +Oltre alle impostazioni che abbiamo visto, ce ne sono altre che appaiono +frequentemente nelle partiture proporzionali, tra cui: + +@itemize +@item @code{\override SpacingSpanner.strict-grace-spacing = ##t} +@item @code{\set tupletFullLength = ##t} +@item @code{\override Beam.breakable = ##t} +@item @code{\override Glissando.breakable = ##t} +@item @code{\override TextSpanner.breakable = ##t} +@item @code{\remove "Forbid_line_break_engraver" nel contesto Voice} +@end itemize + +Queste impostazioni spaziano in modo conciso gli abbellimenti, estendono le +parentesi dei gruppi irregolari per contrassegnare i punti di inizio e di +fine del ritmo, e permettono agli elementi che si estendono orizzontalmente +di andare oltre i sistemi e le pagine. Consultare le sezioni del manuale +per queste impostazioni. + +@seealso +Guida alla notazione: +@ref{New spacing area}. + +Frammenti: +@rlsr{Spacing}. + + +@node Riduzione del numero di pagine di una partitura +@section Riduzione del numero di pagine di una partitura +@translationof Fitting music onto fewer pages + +Talvolta può capitare di avere uno o due righi su una seconda +(o terza, o quarta@dots{}) pagina. Ciò è fastidioso, specialmente +se c'è molto spazio nelle pagine precedenti. + +Quando si studiano i problemi di formattazione, uno strumento irrinunciabile +è @code{annotate-spacing}, un comando che mostra i valori delle diverse +variabili di spaziatura. Maggiori dettagli nella prossima sezione, +@ref{Displaying spacing}. + +@menu +* Visualizzare la spaziatura:: +* Modificare la spaziatura:: +@end menu + + +@node Visualizzare la spaziatura +@subsection Visualizzare la spaziatura +@translationof Displaying spacing + +@funindex annotate-spacing +@cindex spaziatura, visualizzazione della formattazione + +Per visualizzare graficamente le dimensioni delle varibili della formattazione +verticale che possono essere modificate per formattare la pagina, impostare +@code{annotate-spacing} nel blocco @code{\paper}: + +@lilypond[verbatim,quote,papersize=a6landscape] +\book { + \score { { c4 } } + \paper { annotate-spacing = ##t } +} +@end lilypond + + +@noindent +Tutte le dimensioni della formattazione sono visualizzate in spazi rigo, +indipendentemente dalle unità di misura specificate nei blocchi +@code{\paper} o @code{\layout}. Nell'esempio qui sopra, l'altezza +del foglio (@code{paper-height}) ha un valore di 59.75 spazi +rigo (@code{staff-space}), e la dimensione del rigo (@code{staff-size}) è +pari a 20 punti (il valore predefinito). Nota che: + +@multitable {1 staff-space} {staff-size)/4 * (25.4/72.27) mm} + +@item 1 punto +@tab = (25.4/72.27) mm + +@item 1 staff-space +@tab = (@code{staff-size})/4 pts +@item +@tab = (@code{staff-size})/4 * (25.4/72.27) mm + +@end multitable + +@noindent +In questo caso, uno @code{staff-space} è uguale all'incirca a +1.757mm. Dunque i 59.75 @code{staff-space} di @code{paper-height} +corrispondono a 105 millimetri, pari all'altezza del formato @code{a6} +in orientamento orizzontale. Le coppie (@var{a},@var{b}) sono +intervalli, dove @var{a} è l'estremo inferiore e @var{b} l'estremo +superiore dell'intervallo. + +@seealso +Guida alla notazione: +@ref{Setting the staff size}. + +Frammenti: +@rlsr{Spacing}. + + +@node Modificare la spaziatura +@subsection Modificare la spaziatura +@translationof Changing spacing + +L'output di @code{annotate-spacing} svela le dimensioni verticali molto +dettagliatamente. Maggiori informazioni su come modificare i margini e +altre variabili di formattazione si trovano in @ref{Page layout}. + +Oltre ai margini, ci sono altre opzioni utili per salvare spazio: + +@itemize +@item +Forzare i sistemi perché si avvicinino il più possibile (per far +entrare più sistemi possibile in una pagina) mentre sono spaziati in +modo da non lasciare spazio bianco in fondo alla pagina. + +@example +\paper @{ + system-system-spacing = #'((basic-distance . 0.1) (padding . 0)) + ragged-last-bottom = ##f + ragged-bottom = ##f +@} +@end example + +@item +Forzare il numero dei sistemi. Ciò può essere utile in due modi. Il +semplice impostare un valore, persino lo stesso valore del numero di +sistemi disposti senza modificare la variabile, può far sì che più +sistemi riescano a entrare in ogni pagina, perché viene saltato il +passaggio di valutazione, dando un valore più adatto per ogni pagina. +Inoltre, forzare davvero una riduzione nel numero di sistemi può far +risparmiare un'ulteriore pagina. Per esempio, se la formattazione +predefinita ha 11 sistemi, la seguente impostazione forzerà la +formattazione con 10 sistemi. + +@example +\paper @{ + system-count = #10 +@} +@end example + +@item +Forzare il numero delle pagine. Per esempio, la seguente impostazione +forzerà la formattazione in due pagine. + +@example +\paper @{ + page-count = #2 +@} +@end example + +@item +Evitare (o ridurre) gli oggetti che aumentano la dimensione verticale di +un sistema. Per esempio, le parentesi delle volte per i finali alternativi +richiedono ulteriore spazio. Se questi finali si estendono per due sistemi, +occupano più spazio che se fossero sullo stesso sistema. Altro esempio: le +dinamiche che @qq{spuntano fuori} da un sistema possono essere avvicinate al +rigo: + +@lilypond[verbatim,quote] +\relative e' { + e4 c g\f c + e4 c g-\tweak X-offset #-2.7 \f c +} +@end lilypond + +@item +Modificare la spaziatura orizzontale tramite @code{SpacingSpanner}. Maggiori +informazioni in @ref{Changing horizontal spacing}. L'esempio seguente mostra +la spaziatura predefinita: + +@lilypond[verbatim,quote] +\score { + \relative { + g'4 e e2 | + f4 d d2 | + c4 d e f | + g4 g g2 | + g4 e e2 | + } +} +@end lilypond + +@noindent +L'esempio successivo modifica @code{common-shortest-duration} da un +valore di @code{1/4} a uno di @code{1/2}. La nota di un quarto è la +durata più comune e più breve in questo esempio, dunque rendendola più +lunga si verifica un effetto @qq{compressione}: + +@lilypond[verbatim,quote] +\score { + \relative { + g'4 e e2 | + f4 d d2 | + c4 d e f | + g4 g g2 | + g4 e e2 | + } + \layout { + \context { + \Score + \override SpacingSpanner.common-shortest-duration = + #(ly:make-moment 1/2) + } + } +} +@end lilypond + +@noindent +La proprietà @code{common-shortest-duration} non può essere modificata in +modo dinamico, quindi deve essere sempre posta in un blocco @code{\context} +così che sia applicata all'intera partitura. + +@end itemize + +@seealso +Guida alla notazione: +@ref{Page layout}, +@ref{Changing horizontal spacing}. + +Frammenti: +@rlsr{Spacing}. + diff --git a/Documentation/it/texidocs/using-an-extra-voice-for-breaks.texidoc b/Documentation/it/texidocs/using-an-extra-voice-for-breaks.texidoc new file mode 100644 index 0000000000..0423bed69a --- /dev/null +++ b/Documentation/it/texidocs/using-an-extra-voice-for-breaks.texidoc @@ -0,0 +1,14 @@ +%% Translation of GIT committish: a51b7ab55aed341ffd8af27a357212ed7ef528b9 + texidocit = " +Spesso è più facile gestire l'informazione sulle interruzioni di linea +e di pagina tenendola separata dalla musica grazie a un'ulteriore voce +che contenga solo pause spaziatrici e i comandi +@code{\\break}, @code{\\pageBreak} e altre informazioni di formattazione. + +Questo modello diventa utile specialmente quando si modifica +@code{line-break-system-details} e altre utili ma lunghe +proprietà di @code{NonMusicalPaperColumnGrob}. + +" + doctitleit = "Usare una voce apposita per le interruzioni" +