1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
4 Translation of GIT committish: 97956152eba4292886a47c74b45bc6be5a0349e8
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. For details, see the Contributors'
8 Guide, node Updating translation committishes..
14 @node Eseguire lilypond
15 @chapter Eseguire @command{lilypond}
16 @translationof Running LilyPond
18 Questo capitolo descrive dettagliatamente gli aspetti tecnici dell'esecuzione
23 * Uso da linea di comando::
24 * Messaggi di errore::
31 @translationof Normal usage
33 La maggior parte degli utenti esegue LilyPond attraverso un'interfaccia grafica
34 (GUI); se non lo hai già fatto, leggi il @rlearning{Tutorial}. Se usi un editor
35 diverso per scrivere i file lilypond, leggi la documentazione di quel programma.
38 @node Uso da linea di comando
39 @section Uso da linea di comando
40 @translationof Command-line usage
42 Questa sezione contiene informazioni aggiuntive sull'uso di LilyPond da linea
43 di comando. Questo può essere utile per assegnare opzioni aggiuntive al programma.
44 Inoltre, ci sono alcuni programmi complementari di @q{aiuto} (come
45 @code{midi2ly}) che funzionano solo da linea di comando.
47 Con @q{linea di comando} si intende la linea di comando del sistema operativo.
48 Gli utenti Windows avranno più familiarità con i termini @q{shell DOS} o
49 @q{shell dei comandi}. Gli utenti MacOS@tie{}X avranno più familiarità con i termini
50 @q{terminale} o @q{console}. Una configurazione ulteriore è necessaria
51 per gli utenti MacOS@tie{}X; si veda @rweb{MacOS X}.
53 Descrivere come usare questa parte di un sistema operativo non rientra negli
54 obiettivi di questo manuale; si prega di consultare altra documentazione su
55 questo argomento se non si conosce la linea di comando.
58 * Utilizzo di LilyPond::
59 * Opzioni di base della linea di comando per LilyPond::
60 * Opzioni avanzate della linea di comando per LilyPond::
61 * Variabili d'ambiente::
62 * LilyPond in una gabbia chroot::
65 @node Utilizzo di LilyPond
66 @unnumberedsubsec Utilizzo di @command{lilypond}
67 @translationof Invoking LilyPond
69 L'eseguibile @command{lilypond} può essere lanciato dalla linea di comando
73 lilypond [@var{opzione}]@dots{} @var{file}@dots{}
77 Se invocato con un nome di file senza estensione, viene tentata per prima
78 l'estensione @file{.ly}. Per leggere l'input da stdin, usare un
79 trattino (@code{-}) al posto di @var{file}.
81 Quando @file{file.ly} viene elaborato, lilypond creerà @file{file.ps}
82 e @file{file.pdf} come output. Possono essere specificati molti file;
83 ognuno di essi sarà elaborato in modo indipendente. @footnote{Lo status di
84 GUILE non viene resettato dopo l'elaborazione di un file @code{.ly}:
85 attenzione a non cambiare alcun valore predefinito dall'interno di Scheme.}
87 Se @file{file.ly} contiene più di un blocco @code{\book}, allora tutte le altre
88 partiture verranno salvate in file numerati, a partire da @file{file-1.pdf}. Inoltre,
89 il valore di @code{output-suffix} (suffisso di output) sarà inserito tra la base
90 del nome del file e il numero. Un file di input che contiene
93 #(define output-suffix "violin")
95 #(define output-suffix "cello")
100 produrrà come output @var{base}@file{-violin.pdf} e
101 @var{base}@file{-cello-1.pdf}.
104 @unnumberedsubsubsec Usare LilyPond con funzionalità standard della shell
106 Dato che LilyPond è un'applicazione a linea di comando, si possono sfruttare
107 le funzionalità della @q{shell} usata per lanciare LilyPond.
116 elaborerà tutti i file LilyPond nella directory corrente.
118 Potrebbe essere utile anche redirigere l'output della console (per esempio
122 lilypond file.ly 1> stdout.txt
124 lilypond file.ly 2> stderr.txt
126 lilypond file.ly &> all.txt
130 Questi tre comandi redirigono rispettivamente l'output @q{normale}, gli
131 @q{errori} o @q{tutto} in un file di testo. Consulta la documentazione
132 della tua shell, del prompt dei comandi (Windows), delle applicazioni
133 Terminale o Console (MacOS X), per vedere se la redirezione dell'output
134 è supportata o se la sintassi è diversa.
136 L'esempio seguente cerca e elabora tutti i file di input nella directory
137 corrente e in tutte le directory inferiori ricorsivamente. I file di output
138 saranno salvati nella stessa directory in cui è stato lanciato il comando,
139 invece delle stesse directory in cui si trovano i file di input.
142 find . -name '*.ly' -exec lilypond '@{@}' \;
146 Questo comando dovrebbe funzionare anche in MacOS@tie{}X.
148 Gli utenti Windows devono lanciare questo comando:
151 forfiles /s /M *.ly /c "cmd /c lilypond @@file"
155 nel @code{prompt dei comandi}, che di solito si trova in
156 @code{Avvio > Accessori > Prompt dei comandi}, oppure, se si usa la
157 versione 8, scrivendo @q{prompt dei comandi} nella finestra di ricerca.
159 Altrimenti, si può indicare un percorso esplicito alla cartella che
160 contiene tutte le sottocartelle con i file di input tramite l'opzione
164 forfiles /s /p C:\Documents\MyScores /M *.ly /c "cmd /c lilypond @@file"
167 Tale percorso, se contiene spazi, deve essere racchiuso tra
171 forfiles /s /p "C:\Documents\My Scores" /M *.ly /c "cmd /c lilypond @@file"
175 @node Opzioni di base della linea di comando per LilyPond
176 @unnumberedsubsec Opzioni di base della linea di comando per LilyPond
177 @translationof Basic command line options for LilyPond
179 @cindex Utilizzo di @command{lilypond}
180 @cindex opzioni della linea di comando per @command{lilypond}
181 @cindex linea di comando, opzioni di
184 Sono contemplate le seguenti opzioni:
191 I file PDF generati saranno molto più grandi del normale (a causa
192 di un'ottimizzazione dei tipi di carattere scarsa o assente). Tuttavia,
193 due o più file PDF, se inclusi in documenti @w{@code{pdftex}},
194 @w{@code{xetex}} o @w{@code{luatex}}, possono essere ulteriormente
195 elaborati attraverso ghostscript (rimuovendo le duplicazioni dei dati
196 dei tipi di carattere), ottenendo così file PDF @emph{molto} più piccoli.
202 Poi eseguire @code{ghostscript};
205 gs -q -sDEVICE=pdfwrite -o gsout.pdf myfile.pdf
208 Poi si può usare @code{pdfsizeopt.py} per ottimizzare ulteriormente la
212 pdfsizeopt.py --use-multivalent=no gsout.pdf final.pdf
215 @item -d, --define-default=@var{variabile}=@var{valore}
216 Si veda @ref{Opzioni avanzate della linea di comando per LilyPond}.
218 @cindex Scheme, valutazione dell'espressione
219 @cindex valutazione dell'espressione, Scheme
221 @item -e, --evaluate=@var{espressione}
222 Valuta l'@var{espressione} di Scheme prima di analizzare qualsiasi file @file{.ly}.
223 Si possono specificare varie opzioni @option{-e}; saranno analizzate in modo
226 L'espressione sarà analizzata nel modulo @code{guile-user}, dunque se vuoi
227 usare delle definizioni in @var{espressione}, usa
230 lilypond -e '(define-public a 42)'
234 nella linea di comando, e includi
237 #(use-modules (guile-user))
241 in cima al file @code{.ly}.
243 @warning{Gli utenti Windows devono usare i doppi apici invece dei singoli apici.}
245 @cindex output, formato
246 @cindex formato, output
248 @item -f, --format=@var{formato}
249 Formati di output. Come @code{formato} si può scegliere tra
250 @code{ps}, @code{pdf} e @code{png}.
252 Esempio: @code{lilypond -fpng @var{file}.ly}
255 Per i formati @code{svg} e @code{eps} usare l'opzione @code{-dbackend}.
256 Vedi @ref{Opzioni avanzate della linea di comando per LilyPond}.
259 Mostra una sintesi dell'utilizzo.
261 @item -H, --header=@var{CAMPO}
262 Estrae un campo dell'intestazione nel file @file{NOME.@var{CAMPO}}.
264 @item -i, --init=@var{file}
265 Imposta il file di inizializzazione su @var{file} (predefinito: @file{init.ly}).
267 @cindex ricerca dei file
268 @cindex percorso di ricerca
270 @item -I, --include=@var{directory}
272 È possibile assegnare più opzioni -I. La ricerca inizierà nella prima
273 Aggiunge @var{directory} al percorso di ricerca per i file di input.
274 directory definita, e se il file da includere non viene trovato
275 la ricerca continuerà nelle directory seguenti.
277 @cindex gabbia chroot, esecuzione all'interno di
279 @item -j, --jail=@var{utente},@var{gruppo},@var{gabbia},@var{directory}
280 Esegue @command{lilypond} in una gabbia chroot.
282 L'opzione @option{--jail} fornisce un'alternativa più flessibile a
283 @option{--safe} quando la formattazione di LilyPond è messa a disposizione attraverso
284 un server web o quando LilyPond esegue sorgenti provenienti dall'esterno
285 (si veda @ref{Opzioni avanzate della linea di comando per LilyPond}).
287 L'opzione @option{--jail} modifica la radice di @command{lilypond} in
288 @var{gabbia} appena prima di iniziare il vero processo di compilazione. L'utente
289 e il gruppo vengono poi modificati per corrispondere a quelli forniti, e la
290 directory corrente viene spostata in @var{directory}. Questa configurazione
291 garantisce che non sia possibile (almeno in teoria) uscire dalla gabbia. Si noti
292 che perché @option{--jail} funzioni @command{lilypond} deve essere eseguito come root;
293 di solito questo si fa in modo sicuro col comando @command{sudo}.
295 Configurare una gabbia è una questione un po' delicata, perché bisogna essere
296 sicuri che LilyPond possa trovare tutto quello di cui ha bisogno per compilare il
297 sorgente @emph{dentro la gabbia}. Una configurazione tipica comprende i seguenti
302 @item Impostare un filesystem distinto
303 Si dovrebbe creare un filesystem separato LilyPond, così che possa essere
304 montato con opzioni di sicurezza come @code{noexec}, @code{nodev}, e
305 @code{nosuid}. In questo modo è impossibile lanciare degli eseguibili o
306 scrivere su un dispositivo direttamente da LilyPond. Se non si vuole creare
307 una partizione separata, si può creare un file di dimensioni ragionevoli e usarlo
308 per montare un dispositivo di loop. Un filesystem separato garantisce inoltre
309 che LilyPond non possa scrivere su uno spazio maggiore di quanto permesso.
311 @item Impostare un altro utente
312 Per eseguire LilyPond in una gabbia si dovrebbe usare un altro utente e gruppo
313 (ad esempio, @code{lily}/@code{lily}) con pochi privilegi. Ci dovrebbe essere
314 una sola directory scrivibile da questo utente, che dovrebbe essere passata in
317 @item Preparare la gabbia
318 LilyPond ha bisogno di leggere alcuni file quando viene lanciato. Tutti questi
319 file devono essere copiati nella gabbia, sotto lo stesso percorso in cui appaiono
320 nel vero filesystem principale. Si deve copiare l'intero contenuto dell'installazione
321 LilyPond (ad esempio, @file{/usr/share/lilypond}).
323 Se c'è un problema, il modo più semplice per individuarlo è lanciare
324 LilyPond usando @command{strace}, che permetterà di scoprire quali
327 @item Eseguire LilyPond
328 In una gabbia montata con @code{noexec} è impossibile eseguire qualsiasi
329 programma esterno. Dunque LilyPond deve essere eseguito con un backend che
330 non richieda tale programma. Come è già stato detto, deve essere eseguito
331 con privilegi di superutente (che ovviamente perderà immediatamente),
332 possibilmente con l'uso di @command{sudo}. È una buona idea limitare il
333 numero di secondi di tempo della CPU che LilyPond può usare (ad esempio con
334 @command{ulimit -t}), e, se il sistema operativo lo permette, la quantità di
335 memoria che può essere allocata. Si veda anche @ref{LilyPond in una gabbia chroot}.
339 @cindex output dettagliato
341 @item -l, --loglevel=@var{LIVELLO}
342 Imposta la verbosità dell'output della console su @var{LIVELLO}. I valori possibili sono:
346 Nessun output, nemmeno i messaggi di errore.
349 Solo i messaggi di errore, niente avvisi o messaggi di elaborazione.
352 Avvisi e messaggi di errore, nessun messaggio di elaborazione.
355 Messaggi di elaborazione di base (riuscita), avvisi e errori.
358 Tutti i messaggi di elaborazione, avvisi e errori.
360 @item INFO (predefinito)
361 Messaggi di elaborazione, avvisi, errori e ulteriori informazioni di esecuzione.
364 Tutti i messaggi possibili, incluso l'output verboso di debug.
368 @cindex directory, dirigere l'output in
369 @cindex output, impostare il nome del file
370 @cindex output, directory
372 @item -o, --output=@var{FILE} o @var{CARTELLA}
373 Imposta il file di output predefinito @var{FILE} oppure, se una cartella con
374 quel nome esiste già, dirige l'output in @var{CARTELLA}, prendendo il nome
375 del file dal file di input. In entrambi i casi verrà aggiunto il suffisso
376 appropriato (ad esempio @code{.pdf} per il pdf).
378 @cindex PS (Postscript), output
379 @cindex Postscript (PS), output
380 @cindex output, PS (Postscript)
385 @cindex PNG (Portable Network Graphics), output
386 @cindex output, PNG (Portable Network Graphics)
389 Genera immagini di ogni pagina in formato PNG. Questo implica
390 @option{--ps}. La risoluzione in DPI dell'immagine può essere impostata con
395 @cindex PDF (Portable Document Format), output
396 @cindex output, PDF (Portable Document Format)
399 Genera PDF. Questo implica @option{--ps}.
402 Mostra informazioni sulla versione.
405 Aumenta la prolissità: mostra i percorsi completi di tutti i file letti e dà
406 informazioni sui tempi.
409 Mostra la garanzia con cui viene distribuito GNU LilyPond. (Distribuito
410 con @strong{NESSUNA GARANZIA}!)
415 @node Opzioni avanzate della linea di comando per LilyPond
416 @unnumberedsubsec Opzioni avanzate della linea di comando per @command{lilypond}
417 @translationof Advanced command line options for LilyPond
421 @item -d@var{[nome-opzione]}=@var{[valore]},
422 --define-default=@var{[nome-opzione]}=@var{[valore]}
423 Imposta l'equivalente funzione interna di Scheme su @var{valore}. Per esempio:
429 Se non viene specificato un @var{valore}, viene usato il valore
430 predefinito. Per disabilitare un'opzione, si può usare il
431 prefisso @code{no-} prima di @var{nome-opzione}. Per esempio:
433 @cindex punta e clicca, linea di comando
446 @noindent Sono supportate le seguenti opzioni insieme ai loro rispettivi
449 @multitable @columnfractions .33 .16 .51
450 @item @strong{Simbolo}
452 @tab @strong{Spiegazione/Opzioni}
454 @item @code{anti-alias-factor}
456 @tab Elabora a una risoluzione più alta (usando il fattore specificato) e
457 ridimensiona il risultato per evitare gli @q{artefatti} nelle immagini @code{PNG}.
459 @item @code{aux-files}
461 @tab Crea i file @code{.tex}, @code{.texi} e @code{.count} se usata con
462 l'opzione del backend @code{eps}.
466 @tab Questa è l'impostazione predefinita. I file Postscript (predefinito)
467 includono i tipi di carattere @code{TTF}, @code{Type1} e @code{OTF}. Non
468 vengono inclusi i @qq{sottoinsiemi} di questi tipi. Se si usa un set di
469 caratteri @q{orientali}, si possono ottenere file di grosse dimensioni.
473 @tab Usata come opzione predefinita dal comando @command{lilypond-book}. Per
474 ogni pagina crea sia un singolo file con tutte le pagine e i tipi di carattere
475 inclusi sia file EPS (Encapsulated PostScript) separati per ogni pagina
476 ma senza i tipi di caratteri inclusi.
480 @tab Non genera la stampa della partitura. Produce lo stesso effetto
481 di @code{-dno-print-pages}.
485 @tab Estrae i comandi di disegno grezzi e interni, basati su Scheme.
489 @tab Scalable Vector Graphics.
490 Viene creato un singolo file SVG per ogni pagina dell'output. I glifi
491 musicali vengono tradotti in grafica vettoriale, ma i tipi di carattere
492 del testo @emph{non} sono incorporati nei file SVG. Dunque qualsiasi
493 lettore SVG dovrà avere accesso ai tipi di carattere necessari per
494 rendere in modo adeguato il testo. Si raccomanda di non usare
495 @q{liste} o @q{alias} dei tipi di carattere se il lettore SVG non è
496 in grado di gestirli. Se si usano i file @emph{Web Open Font Format} (WOFF),
497 è richiesta anche l'opzione @code{svg-woff}.
499 @item @code{check-internal-types}
501 @tab Controlla l'assegnazione di ogni proprietà per i tipi.
503 @item @code{clip-systems}
505 @tab Estrae frammenti musicali da una partitura. Per far ciò è necessario
506 che sia stata definita la funzione @code{clip-regions} all'interno del blocco
507 @code{\layout}. Maggiori informazioni in @ruser{Estrarre frammenti musicali}.
508 Nessun frammento verrà estratto se questa opzione è usata insieme
509 all'opzione @option{-dno-print-pages}.
513 @tab Prefisso per i file di dati (sola lettura).
515 @item @code{debug-gc}
517 @tab Scarica le statistiche sul debug della memoria.
519 @item @code{debug-gc-assert-parsed-dead}
521 @tab Per il debug della memoria: Assicura che tutti i riferimenti agli oggetti
522 analizzati siano eliminati. Questa è un'opzione interna e viene abilitata
523 automaticamente da @code{`-ddebug-gc'}.
525 @item @code{debug-lexer}
527 @tab Debug dell'analizzatore lessicale flex.
529 @item @code{debug-page-breaking-scoring}
531 @tab Crea le partiture per diverse configurazioni di interruzione di pagina.
533 @item @code{debug-parser}
535 @tab Debug dell'analizzatore bison.
537 @item @code{debug-property-callbacks}
539 @tab Debug delle catene cicliche di callback.
541 @item @code{debug-skylines}
545 @item @code{delete-intermediate-files}
547 @tab Cancella i file @code{.ps} intermedi e inutilizzabili creati durante
550 @item @code{dump-cpu-profile}
552 @tab Scarica l'informazione sui tempi (dipendente dal sistema).
554 @item @code{dump-profile}
556 @tab Scarica l'informazione sulla memoria e il tempo per ogni file.
558 @item @code{dump-signatures}
560 @tab Scarica le firme dell'output di ogni sistema. Usato per testare le regressioni.
562 @item @code{embed-source-code}
564 @tab Incorpora i file sorgente LilyPond nel documento PDF generato.
566 @item @code{eps-box-padding}
568 @tab Sposta il margine sinistro della cornice EPS dell'output della quantità
571 @item @code{font-export-dir}
573 @tab Directory per esportare i font come file PostScript.
575 @item @code{gs-load-fonts}
577 @tab Carica i font attraverso Ghostscript.
579 @item @code{gs-load-lily-fonts}
581 @tab Carica solo i font LilyPond attraverso Ghostscript.
583 @item @code{gs-never-embed-fonts}
585 @tab Fa sì che Ghostscript incorpori solo i font TrueType e nessun altro
590 @tab Esegue il programma senza stampare messaggi e redirige tutto l'output in un file di log.
594 @strong{Nota per gli utenti Windows:} Per impostazione predefinita @code{lilypond.exe}
595 stampa tutta l'informazione sull'avanzamento nella finestra dei comandi.
596 @code{lilypond-windows.exe} non lo fa e riporta un prompt, privo di
597 informazioni sull'avanzamento, subito nella linea di comando. L'opzione
598 @option{-dgui} può essere usata in questo caso per redirigere l'output in
601 @multitable @columnfractions .33 .16 .51
604 @tab Mostra questo aiuto.
606 @item @code{include-book-title-preview}
608 @tab Include i titoli dei libri nelle immagini di anteprima.
610 @item @code{include-eps-fonts}
612 @tab Include i font in file EPS con sistemi separati.
614 @item @code{include-settings}
616 @tab Include il file per le impostazioni globali, questo viene incluso prima
617 che la partitura sia elaborata.
619 @item @code{job-count}
621 @tab Elabora in parallelo, usando il dato numero di lavori.
623 @item @code{log-file}
624 @tab @code{#f [file]}
625 @tab Se la stringa @code{FOO} viene assegnata come secondo argomento,
626 redirige l'output nel file @code{FOO.log}.
628 @item @code{max-markup-depth}
630 @tab Massima profondità per la struttura del blocco markup. Se un blocco markup ha
631 più livelli, assume che non terminerà da solo, stampa un avviso e restituisce
632 al suo posto un markup vuoto.
634 @item @code{midi-extension}
636 @tab Imposta l'estensione predefinita per il file MIDI sulla stringa specificata.
638 @item @code{music-strings-to-paths}
640 @tab Converte le stringhe di testo in percorsi quando i glifi appartengono a
643 @item @code{paper-size}
645 @tab Imposta la dimensione predefinita del foglio. Nota che la stringa deve
646 essere compresa tra virgolette precedute dal segno di escape.
648 @item @code{pixmap-format}
650 @tab Imposta il formato di output di GhostScript per le immagini raster.
652 @item @code{point-and-click}
654 @tab Aggiunge i collegamenti @q{punta e clicca} all'output PDF e SVG. Si veda
655 @ref{Punta e clicca}.
659 @tab Crea immagini di anteprima oltre al normale output.
663 Questa opzione è supportata da tutti i backend; @code{pdf}, @code{png},
664 @code{ps}, @code{eps} e @code{svg}, ma non @code{scm}. Genera un file
665 di output nella forma @code{mioFile.preview.estensione}, contenente i
666 titoli e il primo sistema. Se vengono usati i blocchi @code{\book} o
667 @code{\bookpart}, i titoli di @code{\book}, @code{\bookpart} o @code{\score}
668 appariranno nell'output, incluso il primo sistema di ogni blocco @code{\score}
669 se la variabile @code{print-all-headers} di @code{\paper} è impostata
672 Per impedire il normale output, si usano le opzioni @option{-dprint-pages} o
673 @option{-dno-print-pages} in base alle proprie esigenze.
675 @multitable @columnfractions .33 .16 .51
676 @item @code{print-pages}
678 @tab Genera le pagine complete (predefinito). @option{-dno-print-pages} è
679 utile in combinazione con @option{-dpreview}.
681 @item @code{profile-property-accesses}
683 @tab Mantiene una statistica delle chiamate di funzione @code{get_property()}.
685 @item @code{protected-scheme-parsing}
687 @tab Continua se l'analizzatore coglie degli errori nel codice scheme interno
688 al file di input. Se impostato su @code{#f}, in caso di errore si ferma e
689 mostra la traccia di stack.
691 @item @code{read-file-list}
692 @tab @code{#f [file]}
693 @tab Specifica il nome di un file che contiene una lista di file di input da
696 @item @code{relative-includes}
698 @tab Quando elabora un comando @code{\include}, cerca il file incluso
699 in posizione relativa al file corrente (invece che in posizione assoluta).
701 @item @code{resolution}
703 @tab Imposta la risoluzione per generare immagini @code{PNG} su un certo
708 @tab Non si fida dell'input nel file @code{.ly}.
712 Quando la formattazione di LilyPond viene messa a disposizione tramite un server
713 web, si @b{DEVE} passare l'opzione @option{--safe} o l'opzione @option{--jail}. L'opzione
714 @option{--safe} impedirà che il codice Scheme presente nell'input possa fare uno
719 #(s ystem "rm -rf /") % troppo pericoloso per scriverlo correttamente
721 c4^$(ly:gulp-file "/etc/passwd") % malvagio ma non distruttivo
726 L'opzione @option{-dsafe} serve a valutare le espressioni Scheme presenti nell'input
727 in uno speciale modulo di sicurezza. Questo modulo di sicurezza è derivato dal
728 modulo GUILE @file{safe-r5rs}, ma aggiunge alcune funzioni del
729 LilyPond API. Queste funzioni sono elencate in @file{scm/safe-lily.scm}.
731 Inoltre, la modalità sicura non permette le direttive @code{\include} e
732 disabilita l'uso del backslash nelle stringhe @TeX{}. In modalità sicura,
733 non è possibile importare le variabili di LilyPond in Scheme.
735 @option{-dsafe} @emph{non} rileva il sovrautilizzo di risorse. È ancora possibile
736 far sì che il programma rimanga in sospeso per un tempo indefinito, ad esempio
737 alimentando il backend con strutture di dati cicliche. Dunque se si vuole usare
738 LilyPond su un server web pubblicamente accessibile, si deve limitare il processo
739 nell'uso della CPU e della memoria.
741 La modalità sicura bloccherà la compilazione di molti utili frammenti di codice
744 L'opzione @option{--jail} è un'alternativa più sicura, ma richiede più lavoro
745 per configurarla. Si veda @ref{Opzioni di base della linea di comando per LilyPond}.
747 @multitable @columnfractions .33 .16 .51
748 @item @code{separate-log-files}
750 @tab Per i file di input @code{FILE1.ly}, @code{FILE2.ly}, etc. salva i dati di
751 log nei file @code{FILE1.log}, @code{FILE2.log}, @dots{}
753 @item @code{show-available-fonts}
755 @tab Elenca i nomi di font disponibili.
757 @item @code{strict-infinity-checking}
759 @tab Forza il blocco del programma quando si incontrano eccezioni @code{Inf} e
760 @code{NaN} sui numeri in virgola mobile.
762 @item @code{strip-output-dir}
764 @tab Non usa le directory dei file di input per costruire i nomi dei file
767 @item @code{strokeadjust}
769 @tab Forza l'aggiustamento del tratto da parte di PostScript. Questa opzione
770 è utile quando il PDF è generato dall'output PostScript (l'aggiustamento
771 del tratto di solito è abilitato automaticamente per gli strumenti bitmap
772 a bassa risoluzione). Senza questa opzione, i lettori PDF tendono a
773 produrre larghezze dei gambi molto variabili alle risoluzioni tipiche
774 dei monitor. L'opzione non produce effetti visibili sulla qualità di
775 stampa e causa un notevole aumento della dimensione dei file PDF.
778 @item @code{svg-woff}
780 @tab Questa opzione è richiesta se si usano i file del formato per font Web Open
781 Font Format (WOFF) col backend SVG. Viene creato un singolo file SVG per ogni
782 pagina di output. Eccetto i glifi musicali di LilyPond, nessun altro tipo di
783 carattere verrà incorporato nel file. Dunque qualsiasi lettore SVG dovrà avere
784 accesso ai tipi di carattere per rendere in modo adeguato il testo. Si raccomanda
785 di non usare gli @q{alias} o le @q{liste} dei tipi di carattere se il lettore
786 SVG non è in grado di gestirli.
788 @item @code{trace-memory-frequency}
790 @tab Registra molte volte al secondo l'uso delle celle da parte di Scheme. Salva i
791 risultati in @code{FILE.stacks} e @code{FILE.graph}.
793 @item @code{trace-scheme-coverage}
795 @tab Registra la copertura dei file Scheme in @code{FILE.cov}.
799 @tab Output dettagliato, ovvero livello di log DEBUG (sola lettura).
801 @item @code{warning-as-error}
803 @tab Trasforma tutti i messaggi di avviso e di @q{errore di programmazione} in errori.
807 @node Variabili d'ambiente
808 @unnumberedsubsec Variabili d'ambiente
809 @translationof Environment variables
812 @cindex LILYPOND_DATADIR
814 @command{lilypond} riconosce le seguenti variabili d'ambiente:
816 @item LILYPOND_DATADIR
817 Specifica la directory predefinita in cui saranno cercati i messaggi della
818 localizzazione e i file di dati. Questa directory deve contenere
819 sottodirectory chiamate @file{ly/}, @file{ps/}, @file{tex/}, etc.
822 Determina la lingua per i messaggi di avviso.
824 @item LILYPOND_LOGLEVEL
825 Il livello di log (loglevel) predefinito. Se LilyPond viene chiamato senza un
826 livello di log esplicito (ovvero senza l'opzione @option{--loglevel} della
827 linea di comando), viene usato questo valore.
829 @item LILYPOND_GC_YIELD
830 Una variabile, in forma di percentuale, che regola il modo in cui viene gestita
831 la memoria. Con valori più alti il programma usa più memoria, con valori
832 più bassi usa più tempo della CPU. Il valore predefinito è @code{70}.
837 @node LilyPond in una gabbia chroot
838 @unnumberedsubsec LilyPond in una gabbia chroot
839 @translationof LilyPond in chroot jail
841 Configurare un server perché esegua LilyPond in una gabbia chroot è un lavoro
842 complesso. La procedura è spiegata sotto. Gli esempi si riferiscono a
843 Ubuntu GNU/Linux e potrebbero richiedere l'uso di @code{sudo} in alcune situazioni.
847 @item Installa i pacchetti necessari: LilyPond, GhostScript e ImageMagick.
849 @item Crea un nuovo utente dal nome @code{lily}:
856 Questo comando creerà anche un nuovo gruppo per l'utente @code{lily}, e una
860 @item Nella cartella home dell'utente @code{lily} crea un file da usare come
864 dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
868 In questo esempio è stato creato un file di 200MB da usare come filesystem della
871 @item Crea un dispositivo di loop, crea e monta un filesystem, quindi crea
872 una cartella scrivibile dall'utente @code{lily}:
876 losetup /dev/loop0 /home/lily/loopfile
877 mkfs -t ext3 /dev/loop0 200000
878 mount -t ext3 /dev/loop0 /mnt/lilyloop
879 mkdir /mnt/lilyloop/lilyhome
880 chown lily /mnt/lilyloop/lilyhome
883 @item Nella configurazione dei server, JAIL sarà @code{/mnt/lilyloop}
884 e DIR sarà @code{/lilyhome}.
886 @item Crea un grande albero delle directory nella gabbia copiando i file
887 necessari, come mostrato nello script di esempio più in basso.
889 Puoi usare @code{sed} per creare i comandi di copia necessari per un certo
893 for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; \
894 do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& \
895 cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \
896 \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done
901 @subheading Script di esempio per Ubuntu 8.04 a 32-bit
909 loopdevice=/dev/loop0
910 jaildir=/mnt/lilyloop
911 # the prefix (without the leading slash!)
913 # the directory where lilypond is installed on the system
914 lilydir=/$lilyprefix/lilypond/
916 userhome=$home/$username
917 loopfile=$userhome/loopfile
919 dd if=/dev/zero of=$loopfile bs=1k count=200000
921 losetup $loopdevice $loopfile
922 mkfs -t ext3 $loopdevice 200000
923 mount -t ext3 $loopdevice $jaildir
924 mkdir $jaildir/lilyhome
925 chown $username $jaildir/lilyhome
928 mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp
931 cp -r -L $lilydir $lilyprefix
932 cp -L /bin/sh /bin/rm bin
933 cp -L /usr/bin/convert /usr/bin/gs usr/bin
934 cp -L /usr/share/fonts/truetype usr/share/fonts
936 # Now the library copying magic
937 for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" \
938 "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \
939 \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed \
940 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' \
941 | sed '/.*=>.*/d'; done | sh -s
943 # The shared files for ghostscript...
944 cp -L -r /usr/share/ghostscript usr/share
945 # The shared files for ImageMagick
946 cp -L -r /usr/lib/ImageMagick* usr/lib
948 ### Now, assuming that you have test.ly in /mnt/lilyloop/lilyhome,
949 ### you should be able to run:
950 ### Note that /$lilyprefix/bin/lilypond is a script, which sets the
951 ### LD_LIBRARY_PATH - this is crucial
952 /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
955 @c " keep quote signs balanced for context-sensitive editors
957 @node Messaggi di errore
958 @section Messaggi di errore
959 @translationof Error messages
961 @cindex messaggi di errore
962 Quando si compila un file possono apparire vari messaggi di errore:
968 Qualcosa appare sospetto. Se stai cercando di fare qualcosa di insolito
969 allora comprenderai il messaggio e potrai ignorarlo.
970 Tuttavia di solito i messaggi di avvertimento indicano che il file di input ha
975 C'è qualcosa di assolutamente sbagliato. Il passo attualmente in elaborazione
976 (analisi, interpretazione o formattazione) verrà completato, ma il passo
977 successivo verrà saltato.
980 @cindex errore fatale
981 C'è qualcosa di assolutamente sbagliato e LilyPond non può continuare. Questo
982 accade raramente. La causa più comune è un'errata installazione dei tipi di
986 @cindex traccia, Scheme
987 @cindex traccia di chiamata
988 @cindex errore Scheme
989 Gli errori che capitano mentre si esegue del codice Scheme sono individuati
990 dall'interprete Scheme. Se si esegue con l'opzione di prolissità (@code{-V} o
991 @option{--verbose}), viene stampata una traccia della chiamata di funzione
992 responsabile dell'errore.
994 @item Errore di programmazione
995 @cindex Errore di programmazione
996 Si è verificata una qualche incongruenza interna. Questi messaggi di errore
997 servono ad aiutare programmatori e debugger. Di solito si possono
998 ignorare. Talvolta sono talmente numerosi da nascondere il resto
1001 @item Sospeso (core dumped)
1002 @cindex Sospeso (core dumped)
1003 Segnala un serio errore di programmazione che ha mandato in crash il
1004 programma. Questi errori sono considerati critici. Se ti imbatti in un
1005 errore simile, invia una segnalazione di errore.
1008 @cindex errori, formato del messaggio
1009 Se gli avvertimenti e gli errori possono essere collegati
1010 a una parte specifica del file di input, i messaggi di errore
1011 hanno la seguente forma
1014 @var{file}:@var{riga}:@var{colonna}: @var{messaggio}
1015 @var{riga di input responsabile dell'errore}
1018 Nella riga responsabile si inserisce un a capo per indicare la colonna
1019 in cui è stato trovato l'errore. Ad esempio,
1022 test.ly:2:19: error: not a duration: 5
1027 Queste posizioni indicano il punto in cui LilyPond ritiene più probabile
1028 che siano apparsi l'avvertimento o l'errore, ma (per loro
1029 stessa natura) avvertimenti ed errori capitano quando succede qualcosa
1030 di imprevisto. Se non riesci a vedere un errore nella riga suggerita,
1031 prova a controllare una o due righe sopra la posizione indicata.
1033 Attenzione: l'analisi degli errori è sempre attivata nel corso dei vari
1034 passaggi di elaborazione. Per esempio, se ci sono parti di input che
1035 sono elaborati varie volte (es: per produrre l'output midi e quello
1036 grafico) oppure se viene usata la stessa variabile musicale in vari
1037 contesti, potrebbe apparire lo stesso messaggio molteplici volte. Anche
1038 la diagnosi eseguita in uno degli @q{ultimi} passaggi (es: controlli di
1039 battuta) può apparire varie volte.
1041 Maggiori informazioni sugli errori si trovano in @ref{Errori comuni}.
1045 @section Errori comuni
1046 @translationof Common errors
1048 Le condizioni di errore descritte di seguito capitano spesso, ma la causa
1049 non è ovvia né facile da trovare. Una volta che sono state individuate e
1050 comprese, è facile gestirle.
1054 * La musica esce dalla pagina::
1055 * Appare un rigo in più::
1056 * Messaggio di errore Unbound variable %::
1057 * Messaggio di errore FT_Get_Glyph_Name::
1058 * Avvertimento sul fatto che le affinità del rigo devono solo diminuire::
1059 * Messaggio di errore new inaspettato::
1060 * Avviso questa voce ha bisogno di un'impostazione voiceXx o shiftXx::
1063 @node La musica esce dalla pagina
1064 @unnumberedsubsec La musica esce dalla pagina
1065 @translationof Music runs off the page
1067 Se la musica esce dalla pagina al di là del margine destro o appare
1068 eccessivamente compressa, quasi sempre è dovuto all'inserimento di
1069 una durata errata di una nota, che fa sì che l'ultima nota di una misura si
1070 estenda oltre la barra di divisione. Non è sbagliato se la nota finale di
1071 una misura non termina entro la barra di divisione inserita automaticamente, perché
1072 semplicemente si assume che la nota continui nella misura successiva. Ma se
1073 si presenta una lunga sequenza di misure simili, la musica può
1074 apparire compressa o può uscire dalla pagina perché gli a capo
1075 automatici possono essere inseriti soltanto alla fine di misure complete,
1076 ovvero quando tutte le note finiscono prima o alla fine della misura.
1078 @warning{Una durata sbagliata può inibire l'interruzione di
1079 linea, portando a una linea di musica estremamente compressa o
1080 a musica che esce dalla pagina.}
1082 La durata errata può essere trovata facilmente se si usano i controlli di
1083 battuta, si veda @ruser{Controlli di battuta e del numero di battuta}.
1085 Se si vuole davvero ottenere una serie di tali misure sovrapposte
1086 bisogna inserire una barra di divisione invisibile nel punto in cui
1087 si desidera l'interruzione di linea. Per i dettagli si veda
1091 @node Appare un rigo in più
1092 @unnumberedsubsec Appare un rigo in più
1093 @translationof An extra staff appears
1095 Se i contesti non sono creati esplicitamente con @code{\new} o
1096 @code{\context}, saranno creati senza avviso appena si incontra
1097 un comando che non può essere applicato a un contesto
1098 esistente. Nelle partiture semplici la creazione automatica dei contesti
1099 è utile: infatti la maggior parte degli esempi nei manuali LilyPond sfrutta
1100 questa semplificazione. Talvolta, però, la creazione silenziosa di contesti
1101 può causare la comparsa di nuovi righi o partiture non desiderate. Ad esempio,
1102 si potrebbe pensare che il seguente codice colori di rosso tutte le teste
1103 delle note nel rigo, ma in realtà produce due righi, di cui il più basso
1104 conserva il colore nero predefinito per le teste delle note.
1106 @lilypond[quote,verbatim,fragment]
1107 \override Staff.NoteHead.color = #red
1111 Questo accade perché non esiste un contesto @code{Staff} quando viene
1112 elaborata l'istruzione di override, quindi ne viene implicitamente creato uno e
1113 l'override viene applicato ad esso. Ma poi il comando @code{\new Staff} crea
1114 un altro rigo separato nel quale vengono inserite le note. Il codice
1115 corretto per colorare le teste di tutte le note è
1117 @lilypond[quote,verbatim]
1119 \override Staff.NoteHead.color = #red
1125 @node Messaggio di errore Unbound variable %
1126 @unnumberedsubsec Messaggio di errore Unbound variable %
1127 @translationof Error message Unbound variable %
1129 Questo messaggio di errore comparirà in fondo alla console di
1130 output o nel file di log insieme al messaggio @qq{GUILE signalled an error @dots{}}
1131 ogni volta che viene chiamata una routine di Scheme che contenga (erroneamente)
1132 un commento @emph{LilyPond} invece di un commento @emph{Scheme}.
1134 I commenti LilyPond iniziano con un segno di percentuale, (@code{%}), e non
1135 devono essere usati all'interno delle routine di Scheme. I commenti Scheme
1136 iniziano con un punto e virgola, (@code{;}).
1138 @node Messaggio di errore FT_Get_Glyph_Name
1139 @unnumberedsubsec Messaggio di errore FT_Get_Glyph_Name
1140 @translationof Error message FT_Get_Glyph_Name
1142 Questo messaggio di errore compare nella console di output o nel file di log file
1143 se un file di input contiene un carattere non-ASCII e non è stato salvato nella
1144 codifica UTF-8. Per dettagli si veda @ruser{Codifica del testo}.
1147 @node Avvertimento sul fatto che le affinità del rigo devono solo diminuire
1148 @unnumberedsubsec Avvertimento sul fatto che le affinità del rigo devono solo diminuire
1149 @translationof Warning staff affinities should only decrease
1151 Questo avvertimento può apparire se non ci sono dei righi nell'output,
1152 ad esempio se ci sono solo un contesto @code{ChordName} e un
1153 contesto @code{Lyrics}, come in un lead sheet. Si possono evitare questi
1154 messaggi di avvertimento facendo in modo che uno dei contesti si comporti
1155 come un rigo inserendo
1158 \override VerticalAxisGroup.staff-affinity = ##f
1162 all'inizio del contesto. Per dettagli si veda @qq{Spacing of non-staff lines} in
1163 @ruser{Spaziatura verticale flessibile all'interno dei sistemi}.
1165 @node Messaggio di errore new inaspettato
1166 @unnumberedsubsec Messaggio di errore @code{@bs{}new} inaspettato
1167 @translationof Error message unexpected new
1169 Un blocco @code{\score} deve contenere una @emph{singola} espressione musicale.
1170 Se invece contiene vari @code{\new Staff}, @code{\new StaffGroup} o simili
1171 contesti introdotti con @code{\new} senza che questi siano racchiusi tra
1172 parentesi graffe, @code{@{ @dots{} @}}, o doppie parentesi uncinate, @code{<< @dots{} >>},
1177 % Invalido! Genera l'errore: errore di sintassi, \new inaspettato
1178 \new Staff @{ @dots{} @}
1179 \new Staff @{ @dots{} @}
1184 verrà generato questo messaggio di errore.
1186 Per evitare l'errore, è sufficiente racchiudere tutti i blocchi @code{\new} tra
1187 parentesi graffe o doppie parentesi uncinate.
1189 Se si usano le parentesi graffe, i blocchi @code{\new} appariranno in
1192 @lilypond[quote,verbatim]
1195 \new Staff { a' a' a' a' }
1196 \new Staff { g' g' g' g' }
1202 ma è più probabile che si debbano usare le doppie parentesi uncinate in modo
1203 che i nuovi righi siano avviati in parallelo, ovvero contemporaneamente:
1205 @lilypond[quote,verbatim]
1208 \new Staff { a' a' a' a' }
1209 \new Staff { g' g' g' g' }
1214 @node Avviso questa voce ha bisogno di un'impostazione voiceXx o shiftXx
1215 @unnumberedsubsec Avviso questa voce ha bisogno di un'impostazione @bs{}voiceXx o @bs{}shiftXx
1216 @translationof Warning this voice needs a voiceXx or shiftXx setting
1218 Se note appartenenti a due voci diverse con gambi nella stessa
1219 direzione si trovano nello stesso momento musicale, e per le voci
1220 non è stato specificato alcun spostamento, quando si compila il
1221 file apparirà il messaggio di avviso
1222 @samp{avviso: questa voce ha bisogno di un'impostazione \voiceXx o \shiftXx}.
1223 Tale avviso apparirà anche quando le note non hanno gambi visibili,
1224 come nel caso delle semibrevi, se i gambi di note più brevi della
1225 stessa altezza sono nella stessa direzione.
1227 Ricorda che la direzione del gambo, a meno che non sia specificata, per
1228 esempio tramite @code{\voiceOne}, etc., dipende dalla posizione della
1229 nota sul rigo. Dunque se la direzione del gambo non è specificata, l'avviso
1230 apparirà solo quando i gambi si trovano nella stessa direzione, ovvero
1231 quando le note si trovano nella stessa metà del rigo.
1233 Si possono evitare questi avvisi mettendo le note in voci in cui siano
1234 indicate le direzioni dei gambi e gli spostamenti, per esempio usando
1235 @code{\voiceOne}, etc.
1237 Le note delle voci con un numero maggiore di due, @code{\voiceThree} etc., sono
1238 spostate automaticamente per avitare la collisione tra colonne di note. Ciò
1239 causa uno spostamento visibile delle note con gambo, mentre le semibrevi
1240 non sono spostate visibilmente, a meno che non si verifichi una reale collisione
1241 tra teste di nota oppure quando le voci si incrociano rispetto al loro ordine
1242 naturale (quando le note di @code{\voiceThree} sono più alte di quelle di
1243 @code{\voiceOne}, etc.)
1246 @rlearning{Definire esplicitamente le voci},
1247 @rlearning{Esempio musicale},
1248 @ruser{Polifonia su un solo rigo},
1249 @ruser{Risoluzione delle collisioni}.