]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/it/usage/running.itely
Merge remote branch 'origin/master' into release/unstable
[lilypond.git] / Documentation / it / usage / running.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
2
3 @ignore
4     Translation of GIT committish: 62b428826f37228ab4644dbaabac7935c17ecdcd
5
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..
9 @end ignore
10
11 @c \version "2.17.6"
12
13
14 @node Eseguire lilypond
15 @chapter Eseguire @command{lilypond}
16 @translationof Running LilyPond
17
18 Questo capitolo descrive dettagliatamente gli aspetti tecnici dell'esecuzione
19 di LilyPond.
20
21 @menu
22 * Uso normale::
23 * Uso da linea di comando::
24 * Messaggi di errore::
25 * Errori comuni::
26 @end menu
27
28
29 @node Uso normale
30 @section Uso normale
31 @translationof Normal usage
32
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.
36
37
38 @node Uso da linea di comando
39 @section Uso da linea di comando
40 @translationof Command-line usage
41
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.
46
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}.
52
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.
56
57 @menu
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::
63 @end menu
64
65 @node Utilizzo di LilyPond
66 @unnumberedsubsec Utilizzo di @command{lilypond}
67 @translationof Invoking LilyPond
68
69 L'eseguibile @command{lilypond} può essere lanciato dalla linea di comando
70 nel seguente modo.
71
72 @example
73 lilypond [@var{opzione}]@dots{} @var{file}@dots{}
74 @end example
75
76
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}.
80
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.}
86
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
91
92 @example
93 #(define output-suffix "violin")
94 \score @{ @dots{} @}
95 #(define output-suffix "cello")
96 \score @{ @dots{} @}
97 @end example
98
99 @noindent
100 produrrà come output @var{base}@file{-violin.pdf} e
101 @var{base}@file{-cello-1.pdf}.
102
103
104 @unnumberedsubsubsec Usare LilyPond con funzionalità standard della shell
105
106 Dato che LilyPond è un'applicazione a linea di comando, si possono sfruttare
107 le funzionalità della @q{shell} usata per lanciare LilyPond.
108
109 Per esempio:
110
111 @example
112 lilypond *.ly
113 @end example
114
115 @noindent
116 elaborerà tutti i file LilyPond nella directory corrente.
117
118 Potrebbe essere utile anche redirigere l'output della console (per esempio
119 in un file):
120
121 @example
122 lilypond file.ly 1> stdout.txt
123
124 lilypond file.ly 2> stderr.txt
125
126 lilypond file.ly &> all.txt
127 @end example
128
129 @noindent
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.
135
136
137 @node Opzioni di base della linea di comando per LilyPond
138 @unnumberedsubsec Opzioni di base della linea di comando per LilyPond
139 @translationof Basic command line options for LilyPond
140
141 @cindex Utilizzo di @command{lilypond}
142 @cindex opzioni della linea di comando per @command{lilypond}
143 @cindex linea di comando, opzioni di
144 @cindex switch
145
146 Sono contemplate le seguenti opzioni:
147
148 @table @code
149
150 @item -d, --define-default=@var{variabile}=@var{valore}
151 Si veda @ref{Advanced command line options for LilyPond}.
152
153 @cindex Scheme, valutazione dell'espressione
154 @cindex valutazione dell'espressione, Scheme
155
156 @item -e, --evaluate=@var{espressione}
157 Valuta l'@var{espressione} di Scheme prima di analizzare qualsiasi file @file{.ly}.
158 Si possono specificare varie opzioni @option{-e}; saranno analizzate in modo
159 sequenziale.
160
161 L'espressione sarà analizzata nel modulo @code{guile-user}, dunque se vuoi
162 usare delle definizioni in @var{espressione}, usa
163
164 @example
165 lilypond -e '(define-public a 42)'
166 @end example
167
168 @noindent
169 nella linea di comando, e includi
170
171 @example
172 #(use-modules (guile-user))
173 @end example
174
175 @noindent
176 in cima al file @code{.ly}.
177
178 @warning{Gli utenti Windows devono usare i doppi apici invece dei singoli apici.}
179
180 @cindex output, formato
181 @cindex formato, output
182
183 @item -f, --format=@var{formato}
184 Formati di output.  Come @code{formato} si può scegliere tra
185 @code{ps}, @code{pdf} e @code{png}.
186
187 Esempio: @code{lilypond -fpng @var{file}.ly}
188
189 @item -h, --help
190 Mostra una sintesi dell'utilizzo.
191
192 @item -H, --header=@var{CAMPO}
193 Estrae un campo dell'intestazione nel file @file{NOME.@var{CAMPO}}.
194
195 @item -i, --init=@var{file}
196 Imposta il file di inizializzazione su @var{file} (predefinito: @file{init.ly}).
197
198 @cindex ricerca dei file
199 @cindex percorso di ricerca
200
201 @item -I, --include=@var{directory}
202
203 È possibile assegnare più opzioni -I.  La ricerca inizierà nella prima
204 Aggiunge @var{directory} al percorso di ricerca per i file di input.
205 directory definita, e se il file da includere non viene trovato
206 la ricerca continuerà nelle directory seguenti.
207
208 @cindex gabbia chroot, esecuzione all'interno di
209
210 @item -j, --jail=@var{utente},@var{gruppo},@var{gabbia},@var{directory}
211 Esegue @command{lilypond} in una gabbia chroot.
212
213 L'opzione @option{--jail} fornisce un'alternativa più flessibile a
214 @option{--safe} quando la formattazione di LilyPond è messa a disposizione attraverso
215 un server web o quando LilyPond esegue sorgenti provenienti dall'esterno
216 (si veda @ref{Advanced command line options for LilyPond}).
217
218 L'opzione @option{--jail} modifica la radice di @command{lilypond} in
219 @var{gabbia} appena prima di iniziare il vero processo di compilazione.  L'utente
220 e il gruppo vengono poi modificati per corrispondere a quelli forniti, e la
221 directory corrente viene spostata in @var{directory}.  Questa configurazione
222 garantisce che non sia possibile (almeno in teoria) uscire dalla gabbia.  Si noti
223 che perché @option{--jail} funzioni @command{lilypond} deve essere eseguito come root;
224 di solito questo si fa in modo sicuro col comando @command{sudo}.
225
226 Configurare una gabbia è una questione un po' delicata, perché bisogna essere
227 sicuri che LilyPond possa trovare tutto quello di cui ha bisogno per compilare il
228 sorgente @emph{dentro la gabbia}.  Una configurazione tipica comprende i seguenti
229 elementi:
230
231 @table @asis
232
233 @item Impostare un filesystem distinto
234 Si dovrebbe creare un filesystem separato LilyPond, così che possa essere
235 montato con opzioni di sicurezza come @code{noexec}, @code{nodev}, e
236 @code{nosuid}.  In questo modo è impossibile lanciare degli eseguibili o
237 scrivere su un dispositivo direttamente da LilyPond.  Se non si vuole creare
238 una partizione separata, si può creare un file di dimensioni ragionevoli e usarlo
239 per montare un dispositivo di loop.  Un filesystem separato garantisce inoltre
240 che LilyPond non possa scrivere su uno spazio maggiore di quanto permesso.
241
242 @item Impostare un altro utente
243 Per eseguire LilyPond in una gabbia si dovrebbe usare un altro utente e gruppo
244 (ad esempio, @code{lily}/@code{lily}) con pochi privilegi.  Ci dovrebbe essere
245 una sola directory scrivibile da questo utente, che dovrebbe essere passata in
246 @var{dir}.
247
248 @item Preparare la gabbia
249 LilyPond ha bisogno di leggere alcuni file quando viene lanciato.  Tutti questi
250 file devono essere copiati nella gabbia, sotto lo stesso percorso in cui appaiono
251 nel vero filesystem principale.  Si deve copiare l'intero contenuto dell'installazione
252 LilyPond (ad esempio, @file{/usr/share/lilypond}).
253
254 Se c'è un problema, il modo più semplice per individuarlo è lanciare
255 LilyPond usando @command{strace}, che permetterà di scoprire quali
256 file mancano.
257
258 @item Eseguire LilyPond
259 In una gabbia montata con @code{noexec} è impossibile eseguire qualsiasi
260 programma esterno.  Dunque LilyPond deve essere eseguito con un backend che
261 non richieda tale programma.  Come è già stato detto, deve essere eseguito
262 con privilegi di superutente (che ovviamente perderà immediatamente),
263 possibilmente con l'uso di @command{sudo}.  È una buona idea limitare il
264 numero di secondi di tempo della CPU che LilyPond può usare (ad esempio con
265 @command{ulimit -t}), e, se il sistema operativo lo permette, la quantità di
266 memoria che può essere allocata.  Si veda anche @ref{LilyPond in chroot jail}.
267 @end table
268
269 @cindex loglevel
270 @cindex output dettagliato
271
272 @item -l, --loglevel=@var{LIVELLO}
273 Imposta la verbosità dell'output della console su @var{LIVELLO}. I valori possibili sono:
274 @table @code
275
276 @item NONE
277 Nessun output, nemmeno i messaggi di errore.
278
279 @item ERROR
280 Solo i messaggi di errore, niente avvisi o messaggi di elaborazione.
281
282 @item WARN
283 Avvisi e messaggi di errore, nessun messaggio di elaborazione.
284
285 @item BASIC_PROGRESS
286 Messaggi di elaborazione di base (riuscita), avvisi e errori.
287
288 @item PROGRESS
289 Tutti i messaggi di elaborazione, avvisi e errori.
290
291 @item INFO (predefinito)
292 Messaggi di elaborazione, avvisi, errori e ulteriori informazioni di esecuzione.
293
294 @item DEBUG
295 Tutti i messaggi possibili, incluso l'output verboso di debug.
296
297 @end table
298
299 @cindex directory, dirigere l'output in
300 @cindex output, impostare il nome del file
301 @cindex output, directory
302
303 @item -o, --output=@var{FILE} o @var{CARTELLA}
304 Imposta il file di output predefinito @var{FILE} oppure, se una cartella con
305 quel nome esiste già, dirige l'output in @var{CARTELLA}, prendendo il nome
306 del file dal file di input.  In entrambi i casi verrà aggiunto il suffisso
307 appropriato (ad esempio @code{.pdf} per il pdf).
308
309 @cindex PS (Postscript), output
310 @cindex Postscript (PS), output
311 @cindex output, PS (Postscript)
312
313 @item --ps
314 Genera PostScript.
315
316 @cindex PNG (Portable Network Graphics), output
317 @cindex output, PNG (Portable Network Graphics)
318
319 @item --png
320 Genera immagini di ogni pagina in formato PNG.  Questo implica
321 @option{--ps}.  La risoluzione in DPI dell'immagine può essere impostata con
322 @example
323 -dresolution=110
324 @end example
325
326 @cindex PDF (Portable Document Format), output
327 @cindex output, PDF (Portable Document Format)
328
329 @item --pdf
330 Genera PDF.  Questo implica @option{--ps}.
331
332 @item -v, --version
333 Mostra informazioni sulla versione.
334
335 @item -V, --verbose
336 Aumenta la prolissità: mostra i percorsi completi di tutti i file letti e dà
337 informazioni sui tempi.
338
339 @item -w, --warranty
340 Mostra la garanzia con cui viene distribuito GNU LilyPond.  (Distribuito
341 con @strong{NESSUNA GARANZIA}!)
342
343 @end table
344
345
346 @node Opzioni avanzate della linea di comando per LilyPond
347 @unnumberedsubsec Opzioni avanzate della linea di comando per @command{lilypond}
348 @translationof Advanced command line options for LilyPond
349
350 @table @code
351
352 @item -d@var{[nome-opzione]}=@var{[valore]},--define-default=@var{[nome-opzione]}=@var{[valore]}
353 Imposta l'equivalente funzione interna di Scheme su @var{valore}.
354
355 @example
356 -dbackend=svg
357 @end example
358
359 Se non viene specificato un @var{valore}, viene usato il valore
360 predefinito.  Per disabilitare un'opzione, si può usare il
361 prefisso @code{no-} prima di @var{nome-opzione}, ad esempio
362
363 @cindex punta e clicca, linea di comando
364
365 @example
366 -dpoint-and-click=#f
367 @end example
368
369 @noindent
370 è equivalente a
371 @example
372 -dno-point-and-click
373 @end example
374 @end table
375
376 @noindent Sono supportate le seguenti opzioni insieme ai loro rispettivi
377 valori predefiniti:
378
379 @multitable @columnfractions .33 .16 .51
380 @item @strong{Simbolo}
381 @tab @strong{Valore}
382 @tab @strong{Spiegazione/Opzioni}
383
384 @item @code{anti-alias-factor}
385 @tab @code{1}
386 @tab Elabora a una risoluzione più alta (usando un certo fattore) e ridimensiona
387 il risultato per evitare gli @q{artefatti} nelle immagini @code{PNG}.
388
389 @item @code{aux-files}
390 @tab @code{#t}
391 @tab Crea i file @code{.tex}, @code{.texi}, @code{.count} nel backend
392 @code{EPS}.
393
394 @item @code{backend}
395 @tab @code{ps}
396 @tab Seleziona il backend.  I file Postscript (predefinito) includono i tipi di
397 carattere @code{TTF}, @code{Type1} e @code{OTF}.  Non vengono inclusi i sottoinsiemi
398 di questi tipi.  Se si usa un set di caratteri @q{orientali}, si possono ottenere
399 file di grosse dimensioni.
400
401 @item
402 @tab @code{eps}
403 @tab Encapsulated PostScript.  Invia ogni pagina (sistema) in un file
404 @file{EPS} separato, senza font, e in un unico file @file{EPS} con
405 tutte le pagine (sistemi) inclusi i font.  Questa è la modalità
406 predefinita di @command{lilypond-book}.
407
408 @item
409 @tab @code{null}
410 @tab non produce la stampa della partitura; ha lo stesso
411 effetto di @code{-dno-print-pages}.
412
413 @item
414 @tab @code{svg}
415 @tab Scalable Vector Graphics.  Crea un singolo file SVG, senza font
416 incorporati, per ogni pagina dell'output.  Si raccomanda di installare i
417 font Century Schoolbook, inclusi nell'installazione di LilyPond, per una
418 resa ottimale.  In UNIX basta copiare questi font dalla directory di
419 LilyPond (solitamente @file{/usr/share/lilypond/VERSION/fonts/otf/}) in
420 @file{~/.fonts/}.  C'è anche un'opzione @code{svg-woff} (sotto) per
421 poter usare i file di font woff nel backend SVG.
422
423 @item
424 @tab @code{scm}
425 @tab Estrae i comandi di disegno grezzi e interni, basati su Scheme.
426
427 @item @code{check-internal-types}
428 @tab @code{#f}
429 @tab Controlla l'assegnazione di ogni proprietà per i tipi.
430
431 @item @code{clip-systems}
432 @tab @code{#f}
433 @tab Genera frammenti ritagliati di una partitura.
434
435 @item @code{datadir}
436 @tab
437 @tab Prefisso per i file di dati (sola lettura).
438
439 @item @code{debug-gc}
440 @tab @code{#f}
441 @tab Scarica le statistiche sul debug della memoria.
442
443 @item @code{debug-gc-assert-parsed-dead}
444 @tab @code{#f}
445 @tab Per il debug della memoria: Assicura che tutti i riferimenti agli oggetti
446 analizzati siano eliminati. Questa è un'opzione interna e viene abilitata
447 automaticamente da @code{`-ddebug-gc'}.
448
449 @item @code{debug-lexer}
450 @tab @code{#f}
451 @tab Debug dell'analizzatore lessicale flex.
452
453 @item @code{debug-page-breaking-scoring}
454 @tab @code{#f}
455 @tab Crea le partiture per diverse configurazioni di interruzione di pagina.
456
457 @item @code{debug-parser}
458 @tab @code{#f}
459 @tab Debug dell'analizzatore bison.
460
461 @item @code{debug-property-callbacks}
462 @tab @code{#f}
463 @tab Debug delle catene cicliche di callback.
464
465 @item @code{debug-skylines}
466 @tab @code{#f}
467 @tab Debug skylines.
468
469 @item @code{delete-intermediate-files}
470 @tab @code{#t}
471 @tab Cancella i file @code{.ps} intermedi e inutilizzabili creati durante
472 la compilazione.
473
474 @item @code{dump-cpu-profile}
475 @tab @code{#f}
476 @tab Scarica l'informazione sui tempi (dipendente dal sistema).
477
478 @item @code{dump-profile}
479 @tab @code{#f}
480 @tab Scarica l'informazione sulla memoria e il tempo per ogni file.
481
482 @item @code{dump-signatures}
483 @tab @code{#f}
484 @tab Scarica le firme dell'output di ogni sistema. Usato per testare le regressioni.
485
486 @item @code{eps-box-padding}
487 @tab @code{#f}
488 @tab Sposta il margine sinistro della cornice EPS dell'output della quantità
489 specificata (in mm).
490
491 @item @code{gs-load-fonts}
492 @tab @code{#f}
493 @tab Carica i font attraverso Ghostscript.
494
495 @item @code{gs-load-lily-fonts}
496 @tab @code{#f}
497 @tab Carica solo i font LilyPond attraverso Ghostscript.
498
499 @item @code{gui}
500 @tab @code{#f}
501 @tab Esegue il programma senza stampare messaggi e redirige tutto l'output in un file di log.
502 @end multitable
503
504 @noindent
505 @strong{Nota per gli utenti Windows:} Per impostazione predefinita @code{lilypond.exe}
506 stampa tutta l'informazione sull'avanzamento nella finestra dei comandi.
507 @code{lilypond-windows.exe} non lo fa e riporta un prompt, privo di
508 informazioni sull'avanzamento, subito nella linea di comando.  L'opzione
509 @option{-dgui} può essere usata in questo caso per redirigere l'output in
510 un file di log.
511
512 @multitable @columnfractions .33 .16 .51
513 @item @code{help}
514 @tab @code{#f}
515 @tab Mostra questo aiuto.
516
517 @item @code{include-book-title-preview}
518 @tab @code{#t}
519 @tab Include i titoli dei libri nelle immagini di anteprima.
520
521 @item @code{include-eps-fonts}
522 @tab @code{#t}
523 @tab Include i font in file EPS con sistemi separati.
524
525 @item @code{include-settings}
526 @tab @code{#f}
527 @tab Include il file per le impostazioni globali, questo viene incluso prima
528 che la partitura sia elaborata.
529
530 @item @code{job-count}
531 @tab @code{#f}
532 @tab Elabora in parallelo, usando il dato numero di lavori.
533
534 @item @code{log-file}
535 @tab @code{#f [file]}
536 @tab Se la stringa @code{FOO} viene assegnata come secondo argomento,
537 redirige l'output nel file @code{FOO.log}.
538
539 @item @code{max-markup-depth}
540 @tab @code{1024}
541 @tab Massima profondità per la struttura del blocco markup. Se un blocco markup ha
542 più livelli, assume che non terminerà da solo, stampa un avviso e restituisce
543 al suo posto un markup vuoto.
544
545 @item @code{midi-extension}
546 @tab @code{"midi"}
547 @tab Imposta l'estensione predefinita per il file MIDI sulla stringa specificata.
548
549 @item @code{music-strings-to-paths}
550 @tab @code{#f}
551 @tab Converte le stringhe di testo in percorsi quando i glifi appartengono a
552 un font musicale.
553
554 @item @code{paper-size}
555 @tab @code{\"a4\"}
556 @tab Imposta la dimensione predefinita del foglio.  Nota che la stringa deve
557 essere compresa tra virgolette precedute dal segno di escape.
558
559 @item @code{pixmap-format}
560 @tab @code{png16m}
561 @tab Imposta il formato di output di GhostScript per le immagini raster.
562
563 @item @code{point-and-click}
564 @tab @code{#t}
565 @tab Aggiunge i collegamenti @q{punta e clicca} all'output PDF e SVG. Si veda
566 @ref{Point and click}.
567
568 @item @code{preview}
569 @tab @code{#f}
570 @tab Crea immagini di anteprima oltre al normale output.
571 @end multitable
572
573 @noindent
574 Questa opzione è supportata da tutti i backend; @code{pdf}, @code{png},
575 @code{ps}, @code{eps} e @code{svg}, ma non @code{scm}.  Genera un file
576 di output nella forma @code{mioFile.preview.estensione}, contenente i
577 titoli e il primo sistema.  Se vengono usati i blocchi @code{\book} o
578 @code{\bookpart}, i titoli di @code{\book}, @code{\bookpart} o @code{\score}
579 appariranno nell'output, incluso il primo sistema di ogni blocco @code{\score}
580 se la variabile @code{print-all-headers} di @code{\paper} è impostata
581 su @code{#t}.
582
583 Per impedire il normale output, si usano le opzioni @option{-dprint-pages} o
584 @option{-dno-print-pages} in base alle proprie esigenze.
585
586 @multitable @columnfractions .33 .16 .51
587 @item @code{print-pages}
588 @tab @code{#t}
589 @tab Genera le pagine complete (predefinito).  @option{-dno-print-pages} è
590 utile in combinazione con @option{-dpreview}.
591
592 @item @code{profile-property-accesses}
593 @tab @code{#f}
594 @tab Mantiene una statistica delle chiamate di funzione @code{get_property()}.
595
596 @item @code{protected-scheme-parsing}
597 @tab @code{#t}
598 @tab Continua se l'analizzatore coglie degli errori nel codice scheme interno
599 al file di input. Se impostato su @code{#f}, in caso di errore si ferma e
600 mostra la traccia di stack.
601
602 @item @code{read-file-list}
603 @tab @code{#f [file]}
604 @tab Specifica il nome di un file che contiene una lista di file di input da
605 elaborare.
606
607 @item @code{relative-includes}
608 @tab @code{#f}
609 @tab Quando elabora un comando @code{\include}, cerca il file incluso
610 in posizione relativa al file corrente (invece che in posizione assoluta).
611
612 @item @code{resolution}
613 @tab @code{101}
614 @tab Imposta la risoluzione per generare immagini @code{PNG} su un certo
615 valore (in dpi).
616
617 @item @code{safe}
618 @tab @code{#f}
619 @tab Non si fida dell'input nel file @code{.ly}.
620 @end multitable
621
622 @noindent
623 Quando la formattazione di LilyPond viene messa a disposizione tramite un server
624 web, si @b{DEVE} passare l'opzione @option{--safe} o l'opzione @option{--jail}.  L'opzione
625 @option{--safe} impedirà che il codice Scheme presente nell'input possa fare uno
626 scempio, ad esempio
627
628 @quotation
629 @verbatim
630 #(s ystem "rm -rf /")  % troppo pericoloso per scriverlo correttamente
631 {
632   c4^$(ly:gulp-file "/etc/passwd") % malvagio ma non distruttivo
633 }
634 @end verbatim
635 @end quotation
636
637 L'opzione @option{-dsafe} serve a valutare le espressioni Scheme presenti nell'input
638 in uno speciale modulo di sicurezza.  Questo modulo di sicurezza è derivato dal
639 modulo GUILE @file{safe-r5rs}, ma aggiunge alcune funzioni del
640 LilyPond API.  Queste funzioni sono elencate in @file{scm/safe-lily.scm}.
641
642 Inoltre, la modalità sicura non permette le direttive @code{\include} e
643 disabilita l'uso del backslash nelle stringhe @TeX{}.  In modalità sicura,
644 non è possibile importare le variabili di LilyPond in Scheme.
645
646 @option{-dsafe} @emph{non} rileva il sovrautilizzo di risorse.  È ancora possibile
647 far sì che il programma rimanga in sospeso per un tempo indefinito, ad esempio
648 alimentando il backend con strutture di dati cicliche.  Dunque se si vuole usare
649 LilyPond su un server web pubblicamente accessibile, si deve limitare il processo
650 nell'uso della CPU e della memoria.
651
652 La modalità sicura bloccherà la compilazione di molti utili frammenti di codice
653 LilyPond.
654
655 L'opzione @option{--jail} è un'alternativa più sicura, ma richiede più lavoro
656 per configurarla.  Si veda @ref{Basic command line options for LilyPond}.
657
658 @multitable @columnfractions .33 .16 .51
659 @item @code{separate-log-files}
660 @tab @code{#f}
661 @tab Per i file di input @code{FILE1.ly}, @code{FILE2.ly}, etc. salva i dati di
662 log nei file @code{FILE1.log}, @code{FILE2.log}, @dots{}
663
664 @item @code{show-available-fonts}
665 @tab @code{#f}
666 @tab Elenca i nomi di font disponibili.
667
668 @item @code{strict-infinity-checking}
669 @tab @code{#f}
670 @tab Forza il blocco del programma quando si incontrano eccezioni @code{Inf} e
671 @code{NaN} sui numeri in virgola mobile.
672
673 @item @code{strip-output-dir}
674 @tab @code{#t}
675 @tab Non usa le directory dei file di input per costruire i nomi dei file
676 di output.
677
678 @item @code{strokeadjust}
679 @tab @code{#f}
680 @tab Forza l'aggiustamento del tratto da parte di PostScript.  Questa opzione
681 è utile quando il PDF è generato dall'output PostScript (l'aggiustamento
682 del tratto di solito è abilitato automaticamente per gli strumenti bitmap
683 a bassa risoluzione).  Senza questa opzione, i lettori PDF tendono a
684 produrre larghezze dei gambi molto variabili alle risoluzioni tipiche
685 dei monitor.  L'opzione non produce effetti visibili sulla qualità di
686 stampa e causa un notevole aumento della dimensione dei file PDF.
687
688
689 @item @code{svg-woff}
690 @tab @code{#f}
691 @tab Usa i file di font woff nel backend SVG.
692
693 @item @code{trace-memory-frequency}
694 @tab @code{#f}
695 @tab Registra molte volte al secondo l'uso delle celle da parte di Scheme.  Salva i
696 risultati in @code{FILE.stacks} e @code{FILE.graph}.
697
698 @item @code{trace-scheme-coverage}
699 @tab @code{#f}
700 @tab Registra la copertura dei file Scheme in @code{FILE.cov}.
701
702 @item @code{verbose}
703 @tab @code{#f}
704 @tab Output dettagliato, ovvero livello di log DEBUG (sola lettura).
705
706 @item @code{warning-as-error}
707 @tab @code{#f}
708 @tab Trasforma tutti i messaggi di avviso e di @q{errore di programmazione} in errori.
709 @end multitable
710
711
712 @node Variabili d'ambiente
713 @unnumberedsubsec Variabili d'ambiente
714 @translationof Environment variables
715
716 @cindex LANG
717 @cindex LILYPOND_DATADIR
718
719 @command{lilypond} riconosce le seguenti variabili d'ambiente:
720 @table @code
721 @item LILYPOND_DATADIR
722 Specifica la directory predefinita in cui saranno cercati i messaggi della
723 localizzazione e i file di dati.  Questa directory deve contenere
724 sottodirectory chiamate @file{ly/}, @file{ps/}, @file{tex/}, etc.
725
726 @item LANG
727 Determina la lingua per i messaggi di avviso.
728
729 @item LILYPOND_LOGLEVEL
730 Il livello di log (loglevel) predefinito. Se LilyPond viene chiamato senza un
731 livello di log esplicito (ovvero senza l'opzione @option{--loglevel} della
732 linea di comando), viene usato questo valore.
733
734 @item LILYPOND_GC_YIELD
735 Una variabile, in forma di percentuale, che regola il modo in cui viene gestita
736 la memoria.  Con valori più alti il programma usa più memoria, con valori
737 più bassi usa più tempo della CPU.  Il valore predefinito è @code{70}.
738
739 @end table
740
741
742 @node LilyPond in una gabbia chroot
743 @unnumberedsubsec LilyPond in una gabbia chroot
744 @translationof LilyPond in chroot jail
745
746 Configurare un server perché esegua LilyPond in una gabbia chroot è un lavoro
747 complesso.  La procedura è spiegata sotto.  Gli esempi si riferiscono a
748 Ubuntu GNU/Linux e potrebbero richiedere l'uso di @code{sudo} in alcune situazioni.
749
750 @itemize
751
752 @item Installa i pacchetti necessari: LilyPond, GhostScript e ImageMagick.
753
754 @item Crea un nuovo utente dal nome @code{lily}:
755
756 @example
757 adduser lily
758 @end example
759
760 @noindent
761 Questo comando creerà anche un nuovo gruppo per l'utente @code{lily}, e una
762 cartella home,
763 @code{/home/lily}
764
765 @item Nella cartella home dell'utente @code{lily} crea un file da usare come
766 filesystem separato:
767
768 @example
769 dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
770 @end example
771
772 @noindent
773 In questo esempio è stato creato un file di 200MB da usare come filesystem della
774 gabbia.
775
776 @item Crea un dispositivo di loop, crea e monta un filesystem, quindi crea
777 una cartella scrivibile dall'utente @code{lily}:
778
779 @example
780 mkdir /mnt/lilyloop
781 losetup /dev/loop0 /home/lily/loopfile
782 mkfs -t ext3 /dev/loop0 200000
783 mount -t ext3 /dev/loop0 /mnt/lilyloop
784 mkdir /mnt/lilyloop/lilyhome
785 chown lily /mnt/lilyloop/lilyhome
786 @end example
787
788 @item Nella configurazione dei server, JAIL sarà @code{/mnt/lilyloop}
789 e DIR sarà @code{/lilyhome}.
790
791 @item Crea un grande albero delle directory nella gabbia copiando i file
792 necessari, come mostrato nello script di esempio più in basso.
793
794 Puoi usare @code{sed} per creare i comandi di copia necessari per un certo
795 eseguibile:
796
797 @example
798 for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/;  \
799   do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\&  \
800     cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p  \
801       \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done
802 @end example
803
804 @end itemize
805
806 @subheading Script di esempio per Ubuntu 8.04 a 32-bit
807
808 @example
809 #!/bin/sh
810 ## defaults set here
811
812 username=lily
813 home=/home
814 loopdevice=/dev/loop0
815 jaildir=/mnt/lilyloop
816 # the prefix (without the leading slash!)
817 lilyprefix=usr/local
818 # the directory where lilypond is installed on the system
819 lilydir=/$lilyprefix/lilypond/
820
821 userhome=$home/$username
822 loopfile=$userhome/loopfile
823 adduser $username
824 dd if=/dev/zero of=$loopfile bs=1k count=200000
825 mkdir $jaildir
826 losetup $loopdevice $loopfile
827 mkfs -t ext3 $loopdevice 200000
828 mount -t ext3 $loopdevice $jaildir
829 mkdir $jaildir/lilyhome
830 chown $username $jaildir/lilyhome
831 cd $jaildir
832
833 mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp
834 chmod a+w tmp
835
836 cp -r -L $lilydir $lilyprefix
837 cp -L /bin/sh /bin/rm bin
838 cp -L /usr/bin/convert /usr/bin/gs usr/bin
839 cp -L /usr/share/fonts/truetype usr/share/fonts
840
841 # Now the library copying magic
842 for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh"  \
843   "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=>  \
844     \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed  \
845       's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/'  \
846         | sed '/.*=>.*/d'; done | sh -s
847
848 # The shared files for ghostscript...
849       cp -L -r /usr/share/ghostscript usr/share
850 # The shared files for ImageMagick
851       cp -L -r /usr/lib/ImageMagick* usr/lib
852
853 ### Now, assuming that you have test.ly in /mnt/lilyloop/lilyhome,
854 ### you should be able to run:
855 ### Note that /$lilyprefix/bin/lilypond is a script, which sets the
856 ### LD_LIBRARY_PATH - this is crucial
857       /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
858 @end example
859
860 @c " keep quote signs balanced for context-sensitive editors
861
862 @node Messaggi di errore
863 @section Messaggi di errore
864 @translationof Error messages
865
866 @cindex messaggi di errore
867 Quando si compila un file possono apparire vari messaggi di errore:
868
869 @table @emph
870
871 @item Avvertimento
872 @cindex avvertimento
873 Qualcosa appare sospetto.  Se stai cercando di fare qualcosa di insolito
874 allora comprenderai il messaggio e potrai ignorarlo.
875 Tuttavia di solito i messaggi di avvertimento indicano che il file di input ha
876 qualcosa che non va.
877
878 @item Errore
879 @cindex errore
880 C'è qualcosa di assolutamente sbagliato.  Il passo attualmente in elaborazione
881 (analisi, interpretazione o formattazione) verrà completato, ma il passo
882 successivo verrà saltato.
883
884 @item Errore fatale
885 @cindex errore fatale
886 C'è qualcosa di assolutamente sbagliato e LilyPond non può continuare.  Questo
887 accade raramente.  La causa più comune è un'errata installazione dei tipi di
888 carattere.
889
890 @item Errore Scheme
891 @cindex traccia, Scheme
892 @cindex traccia di chiamata
893 @cindex errore Scheme
894 Gli errori che capitano mentre si esegue del codice Scheme sono individuati
895 dall'interprete Scheme.  Se si esegue con l'opzione di prolissità (@code{-V} o
896 @option{--verbose}), viene stampata una traccia della chiamata di funzione
897 responsabile dell'errore.
898
899 @item Errore di programmazione
900 @cindex Errore di programmazione
901 Si è verificata una qualche incongruenza interna.  Questi messaggi di errore
902 servono ad aiutare programmatori e debugger.  Di solito si possono
903 ignorare.  Talvolta sono talmente numerosi da nascondere il resto
904 dell'output.
905
906 @item Sospeso (core dumped)
907 @cindex Sospeso (core dumped)
908 Segnala un serio errore di programmazione che ha mandato in crash il
909 programma.  Questi errori sono considerati critici.  Se ti imbatti in un
910 errore simile, invia una segnalazione di errore.
911 @end table
912
913 @cindex errori, formato del messaggio
914 Se gli avvertimenti e gli errori possono essere collegati
915 a una parte specifica del file di input, i messaggi di errore
916 hanno la seguente forma
917
918 @example
919 @var{file}:@var{riga}:@var{colonna}: @var{messaggio}
920 @var{riga di input responsabile dell'errore}
921 @end example
922
923 Nella riga responsabile si inserisce un a capo per indicare la colonna
924 in cui è stato trovato l'errore.  Ad esempio,
925
926 @example
927 test.ly:2:19: error: not a duration: 5
928   @{ c'4 e'
929            5 g' @}
930 @end example
931
932 Queste posizioni indicano il punto in cui LilyPond ritiene più probabile
933 che siano apparsi l'avvertimento o l'errore, ma (per loro
934 stessa natura) avvertimenti ed errori capitano quando succede qualcosa
935 di imprevisto.  Se non riesci a vedere un errore nella riga suggerita,
936 prova a controllare una o due righe sopra la posizione indicata.
937
938 Attenzione: l'analisi degli errori è sempre attivata nel corso dei vari
939 passaggi di elaborazione.  Per esempio, se ci sono parti di input che
940 sono elaborati varie volte (es: per produrre l'output midi e quello
941 grafico) oppure se viene usata la stessa variabile musicale in vari
942 contesti, potrebbe apparire lo stesso messaggio molteplici volte.  Anche
943 la diagnosi eseguita in uno degli @q{ultimi} passaggi (es: controlli di
944 battuta) può apparire varie volte.
945
946 Maggiori informazioni sugli errori si trovano in @ref{Errori comuni}.
947
948
949 @node Errori comuni
950 @section Errori comuni
951 @translationof Common errors
952
953 Le condizioni di errore descritte di seguito capitano spesso, ma la causa
954 non è ovvia né facile da trovare.  Una volta che sono state individuate e
955 comprese, è facile gestirle.
956
957
958 @menu
959 * La musica esce dalla pagina::
960 * Appare un rigo in più::
961 * Messaggio di errore Unbound variable %::
962 * Messaggio di errore FT_Get_Glyph_Name::
963 * Avvertimento sul fatto che le affinità del rigo devono solo diminuire::
964 * Messaggio di errore new inaspettato::
965 * Avviso ignorare troppe collisioni tra colonne di nota::
966 @end menu
967
968 @node La musica esce dalla pagina
969 @unnumberedsubsec La musica esce dalla pagina
970 @translationof Music runs off the page
971
972 Se la musica esce dalla pagina al di là del margine destro o appare
973 eccessivamente compressa, quasi sempre è dovuto all'inserimento di
974 una durata errata di una nota, che fa sì che l'ultima nota di una misura si
975 estenda oltre la barra di divisione.  Non è sbagliato se la nota finale di
976 una misura non termina entro la barra di divisione inserita automaticamente, perché
977 semplicemente si assume che la nota continui nella misura successiva.  Ma se
978 si presenta una lunga sequenza di misure simili, la musica può
979 apparire compressa o può uscire dalla pagina perché gli a capo
980 automatici possono essere inseriti soltanto alla fine di misure complete,
981 ovvero quando tutte le note finiscono prima o alla fine della misura.
982
983 @warning{Una durata sbagliata può inibire l'interruzione di
984 linea, portando a una linea di musica estremamente compressa o
985 a musica che esce dalla pagina.}
986
987 La durata errata può essere trovata facilmente se si usano i controlli di
988 battuta, si veda @ruser{Controlli di battuta e del numero di battuta}.
989
990 Se si vuole davvero ottenere una serie di tali misure sovrapposte
991 bisogna inserire una barra di divisione invisibile nel punto in cui
992 si desidera l'interruzione di linea.  Per i dettagli si veda
993 @ruser{Stanghette}.
994
995
996 @node Appare un rigo in più
997 @unnumberedsubsec Appare un rigo in più
998 @translationof An extra staff appears
999
1000 Se i contesti non sono creati esplicitamente con @code{\new} o
1001 @code{\context}, saranno creati senza avviso appena si incontra
1002 un comando che non può essere applicato a un contesto
1003 esistente.  Nelle partiture semplici la creazione automatica dei contesti
1004 è utile: infatti la maggior parte degli esempi nei manuali LilyPond sfrutta
1005 questa semplificazione.  Talvolta, però, la creazione silenziosa di contesti
1006 può causare la comparsa di nuovi righi o partiture non desiderate.  Ad esempio,
1007 si potrebbe pensare che il seguente codice colori di rosso tutte le teste
1008 delle note nel rigo, ma in realtà produce due righi, di cui il più basso
1009 conserva il colore nero predefinito per le teste delle note.
1010
1011 @lilypond[quote,verbatim,relative=2]
1012 \override Staff.NoteHead.color = #red
1013 \new Staff { a }
1014 @end lilypond
1015
1016 Questo accade perché non esiste un contesto @code{Staff} quando viene
1017 elaborata l'istruzione di override, quindi ne viene implicitamente creato uno e
1018 l'override viene applicato ad esso.  Ma poi il comando @code{\new Staff} crea
1019 un altro rigo separato nel quale vengono inserite le note.  Il codice
1020 corretto per colorare le teste di tutte le note è
1021
1022 @lilypond[quote,verbatim,relative=2]
1023 \new Staff {
1024   \override Staff.NoteHead.color = #red
1025   a
1026 }
1027 @end lilypond
1028
1029
1030 @node Messaggio di errore Unbound variable %
1031 @unnumberedsubsec Messaggio di errore Unbound variable %
1032 @translationof Error message Unbound variable %
1033
1034 Questo messaggio di errore comparirà in fondo alla console di
1035 output o nel file di log insieme al messaggio @qq{GUILE signalled an error @dots{}}
1036 ogni volta che viene chiamata una routine di Scheme che contenga (erroneamente)
1037 un commento @emph{LilyPond} invece di un commento @emph{Scheme}.
1038
1039 I commenti LilyPond iniziano con un segno di percentuale, (@code{%}), e non
1040 devono essere usati all'interno delle routine di Scheme.  I commenti Scheme
1041 iniziano con un punto e virgola, (@code{;}).
1042
1043 @node Messaggio di errore FT_Get_Glyph_Name
1044 @unnumberedsubsec Messaggio di errore FT_Get_Glyph_Name
1045 @translationof Error message FT_Get_Glyph_Name
1046
1047 Questo messaggio di errore compare nella console di output o nel file di log file
1048 se un file di input contiene un carattere non-ASCII e non è stato salvato nella
1049 codifica UTF-8.  Per dettagli si veda @ruser{Text encoding}.
1050
1051
1052 @node Avvertimento sul fatto che le affinità del rigo devono solo diminuire
1053 @unnumberedsubsec Avvertimento sul fatto che le affinità del rigo devono solo diminuire
1054 @translationof Warning staff affinities should only decrease
1055
1056 Questo avvertimento può apparire se non ci sono dei righi nell'output,
1057 ad esempio se ci sono solo un contesto @code{ChordName} e un
1058 contesto @code{Lyrics}, come in un lead sheet.  Si possono evitare questi
1059 messaggi di avvertimento facendo in modo che uno dei contesti si comporti
1060 come un rigo inserendo
1061
1062 @example
1063 \override VerticalAxisGroup.staff-affinity = ##f
1064 @end example
1065
1066 @noindent
1067 all'inizio del contesto.  Per dettagli si veda @qq{Spacing of non-staff lines} in
1068 @ruser{Flexible vertical spacing within systems}.
1069
1070 @node Messaggio di errore new inaspettato
1071 @unnumberedsubsec Messaggio di errore @code{@bs{}new} inaspettato
1072 @translationof Error message unexpected new
1073
1074 Un blocco @code{\score} deve contenere una @emph{singola} espressione musicale.
1075 Se invece contiene vari @code{\new Staff}, @code{\new StaffGroup} o simili
1076 contesti introdotti con @code{\new} senza che questi siano racchiusi tra
1077 parentesi graffe, @code{@{ @dots{} @}}, o doppie parentesi uncinate, @code{<< @dots{} >>},
1078 ovvero così:
1079
1080 @example
1081 \score @{
1082   % Invalido! Genera l'errore: errore di sintassi, \new inaspettato
1083   \new Staff @{ @dots{} @}
1084   \new Staff @{ @dots{} @}
1085 @}
1086 @end example
1087
1088 @noindent
1089 verrà generato questo messaggio di errore.
1090
1091 Per evitare l'errore, è sufficiente racchiudere tutti i blocchi @code{\new} tra
1092 parentesi graffe o doppie parentesi uncinate.
1093
1094 Se si usano le parentesi graffe, i blocchi @code{\new} appariranno in
1095 modo sequenziale:
1096
1097 @lilypond[quote,verbatim]
1098 \score {
1099   {
1100     \new Staff { a' a' a' a' }
1101     \new Staff { g' g' g' g' }
1102   }
1103 }
1104 @end lilypond
1105
1106 @noindent
1107 ma è più probabile che si debbano usare le doppie parentesi uncinate in modo
1108 che i nuovi righi siano avviati in parallelo, ovvero contemporaneamente:
1109
1110 @lilypond[quote,verbatim]
1111 \score {
1112   <<
1113     \new Staff { a' a' a' a' }
1114     \new Staff { g' g' g' g' }
1115   >>
1116 }
1117 @end lilypond
1118
1119 @node Avviso ignorare troppe collisioni tra colonne di nota
1120 @unnumberedsubsec Avviso ignorare troppe collisioni tra colonne di nota
1121 @translationof Warning ignoring too many clashing note columns
1122
1123 Se note appartenenti a due voci diverse con gambi nella stessa
1124 direzione si trovano nello stesso momento musicale, e per le voci
1125 non è stato specificato alcun spostamento, quando si compila il
1126 file apparirà il messaggio di avviso
1127 @samp{avviso: ignorare troppe collisioni tra colonne di nota}.
1128 Tale avviso apparirà anche quando le note non hanno gambi visibili,
1129 come nel caso delle semibrevi, se i gambi di note più brevi della
1130 stessa altezza sono nella stessa direzione.
1131
1132 Ricorda che la direzione del gambo, a meno che non sia specificata, per
1133 esempio tramite @code{\voiceOne}, etc., dipende dalla posizione della
1134 nota sul rigo.  Dunque se la direzione del gambo non è specificata, l'avviso
1135 apparirà solo quando i gambi si trovano nella stessa direzione, ovvero
1136 quando le note si trovano nella stessa metà del rigo.
1137
1138 Si possono evitare questi avvisi mettendo le note in voci in cui siano
1139 indicate le direzioni dei gambi e gli spostamenti, per esempio usando
1140 @code{\voiceOne}, etc.
1141
1142 Le note delle voci con un numero maggiore di due, @code{\voiceThree} etc., sono
1143 spostate automaticamente per avitare la collisione tra colonne di note.  Ciò
1144 causa uno spostamento visibile delle note con gambo, mentre le semibrevi
1145 non sono spostate visibilmente, a meno che non si verifichi una reale collisione
1146 tra teste di nota oppure quando le voci si incrociano rispetto al loro ordine
1147 naturale (quando le note di @code{\voiceThree} sono più alte di quelle di
1148 @code{\voiceOne}, etc.)
1149
1150 @seealso
1151 @rlearning{Definire esplicitamente le voci},
1152 @rlearning{Esempio musicale},
1153 @ruser{Polifonia su un singolo rigo},
1154 @ruser{Risoluzione delle collisioni}.