1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
4 Translation of GIT committish: 7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. For details, see the Contributors'
8 Guide, node Updating translation committishes..
14 @node Aggiornare i file con convert-ly
15 @chapter Aggiornare i file con @command{convert-ly}
16 @translationof Updating files with convert-ly
18 @cindex Aggiornare un file di LilyPond
21 La sintassi di input di LilyPond viene regolarmente modificata per semplificarla
22 o per migliorarla in vari modi. L'effetto collaterale è che l'interprete di LilyPond
23 spesso non è più compatibile con i vecchi file di input. Per ovviare a questo
24 problema, si può usare il programma @command{convert-ly}, che permette di gestire
25 gran parte dei cambiamenti di sintassi tra le versioni di LilyPond.
28 * Perché la sintassi cambia?::
29 * Invocare convert-ly::
30 * Opzioni da linea di comando per convert-ly::
31 * Problemi nell'eseguire convert-ly::
32 * Conversioni manuali::
36 @node Perché la sintassi cambia?
37 @section Perché la sintassi cambia?
38 @translationof Why does the syntax change?
41 @cindex aggiornare i vecchi file di input
43 La sintassi di input di LilyPond talvolta cambia. Via via che LilyPond
44 migliora, la sintassi (il linguaggio dell'input) viene modificata di
45 conseguenza. Queste modifiche vengono fatte a volte per far sì che l'input
46 sia più facile da leggere e da scrivere e a volte per fornire nuove
47 funzionalità di LilyPond.
49 Ad esempio, tutti i nomi delle proprietà di @code{\paper} e @code{\layout}
50 dovrebbero essere scritte nella forma @code{primo-secondo-terzo}.
51 Tuttavia, nella versione 2.11.60 ci siamo accorti che la proprietà
52 @code{printallheaders} non seguiva questa convenzione.
53 Dovevamo lasciarla così come era (confondendo i nuovi utenti che devono avere
54 a che fare con un formato di input incoerente), o cambiarla (disturbando i
55 vecchi utenti che avevano già delle partiture)? In questo caso decidemmo di
56 cambiare il nome in @code{print-all-headers}. Fortunatamente, questa modifica
57 può essere automatizzata con @command{convert-ly}.
59 Purtroppo @code{convert-ly} non è in grado di gestire tutti i cambiamenti
60 dell'input. Ad esempio, in LilyPond 2.4 e precedenti, gli accenti e le lettere
61 non inglesi venivano inserite con LaTeX -- per mostrare la parola francese per
62 Natale si usava @code{No\"el}. Ma in LilyPond
63 @c keep "-matching straight in fancy editors
64 2.6 e superiori, il carattere speciale @code{ë} deve essere inserito direttamente
65 nel file LilyPond come carattere UTF-8. @code{convert-ly} non può sostituire
66 tutti i caratteri speciali di LaTeX con i rispettivi caratteri UTF-8; è necessario
67 aggiornare a mano i vecchi file di input di LilyPond.
70 @node Invocare convert-ly
71 @section Invocare @command{convert-ly}
72 @translationof Invoking convert-ly
74 @command{convert-ly} usa la dichiarazione @code{\version} nel file di input
75 per determinare il vecchio numero di versione. Nella maggior parte dei casi
76 per aggiornare il file di input è sufficiente eseguire
79 convert-ly -e miofile.ly
83 nella directory che contiene il file. Questo comando aggiornerà
84 @file{miofile.ly} e preserverà il file originale in
87 @warning{@command{convert-ly} converte sempre fino all'ultimo cambiamento di
88 sintassi da lui gestito. Questo significa che il numero di @code{\version}
89 che appare nel file convertito è di solito inferiore al numero di versione di
90 @command{convert-ly}.}
92 Per convertire in una volta sola tutti i file di input in una directory si usa
98 Altrimenti, se si desidera specificare un nome diverso per il file
99 aggiornato, lasciando non modificati il file originale e il suo nome,
103 convert-ly miofile.ly > mionuovofile.ly
106 Il programma elencherà i numeri di versione per i quali sono state fatte
107 le conversioni. Se non vengono elencati dei numeri di versione il file è
110 Gli utenti MacOS@tie{}X possono eseguire questi comandi dalla voce di menu
111 @code{Compila > Aggiorna la sintassi}.
113 Gli utenti Windows devono inserire questi comandi nella finestra del Prompt
114 dei comandi, che di solito si trova in
115 @code{Start > Accessori > Prompt dei comandi}.
118 @node Opzioni da linea di comando per convert-ly
119 @section Opzioni da linea di comando per @command{convert-ly}
120 @translationof Command line options for convert-ly
122 Il programma viene lanciato in questo modo:
125 convert-ly [@var{opzione}]@dots{} @var{nomefile}@dots{}
129 Esistono le seguenti opzioni:
133 Applica le conversioni direttamente nel file di input, sostituendo
136 @item -f,--from=@var{from-patchlevel}
137 Imposta la versione da cui convertire. Se non viene impostata, @command{convert-ly}
138 la indovinerà in base alla stringa @code{\version} presente nel file.
139 Esempio: @code{--from=2.10.25}
141 @item -n,--no-version
142 Normalmente @command{convert-ly} aggiunge un indicatore @code{\version}
143 nell'output. Questa opzione lo impedisce.
145 @item -s, --show-rules
146 Mostra tutte le conversioni conosciute ed esce.
148 @item --to=@var{to-patchlevel}
149 Imposta l'obiettivo di versione della conversione. L'impostazione predefinita
150 è l'ultima versione disponibile. Esempio: @code{--to=2.12.2}
153 Stampa l'aiuto per l'utilizzo.
156 Per aggiornare i frammenti LilyPond presenti nei file texinfo, si usa
159 convert-ly --from=... --to=... --no-version *.itely
162 Per vedere i cambiamenti della sintassi di LilyPond tra due versioni, si usa
165 convert-ly --from=... --to=... -s
169 @node Problemi nell'eseguire convert-ly
170 @section Problemi nell'eseguire @code{convert-ly}
171 @translationof Problems running convert-ly
173 Quando si esegue convert-ly in una finestra del Prompt dei comandi in Windows
174 su un file il cui nome o percorso contengano degli spazi,
175 è necessario circondare interamente il nome del file di input con tre
176 (!) doppie virgolette:
179 convert-ly """D:/Mie Partiture/Ode.ly""" > "D:/Mie Partiture/new Ode.ly"
182 Se il semplice comando @command{convert-ly -e *.ly} non funziona perché la
183 linea di comando espansa diventa troppo lunga, si può inserire il comando
184 @command{convert-ly} in un loop. Questo esempio per UNIX
185 aggiornerà tutti i file @file{.ly} nella directory corrente
188 for f in *.ly; do convert-ly -e $f; done;
191 Nella finestra del Prompt dei comandi di Windows il comando corrispondente è
194 for %x in (*.ly) do convert-ly -e """%x"""
197 Non vengono gestite tutti i cambiamenti del linguaggio. Si può specificare solo
198 un'opzione di output. È piuttosto improbabile che si aggiornino automaticamente
199 il codice scheme e le interfacce di scheme di LilyPond; tienti pronto a
200 correggere a mano il codice scheme.
203 @node Conversioni manuali
204 @section Conversioni manuali
205 @translationof Manual conversions
207 In teoria, un programma come @command{convert-ly} potrebbe gestire qualsiasi
208 cambiamento di sintassi. Dopo tutto, un programma per computer interpreta la
209 la vecchia versione e la nuova versione, quindi un altro programma
210 può tradurre un file in un altro@footnote{O almeno questo è possibile
211 in qualsiasi file LilyPond che non contenga codice scheme. Se c'è del
212 codice scheme nel file, allora il file LilyPond contiene un linguaggio
213 Turing-completo, ed è possibile imbattersi in problemi col famoso
214 @qq{Problema dell'arresto} in informatica.}.
216 Tuttavia il progetto LilyPond ha risorse limitate: non tutte le
217 conversioni sono compiute automaticamente. Qui sotto si trova una lista
223 Doesn't always convert figured bass correctly, specifically things like {<
224 >}. Mats' comment on working around this:
225 To be able to run convert-ly
226 on it, I first replaced all occurrences of '{<' to some dummy like '{#'
227 and similarly I replaced '>}' with '&}'. After the conversion, I could
228 then change back from '{ #' to '{ <' and from '& }' to '> }'.
229 Doesn't convert all text markup correctly. In the old markup syntax,
230 it was possible to group a number of markup commands together within
232 -#'((bold italic) "string")
233 This will incorrectly be converted into
234 -\markup{{\bold italic} "string"}
235 instead of the correct
236 -\markup{\bold \italic "string"}
238 Doesn't handle \partcombine
239 Doesn't do \addlyrics => \lyricsto, this breaks some scores with multiple
242 \magnify isn't changed to \fontsize.
243 - \magnify #m => \fontsize #f, where f = 6ln(m)/ln(2)
244 remove-tag isn't changed.
245 - \applyMusic #(remove-tag '. . .) => \keepWithTag #'. . .
246 first-page-number isn't changed.
247 - first-page-number no => print-first-page-number = ##f
248 Line breaks in header strings aren't converted.
249 - \\\\ as line break in \header strings => \markup \center-align <
250 "First Line" "Second Line" >
251 Crescendo and decrescendo terminators aren't converted.
255 \turnOff (used in \set Staff.VoltaBracket = \turnOff) is not properly
258 \markup{ \center-align <{ ... }> } should be converted to:
259 \markup{ \center-align {\line { ... }} }
260 but now, \line is missing.
262 Special LaTeX characters such as $~$ in text are not converted to UTF8.
264 \score{} must now begin with a music expression. Anything else
265 (particularly \header{}) must come after the music.