]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/it/usage/suggestions.itely
Fix issue 1746 "v2.13.48 docball adds offline-root/ directory"
[lilypond.git] / Documentation / it / usage / suggestions.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
2
3 @ignore
4     Translation of GIT committish: de9ddc8183a93f28d167af8f195be95e5fbc91b9
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.14.0"
12
13 @node Consigli su come scrivere i file
14 @chapter Consigli su come scrivere i file
15 @translationof Suggestions for writing files
16
17 Ora puoi iniziare a scrivere file di input di LilyPond più grandi --
18 non più i piccoli esempi del tutorial, ma pezzi completi.
19 Ma qual è il modo migliore di farlo?
20
21 Finché LilyPond comprende i file di input e produce l'output che
22 desideri, non importa quale aspetto abbiano i file di input.  Tuttavia,
23 ci sono altri aspetti da tenere a mente quando si scrivono
24 file di input di LilyPond.
25
26 @itemize
27 @item Che fare in caso di errore?  La struttura data a un file LilyPond può
28 rendere l'individuazione di certi tipi di errore più facile (o più difficile).
29
30 @item Che fare se vuoi inviare i tuoi file di input a qualcuno?  E se decidi di
31 modificare i tuoi file di input dopo qualche anno?  Alcuni file di input di
32 LilyPond sono comprensibili a prima vista; altri ti possono lasciare a grattarti
33 la testa per un'ora.
34
35 @item Che fare se vuoi aggiornare il tuo file per poterlo usare con una
36 versione più recente di LilyPond?  Con l'evolversi di LilyPond, la sintassi di
37 input si trova soggetta a occasionali cambiamenti.  Alcune modifiche possono
38 essere fatte in automatico con @code{convert-ly}, ma altre potrebbero richiedere
39 un intervento manuale.  I file di input di LilyPond possono essere strutturati
40 in moda da essere poi aggiornati in modo più semplice (o più difficile).
41
42 @end itemize
43
44 @menu
45 * Consigli generali::
46 * Scrivere musica esistente::
47 * Grandi progetti::
48 * Risoluzione dei problemi::
49 * Make e Makefile::
50 @end menu
51
52
53 @node Consigli generali
54 @section Consigli generali
55 @translationof General suggestions
56
57 Ecco alcuni consigli che possono aiutarti a evitare o risolvere
58 i problemi:
59
60 @itemize
61 @item @strong{Includi il numero di @code{\version} in ogni file}.  Nota che tutti
62 i modelli contengono l'informazione su @code{\version}.  Si consiglia vivamente
63 di includere sempre @code{\version}, non importa quanto piccolo possa essere
64 il file.  L'esperienza personale insegna come sia frustrante cercare di ricordare
65 quale versione di LilyPond si usava alcuni anni prima!  @command{convert-ly}
66 richiede che si dichiari la versione di LilyPond utilizzata.
67
68 @item @strong{Includi i controlli}: @ruser{Bar and bar number checks},
69 @ruser{Octave checks}.  Includendo i controlli ogni tanto, se fai
70 un errore lo puoi individuare più rapidamente.  Cosa si intende per
71 @q{ogni tanto}?  Dipende dalla complessità della musica.  Se la musica
72 è molto semplice, anche solo una volta o due.  Se la musica è molto
73 complessa, a ogni battuta.
74
75 @item @strong{Una battuta per ogni linea di testo}.  Se c'è qualcosa di
76 complicato, nella musica stessa o nell'output che desideri, di solito è
77 preferibile scrivere una sola battuta per linea.  Risparmiare spazio sullo
78 schermo concentrando otto battute per ogni riga non è affatto conveniente
79 se poi devi fare il @q{debug} dei file di input.
80
81 @item @strong{Inserisci dei commenti nei file di input}.  Puoi usare i numeri
82 di battuta (ogni tanto) o dei riferimenti ai temi musicali
83 (@q{secondo tema nei violini,} @q{quarta variazione,} etc.).  Potresti non
84 aver bisogno dei commenti mentre scrivi il brano la prima volta, ma se due
85 o tre anni dopo vuoi cambiare qualcosa o se vuoi dare il sorgente a un amico,
86 sarà molto più difficile capire le tue intenzioni e la struttura del file
87 se mancano i commenti.
88
89 @item @strong{Indenta le parentesi graffe}.  Molti problemi sono causati
90 da mancata corrispondenza tra le quantità di @code{@{} e di @code{@}}.
91
92 @item @strong{Esplicita le durate} all'inizio delle sezioni e delle
93 variabili.  Se specifichi @code{c4 d e} all'inizio di una frase
94 (invece di @code{c d e} soltanto) puoi evitare l'insorgere di problemi
95 al momento di rimetter mano alla musica.
96
97 @item @strong{Separa le modifiche manuali (tweak)} dalle definizioni
98 musicali.  Vedi @rlearning{Ridurre l’input grazie a variabili e funzioni}, e
99 @rlearning{Style sheets}.
100
101 @end itemize
102
103
104 @node Scrivere musica esistente
105 @section Scrivere musica esistente
106 @translationof Typesetting existing music
107
108 Se stai riportando della musica da una partitura esistente (ovvero il brano
109 contenuto in uno spartito già scritto),
110
111 @itemize
112
113 @item Inserisci in LilyPond le note del manoscritto (la copia fisica della
114 musica) un sistema alla volta (ma sempre una battuta per linea di testo),
115 e controlla ogni sistema completato.  Puoi usare le proprietà
116 @code{showLastLength} o @code{showFirstLength} per velocizzare
117 l'elaborazione -- vedi @ruser{Skipping corrected music}.
118
119 @item Definisci @code{mBreak = @{ \break @}} e inserisci @code{\mBreak}
120 nel file di input ogni volta che nel manoscritto c'è un a capo.  In questo
121 modo è più semplice confrontare la musica generata da LilyPond con quella
122 originale.  Quando hai finito la revisione della partitura, puoi
123 definire @code{mBreak = @{ @}} per eliminare tutte queste interruzioni di
124 riga.  Così LilyPond potrà inserire le interruzioni dove ritiene stiano
125 meglio.
126
127 @item Quando si inserisce una parte per strumento traspositore all'interno
128 di una variabile, è consigliabile racchiudere le note tra parentesi graffe
129
130 @example
131 \transpose c altezza-naturale @{...@}
132 @end example
133
134 @noindent
135 (dove @code{altezza-naturale} corrisponde all'intonazione di base dello
136 strumento) così che la musica contenuta nella variabile sia effettivamente
137 scritta in Do. La puoi presentare trasposta quando la variabile viene usata,
138 se necessario, ma potresti non desiderarlo (ad esempio quando si stampa una
139 partitura in intonazione reale, quando si traspone una parte per trombone
140 dalla chiave di Sol alla chiave di basso, etc.).  Errori nelle trasposizioni
141 sono meno probabili se tutta la musica contenuta nelle variabili è ad
142 un'altezza costante.
143
144 Inoltre, trasponi sempre in relazione al Do.  Questo significa che le uniche
145 altre tonalità che userai saranno le altezze naturali degli strumenti - bes
146 per una tromba in Si bemolle, aes per un clarinetto in La bemolle, etc.
147
148 @end itemize
149
150
151 @node Grandi progetti
152 @section Grandi progetti
153 @translationof Large projects
154
155 Quando si lavora a un grande progetto, definire una struttura chiara nel
156 file di input diventa vitale.
157
158 @itemize
159
160 @item @strong{Usa una variabile per ogni voce}, con un minimo di
161 struttura nella definizione.  La struttura della sezione
162 @code{\score} è la parte più probabilmente soggetta a cambiamenti;
163 è invece molto improbabile che la definizione di @code{violin} cambi
164 in una nuova versione di LilyPond.
165
166 @example
167 violin = \relative c'' @{
168 g4 c'8. e16
169 @}
170 ...
171 \score @{
172   \new GrandStaff @{
173     \new Staff @{
174       \violin
175     @}
176   @}
177 @}
178 @end example
179
180 @item @strong{Separa le modifiche manuali (tweak) dalle definizioni musicali}.  Questo
181 punto è stato menzionato prima; nei grandi progetti diventa di vitale
182 importanza.  Potrebbe essere necessario modificare la definizione
183 di @code{fthenp}, ma si dovrebbe farlo una volta sola e senza toccare
184 niente in @code{violin}.
185
186 @example
187 fthenp = _\markup@{
188   \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
189 violin = \relative c'' @{
190 g4\fthenp c'8. e16
191 @}
192 @end example
193
194 @end itemize
195
196
197 @node Risoluzione dei problemi
198 @section Risoluzione dei problemi
199 @translationof Troubleshooting
200
201 Prima o poi ti capiterà di scrivere un file che LilyPond non
202 riesce a compilare.  I messaggi inviati da LilyPond potrebbero aiutarti
203 a trovare l'errore, ma in molti casi sarà necessario fare qualche ricerca
204 per individuare l'origine del problema.
205
206 Gli strumenti più potenti a questo riguardo sono il commento della
207 linea singola (indicato da @code{%}) e il commento di blocco
208 (indicato da @code{%@{ ... %@}}).  Se non sai dove sia il problema,
209 inizia col commentare ampie parti del file di input.  Dopo aver commentato
210 una sezione, prova a compilare di nuovo il file.  Se funziona, allora il
211 problema deve trovarsi nella parte che hai appena commentato.  Se non
212 funziona, continua a commentare il materiale finché non ottieni un codice
213 funzionante.
214
215 Nel caso estremo, potresti finire con soltanto
216
217 @example
218 \score @{
219   <<
220     % \melody
221     % \harmony
222     % \bass
223   >>
224   \layout@{@}
225 @}
226 @end example
227
228 @noindent
229 (in altre parole, un file senza musica)
230
231 Se dovesse succedere, non rinunciare.  Decommenta un pezzetto -- ad esempio,
232 la parte di basso -- e vedi se funziona.  Se non funziona,
233 allora commenta tutta la musica del basso (ma lascia
234 @code{\bass} in @code{\score} non commentato).
235
236 @example
237 bass = \relative c' @{
238 %@{
239   c4 c c c
240   d d d d
241 %@}
242 @}
243 @end example
244
245 Ora inizia a decommentare mano a mano la parte di
246 @code{bass} finché non trovi la linea che causa il problema.
247
248 Un'altra tecnica di debug molto utile consiste nel creare
249 @rweb{Esempi minimi}.
250
251
252 @node Make e Makefile
253 @section Make e Makefile
254 @translationof Make and Makefiles
255
256 @cindex makefile
257 @cindex make
258
259 Tutte le piattaforme su cui Lilypond può essere installato supportano un
260 software chiamato @code{make}.  Questo software legge un file speciale chiamato
261 @code{Makefile} che definisce quali file dipendono da quali altri e quali
262 comandi occorra dare al sistema operativo per produrre un file da un
263 altro.  Ad esempio Makefile può spiegare come generare
264 @file{ballad.pdf} e @file{ballad.midi} da @file{ballad.ly} eseguendo
265 Lilypond.
266
267 In alcune situazioni, è una buona idea creare un @code{Makefile}
268 per il proprio progetto, per proprio comodo o come cortesia
269 per quanti altri possano avere accesso ai file sorgente.
270 Questo vale per i progetti molto ampi con tanti file inclusi e
271 diverse opzioni di output (ad esempio, partitura completa, parti, partitura
272 del direttore, riduzione per pianoforte, etc.) o per progetti che
273 richiedono comandi difficili per la compilazione (come i progetti che
274 usano @code{lilypond-book}).  I Makefile variano molto in complessità
275 e flessibilità, in base alle necessità e alle abilità degli autori.
276 Il programma GNU Make è installato nelle distribuzioni GNU/Linux
277 e su MacOS X ed è disponibile anche per Windows.
278
279 Si veda il @strong{Manuale di GNU Make} per conoscere in dettaglio l'uso di
280 @code{make}, dato che quel che segue dà solo un'idea delle sue potenzialità.
281
282 I comandi per definire delle regole in un Makefile cambiano in base
283 alla piattaforma; ad esempio le varie distribuzioni di Linux e
284 MacOS usano @code{bash}, mentre Windows usa @code{cmd}.  Nota che su
285 MacOS X è necessario configurare il sistema per usare l'interprete da linea
286 di comando.  Di seguito alcuni Makefile di esempio, con versioni sia per
287 Linux/MacOS sia per Windows.
288
289 Il primo esempio è per una composizione per orchestra in quattro
290 movimenti e presenta una directory strutturata come segue:
291
292 @example
293 Symphony/
294 |-- MIDI/
295 |-- Makefile
296 |-- Notes/
297 |   |-- cello.ily
298 |   |-- figures.ily
299 |   |-- horn.ily
300 |   |-- oboe.ily
301 |   |-- trioString.ily
302 |   |-- viola.ily
303 |   |-- violinOne.ily
304 |   `-- violinTwo.ily
305 |-- PDF/
306 |-- Parts/
307 |   |-- symphony-cello.ly
308 |   |-- symphony-horn.ly
309 |   |-- symphony-oboes.ly
310 |   |-- symphony-viola.ly
311 |   |-- symphony-violinOne.ly
312 |   `-- symphony-violinTwo.ly
313 |-- Scores/
314 |   |-- symphony.ly
315 |   |-- symphonyI.ly
316 |   |-- symphonyII.ly
317 |   |-- symphonyIII.ly
318 |   `-- symphonyIV.ly
319 `-- symphonyDefs.ily
320 @end example
321
322 I file @file{.ly} nelle directory @file{Scores} e
323 @file{Parts} prendono le note dai file @file{.ily}
324 nella directory @file{Notes}:
325
326 @example
327 %%% inizio del file "symphony-cello.ly"
328 \include ../symphonyDefs.ily
329 \include ../Notes/cello.ily
330 @end example
331
332 Il Makefile avrà i target di @code{score} (l'intero brano in partitura
333 completa), @code{movements} (singoli movimenti in partitura completa),
334 e @code{parts} (singole parti per i musicisti).  C'è anche un
335 target @code{archive} che creerà un archivio compresso dei file sorgenti,
336 utile per la condivisione via web o email.  Ecco un esempio di
337 Makefile per GNU/Linux e MacOS X.  Dovrebbe essere salvato col
338 nome @code{Makefile} nella directory principale del progetto:
339
340 @warning{Quando si definisce un target o una regola di pattern, le
341 linee successive devono iniziare con i tabulatori, non con gli spazi.}
342
343 @example
344 # Il prefisso al nome dei file di output
345 piece = symphony
346 # Determinazione del numero dei processori
347 CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
348 # Il comando per eseguire lilypond
349 LILY_CMD = lilypond -ddelete-intermediate-files \
350                     -dno-point-and-click -djob-count=$(CPU_CORES)
351
352 # I suffissi usati in questo Makefile.
353 .SUFFIXES: .ly .ily .pdf .midi
354
355 # I file di input e di output vengono cercati nelle directory elencate
356 # nella variabile VPATH.  Tutte queste sono sottodirectory della directory
357 # corrente (assegnata dalla variabile `CURDIR' di GNU make).
358 VPATH = \
359   $(CURDIR)/Scores \
360   $(CURDIR)/PDF \
361   $(CURDIR)/Parts \
362   $(CURDIR)/Notes
363
364 # La regola di pattern per creare i file PDF e MIDI da un file di input LY.
365 # I file di output .pdf vengono messi nella sottodirectory `PDF', mentre i file
366 # .midi vanno nella sottodirectory `MIDI'.
367 %.pdf %.midi: %.ly
368         $(LILY_CMD) $<; \           # questa linea inizia con una tabulazione
369         if test -f "$*.pdf"; then \
370             mv "$*.pdf" PDF/; \
371         fi; \
372         if test -f "$*.midi"; then \
373             mv "$*.midi" MIDI/; \
374         fi
375
376 notes = \
377   cello.ily \
378   horn.ily \
379   oboe.ily \
380   viola.ily \
381   violinOne.ily \
382   violinTwo.ily
383
384 # Le dipendenze dei movimenti.
385 $(piece)I.pdf: $(piece)I.ly $(notes)
386 $(piece)II.pdf: $(piece)II.ly $(notes)
387 $(piece)III.pdf: $(piece)III.ly $(notes)
388 $(piece)IV.pdf: $(piece)IV.ly $(notes)
389
390 # Le dipendenze della partitura completa.
391 $(piece).pdf: $(piece).ly $(notes)
392
393 # Le dipendenze delle parti.
394 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
395 $(piece)-horn.pdf: $(piece)-horn.ly horn.ily
396 $(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
397 $(piece)-viola.pdf: $(piece)-viola.ly viola.ily
398 $(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
399 $(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
400
401 # Lanciare `make score' per generare la partitura completa di tutti i quattro
402 # movimenti in un unico file.
403 .PHONY: score
404 score: $(piece).pdf
405
406 # Lanciare `make parts' per generare tutte le parti.
407 # Lanciare `make foo.pdf' per generare la parte per lo strumento `foo'.
408 # Esempio: `make symphony-cello.pdf'.
409 .PHONY: parts
410 parts: $(piece)-cello.pdf \
411        $(piece)-violinOne.pdf \
412        $(piece)-violinTwo.pdf \
413        $(piece)-viola.pdf \
414        $(piece)-oboes.pdf \
415        $(piece)-horn.pdf
416
417 # Lanciare `make movements' per generare i file per i
418 # quattro movimenti separatamente.
419 .PHONY: movements
420 movements: $(piece)I.pdf \
421            $(piece)II.pdf \
422            $(piece)III.pdf \
423            $(piece)IV.pdf
424
425 all: score parts movements
426
427 archive:
428         tar -cvvf stamitz.tar \       # questa linea inizia con una tabulazione
429         --exclude=*pdf --exclude=*~ \
430         --exclude=*midi --exclude=*.tar \
431         ../Stamitz/*
432 @end example
433
434
435 Ci sono alcune complicazioni specifiche della piattaforma Windows.  Dopo aver
436 scaricato e installato GNU Make per Windows, bisogna impostare il percorso
437 corretto nelle variabili d'ambiente di sistema perché la
438 shell DOS possa trovare il programma Make.  Per farlo, clicca col tasto destro
439 del mouse su "My Computer," poi scegli @code{Proprietà} e
440 @code{Avanzate}.  Clicca su @code{Variabili di ambiente}, e poi nel
441 pannello @code{Variabili di Sistema}, nella sezione @code{Percorso}, clicca su
442 @code{modifica} e aggiungi il percorso al file eseguibile GNU Make, che
443 avrà un aspetto simile:
444
445 @example
446 C:\Program Files\GnuWin32\bin
447 @end example
448
449 Lo stesso Makefile deve essere modificato per gestire diversi comandi
450 shell e gli spazi che sono presenti in alcune directory predefinite
451 di sistema.  Il target @code{archive} target viene tolto perché Windows
452 non ha il comando @code{tar}; inoltre Windows ha una diversa estensione
453 predefinita per i file midi.
454
455
456 @example
457 ## VERSIONE DI WINDOWS
458 ##
459 piece = symphony
460 LILY_CMD = lilypond -ddelete-intermediate-files \
461                     -dno-point-and-click \
462                     -djob-count=$(NUMBER_OF_PROCESSORS)
463
464 #get the 8.3 name of CURDIR (workaround for spaces in PATH)
465 workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
466           do @@echo %%~sb)
467
468 .SUFFIXES: .ly .ily .pdf .mid
469
470 VPATH = \
471   $(workdir)/Scores \
472   $(workdir)/PDF \
473   $(workdir)/Parts \
474   $(workdir)/Notes
475
476 %.pdf %.mid: %.ly
477         $(LILY_CMD) $<      # questa linea inizia con una tabulazione
478         if exist "$*.pdf"  move /Y "$*.pdf"  PDF/
479         if exist "$*.mid" move /Y "$*.mid" MIDI/
480
481 notes = \
482   cello.ily \
483   figures.ily \
484   horn.ily \
485   oboe.ily \
486   trioString.ily \
487   viola.ily \
488   violinOne.ily \
489   violinTwo.ily
490
491 $(piece)I.pdf: $(piece)I.ly $(notes)
492 $(piece)II.pdf: $(piece)II.ly $(notes)
493 $(piece)III.pdf: $(piece)III.ly $(notes)
494 $(piece)IV.pdf: $(piece)IV.ly $(notes)
495
496 $(piece).pdf: $(piece).ly $(notes)
497
498 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
499 $(piece)-horn.pdf: $(piece)-horn.ly horn.ily
500 $(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
501 $(piece)-viola.pdf: $(piece)-viola.ly viola.ily
502 $(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
503 $(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
504
505 .PHONY: score
506 score: $(piece).pdf
507
508 .PHONY: parts
509 parts: $(piece)-cello.pdf \
510        $(piece)-violinOne.pdf \
511        $(piece)-violinTwo.pdf \
512        $(piece)-viola.pdf \
513        $(piece)-oboes.pdf \
514        $(piece)-horn.pdf
515
516 .PHONY: movements
517 movements: $(piece)I.pdf \
518            $(piece)II.pdf \
519            $(piece)III.pdf \
520            $(piece)IV.pdf
521
522 all: score parts movements
523 @end example
524
525
526 Il Makefile seguente è per un documento @command{lilypond-book} fatto con
527 LaTeX.  Questo progetto ha un indice, dunque il comando @command{latex} deve
528 essere eseguito due volte per aggiornare i collegamenti.  I file di output
529 sono tutti salvati nella directory @code{out} per i file .pdf e nella directory
530 @code{htmlout} per i file html.
531
532 @example
533 SHELL=/bin/sh
534 FILE=myproject
535 OUTDIR=out
536 WEBDIR=htmlout
537 VIEWER=acroread
538 BROWSER=firefox
539 LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
540 LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
541 PDF=cd $(OUTDIR) && pdflatex $(FILE)
542 HTML=cd $(WEBDIR) && latex2html $(FILE)
543 INDEX=cd $(OUTDIR) && makeindex $(FILE)
544 PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf &
545
546 all: pdf web keep
547
548 pdf:
549         $(LILYBOOK_PDF)  # inizia con una tabulazione
550         $(PDF)           # inizia con una tabulazione
551         $(INDEX)         # inizia con una tabulazione
552         $(PDF)           # inizia con una tabulazione
553         $(PREVIEW)       # inizia con una tabulazione
554
555 web:
556         $(LILYBOOK_HTML) # inizia con una tabulazione
557         $(HTML)          # inizia con una tabulazione
558         cp -R $(WEBDIR)/$(FILE)/ ./  # inizia con una tabulazione
559         $(BROWSER) $(FILE)/$(FILE).html &  # inizia con una tabulazione
560
561 keep: pdf
562         cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf  # inizia con una tabulazione
563
564 clean:
565         rm -rf $(OUTDIR) # inizia con una tabulazione
566
567 web-clean:
568         rm -rf $(WEBDIR) # inizia con una tabulazione
569
570 archive:
571         tar -cvvf myproject.tar \ # inizia questa linea con una tabulazione
572         --exclude=out/* \
573         --exclude=htmlout/* \
574         --exclude=myproject/* \
575         --exclude=*midi \
576         --exclude=*pdf \
577         --exclude=*~ \
578         ../MyProject/*
579 @end example
580
581 @c TODO: make this thing work on Windows
582
583 Il Makefile precedente non funziona su Windows.  Un'alternativa per
584 gli utenti Windows consiste nel creare un semplice file batch
585 contenente i comandi per la compilazione.  Questo file non terrà
586 traccia delle dipendenze come fa invece un Makefile, ma almeno riduce
587 il processo di compilazione a un solo comando.  Salva il codice
588 seguente come @command{build.bat} o @command{build.cmd}.
589 Il file batch può essere eseguito nel prompt DOS o semplicemente con
590 un doppio clic sulla sua icona.
591
592 @example
593 lilypond-book --output=out --pdf myproject.lytex
594 cd out
595 pdflatex myproject
596 makeindex myproject
597 pdflatex myproject
598 cd ..
599 copy out\myproject.pdf MyProject.pdf
600 @end example
601
602
603 @seealso
604
605 Questo manuale:
606 @ref{Uso da linea di comando},
607 @ref{lilypond-book}
608