From: Federico Bruni Date: Tue, 5 Apr 2011 21:29:26 +0000 (+0200) Subject: Doc-it: add Usage manual (just first 2 chapters) X-Git-Tag: release/2.13.58-1~4 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=cacc0f2cde295242511a9e412e80a5d51fec0840;p=lilypond.git Doc-it: add Usage manual (just first 2 chapters) --- diff --git a/Documentation/it/GNUmakefile b/Documentation/it/GNUmakefile index 5f3f143038..df35c4cf1b 100644 --- a/Documentation/it/GNUmakefile +++ b/Documentation/it/GNUmakefile @@ -1,6 +1,6 @@ ISOLANG = it depth = ../.. -SUBDIRS = learning texidocs web +SUBDIRS = learning texidocs web usage STEPMAKE_TEMPLATES = documentation LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root diff --git a/Documentation/it/usage.tely b/Documentation/it/usage.tely new file mode 100644 index 0000000000..06b2df99d9 --- /dev/null +++ b/Documentation/it/usage.tely @@ -0,0 +1,86 @@ +\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- +@ignore + Translation of GIT committish: 1c846b2c2348b4e0ca4a3c2e8fb267047ba2d203 + + When revising a translation, copy the HEAD committish of the + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. +@end ignore + +@setfilename lilypond-usage.info +@settitle LilyPond: manuale d'uso del programma +@documentencoding UTF-8 +@documentlanguage it +@afourpaper + +@c Translators: Federico Bruni + +@macro manualIntro +Questo manuale spiega come eseguire i programmi distribuiti con +LilyPond versione @version{}. Inoltre, suggerisce alcune delle +@qq{migliori pratiche} per un uso efficiente. +@end macro + +@c `Usage' was born 1999-10-10 with git commit c82c30c... +@macro copyrightDeclare +Copyright @copyright{} 1999--2011 degli autori. +@end macro + +@set FDL +@include macros.itexi + + +@c don't remove this comment. +@ignore +@omfcreator Han-Wen Nienhuys, Jan Nieuwenhuizen and Graham Percival +@omfdescription Application Usage of the LilyPond music engraving system +@omftype program usage +@omfcategory Applications|Publishing +@omflanguage English +@end ignore + + +@lilyTitlePage{Utilizzo} + + +@c TOC -- non-tex +@ifnottex + +@c maybe add a "Tasks" or "Specific tasks" or something like +@c that, after Suggestions -gp +@menu +* Eseguire lilypond:: Utilizzo. +* Aggiornare i file con convert-ly:: Aggiornare i file di input. +* lilypond-book:: Integrare testo e musica. +* Programmi esterni:: Combinare LilyPond con altri programmi. +* Suggerimenti su come scrivere i file:: Migliori pratiche ed efficace soluzione degli errori. + +Appendici + +* GNU Free Documentation License:: Licenza di questo documento. +* Indice di LilyPond:: +@end menu + +@docMain +@end ifnottex + + +@contents + +@allowcodebreaks false + +@include usage/running.itely +@include usage/updating.itely +@include usage/lilypond-book.itely +@include usage/external.itely +@include usage/suggestions.itely + +@include fdl.itexi + +@node Indice di LilyPond +@appendix Indice di LilyPond +@translationof LilyPond index + +@printindex cp + +@bye diff --git a/Documentation/it/usage/GNUmakefile b/Documentation/it/usage/GNUmakefile new file mode 100644 index 0000000000..425cc1d8e2 --- /dev/null +++ b/Documentation/it/usage/GNUmakefile @@ -0,0 +1,5 @@ +depth = ../../.. + +LOCALSTEPMAKE_TEMPLATES = ly + +include $(depth)/make/stepmake.make diff --git a/Documentation/it/usage/running.itely b/Documentation/it/usage/running.itely new file mode 100644 index 0000000000..868d364c88 --- /dev/null +++ b/Documentation/it/usage/running.itely @@ -0,0 +1,833 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- + +@ignore + Translation of GIT committish: 7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033 + + When revising a translation, copy the HEAD committish of the + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. +@end ignore + +@c \version "2.13.36" + + +@node Eseguire lilypond +@chapter Eseguire @command{lilypond} +@translationof Running LilyPond + +Questo capitolo descrive dettagliatamente gli aspetti tecnici dell'esecuzione +di LilyPond. + +@menu +* Uso normale:: +* Uso da linea di comando:: +* Messaggi di errore:: +* Errori comuni:: +@end menu + + +@node Uso normale +@section Uso normale +@translationof Normal usage + +La maggior parte degli utenti esegue LilyPond attraverso un'interfaccia grafica +(GUI); se non lo hai già fatto, leggi il @rlearning{Tutorial}. Se usi un editor +diverso per scrivere i file lilypond, leggi la documentazione di quel programma. + + +@node Uso da linea di comando +@section Uso da linea di comando +@translationof Command-line usage + +Questa sezione contiene informazioni aggiuntive sull'uso di LilyPond da linea +di comando. Questo può essere utile per passare al programma opzioni ulteriori. +Inoltre, ci sono alcuni programmi complementari di @q{aiuto} (come +@code{midi2ly}) che funzionano solo da linea di comando. + +Con @q{linea di comando} intendiamo la linea di comando del sistema operativo. +Gli utenti Windows avranno più familiarità con i termini @q{shell DOS} o +@q{shell dei comandi}. Gli utenti MacOS@tie{}X avranno più familiarità con i termini +@q{terminale} o @q{console}. Una configurazione ulteriore è necessaria +per gli utenti MacOS@tie{}X; si veda @rweb{MacOS X}. + +Descrivere come usare questa parte di un sistema operativo non rientra negli +obiettivi di questo manuale; si prega di consultare altra documentazione su +questo argomento se non si conosce la linea di comando. + +@menu +* Invocare lilypond:: +* Opzioni della linea di comando per lilypond:: +* Variabili d'ambiente:: +* LilyPond in chroot jail:: +@end menu + +@node Invocare lilypond +@unnumberedsubsec Invocare @command{lilypond} +@translationof Invoking lilypond + +L'eseguibile @command{lilypond} può essere chiamato dalla linea di comando +nel seguente modo. + +@example +lilypond [@var{opzione}]@dots{} @var{file}@dots{} +@end example + + +Se invocato con un nome di file senza estensione, viene tentata per prima +l'estensione @file{.ly}. Per leggere l'input da stdin, usare un +trattino (@code{-}) al posto di @var{file}. + +Quando @file{file.ly} viene elaborato, lilypond creerà @file{file.ps} +e @file{file.pdf} come output. Possono essere specificati molti file; +ognuno di essi sarà elaborati in modo indipendente. @footnote{Lo status di +GUILE non viene resettato dopo l'elaborazione di un file @code{.ly}, quindi +fare attenzione a non cambiare alcun valore predefinito dall'interno di Scheme.} + +Se @file{file.ly} contiene più di un blocco @code{\book}, allora tutte le altre +partiture verranno salvate in file numerati, a partire da @file{file-1.pdf}. Inoltre, +il valore di @code{output-suffix} (suffisso di output) sarà inserito tra la base +del nome del file e il numero. Un file di input che contiene + +@example +#(define output-suffix "violin") +\score @{ @dots{} @} +#(define output-suffix "cello") +\score @{ @dots{} @} +@end example + +@noindent +produrrà come output @var{base}@file{-violin.pdf} e +@var{base}@file{-cello-1.pdf}. + + +@unnumberedsubsubsec Comandi standard da shell + +Se la shell (ovvero la finestra dei comandi) utilizzata supporta le normali +redirezioni, potrebbe essere utile usare i seguenti comandi per dirigere +l'output di una console in un file: + +@itemize + +@item +@code{lilypond file.ly 1>stdout.log} per redirigere l'output normale + +@item +@code{lilypond file.ly 2>stderr.log} per redirigere i messaggi di errore + +@item +@code{lilypond file.ly &>all.log} per redirigere tutto l'output + +@end itemize + +Consulta la documentazione della tua shell per vedere se supporta queste +opzioni o se la sintassi è diversa. Nota che questi sono comandi shell +e non hanno niente a che fare con lilypond. + + +@node Opzioni della linea di comando per lilypond +@unnumberedsubsec Opzioni della linea di comando per @command{lilypond} +@translationof Command line options for lilypond + +@cindex Invocare @command{lilypond} +@cindex opzioni della linea di comando per @command{lilypond} +@cindex linea di comando, opzioni di +@cindex switches + +Sono contemplate le seguenti opzioni: + +@table @code + +@item -e,--evaluate=@var{espressione} +Valuta l'@var{espressione} di Scheme prima di analizzare qualsiasi file @file{.ly}. +Si possono specificare varie opzioni @code{-e}; verranno valutate in modo +sequenziale. + +L'espressione sarà valutata nel modulo @code{guile-user}, dunque se vuoi +usare delle definizioni in @var{espressione}, usa + +@example +lilypond -e '(define-public a 42)' +@end example + +@noindent +nella linea di comando, e includi + +@example +#(use-modules (guile-user)) +@end example + +@noindent +in cima al file @code{.ly}. + +@item -f,--format=@var{formato} +Formati di output. Come @code{formato} si può scegliere tra +@code{ps}, @code{pdf}, e @code{png}. + +Esempio: @code{lilypond -fpng @var{file}.ly} + + + +@item -d,--define-default=@var{variabile}=@var{valore} +Imposta l'opzione interna del programma, @var{variabile}, al valore di Scheme +@var{valore}. Se @var{valore} non viene specificato, allora viene usato +@var{#t}. Per disabilitare un'opzione, si può usare il prefisso @code{no-} +prima della @var{variabile}, ad esempio + +@cindex punta e clicca, linea di comando + +@example +-dno-point-and-click +@end example + +@noindent +è equivalente a +@example +-dpoint-and-click='#f' +@end example + +Di seguito alcune opzioni interessanti. + +@cindex aiuto, linea di comando + +@table @samp +@item help +L'esecuzione di @code{lilypond -dhelp} mostrerà tutte le opzioni disponibili +di @code{-d}. + +@cindex paper-size, linea di comando + +@item paper-size +Questa opzione imposta la dimensione predefinita del foglio, +@example +-dpaper-size=\"letter\" +@end example + +@noindent +Si noti che la stringa deve essere compresa tra virgolette precedute dal +segno di escape ( @code{\"} ). +@c Match " in previous line to help context-sensitive editors + +@cindex safe, linea di comando + +@item safe +Non si fida dell'input nel file @code{.ly}. + +Quando la formattazione di LilyPond viene messa a disposizione tramite un server +web, si @b{DEVE} passare l'opzione @code{--safe} o l'opzione @code{--jail}. L'opzione +@code{--safe} impedirà che il codice Scheme presente nell'input possa fare uno +scempio, ad esempio + +@quotation +@verbatim +#(system "rm -rf /") +{ + c4^#(ly:export (ly:gulp-file "/etc/passwd")) +} +@end verbatim +@end quotation + +L'opzione @code{-dsafe} funziona valutando le espressioni Scheme presenti nell'input +in uno speciale modulo di sicurezza. Questo modulo di sicurezza è derivato dal +modulo GUILE @file{safe-r5rs}, ma aggiunge alcune funzioni del +LilyPond API. Queste funzioni sono elencate in @file{scm/safe-lily.scm}. + +Inoltre, la modalità sicura non permette le direttive @code{\include} e +disabilita l'uso del backslash nelle stringhe @TeX{}. + +In modalità sicura, non è possibile importare le variabili di LilyPond +in Scheme. + +@code{-dsafe} @emph{non} rileva il sovrautilizzo di risorse. È ancora possibile +far sì che il programma rimanga in sospeso per un tempo indefinito, ad esempio +alimentando il backend con strutture di dati cicliche. Dunque se si vuole usare +LilyPond su un server web pubblicamente accessibile, si deve limitare il processo +nell'uso della CPU e della memoria. + +La modalità sicura bloccherà la compilazione di molti utili frammenti di codice +LilyPond. L'opzione @code{--jail} è un'alternativa più sicura, ma richiede +più lavoro per configurarla. + +@cindex formato di output, impostare il +@item backend +il formato di output da usare per il back-end. Per il @code{formato} si può +scegliere tra +@table @code +@item ps +@cindex PostScript, output + per PostScript. + + I file Postscript includono i tipi di carattere TTF, Type1 e OTF. Non vengono + inclusi i sottoinsiemi di questi tipi. Se si usa un set di caratteri orientali, + si possono ottenere file di grosse dimensioni. + +@item eps + +@cindex Postscript, incapsulato +@cindex EPS (Encapsulated PostScript) + + per PostScript incapsulato. Invia ogni pagina (sistema) in un file +@file{EPS} separato, senza font, e in un unico file @file{EPS} con +tutte le pagine (sistemi) inclusi i font. + +Questa è la modalità predefinita di @command{lilypond-book}. + +@item svg + +@cindex SVG (Scalable Vector Graphics) + + per ottenere SVG (Scalable Vector Graphics). + + Crea un singolo file SVG, senza font incorporati, per ogni pagina + dell'output. Si raccomanda di installare i font Century + Schoolbook, inclusi nell'installazione di LilyPond, per una resa + ottimale. In UNIX basta copiare questi font dalla directory di + LilyPond (solitamente + @file{/usr/share/lilypond/VERSION/fonts/otf/}) in + @file{~/.fonts/}. L'output SVG dovrebbe essere compatibile con qualsiasi + editor SVG o user agent. + +@item scm + +@cindex Scheme, estrazione di + + per estrarre i comandi di disegno grezzi e interni, basati su Scheme. + +@item null + non produce la stampa della partitura; ha lo stesso effetto di @code{-dno-print-pages}. +@end table + +Esempio: @code{lilypond -dbackend=svg @var{filename}.ly} + +@item preview +@cindex preview, linea di comando +Genera un file di output che contiene i titoli e il primo sistema +del brano musicale. Se si usano i blocchi @code{\bookpart}, i titoli e il +primo sistema di ogni @code{\bookpart} apparirà nell'output. +I backend @code{ps}, @code{eps}, e @code{svg} supportano questa +opzione. + +@item print-pages +Genera tutte le pagine, come da impostazione predefinita. @code{-dno-print-pages} è +utile in combinazione con @code{-dpreview}. + +@end table + + + +@item -h,--help +Mostra una sintesi dell'utilizzo. + +@item -H,--header=@var{CAMPO} +Estrae un campo dell'intestazione nel file @file{NOME.@var{CAMPO}}. + +@cindex ricerca dei file +@cindex percorso di ricerca +@item --include, -I=@var{directory} +Aggiunge @var{directory} al percorso di ricerca per i file di input. + +È possibile assegnare più di un'opzione -I. La ricerca inizierà nella prima +directory definita, e se il file da includere non viene trovato +la ricerca continuerà nelle directory seguenti. + +@item -i,--init=@var{file} +Imposta il file di inizializzazione su @var{file} (predefinito: @file{init.ly}). + +@cindex cartella, dirigere l'output in +@cindex nome del file di output, impostare + +@item -o,--output=@var{FILE} or @var{CARTELLA} +Imposta il file di output predefinito @var{FILE} oppure, se una cartella con +quel nome esiste già, dirige l'output in @var{CARTELLA}, prendendo il nome +del file dal file di input. Il suffisso appropriato verrà +aggiunto (ad esempio @code{.pdf} per il pdf) in entrambi i casi. + + +@cindex PostScript + +@item --ps +Genera PostScript. + +@cindex Portable Network Graphics (PNG) + +@item --png +Genera immmagini di ogni pagina in formato PNG. Questo implica +@code{--ps}. La risoluzione in DPI dell'immagine può essere impostata con +@example +-dresolution=110 +@end example + +@cindex Portable Document Format (PDF) + +@item --pdf +Genera PDF. Questo implica @code{--ps}. + + + +@item -j,--jail=@var{utente},@var{gruppo},@var{gabbia},@var{directory} +Esegue @command{lilypond} in una gabbia chroot. + +L'opzione @code{--jail} fornisce un'alternativa più flessibile a +@code{--safe} quando la formattazione di LilyPond è messa a disposizione attraverso +un server web o quando LilyPond esegue sorgenti provenienti dall'esterno. + +L'opzione @code{--jail} modifica la radice di @command{lilypond} in +@var{gabbia} appena prima di iniziare il vero processo di compilazione. L'utente +e il gruppo vengono poi modificati per corrispondere a quelli forniti, e la +directory corrente viene spostata in @var{directory}. Questa configurazione +garantisce che non sia possibile (almeno in teoria) uscire dalla gabbia. Si noti +che perché @code{--jail} funzioni @command{lilypond} deve essere eseguito come root; +di solito questo si fa in modo sicuro col comando @command{sudo}. + +Configurare una gabbia è una questione leggermente delicata, perché bisogna essere +sicuri che LilyPond possa trovare tutto quello di cui ha bisogno per compilare il +sorgente @emph{dentro la gabbia}. Una configurazione tipica comprende i seguenti +elementi: + +@table @asis +@item Impostare un filesystem distinto +Si dovrebbe creare un filesystem separato LilyPond, così che possa essere +montato con opzioni di sicurezza come @code{noexec}, @code{nodev}, e +@code{nosuid}. In questo modo è impossibile lanciare degli eseguibili o +scrivere su un dispositivo direttamente da LilyPond. Se non si vuole creare +una partizione separata, si può creare un file di dimensioni ragionevoli e usarlo +per montare un dispositivo di loop. Un filesystem separato garantisce anche che +LilyPond non possa scrivere su uno spazio maggiore di quanto permesso. + +@item Impostare un altro utente +Per eseguire LilyPond in una gabbia si dovrebbe usare un altro utente e gruppo +(ad esempio, @code{lily}/@code{lily}) con pochi privilegi. Ci dovrebbe essere +una sola directory scrivibile da questo utente, che dovrebbe essere passata in +@var{dir}. + +@item Preparare la gabbia +LilyPond ha bisogno di leggere alcuni file quando viene lanciato. Tutti questi +file devono essere copiati nella gabbia, sotto lo stesso percorso in cui appaiono +nel vero filesystem principale. Si deve copiare l'intero contenuto dell'installazione +LilyPond installation (ad esempio, @file{/usr/share/lilypond}). + +Se c'è un problema, il modo più semplice per individuarlo è lanciare +LilyPond usando @command{strace}, che permetterà di scoprire quali +file mancano. + +@item Eseguire LilyPond +In una gabbia montata con @code{noexec} è impossibile eseguire qualsiasi +programma esterno. Dunque LilyPond deve essere eseguito con un backend che +non richieda tale programma. Come è già stato detto, deve essere eseguito +con privilegi di superutente (che ovviamente perderà immediatamente), +possibilmente con l'uso di @command{sudo}. È una buona idea limitare il +numero di secondi di tempo della CPU che LilyPond può usare (ad esempio con @command{ulimit +-t}), e, se il tuo sistema operativo lo supporta, la quantità di memoria che +può essere allocata. +@end table + + +@item -v,--version +Mostra informazioni sulla versione. + +@item -V,--verbose +Aumenta la prolissità: mostra i percorsi completi di tutti i file letti, e dà +informazioni sui tempi. + +@item -w,--warranty +Mostra la garanzia con cui viene distribuito GNU LilyPond. (Viene distribuito +con @strong{NESSUNA GARANZIA}!) +@end table + + +@node Variabili d'ambiente +@unnumberedsubsec Variabili d'ambiente +@translationof Environment variables + +@cindex LANG +@cindex LILYPOND_DATADIR + +@command{lilypond} riconosce le seguenti variabili d'ambiente: +@table @code +@item LILYPOND_DATADIR +Specifica la directory predefinita in cui saranno cercati i messaggi della +localizzazione e i file di dati. Questa directory deve contenere +sottodirectory chiamate @file{ly/}, @file{ps/}, @file{tex/}, etc. + +@item LANG +Determina la lingua per i messaggi di avvertimento. + +@item LILYPOND_GC_YIELD +Con questa variabile si possono aggiustare il consumo di memoria e la +performance. È una percentuale che regola il comportamento di gestione della +memoria. Con valori più alti il programma usa più memoria, con valori +più bassi usa più tempo della CPU. Il valore predefinito è @code{70}. + +@end table + + +@node LilyPond in una gabbia chroot +@unnumberedsubsec LilyPond in una gabbia chroot +@translationof LilyPond in chroot jail + +Configurare un server perché esegua LilyPond in una gabbia chroot è un lavoro +complicato. La procedura è spiegata sotto. Gli esempi si riferiscono a +Ubuntu Linux e potrebbero richiedere l'uso di @code{sudo} in alcune situazioni. + +@itemize + +@item Installa i pacchetti necessari: LilyPond, GhostScript e ImageMagick. + +@item Crea un nuovo utente dal nome @code{lily}: + +@example +adduser lily +@end example + +@noindent +Questo comando creerà anche un nuovo gruppo per l'utente @code{lily}, e una +cartella home, +@code{/home/lily} + +@item Nella cartella home dell'utente @code{lily} crea un file da usare come +filesystem separato: + +@example +dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000 +@end example + +@noindent +In questo esempio è stato creato un file di 200MB da usare come filesystem della +gabbia. + +@item Crea un dispositivo di loop, crea e monta un filesystem, quindi crea +una cartella scrivibile dall'utente @code{lily}: + +@example +mkdir /mnt/lilyloop +losetup /dev/loop0 /home/lily/loopfile +mkfs -t ext3 /dev/loop0 200000 +mount -t ext3 /dev/loop0 /mnt/lilyloop +mkdir /mnt/lilyloop/lilyhome +chown lily /mnt/lilyloop/lilyhome +@end example + +@item Nella configurazione dei server, JAIL sarà @code{/mnt/lilyloop} +e DIR sarà @code{/lilyhome}. + +@item Crea un grande albero delle directory nella gabbia copiando i file +necessari, come mostrato nello script di esempio più in basso. + +Puoi usare @code{sed} per creare i comandi di copia necessari per un certo +eseguibile: + +@example +for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; \ + do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& \ + cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \ + \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done +@end example + +@end itemize + +@subheading Script di esempio per Ubuntu 8.04 a 32-bit + +@example +#!/bin/sh +## defaults set here + +username=lily +home=/home +loopdevice=/dev/loop0 +jaildir=/mnt/lilyloop +# the prefix (without the leading slash!) +lilyprefix=usr/local +# the directory where lilypond is installed on the system +lilydir=/$lilyprefix/lilypond/ + +userhome=$home/$username +loopfile=$userhome/loopfile +adduser $username +dd if=/dev/zero of=$loopfile bs=1k count=200000 +mkdir $jaildir +losetup $loopdevice $loopfile +mkfs -t ext3 $loopdevice 200000 +mount -t ext3 $loopdevice $jaildir +mkdir $jaildir/lilyhome +chown $username $jaildir/lilyhome +cd $jaildir + +mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp +chmod a+w tmp + +cp -r -L $lilydir $lilyprefix +cp -L /bin/sh /bin/rm bin +cp -L /usr/bin/convert /usr/bin/gs usr/bin +cp -L /usr/share/fonts/truetype usr/share/fonts + +# Now the library copying magic +for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" \ + "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \ + \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed \ + 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' \ + | sed '/.*=>.*/d'; done | sh -s + +# The shared files for ghostscript... + cp -L -r /usr/share/ghostscript usr/share +# The shared files for ImageMagick + cp -L -r /usr/lib/ImageMagick* usr/lib + +### Now, assuming that you have test.ly in /mnt/lilyloop/lilyhome, +### you should be able to run: +### Note that /$lilyprefix/bin/lilypond is a script, which sets the +### LD_LIBRARY_PATH - this is crucial + /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly +@end example + +@c " keep quote signs balanced for context-sensitive editors + +@node Messaggi di errore +@section Messaggi di errore +@translationof Error messages + +@cindex messaggi di errore +Quando si compila un file possono apparire vari messaggi di errore: + +@table @emph + +@item Avvertimento +@cindex avvertimento +Qualcosa appare sospetto. Se stai cercando di fare qualcosa di insolito +allora comprenderai il messaggio e potrai ignorarlo. +Tuttavia di solito i messaggi di avvertimento indicano che il file di input ha +qualcosa che non va. + +@item Errore +@cindex errore +C'è qualcosa di assolutamente sbagliato. Il passo attualmente in elaborazione +(analisi, interpretazione o formattazione) verrà completato, ma il passo +successivo verrà saltato. + +@item Errore fatale +@cindex errore fatale +C'è qualcosa di assolutamente sbagliato e LilyPond non può continuare. Questo +accade raramente. La causa più tipica è un'errata installazione dei tipi di +carattere. + +@item Errore Scheme +@cindex traccia, Scheme +@cindex traccia di chiamata +@cindex errore Scheme +Gli errori che capitano mentre si esegue del codice Scheme sono individuati +dall'interprete Scheme. Se si esegue con l'opzione di prolissità (@code{-V} o +@code{--verbose}), viene stampata una traccia della chiamata di funzione +responsabile dell'errore. + +@item Errore di programmazione +@cindex Errore di programmazione +C'è stata una qualche incongruenza interna. Questi messaggi di errore +servono ad aiutare programmatori e debugger. Di solito si possono +ignorare. Talvolta sono talmente numerosi da nascondere il resto +dell'output. + +@item Sospeso (core dumped) +@cindex Sospeso (core dumped) +Segnala un serio errore di programmazione che ha mandato in crash il +programma. Questi errori sono considerati critici. Se ti imbatti in un +errore simile, invia una segnalazione di errori. +@end table + +@cindex errori, formato del messaggio +Se gli avvertimenti e gli errori possono essere collegati +a una parte specifica del file di input, i messaggi di errore +hanno la seguente forma + +@example +@var{file}:@var{riga}:@var{colonna}: @var{messaggio} +@var{riga di input responsabile dell'errore} +@end example + +Nella riga responsabile si inserisce un a capo per indicare la colonna +in cui è stato trovato l'errore. Ad esempio, + +@example +test.ly:2:19: error: not a duration: 5 + @{ c'4 e' + 5 g' @} +@end example + +Queste posizioni sono la migliore ipotesi di LilyPond a proposito del +punto in cui l'avvertimento o l'errore sono comparsi, ma (per loro +stessa natura) avvertimenti ed errori capitano quando succede qualcosa +di imprevisto. Se non riesci a vedere un errore nella riga indicata +del file di input, prova a controllare una o due righe sopra la posizione +indicata. + +Maggiori informazioni sugli errori si trovano in @ref{Errori comuni}. + + +@node Errori comuni +@section Errori comuni +@translationof Common errors + +Le condizioni di errore descritte di seguito capitano spesso, ma la causa +non è ovvia né facile da trovare. Una volta che si sono viste e comprese, +è facile gestirle. + + +@menu +* La musica esce dalla pagina:: +* Appare un rigo in più:: +* Errore apparente in ../ly/init.ly:: +* Messaggio di errore Unbound variable %:: +* Messaggio di errore FT_Get_Glyph_Name:: +* Avvertimento sul fatto che le affinità del rigo devono solo diminuire:: +@end menu + +@node La musica esce dalla pagina +@unnumberedsubsec La musica esce dalla pagina +@translationof Music runs off the page + +Se la musica esce dalla pagina al di là del margine destro o appare +eccessivamente compressa, quasi sempre è dovuto all'inserimento di +una durata sbagliata di una nota, che fa sì che l'ultima nota di una misura si +estenda oltre la barra di divisione. Non è sbagliato se la nota finale di +una misura non termina entro la barra di divisione inserita automaticamente, perché +semplicemente si assume che la nota continui nella misura successiva. Ma se +si presenta una lunga sequenza di misure simili, la musica può +apparire compressa o può uscire dalla pagina perché gli a capo +automatici possono essere inseriti soltanto alla fine di misure complete, +ovvero quando tutte le note finiscono prima o alla fine della misura. + +@warning{Una durata sbagliata può inibire l'interruzione di +linea, portando a una linea di musica estremamente compressa o +a musica che esce dalla pagina.} + +La durata sbagliata può essere trovata facilmente se si usano i controlli di +battuta, si veda @ruser{Bar and bar number checks}. + +Se si vuole davvero avere una serie di di tali misure sovrapposte +bisogna inserire una barra di divisione invisibile nel punto in cui +si vuole l'interruzione di linea. Per i dettagli si veda @ruser{Bar lines}. + + +@node Appare un rigo in più +@unnumberedsubsec Appare un rigo in più +@translationof An extra staff appears + +Se i contesti non sono creati esplicitamente con @code{\new} o +@code{\context}, saranno creati senza avviso appena si incontra +un comando che non può essere applicato a un contesto +esistente. Nelle partiture semplici la creazione automatica dei contesti +è utile: infatti la maggior parte degli esempi nei manuali LilyPond sfruttano +questa semplificazione. Ma talvolta la creazione silenziosa +di contesti può causare nuovi righi o partiture non desiderate. +Ad esempio, si potrebbe pensare che il seguente codice +colori di rosso tutte le teste delle note nel rigo, ma in realtà +produce due righi, di cui il più basso conserva il colore nero +predefinito per le teste delle note. + +@lilypond[quote,verbatim,relative=2] +\override Staff.NoteHead #'color = #red +\new Staff { a } +@end lilypond + +Questo accade perché non esiste un contesto @code{Staff} quando viene +elaborata l'istruzione di override, quindi ne viene implicitamente creato uno e +l'override viene applicato ad esso. Ma poi il comando @code{\new Staff} crea +un altro rigo separato nel quale vengono inserite le note. Il codice +corretto per colorare le teste di tutte le note è + +@lilypond[quote,verbatim,relative=2] +\new Staff { + \override Staff.NoteHead #'color = #red + a +} +@end lilypond + +Vediamo un secondo esempio. Se un comando @code{\relative} viene posto +dentro un comando @code{\repeat}, vengono generati due righi, il secondo +spostato orizzontalmente rispetto al primo, perché il comando @code{\repeat} +genera due blocchi @code{\relative}, ognuno dei quali crea implicitamente i +blocchi @code{Staff} e @code{Voice}. + +@lilypond[quote,verbatim] +\repeat unfold 2 { + \relative c' { c4 d e f } +} +@end lilypond + +Per correggere il problema basta istanziare esplicitamente il contesto +@code{Voice}: + +@lilypond[quote,verbatim] +\new Voice { + \repeat unfold 2 { + \relative c' { c4 d e f } + } +} +@end lilypond + + +@node Errore apparente in ../ly/init.ly +@unnumberedsubsec Errore apparente in @code{../ly/init.ly} +@translationof Apparent error in ../ly/init.ly + +Vari oscuri messaggi di errore relativi a errori di sintassi in +@file{../ly/init.ly} possono apparire se il file di input non ha +una forma corretta, ad esempio se contiene delle parentesi o +delle virgolette che non sono chiuse correttamente. + +L'errore più comune è la mancanza di una parentesi graffa, (@code{@}}), alla fine +di un blocco @code{score}. In questo caso la soluzione è ovvia: controlla +che il blocco @code{score} sia chiuso correttamente. La struttura corretta +di un file di input è descritta in @rlearning{Come funzionano i file di input di LilyPond}. +Per evitare questi errori conviene usare un editor che evidenzi automaticamente +le parentesi e le graffe corrispondenti. + +Una seconda causa frequente di errore è la mancanza di uno spazio tra l'ultima +sillaba di un blocco di testo (lyrics) e la parentesi graffa che chiude il +blocco, (@code{@}}). Senza questa separazione si considera che la graffa +faccia parte della sillaba. Si consiglia di assicurarsi sempre che ci sia +uno spazio prima e dopo @emph{ogni} parentesi graffa. Per comprendere l'importanza +di questo quando si usa il testo, si veda @ruser{Entering lyrics}. + +Questo messaggio di errore può apparire anche nel caso in cui sia omessa la +virgoletta che chiude, (@code{"}). In questo caso il messaggio di errore +@c keep "-matching straight in fancy editors +dovrebbe dare un numero di riga vicino alla riga sbagliata. La virgoletta +non chiusa sarà solitamente una o due righe sopra. + +@node Messaggio di errore Unbound variable % +@unnumberedsubsec Messaggio di errore Unbound variable % +@translationof Error message Unbound variable % + +Questo messaggio di errore comparirà in fondo alla console di +output o nel file di log insieme al messaggio @qq{GUILE signalled an error ...} +ogni volta che viene chiamata una routine di Scheme che contenga (erroneamente) +un commento @emph{LilyPond} invece di un commento @emph{Scheme}. + +I commenti LilyPond iniziano con un segno di percentuale, (@code{%}), e non +devono essere usati all'interno delle routine di Scheme. I commenti Scheme +iniziano con un punto e virgola, (@code{;}). + +@node Messaggio di errore FT_Get_Glyph_Name +@unnumberedsubsec Messaggio di errore FT_Get_Glyph_Name +@translationof Error message FT_Get_Glyph_Name + +Questo messaggio di errore compare nella console di output o nel file di log file +se un file di input contiene un carattere non-ASCII e non è stato salvato nella +codifica UTF-8. Per dettagli si veda @ruser{Text encoding}. + + +@node Avvertimento sul fatto che le affinità del rigo devono solo diminuire +@unnumberedsubsec Avvertimento sul fatto che le affinità del rigo devono solo diminuire +@translationof Warning staff affinities should only decrease + +Questo avvertimento può apparire se non ci sono dei righi nell'output, +ad esempio se ci sono solo un contesto @code{ChordName} e un +contesto @code{Lyrics}, come in un lead sheet. Si possono evitare questi +messaggi di avvertimento facendo in modo che uno dei contesti si comporti +come un rigo inserendo + +@example +\override VerticalAxisGroup #'staff-affinity = ##f +@end example + +@noindent +all'inizio del contesto. Per dettagli si veda @qq{Spacing of non-staff lines} in +@ruser{Flexible vertical spacing within systems}. diff --git a/Documentation/it/usage/updating.itely b/Documentation/it/usage/updating.itely new file mode 100644 index 0000000000..4a3865d6f4 --- /dev/null +++ b/Documentation/it/usage/updating.itely @@ -0,0 +1,268 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- + +@ignore + Translation of GIT committish: 7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033 + + When revising a translation, copy the HEAD committish of the + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. +@end ignore + +@c \version "2.13.36" + + +@node Aggiornare i file con convert-ly +@chapter Aggiornare i file con @command{convert-ly} +@translationof Updating files with convert-ly + +@cindex Aggiornare un file di LilyPond +@cindex convert-ly + +La sintassi di input di LilyPond viene regolarmente modificata per semplificarla +o per migliorarla in vari modi. L'effetto collaterale è che l'interprete di LilyPond +spesso non è più compatibile con i vecchi file di input. Per ovviare a questo +problema, si può usare il programma @command{convert-ly}, che permette di gestire +gran parte dei cambiamenti di sintassi tra le versioni di LilyPond. + +@menu +* Perché la sintassi cambia?:: +* Invocare convert-ly:: +* Opzioni da linea di comando per convert-ly:: +* Problemi nell'eseguire convert-ly:: +* Conversioni manuali:: +@end menu + + +@node Perché la sintassi cambia? +@section Perché la sintassi cambia? +@translationof Why does the syntax change? + +@cindex convert-ly +@cindex aggiornare i vecchi file di input + +La sintassi di input di LilyPond talvolta cambia. Via via che LilyPond +migliora, la sintassi (il linguaggio dell'input) viene modificata di +conseguenza. Queste modifiche vengono fatte a volte per far sì che l'input +sia più facile da leggere e da scrivere e a volte per fornire nuove +funzionalità di LilyPond. + +Ad esempio, tutti i nomi delle proprietà di @code{\paper} e @code{\layout} +dovrebbero essere scritte nella forma @code{primo-secondo-terzo}. +Tuttavia, nella versione 2.11.60 ci siamo accorti che la proprietà +@code{printallheaders} non seguiva questa convenzione. +Dovevamo lasciarla così come era (confondendo i nuovi utenti che devono avere +a che fare con un formato di input incoerente), o cambiarla (disturbando i +vecchi utenti che avevano già delle partiture)? In questo caso decidemmo di +cambiare il nome in @code{print-all-headers}. Fortunatamente, questa modifica +può essere automatizzata con @command{convert-ly}. + +Purtroppo @code{convert-ly} non è in grado di gestire tutti i cambiamenti +dell'input. Ad esempio, in LilyPond 2.4 e precedenti, gli accenti e le lettere +non inglesi venivano inserite con LaTeX -- per mostrare la parola francese per +Natale si usava @code{No\"el}. Ma in LilyPond +@c keep "-matching straight in fancy editors +2.6 e superiori, il carattere speciale @code{ë} deve essere inserito direttamente +nel file LilyPond come carattere UTF-8. @code{convert-ly} non può sostituire +tutti i caratteri speciali di LaTeX con i rispettivi caratteri UTF-8; è necessario +aggiornare a mano i vecchi file di input di LilyPond. + + +@node Invocare convert-ly +@section Invocare @command{convert-ly} +@translationof Invoking convert-ly + +@command{convert-ly} usa la dichiarazione @code{\version} nel file di input +per determinare il vecchio numero di versione. Nella maggior parte dei casi +per aggiornare il file di input è sufficiente eseguire + +@example +convert-ly -e miofile.ly +@end example + +@noindent +nella directory che contiene il file. Questo comando aggiornerà +@file{miofile.ly} e preserverà il file originale in +@file{miofile.ly~}. + +@warning{@command{convert-ly} converte sempre fino all'ultimo cambiamento di +sintassi da lui gestito. Questo significa che il numero di @code{\version} +che appare nel file convertito è di solito inferiore al numero di versione di +@command{convert-ly}.} + +Per convertire in una volta sola tutti i file di input in una directory si usa + +@example +convert-ly -e *.ly +@end example + +Altrimenti, se si desidera specificare un nome diverso per il file +aggiornato, lasciando non modificati il file originale e il suo nome, +si usa + +@example +convert-ly miofile.ly > mionuovofile.ly +@end example + +Il programma elencherà i numeri di versione per i quali sono state fatte +le conversioni. Se non vengono elencati dei numeri di versione il file è +già aggiornato. + +Gli utenti MacOS@tie{}X possono eseguire questi comandi dalla voce di menu +@code{Compila > Aggiorna la sintassi}. + +Gli utenti Windows devono inserire questi comandi nella finestra del Prompt +dei comandi, che di solito si trova in +@code{Start > Accessori > Prompt dei comandi}. + + +@node Opzioni da linea di comando per convert-ly +@section Opzioni da linea di comando per @command{convert-ly} +@translationof Command line options for convert-ly + +Il programma viene lanciato in questo modo: + +@example +convert-ly [@var{opzione}]@dots{} @var{nomefile}@dots{} +@end example + + +Esistono le seguenti opzioni: + +@table @code +@item -e,--edit +Applica le conversioni direttamente nel file di input, sostituendo +l'originale. + +@item -f,--from=@var{from-patchlevel} +Imposta la versione da cui convertire. Se non viene impostata, @command{convert-ly} +la indovinerà in base alla stringa @code{\version} presente nel file. +Esempio: @code{--from=2.10.25} + +@item -n,--no-version +Normalmente @command{convert-ly} aggiunge un indicatore @code{\version} +nell'output. Questa opzione lo impedisce. + +@item -s, --show-rules +Mostra tutte le conversioni conosciute ed esce. + +@item --to=@var{to-patchlevel} +Imposta l'obiettivo di versione della conversione. L'impostazione predefinita +è l'ultima versione disponibile. Esempio: @code{--to=2.12.2} + +@item -h, --help +Stampa l'aiuto per l'utilizzo. +@end table + +Per aggiornare i frammenti LilyPond presenti nei file texinfo, si usa + +@example +convert-ly --from=... --to=... --no-version *.itely +@end example + +Per vedere i cambiamenti della sintassi di LilyPond tra due versioni, si usa + +@example +convert-ly --from=... --to=... -s +@end example + + +@node Problemi nell'eseguire convert-ly +@section Problemi nell'eseguire @code{convert-ly} +@translationof Problems running convert-ly + +Quando si esegue convert-ly in una finestra del Prompt dei comandi in Windows +su un file il cui nome o percorso contengano degli spazi, +è necessario circondare interamente il nome del file di input con tre +(!) doppie virgolette: + +@example +convert-ly """D:/Mie Partiture/Ode.ly""" > "D:/Mie Partiture/new Ode.ly" +@end example + +Se il semplice comando @command{convert-ly -e *.ly} non funziona perché la +linea di comando espansa diventa troppo lunga, si può inserire il comando +@command{convert-ly} in un loop. Questo esempio per UNIX +aggiornerà tutti i file @file{.ly} nella directory corrente + +@example +for f in *.ly; do convert-ly -e $f; done; +@end example + +Nella finestra del Prompt dei comandi di Windows il comando corrispondente è + +@example +for %x in (*.ly) do convert-ly -e """%x""" +@end example + +Non vengono gestite tutti i cambiamenti del linguaggio. Si può specificare solo +un'opzione di output. È piuttosto improbabile che si aggiornino automaticamente +il codice scheme e le interfacce di scheme di LilyPond; tienti pronto a +correggere a mano il codice scheme. + + +@node Conversioni manuali +@section Conversioni manuali +@translationof Manual conversions + +In teoria, un programma come @command{convert-ly} potrebbe gestire qualsiasi +cambiamento di sintassi. Dopo tutto, un programma per computer interpreta la +la vecchia versione e la nuova versione, quindi un altro programma +può tradurre un file in un altro@footnote{O almeno questo è possibile +in qualsiasi file LilyPond che non contenga codice scheme. Se c'è del +codice scheme nel file, allora il file LilyPond contiene un linguaggio +Turing-completo, ed è possibile imbattersi in problemi col famoso +@qq{Problema dell'arresto} in informatica.}. + +Tuttavia il progetto LilyPond ha risorse limitate: non tutte le +conversioni sono compiute automaticamente. Qui sotto si trova una lista +dei problemi noti. + + +@verbatim +1.6->2.0: + Doesn't always convert figured bass correctly, specifically things like {< +>}. Mats' comment on working around this: + To be able to run convert-ly + on it, I first replaced all occurrences of '{<' to some dummy like '{#' + and similarly I replaced '>}' with '&}'. After the conversion, I could + then change back from '{ #' to '{ <' and from '& }' to '> }'. + Doesn't convert all text markup correctly. In the old markup syntax, + it was possible to group a number of markup commands together within +parentheses, e.g. + -#'((bold italic) "string") + This will incorrectly be converted into + -\markup{{\bold italic} "string"} + instead of the correct + -\markup{\bold \italic "string"} +2.0->2.2: + Doesn't handle \partcombine + Doesn't do \addlyrics => \lyricsto, this breaks some scores with multiple +stanzas. +2.0->2.4: + \magnify isn't changed to \fontsize. + - \magnify #m => \fontsize #f, where f = 6ln(m)/ln(2) + remove-tag isn't changed. + - \applyMusic #(remove-tag '. . .) => \keepWithTag #'. . . + first-page-number isn't changed. + - first-page-number no => print-first-page-number = ##f + Line breaks in header strings aren't converted. + - \\\\ as line break in \header strings => \markup \center-align < + "First Line" "Second Line" > + Crescendo and decrescendo terminators aren't converted. + - \rced => \! + - \rc => \! +2.2->2.4: + \turnOff (used in \set Staff.VoltaBracket = \turnOff) is not properly +converted. +2.4.2->2.5.9 + \markup{ \center-align <{ ... }> } should be converted to: + \markup{ \center-align {\line { ... }} } + but now, \line is missing. +2.4->2.6 + Special LaTeX characters such as $~$ in text are not converted to UTF8. +2.8 + \score{} must now begin with a music expression. Anything else + (particularly \header{}) must come after the music. +@end verbatim + +