@c -*- coding: utf-8; mode: texinfo; documentlanguage: ca -*-

@ignore
    Translation of GIT committish: b381556a3132e765159edc75107b31259dbf5988

    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.21.0"

@c Translators: Walter Garcia-Fontes
@c Translation checkers:


@node Actualització de fitxers amb convert-ly
@chapter Actualització de fitxers amb @command{convert-ly}
@translationof Updating files with convert-ly

@cindex actualització d'un fitxer del LilyPond
@cindex convert-ly

La sintaxi del llenguatge d'entrada del LilyPond es modifica de
forma habitual per a simplificar-la o millorar-la de diferents
maneres. Com a efecte secundari, l'intèrpret del LilyPond sovint
ja no és compatible amb els fitxers d'entrada antics.  Per posar
remei a això es pot utilitzar el programa @command{convert-ly} per
actualitzar fitxers a versions més noves del LilyPond.

@menu
* Perquè canvia la sintaxi?::
* Invocació de convert-ly::
* Opcions de la línia d'ordres per a convert-ly::
* Problemes amb convert-ly::
* Conversions manuals::
@end menu


@node Perquè canvia la sintaxi?
@section Perquè canvia la sintaxi?
@translationof Why does the syntax change?

@cindex convert-ly
@cindex actualització de fitxers d'entrada antics

La sintaxi de l'entrada del LilyPond canvia de manera ocasional.
A mesura que el propi LilyPond millora,  la sintaxi (el llenguatge
de l'entrada) es modifica en consonància.  A vegades aquests
canvis es fan per aconseguir que l'entrada sigui més fàcil de
llegir i escriure, i d'altres vegades aquests canvis són per
donar cabuda a noves funcionalitats del LilyPond.

Per exemple, se suposa que tots els noms de les propietats de
@code{\paper} i de @code{\layout} estan escrits sota la norma
@code{primer-segon-tercer}.  Tot i així, a la versió 2.11.60,
observem que la propietat @code{printallheaders} no seguia aquesta
convenció.  Hauríem de deixar-la tal com està (confonent als nous
usuaris que han de tractar amb un format d'entrada inconsistent),
o canviar-la (empipant als usuaris amb experiència que tenen
partitures antigues)?  En aquest cas, vam decidir canviar el nom a
@code{print-all-headers}.  Afortunadament, aquest
canvi es pot automatitzar amb la nostra eina
@command{convert-ly}.

Tanmateix, lamentablement @command{convert-ly} no pot tractar tots
els canvis d'entrada.  Per exemple, a la versió 2.4 i anteriors de
LilyPond els accents i les lletres no angleses s'introdueixen
utilitzant el LaTeX: per exemple @code{No\"el} (que significa
@q{Nadal} en francès).  Al LilyPond 2.6 i següents el caràcter
especial @code{ë} s'ha d'introduir directament al fitxer del
LilyPond com un caràcter UTF-8.  @command{convert-ly} no pot
canviar tots els caràcters especials del LaTeX a caràcters de
UTF-8: haureu d'actualitzar manualment els vostres fitxers del
LilyPond antics.

Les regles de conversió de @command{convert-ly} funcionen usant
correspondència i substitució de patrons de text enlloc d'una
comprensió profunda de la sintaxi del LilyPond.  Això té diverses
conseqüències:
@itemize @bullet
@item
El bon funcionament de la conversió depèn de la qualitat de cada
conjunt de regles que s'apliquen i de la complexitat del canvi
corresponent.  A vegades les conversions poden necessitar
correccions manuals, per la qual cosa la versió antiga hauria de
conservar-se a efectes de comparació.
@item
Solament són possibles les conversions de formats més nous: no hi
ha cap conjunt de regles per a la desactualització.  Així doncs,
la còpia principal de treball d'un fitxer del LilyPond solament
s'ha d'actualitzar quan ja no hi ha necessitat de seguir mantenint
versions antigues del LilyPond.  Els sistemes de control de
versions com ara el Git poden ser de gran ajuda per realitzar el
manteniment de diverses versions dels mateixos fitxers.
@item
Els propis programes del LilyPond i de l'Scheme són força robustos
enfront als espais afegits i suprimits de manera @qq{creativa},
però les regles utilitzades per @command{convert-ly} tendeixen a
fer certes suposicions d'estil.  El millor que pot fer-se és
seguir l'estil que s'usa als manuals per fer actualitzacions
indolores, especialment perquè els propis manuals s'actualitzen
usant @command{convert-ly}.
@end itemize

@node Invocació de convert-ly
@section Invocació de @command{convert-ly}
@translationof Invoking convert-ly

@command{convert-ly} utilitza el enunciats @code{\version} dels
fitxers d'entrada per detectar el número de versió antic.  En
gairebé tots els casos, per actualitzar el fitxer d'entrada sols
cal executar

@example
convert-ly -e elmeufitxer.ly
@end example

@noindent
dins del directori que conté el fitxer.  Amb això s'actualitza
@file{elmeufitxer.ly} @emph{in situ} i es preserva el fitxer
original @file{elmeufitxer.ly~}.

@warning{@command{convert-ly} sempre converteix fins l'últim canvi
de sintaxi que és capaç de gestionar.  Això significa que el
número de @code{@bs{}version} que apareix al fitxer convertit sol ser
inferior al número de versió del propi programa
@command{convert-ly}.}

Per convertir d'un cop tots els fitxers d'entrada que hi ha a un
directori, useu

@example
convert-ly -e *.ly
@end example

De forma alternativa, si volem especificar un nom diferent per al
fitxer actualitzar, preservant el fitxer original amb el mateix
nom, feu

@example
convert-ly elmeufitxer.ly > elmeunoufitxer.ly
@end example

El programa imprimeix una relació dels números de versió per als
que s'han fet conversions.  Si no s'imprimeix cap número de
versió, el fitxer ja està actualitzat.

@noindent
Els usuaris del MacOS@tie{}X poden executar aquesta instrucció sota
el menú @code{Compilar > Actualitzar sintaxi}.

Els usuaris del Windows han d'introduir aquesta instrucció a una
nova ventana del terminal del sistema, que es troba en general sota
@code{Inici > Accessoris > Símbol del sistema}.

@node Opcions de la línia d'ordres per a convert-ly
@section Opcions de la línia d'ordres per a @command{convert-ly}
@translationof Command line options for convert-ly

En general, el programa s'invoca de la manera següent:

@example
convert-ly [@var{opció}]@dots{} @var{fitxer}@dots{}
@end example

Es poden donar les opcions següents:

@table @code
@item -d, --diff-version-update
Incrementa la cadena @code{\version} solament si el fitxer
efectivament ha canviat.  En tal cas, la capçalera de versió
correspondrà a la versió següent a l'últim canvi efectiu.  Sense
aquesta opció la versió reflecteix l'última conversió que es
@emph{va intentar} fer.

@item -e, --edit
Aplica les conversions directament al fitxer d'entrada,
modificant-lo in situ.  El fitxer original es canvia de nom a
@file{elmeufitxer.ly~}.  Aquest fitxer de còpia de seguretat
podria ser un fitxer ocult en alguns sistemes operatius.

@item -b, --backup-numbered
Quan s'usa amb l'opció @samp{-e}, numera els fitxers de còpia de
seguretat de forma que no se sobreescrigui cap versió anterior.
Els fitxers de còpia de seguretat podrien ser fitxer ocults en
alguns sistemes operatius.

@item -f, --from=@var{versió_d_origen}
Estableix la versió des de la qual s'ha de convertir.  Si no
apareix aquesta opció @command{convert-ly} intentarà endevinar-la,
bastant-se en la instrucció @code{\version} del fitxer. Exemple:
@option{--from=2.10.25}

@item -h, --help
Imprimeix l'ajuda d'utilització.

@item -l @var{nivellderegistre}, --loglevel=@var{nivellderegistre}
Fixa el grau en el qual la sortida és detallada a
@var{nivellderegistre}.  Els valors possibles són @code{NONE}
(cap), @code{ERROR} (errors), @code{WARNING} (advertiments),
@code{PROGRESS} (avenç;predeterminat) i @code{DEBUG} (depuració).

@item -n, --no-version
Normalment @command{convert-ly} afegeix un indicador
@code{\version} a la sortida.  L'especificació d'aquesta opció el
suprimeix.

@item -s, --show-rules
Mostra totes les conversions conegudes i surt.

@item -t, --to=@var{versió_final}
Fixa explícitament a quina @code{\version} convertir, en cas
contrari el valor predeterminat és la versió més actual.  Ha de
ser més alta que la versió de partida.

@example
convert-ly --to=2.14.1 elmeufitxer.ly
@end example

@end table

Per actualitzar fragments del LilyPond en fitxer de texinfo, useu

@example
convert-ly --from=@dots{} --to=@dots{} --no-version *.itely
@end example

Per veure els canvis en la sintaxi del LilyPond entre dues
versions donades, useu

@example
convert-ly --from=@dots{} --to=@dots{} -s
@end example


@node Problemes amb convert-ly
@section Problemes amb @code{convert-ly}
@translationof Problems running convert-ly

En executar convert-ly a una finestra del Símbol de Sistema sota
el Windows sobre un fitxer que té espais al nom o la ruta, és
necessari tancar tot el nom del fitxer d'entrada amb tres (!)
parelles de cometes:

@example
convert-ly """D:/Les meves partitures/Oda.ly""" > "D:/Les meves partitures/nova Oda.ly"
@end example

Si l'ordre simple @command{convert-ly -e *.ly} no funciona perquè
la instrucció expandida es fa massa llarga, en comptes de fer això
l'ordre @command{convert-ly} es pot posar dins d'un bucle.  Aquest
exemple per a UNIX actualitza tots els documents @file{.ly} del
directori actual

@example
for f in *.ly; do convert-ly -e $f; done;
@end example

A la finestra del terminal d'ordres del Windows, la instrucció
corresponent és

@example
for %x in (*.ly) do convert-ly -e """%x"""
@end example

No es gestionen tots els canvis al llenguatge.  Sols es pot
especificar una opció de sortida.   L'actualització automàtica del
Scheme i les interfícies Scheme del LilyPond és força improbable;
prepareu-vos per manipular el codi del Scheme a mà.

@node Conversions manuals
@section Conversions manuals
@translationof Manual conversions

En teoria, un programa com @command{convert-ly} hauria de poder
tractar qualsevol canvi de sintaxi.  Després de tot, un programa
d'ordinador interpreta les versions antiga i nova, per la qual
cosa un altre programa d'ordinador podria traduir un fitxer a
l'altre@footnote{Almenys això és possible en qualsevol fitxer del
LilyPond que no contingui Scheme.  Si hi ha Scheme dins del
fitxer, conté un llenguatge Turing-complet, i ens trobem amb el
famós @qq{Problema de l'aturada}  informàtica.}.

Tot i així, el projecte LilyPond compta amb uns recursos limitats:
no totes les conversions s'efectuen automàticament.  A continuació
hi ha una llista de problemes coneguts.

@verbatim
1.6->2.0:
No sempre converteix el baix xifrat correctament, específicament
coses com ara {<
>}.  El comentari de Mats sobre com solucionar el
problema:
   Per poder executar convert-ly
   sobre ell, primer vaig sustituir totes les aparicions de '{<' a quelcom mut com ara '{#'
   i de forma semblant vaig sustituir '>}' amb '&}'.  Després de la conversió, vaig poder
   tornar a canviar-los de '{ #' a '{ <' i de '& }' a '> }'.
 No converteix tot l'etiquetatge de text correctament.  En sintaxi antiga,
 es podien agrupar diverses etiquetes entre parèntesis, per exemple
   -#'((bold italic) "cadena")
   Això es converteix incorrectament a
   -\markup{{\bold italic} "cadena"}
   en comptes del correcte
   -\markup{\bold \italic "cadena"}
2.0->2.2:
 No gestiona \partCombine
 No va \addlyrics => \lyricsto, això trenca algunes partitures amb diverses estrofes
2.0->2.4:
 \magnify no es canvia per \fontsize.
    - \magnify #m => \fontsize #f, on f = 6ln(m)/ln(2)
 remove-tag no es canvia.
    - \applyMusic #(remove-tag '. . .) => \keepWithTag #'. . .
 first-page-number no es canvia.
    - first-page-number no => print-first-page-number = ##f
 Els salts de línia a les cadenes de capçalera no es converteixen.
    - \\\\  com salt de línia a les cadenes de \header  => \markup \center-align <
      "Primera línia" "Segona línia" >
 Els terminadors de crescendo i descrecendo no es converteixen.
    - \rced => \!
    - \rc => \!
2.2->2.4:
 \turnOff (usat a \set Staff.VoltaBracket = \turnOff) no es converteix
adequadament.
2.4.2->2.5.9
 \markup{ \center-align <{ ... }> } s'hauria de convertir a:
 \markup{ \center-align {\line { ... }} }
 però ara, falta el \line.
2.4->2.6
 Els caràcters especials del LaTeX com $~$ al text no es converteixen a UTF8.
2.8
 \score{} ara ha de començar amb una expressió musical.  Qualsevol alta cosa
 (en particular, \header{}) ha d'anar després de la música.
@end verbatim
