]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/it/usage/running.itely
Doc-it: add Usage manual (just first 2 chapters)
[lilypond.git] / Documentation / it / usage / running.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
2
3 @ignore
4     Translation of GIT committish: 7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033
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.13.36"
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 passare al programma opzioni ulteriori.
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} intendiamo 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 * Invocare lilypond::
59 * Opzioni della linea di comando per lilypond::
60 * Variabili d'ambiente::
61 * LilyPond in chroot jail::
62 @end menu
63
64 @node Invocare lilypond
65 @unnumberedsubsec Invocare @command{lilypond}
66 @translationof Invoking lilypond
67
68 L'eseguibile @command{lilypond} può essere chiamato dalla linea di comando
69 nel seguente modo.
70
71 @example
72 lilypond [@var{opzione}]@dots{} @var{file}@dots{}
73 @end example
74
75
76 Se invocato con un nome di file senza estensione, viene tentata per prima
77 l'estensione @file{.ly}.  Per leggere l'input da stdin, usare un
78 trattino (@code{-}) al posto di @var{file}.
79
80 Quando @file{file.ly} viene elaborato, lilypond creerà @file{file.ps}
81 e @file{file.pdf} come output.  Possono essere specificati molti file;
82 ognuno di essi sarà elaborati in modo indipendente.  @footnote{Lo status di
83 GUILE non viene resettato dopo l'elaborazione di un file @code{.ly}, quindi
84 fare attenzione a non cambiare alcun valore predefinito dall'interno di Scheme.}
85
86 Se @file{file.ly} contiene più di un blocco @code{\book}, allora tutte le altre
87 partiture verranno salvate in file numerati, a partire da @file{file-1.pdf}.  Inoltre,
88 il valore di @code{output-suffix} (suffisso di output) sarà inserito tra la base
89 del nome del file e il numero.  Un file di input che contiene
90
91 @example
92 #(define output-suffix "violin")
93 \score @{ @dots{} @}
94 #(define output-suffix "cello")
95 \score @{ @dots{} @}
96 @end example
97
98 @noindent
99 produrrà come output @var{base}@file{-violin.pdf} e
100 @var{base}@file{-cello-1.pdf}.
101
102
103 @unnumberedsubsubsec Comandi standard da shell
104
105 Se la shell (ovvero la finestra dei comandi) utilizzata supporta le normali
106 redirezioni, potrebbe essere utile usare i seguenti comandi per dirigere
107 l'output di una console in un file:
108
109 @itemize
110
111 @item
112 @code{lilypond file.ly 1>stdout.log} per redirigere l'output normale
113
114 @item
115 @code{lilypond file.ly 2>stderr.log} per redirigere i messaggi di errore
116
117 @item
118 @code{lilypond file.ly &>all.log} per redirigere tutto l'output
119
120 @end itemize
121
122 Consulta la documentazione della tua shell per vedere se supporta queste
123 opzioni o se la sintassi è diversa.  Nota che questi sono comandi shell
124 e non hanno niente a che fare con lilypond.
125
126
127 @node Opzioni della linea di comando per lilypond
128 @unnumberedsubsec Opzioni della linea di comando per @command{lilypond}
129 @translationof Command line options for lilypond
130
131 @cindex Invocare @command{lilypond}
132 @cindex opzioni della linea di comando per @command{lilypond}
133 @cindex linea di comando, opzioni di
134 @cindex switches
135
136 Sono contemplate le seguenti opzioni:
137
138 @table @code
139
140 @item -e,--evaluate=@var{espressione}
141 Valuta l'@var{espressione} di Scheme prima di analizzare qualsiasi file @file{.ly}.
142 Si possono specificare varie opzioni @code{-e}; verranno valutate in modo
143 sequenziale.
144
145 L'espressione sarà valutata nel modulo @code{guile-user}, dunque se vuoi
146 usare delle definizioni in @var{espressione}, usa
147
148 @example
149 lilypond -e '(define-public a 42)'
150 @end example
151
152 @noindent
153 nella linea di comando, e includi
154
155 @example
156 #(use-modules (guile-user))
157 @end example
158
159 @noindent
160 in cima al file @code{.ly}.
161
162 @item -f,--format=@var{formato}
163 Formati di output.  Come @code{formato} si può scegliere tra
164 @code{ps}, @code{pdf}, e @code{png}.
165
166 Esempio: @code{lilypond -fpng @var{file}.ly}
167
168
169
170 @item -d,--define-default=@var{variabile}=@var{valore}
171 Imposta l'opzione interna del programma, @var{variabile}, al valore di Scheme
172 @var{valore}.  Se @var{valore} non viene specificato, allora viene usato
173 @var{#t}.  Per disabilitare un'opzione, si può usare il prefisso @code{no-}
174 prima della @var{variabile}, ad esempio
175
176 @cindex punta e clicca, linea di comando
177
178 @example
179 -dno-point-and-click
180 @end example
181
182 @noindent
183 è equivalente a
184 @example
185 -dpoint-and-click='#f'
186 @end example
187
188 Di seguito alcune opzioni interessanti.
189
190 @cindex aiuto, linea di comando
191
192 @table @samp
193 @item help
194 L'esecuzione di @code{lilypond -dhelp} mostrerà tutte le opzioni disponibili
195 di @code{-d}.
196
197 @cindex paper-size, linea di comando
198
199 @item paper-size
200 Questa opzione imposta la dimensione predefinita del foglio,
201 @example
202 -dpaper-size=\"letter\"
203 @end example
204
205 @noindent
206 Si noti che la stringa deve essere compresa tra virgolette precedute dal
207 segno di escape ( @code{\"} ).
208 @c Match " in previous line to help context-sensitive editors
209
210 @cindex safe, linea di comando
211
212 @item safe
213 Non si fida dell'input nel file @code{.ly}.
214
215 Quando la formattazione di LilyPond viene messa a disposizione tramite un server
216 web, si @b{DEVE} passare l'opzione @code{--safe} o l'opzione @code{--jail}.  L'opzione
217 @code{--safe} impedirà che il codice Scheme presente nell'input possa fare uno
218 scempio, ad esempio
219
220 @quotation
221 @verbatim
222 #(system "rm -rf /")
223 {
224   c4^#(ly:export (ly:gulp-file "/etc/passwd"))
225 }
226 @end verbatim
227 @end quotation
228
229 L'opzione @code{-dsafe} funziona valutando le espressioni Scheme presenti nell'input
230 in uno speciale modulo di sicurezza.  Questo modulo di sicurezza è derivato dal
231 modulo GUILE @file{safe-r5rs}, ma aggiunge alcune funzioni del
232 LilyPond API.  Queste funzioni sono elencate in @file{scm/safe-lily.scm}.
233
234 Inoltre, la modalità sicura non permette le direttive @code{\include} e
235 disabilita l'uso del backslash nelle stringhe @TeX{}.
236
237 In modalità sicura, non è possibile importare le variabili di LilyPond
238 in Scheme.
239
240 @code{-dsafe} @emph{non} rileva il sovrautilizzo di risorse.  È ancora possibile
241 far sì che il programma rimanga in sospeso per un tempo indefinito, ad esempio
242 alimentando il backend con strutture di dati cicliche.  Dunque se si vuole usare
243 LilyPond su un server web pubblicamente accessibile, si deve limitare il processo
244 nell'uso della CPU e della memoria.
245
246 La modalità sicura bloccherà la compilazione di molti utili frammenti di codice
247 LilyPond.  L'opzione @code{--jail} è un'alternativa più sicura, ma richiede
248 più lavoro per configurarla.
249
250 @cindex formato di output, impostare il
251 @item backend
252 il formato di output da usare per il back-end.  Per il @code{formato} si può
253 scegliere tra
254 @table @code
255 @item ps
256 @cindex PostScript, output
257  per PostScript.
258
259   I file Postscript includono i tipi di carattere TTF, Type1 e OTF.  Non vengono
260   inclusi i sottoinsiemi di questi tipi.  Se si usa un set di caratteri orientali,
261   si possono ottenere file di grosse dimensioni.
262
263 @item eps
264
265 @cindex Postscript, incapsulato
266 @cindex EPS (Encapsulated PostScript)
267
268  per PostScript incapsulato.  Invia ogni pagina (sistema) in un file
269 @file{EPS} separato, senza font, e in un unico file @file{EPS} con
270 tutte le pagine (sistemi) inclusi i font.
271
272 Questa è la modalità predefinita di @command{lilypond-book}.
273
274 @item svg
275
276 @cindex SVG (Scalable Vector Graphics)
277
278  per ottenere SVG (Scalable Vector Graphics).
279
280  Crea un singolo file SVG, senza font incorporati, per ogni pagina
281  dell'output.  Si raccomanda di installare i font Century
282  Schoolbook, inclusi nell'installazione di LilyPond, per una resa
283  ottimale.  In UNIX basta copiare questi font dalla directory di
284  LilyPond (solitamente
285  @file{/usr/share/lilypond/VERSION/fonts/otf/}) in
286  @file{~/.fonts/}.  L'output SVG dovrebbe essere compatibile con qualsiasi
287  editor SVG o user agent.
288
289 @item scm
290
291 @cindex Scheme, estrazione di
292
293  per estrarre i comandi di disegno grezzi e interni, basati su Scheme.
294
295 @item null
296  non produce la stampa della partitura; ha lo stesso effetto di @code{-dno-print-pages}.
297 @end table
298
299 Esempio: @code{lilypond -dbackend=svg @var{filename}.ly}
300
301 @item preview
302 @cindex preview, linea di comando
303 Genera un file di output che contiene i titoli e il primo sistema
304 del brano musicale.  Se si usano i blocchi @code{\bookpart}, i titoli e il
305 primo sistema di ogni @code{\bookpart} apparirà nell'output.
306 I backend @code{ps}, @code{eps}, e @code{svg} supportano questa
307 opzione.
308
309 @item print-pages
310 Genera tutte le pagine, come da impostazione predefinita.  @code{-dno-print-pages} è
311 utile in combinazione con @code{-dpreview}.
312
313 @end table
314
315
316
317 @item -h,--help
318 Mostra una sintesi dell'utilizzo.
319
320 @item -H,--header=@var{CAMPO}
321 Estrae un campo dell'intestazione nel file @file{NOME.@var{CAMPO}}.
322
323 @cindex ricerca dei file
324 @cindex percorso di ricerca
325 @item --include, -I=@var{directory}
326 Aggiunge @var{directory} al percorso di ricerca per i file di input.
327
328 È possibile assegnare più di un'opzione -I.  La ricerca inizierà nella prima
329 directory definita, e se il file da includere non viene trovato
330 la ricerca continuerà nelle directory seguenti.
331
332 @item -i,--init=@var{file}
333 Imposta il file di inizializzazione su @var{file} (predefinito: @file{init.ly}).
334
335 @cindex cartella, dirigere l'output in
336 @cindex nome del file di output, impostare
337
338 @item -o,--output=@var{FILE} or @var{CARTELLA}
339 Imposta il file di output predefinito @var{FILE} oppure, se una cartella con
340 quel nome esiste già, dirige l'output in @var{CARTELLA}, prendendo il nome
341 del file dal file di input.  Il suffisso appropriato verrà
342 aggiunto (ad esempio @code{.pdf} per il pdf) in entrambi i casi.
343
344
345 @cindex PostScript
346
347 @item --ps
348 Genera PostScript.
349
350 @cindex Portable Network Graphics (PNG)
351
352 @item --png
353 Genera immmagini di ogni pagina in formato PNG.  Questo implica
354 @code{--ps}.  La risoluzione in DPI dell'immagine può essere impostata con
355 @example
356 -dresolution=110
357 @end example
358
359 @cindex Portable Document Format (PDF)
360
361 @item --pdf
362 Genera PDF.  Questo implica @code{--ps}.
363
364
365
366 @item -j,--jail=@var{utente},@var{gruppo},@var{gabbia},@var{directory}
367 Esegue @command{lilypond} in una gabbia chroot.
368
369 L'opzione @code{--jail} fornisce un'alternativa più flessibile a
370 @code{--safe} quando la formattazione di LilyPond è messa a disposizione attraverso
371 un server web o quando LilyPond esegue sorgenti provenienti dall'esterno.
372
373 L'opzione @code{--jail} modifica la radice di @command{lilypond} in
374 @var{gabbia} appena prima di iniziare il vero processo di compilazione.  L'utente
375 e il gruppo vengono poi modificati per corrispondere a quelli forniti, e la
376 directory corrente viene spostata in @var{directory}.  Questa configurazione
377 garantisce che non sia possibile (almeno in teoria) uscire dalla gabbia.  Si noti
378 che perché @code{--jail} funzioni @command{lilypond} deve essere eseguito come root;
379 di solito questo si fa in modo sicuro col comando @command{sudo}.
380
381 Configurare una gabbia è una questione leggermente delicata, perché bisogna essere
382 sicuri che LilyPond possa trovare tutto quello di cui ha bisogno per compilare il
383 sorgente @emph{dentro la gabbia}.  Una configurazione tipica comprende i seguenti
384 elementi:
385
386 @table @asis
387 @item Impostare un filesystem distinto
388 Si dovrebbe creare un filesystem separato LilyPond, così che possa essere
389 montato con opzioni di sicurezza come @code{noexec}, @code{nodev}, e
390 @code{nosuid}.  In questo modo è impossibile lanciare degli eseguibili o
391 scrivere su un dispositivo direttamente da LilyPond.  Se non si vuole creare
392 una partizione separata, si può creare un file di dimensioni ragionevoli e usarlo
393 per montare un dispositivo di loop.  Un filesystem separato garantisce anche che
394 LilyPond non possa scrivere su uno spazio maggiore di quanto permesso.
395
396 @item Impostare un altro utente
397 Per eseguire LilyPond in una gabbia si dovrebbe usare un altro utente e gruppo
398 (ad esempio, @code{lily}/@code{lily}) con pochi privilegi.  Ci dovrebbe essere
399 una sola directory scrivibile da questo utente, che dovrebbe essere passata in
400 @var{dir}.
401
402 @item Preparare la gabbia
403 LilyPond ha bisogno di leggere alcuni file quando viene lanciato.  Tutti questi
404 file devono essere copiati nella gabbia, sotto lo stesso percorso in cui appaiono
405 nel vero filesystem principale.  Si deve copiare l'intero contenuto dell'installazione
406 LilyPond installation (ad esempio, @file{/usr/share/lilypond}).
407
408 Se c'è un problema, il modo più semplice per individuarlo è lanciare
409 LilyPond usando @command{strace}, che permetterà di scoprire quali
410 file mancano.
411
412 @item Eseguire LilyPond
413 In una gabbia montata con @code{noexec} è impossibile eseguire qualsiasi
414 programma esterno.  Dunque LilyPond deve essere eseguito con un backend che
415 non richieda tale programma.  Come è già stato detto, deve essere eseguito
416 con privilegi di superutente (che ovviamente perderà immediatamente),
417 possibilmente con l'uso di @command{sudo}.  È una buona idea limitare il
418 numero di secondi di tempo della CPU che LilyPond può usare (ad esempio con @command{ulimit
419 -t}), e, se il tuo sistema operativo lo supporta, la quantità di memoria che
420 può essere allocata.
421 @end table
422
423
424 @item -v,--version
425 Mostra informazioni sulla versione.
426
427 @item -V,--verbose
428 Aumenta la prolissità: mostra i percorsi completi di tutti i file letti, e dà
429 informazioni sui tempi.
430
431 @item -w,--warranty
432 Mostra la garanzia con cui viene distribuito GNU LilyPond.  (Viene distribuito
433 con @strong{NESSUNA GARANZIA}!)
434 @end table
435
436
437 @node Variabili d'ambiente
438 @unnumberedsubsec Variabili d'ambiente
439 @translationof Environment variables
440
441 @cindex LANG
442 @cindex LILYPOND_DATADIR
443
444 @command{lilypond} riconosce le seguenti variabili d'ambiente:
445 @table @code
446 @item LILYPOND_DATADIR
447 Specifica la directory predefinita in cui saranno cercati i messaggi della
448 localizzazione e i file di dati.  Questa directory deve contenere
449 sottodirectory chiamate @file{ly/}, @file{ps/}, @file{tex/}, etc.
450
451 @item LANG
452 Determina la lingua per i messaggi di avvertimento.
453
454 @item LILYPOND_GC_YIELD
455 Con questa variabile si possono aggiustare il consumo di memoria e la
456 performance.  È una percentuale che regola il comportamento di gestione della
457 memoria.  Con valori più alti il programma usa più memoria, con valori
458 più bassi usa più tempo della CPU.  Il valore predefinito è @code{70}.
459
460 @end table
461
462
463 @node LilyPond in una gabbia chroot
464 @unnumberedsubsec LilyPond in una gabbia chroot
465 @translationof LilyPond in chroot jail
466
467 Configurare un server perché esegua LilyPond in una gabbia chroot è un lavoro
468 complicato.  La procedura è spiegata sotto.  Gli esempi si riferiscono a
469 Ubuntu Linux e potrebbero richiedere l'uso di @code{sudo} in alcune situazioni.
470
471 @itemize
472
473 @item Installa i pacchetti necessari: LilyPond, GhostScript e ImageMagick.
474
475 @item Crea un nuovo utente dal nome @code{lily}:
476
477 @example
478 adduser lily
479 @end example
480
481 @noindent
482 Questo comando creerà anche un nuovo gruppo per l'utente @code{lily}, e una
483 cartella home,
484 @code{/home/lily}
485
486 @item Nella cartella home dell'utente @code{lily} crea un file da usare come
487 filesystem separato:
488
489 @example
490 dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
491 @end example
492
493 @noindent
494 In questo esempio è stato creato un file di 200MB da usare come filesystem della
495 gabbia.
496
497 @item Crea un dispositivo di loop, crea e monta un filesystem, quindi crea
498 una cartella scrivibile dall'utente @code{lily}:
499
500 @example
501 mkdir /mnt/lilyloop
502 losetup /dev/loop0 /home/lily/loopfile
503 mkfs -t ext3 /dev/loop0 200000
504 mount -t ext3 /dev/loop0 /mnt/lilyloop
505 mkdir /mnt/lilyloop/lilyhome
506 chown lily /mnt/lilyloop/lilyhome
507 @end example
508
509 @item Nella configurazione dei server, JAIL sarà @code{/mnt/lilyloop}
510 e DIR sarà @code{/lilyhome}.
511
512 @item Crea un grande albero delle directory nella gabbia copiando i file
513 necessari, come mostrato nello script di esempio più in basso.
514
515 Puoi usare @code{sed} per creare i comandi di copia necessari per un certo
516 eseguibile:
517
518 @example
519 for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/;  \
520   do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\&  \
521     cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p  \
522       \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done
523 @end example
524
525 @end itemize
526
527 @subheading Script di esempio per Ubuntu 8.04 a 32-bit
528
529 @example
530 #!/bin/sh
531 ## defaults set here
532
533 username=lily
534 home=/home
535 loopdevice=/dev/loop0
536 jaildir=/mnt/lilyloop
537 # the prefix (without the leading slash!)
538 lilyprefix=usr/local
539 # the directory where lilypond is installed on the system
540 lilydir=/$lilyprefix/lilypond/
541
542 userhome=$home/$username
543 loopfile=$userhome/loopfile
544 adduser $username
545 dd if=/dev/zero of=$loopfile bs=1k count=200000
546 mkdir $jaildir
547 losetup $loopdevice $loopfile
548 mkfs -t ext3 $loopdevice 200000
549 mount -t ext3 $loopdevice $jaildir
550 mkdir $jaildir/lilyhome
551 chown $username $jaildir/lilyhome
552 cd $jaildir
553
554 mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp
555 chmod a+w tmp
556
557 cp -r -L $lilydir $lilyprefix
558 cp -L /bin/sh /bin/rm bin
559 cp -L /usr/bin/convert /usr/bin/gs usr/bin
560 cp -L /usr/share/fonts/truetype usr/share/fonts
561
562 # Now the library copying magic
563 for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh"  \
564   "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=>  \
565     \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed  \
566       's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/'  \
567         | sed '/.*=>.*/d'; done | sh -s
568
569 # The shared files for ghostscript...
570       cp -L -r /usr/share/ghostscript usr/share
571 # The shared files for ImageMagick
572       cp -L -r /usr/lib/ImageMagick* usr/lib
573
574 ### Now, assuming that you have test.ly in /mnt/lilyloop/lilyhome,
575 ### you should be able to run:
576 ### Note that /$lilyprefix/bin/lilypond is a script, which sets the
577 ### LD_LIBRARY_PATH - this is crucial
578       /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
579 @end example
580
581 @c " keep quote signs balanced for context-sensitive editors
582
583 @node Messaggi di errore
584 @section Messaggi di errore
585 @translationof Error messages
586
587 @cindex messaggi di errore
588 Quando si compila un file possono apparire vari messaggi di errore:
589
590 @table @emph
591
592 @item Avvertimento
593 @cindex avvertimento
594 Qualcosa appare sospetto.  Se stai cercando di fare qualcosa di insolito
595 allora comprenderai il messaggio e potrai ignorarlo.
596 Tuttavia di solito i messaggi di avvertimento indicano che il file di input ha
597 qualcosa che non va.
598
599 @item Errore
600 @cindex errore
601 C'è qualcosa di assolutamente sbagliato.  Il passo attualmente in elaborazione
602 (analisi, interpretazione o formattazione) verrà completato, ma il passo
603 successivo verrà saltato.
604
605 @item Errore fatale
606 @cindex errore fatale
607 C'è qualcosa di assolutamente sbagliato e LilyPond non può continuare.  Questo
608 accade raramente.  La causa più tipica è un'errata installazione dei tipi di
609 carattere.
610
611 @item Errore Scheme
612 @cindex traccia, Scheme
613 @cindex traccia di chiamata
614 @cindex errore Scheme
615 Gli errori che capitano mentre si esegue del codice Scheme sono individuati
616 dall'interprete Scheme.  Se si esegue con l'opzione di prolissità (@code{-V} o
617 @code{--verbose}), viene stampata una traccia della chiamata di funzione
618 responsabile dell'errore.
619
620 @item Errore di programmazione
621 @cindex Errore di programmazione
622 C'è stata una qualche incongruenza interna.  Questi messaggi di errore
623 servono ad aiutare programmatori e debugger.  Di solito si possono
624 ignorare.  Talvolta sono talmente numerosi da nascondere il resto
625 dell'output.
626
627 @item Sospeso (core dumped)
628 @cindex Sospeso (core dumped)
629 Segnala un serio errore di programmazione che ha mandato in crash il
630 programma.  Questi errori sono considerati critici.  Se ti imbatti in un
631 errore simile, invia una segnalazione di errori.
632 @end table
633
634 @cindex errori, formato del messaggio
635 Se gli avvertimenti e gli errori possono essere collegati
636 a una parte specifica del file di input, i messaggi di errore
637 hanno la seguente forma
638
639 @example
640 @var{file}:@var{riga}:@var{colonna}: @var{messaggio}
641 @var{riga di input responsabile dell'errore}
642 @end example
643
644 Nella riga responsabile si inserisce un a capo per indicare la colonna
645 in cui è stato trovato l'errore.  Ad esempio,
646
647 @example
648 test.ly:2:19: error: not a duration: 5
649   @{ c'4 e'
650            5 g' @}
651 @end example
652
653 Queste posizioni sono la migliore ipotesi di LilyPond a proposito del
654 punto in cui l'avvertimento o l'errore sono comparsi, ma (per loro
655 stessa natura) avvertimenti ed errori capitano quando succede qualcosa
656 di imprevisto.  Se non riesci a vedere un errore nella riga indicata
657 del file di input, prova a controllare una o due righe sopra la posizione
658 indicata.
659
660 Maggiori informazioni sugli errori si trovano in @ref{Errori comuni}.
661
662
663 @node Errori comuni
664 @section Errori comuni
665 @translationof Common errors
666
667 Le condizioni di errore descritte di seguito capitano spesso, ma la causa
668 non è ovvia né facile da trovare.  Una volta che si sono viste e comprese,
669 è facile gestirle.
670
671
672 @menu
673 * La musica esce dalla pagina::
674 * Appare un rigo in più::
675 * Errore apparente in ../ly/init.ly::
676 * Messaggio di errore Unbound variable %::
677 * Messaggio di errore FT_Get_Glyph_Name::
678 * Avvertimento sul fatto che le affinità del rigo devono solo diminuire::
679 @end menu
680
681 @node La musica esce dalla pagina
682 @unnumberedsubsec La musica esce dalla pagina
683 @translationof Music runs off the page
684
685 Se la musica esce dalla pagina al di là del margine destro o appare
686 eccessivamente compressa, quasi sempre è dovuto all'inserimento di
687 una durata sbagliata di una nota, che fa sì che l'ultima nota di una misura si
688 estenda oltre la barra di divisione.  Non è sbagliato se la nota finale di
689 una misura non termina entro la barra di divisione inserita automaticamente, perché
690 semplicemente si assume che la nota continui nella misura successiva.  Ma se
691 si presenta una lunga sequenza di misure simili, la musica può
692 apparire compressa o può uscire dalla pagina perché gli a capo
693 automatici possono essere inseriti soltanto alla fine di misure complete,
694 ovvero quando tutte le note finiscono prima o alla fine della misura.
695
696 @warning{Una durata sbagliata può inibire l'interruzione di
697 linea, portando a una linea di musica estremamente compressa o
698 a musica che esce dalla pagina.}
699
700 La durata sbagliata può essere trovata facilmente se si usano i controlli di
701 battuta, si veda @ruser{Bar and bar number checks}.
702
703 Se si vuole davvero avere una serie di di tali misure sovrapposte
704 bisogna inserire una barra di divisione invisibile nel punto in cui
705 si vuole l'interruzione di linea.  Per i dettagli si veda @ruser{Bar lines}.
706
707
708 @node Appare un rigo in più
709 @unnumberedsubsec Appare un rigo in più
710 @translationof An extra staff appears
711
712 Se i contesti non sono creati esplicitamente con @code{\new} o
713 @code{\context}, saranno creati senza avviso appena si incontra
714 un comando che non può essere applicato a un contesto
715 esistente.  Nelle partiture semplici la creazione automatica dei contesti
716 è utile: infatti la maggior parte degli esempi nei manuali LilyPond sfruttano
717 questa semplificazione.  Ma talvolta la creazione silenziosa
718 di contesti può causare nuovi righi o partiture non desiderate.
719 Ad esempio, si potrebbe pensare che il seguente codice
720 colori di rosso tutte le teste delle note nel rigo, ma in realtà
721 produce due righi, di cui il più basso conserva il colore nero
722 predefinito per le teste delle note.
723
724 @lilypond[quote,verbatim,relative=2]
725 \override Staff.NoteHead #'color = #red
726 \new Staff { a }
727 @end lilypond
728
729 Questo accade perché non esiste un contesto @code{Staff} quando viene
730 elaborata l'istruzione di override, quindi ne viene implicitamente creato uno e
731 l'override viene applicato ad esso.  Ma poi il comando @code{\new Staff} crea
732 un altro rigo separato nel quale vengono inserite le note.  Il codice
733 corretto per colorare le teste di tutte le note è
734
735 @lilypond[quote,verbatim,relative=2]
736 \new Staff {
737   \override Staff.NoteHead #'color = #red
738   a
739 }
740 @end lilypond
741
742 Vediamo un secondo esempio.  Se un comando @code{\relative} viene posto
743 dentro un comando @code{\repeat}, vengono generati due righi, il secondo
744 spostato orizzontalmente rispetto al primo, perché il comando @code{\repeat}
745 genera due blocchi @code{\relative}, ognuno dei quali crea implicitamente i
746 blocchi @code{Staff} e @code{Voice}.
747
748 @lilypond[quote,verbatim]
749 \repeat unfold 2 {
750   \relative c' { c4 d e f }
751 }
752 @end lilypond
753
754 Per correggere il problema basta istanziare esplicitamente il contesto
755 @code{Voice}:
756
757 @lilypond[quote,verbatim]
758 \new Voice {
759   \repeat unfold 2 {
760     \relative c' { c4 d e f }
761   }
762 }
763 @end lilypond
764
765
766 @node Errore apparente in ../ly/init.ly
767 @unnumberedsubsec Errore apparente in @code{../ly/init.ly}
768 @translationof Apparent error in ../ly/init.ly
769
770 Vari oscuri messaggi di errore relativi a errori di sintassi in
771 @file{../ly/init.ly} possono apparire se il file di input non ha
772 una forma corretta, ad esempio se contiene delle parentesi o
773 delle virgolette che non sono chiuse correttamente.
774
775 L'errore più comune è la mancanza di una parentesi graffa, (@code{@}}), alla fine
776 di un blocco @code{score}.  In questo caso la soluzione è ovvia: controlla
777 che il blocco @code{score} sia chiuso correttamente.  La struttura corretta
778 di un file di input è descritta in @rlearning{Come funzionano i file di input di LilyPond}.
779 Per evitare questi errori conviene usare un editor che evidenzi automaticamente
780 le parentesi e le graffe corrispondenti.
781
782 Una seconda causa frequente di errore è la mancanza di uno spazio tra l'ultima
783 sillaba di un blocco di testo (lyrics) e la parentesi graffa che chiude il
784 blocco, (@code{@}}).  Senza questa separazione si considera che la graffa
785 faccia parte della sillaba.  Si consiglia di assicurarsi sempre che ci sia
786 uno spazio prima e dopo @emph{ogni} parentesi graffa.  Per comprendere l'importanza
787 di questo quando si usa il testo, si veda @ruser{Entering lyrics}.
788
789 Questo messaggio di errore può apparire anche nel caso in cui sia omessa la
790 virgoletta che chiude, (@code{"}).  In questo caso il messaggio di errore
791 @c keep "-matching straight in fancy editors
792 dovrebbe dare un numero di riga vicino alla riga sbagliata.  La virgoletta
793 non chiusa sarà solitamente una o due righe sopra.
794
795 @node Messaggio di errore Unbound variable %
796 @unnumberedsubsec Messaggio di errore Unbound variable %
797 @translationof Error message Unbound variable %
798
799 Questo messaggio di errore comparirà in fondo alla console di
800 output o nel file di log insieme al messaggio @qq{GUILE signalled an error ...}
801 ogni volta che viene chiamata una routine di Scheme che contenga (erroneamente)
802 un commento @emph{LilyPond} invece di un commento @emph{Scheme}.
803
804 I commenti LilyPond iniziano con un segno di percentuale, (@code{%}), e non
805 devono essere usati all'interno delle routine di Scheme.  I commenti Scheme
806 iniziano con un punto e virgola, (@code{;}).
807
808 @node Messaggio di errore FT_Get_Glyph_Name
809 @unnumberedsubsec Messaggio di errore FT_Get_Glyph_Name
810 @translationof Error message FT_Get_Glyph_Name
811
812 Questo messaggio di errore compare nella console di output o nel file di log file
813 se un file di input contiene un carattere non-ASCII e non è stato salvato nella
814 codifica UTF-8.  Per dettagli si veda @ruser{Text encoding}.
815
816
817 @node Avvertimento sul fatto che le affinità del rigo devono solo diminuire
818 @unnumberedsubsec Avvertimento sul fatto che le affinità del rigo devono solo diminuire
819 @translationof Warning staff affinities should only decrease
820
821 Questo avvertimento può apparire se non ci sono dei righi nell'output,
822 ad esempio se ci sono solo un contesto @code{ChordName} e un
823 contesto @code{Lyrics}, come in un lead sheet.  Si possono evitare questi
824 messaggi di avvertimento facendo in modo che uno dei contesti si comporti
825 come un rigo inserendo
826
827 @example
828 \override VerticalAxisGroup #'staff-affinity = ##f
829 @end example
830
831 @noindent
832 all'inizio del contesto.  Per dettagli si veda @qq{Spacing of non-staff lines} in
833 @ruser{Flexible vertical spacing within systems}.