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

@ignore
    Translation of GIT committish: b005971680bc6d01130420478dcd09bc6569de97

    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"


@node A convert-ly használata
@chapter A @command{convert-ly} használata
@translationof Updating files with convert-ly

@cindex fájlok frissítése
@cindex convert-ly

A LilyPond nyelvtana rendszeresen változik, hogy egyszerűsödjön és fejlődjön.
Ennek mellékhatásaként a LilyPond olykor nem tudja értelmezni a régebbi
forrásfájlokat. Ezt az inkompatibilitást hidalja át a @command{convert-ly}
segédprogram, mely a verziók közötti nyelvváltozások legtöbbjét lekezeli.

@menu
* Miért változik a szintaxis?::
* A convert-ly futtatása::
* A convert-ly parancssori paraméterei::
* Problémák a convert-ly futtatása közben::
* Kézi frissítés::
@end menu


@node Miért változik a szintaxis?
@section Miért változik a szintaxis?
@translationof Why does the syntax change?

Ahogy a LilyPond maga fejlődik, a szintaxis (azaz a bemenet nyelve) is ennek
megfelelően változik. Ezek a változások azért mennek végbe, hogy a bemenetet
könnyebb legyen olvasni és írni, vagy a LilyPond új képességeihez igazodnak.

Például minden @code{\paper} és @code{\layout} blokkbeli tulajdonság nevében a
szavak konvenció szerint kötőjelekkel kerülnek elválasztásra. A 2.11.60-as
verzióban azonban észrevettük, hogy a @code{printallheaders} tulajdonság nem
követi ezt a konvenciót. Felmerült a kérdés: úgy hagyjuk, ahogy eddig volt
(így inkonzisztenciával megzavarva az új felhasználókat), vagy
megváltoztassuk (így arra kényszerítve a régi felhasználókat, hogy meglévő
kottáikat frissítsék)? Ebben az esetben amellett döntöttünk, hogy
megváltoztatjuk @code{print-all-headers}-re. Szerencsére ezt a változás
automatikusan kezelhető a @command{convert-ly} parancssori eszközzel.

Sajnos a @code{convert-ly} nem képes a nyelvtan minden változását lekezelni.
Például a LilyPond 2.4-es és korábbi verzióiban az ékezetes és egyéb, nem
angol ábécébe tartozó karaktereket a LaTeX-ben megszokott módszerrel kellett
megadni (pl. a francia Noël szót a következőképpen: @code{No\"el}). De a
@c keep "-matching straight in fancy editors
LilyPond 2.6-os verziója óta minden ilyen karakter, pl. az @code{ë} is
közvetlenül beleírható a bemeneti fájlba UTF-8 karakterkódolással. A
@code{convert-ly} nem képes minden LaTeX szintaxissal megadott speciális
karaktert átkonvertálni az UTF-8 megfelelőjébe; ezeket kézzel kell frissíteni.


@node A convert-ly futtatása
@section A @command{convert-ly} futtatása
@translationof Invoking convert-ly

A @command{convert-ly} a forrásfájlban található @code{\version} parancs
alapján állapítja meg a fájl verziószámát. A legtöbb esetben a forrásfájl
frissítéséhez elegendő kiadni a

@example
convert-ly -e @var{fájlnév}.ly
@end example

@noindent
parancsot abban a könyvtárban, ahol a fájl található. Ez a parancs helyben
frissíti a @code{@var{fájlnév}.ly} fájlt, az eredetit pedig megőrzi
@code{@var{fájlnév}.ly~} néven.

@warning{A @command{convert-ly} parancs alapesetben csak arra a verzióra
frissít, amelyikben a legutóbbi szintaxisváltozás történt. Így általában
a frissített fájl verziószáma kisebb lesz, mint az éppen használt programé.}

Egy könyvtárban található összes bemeneti fájl frissítéséhez a következő
parancs használható:

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

Amennyiben az újabb fájlnak más nevet szeretnénk adni, és az eredeti fájlt
változatlanul szeretnénk hagyni, a következő parancsot adjuk ki:

@example
convert-ly @var{fájlnév}.ly > @var{újfájlnév}.ly
@end example

Futása során a program kiírja a verziószámokat, amelyekre frissítés történt.
Ha egy verziószám sincs kiírva, akkor a fájl teljesen friss.

A Mac OS@tie{}X-felhasználók ezt a parancsot a grafikus felületen is elérhetik
a @code{Compile > Update syntax} menüpontból.

A Windows-felhasználóknak ezeket a parancsokat a DOS parancssorba kell beírni,
amit tipikusan a Start menüben a @code{Programok > Kellékek > Parancssor}
kiválasztásával lehet elindítani.


@node A convert-ly parancssori paraméterei
@section A @command{convert-ly} parancssori paraméterei
@translationof Command line options for convert-ly

A program meghívása a következő módon történik:

@example
convert-ly [@var{opció}]@dots{} @var{fájlnév}@dots{}
@end example


A következő opciók adhatóak meg:

@table @code
@item -e, --edit
A fájl helyben frissítése.

@item -f, --from=@var{forrásverzió}
A forrásfájl verziójának megadása. Ha nincs megadva, a @command{convert-ly}
a fájlban található @code{\version} parancs alapján kitalálja.
Példa: @code{--from=2.10.25}

@item -n, --no-version
Alapesetben a @command{convert-ly} ellátja a kimenetét a megfelelő
@code{\version} paranccsal. Ez az opció ezt tiltja le.

@item -s, --show-rules
Nem történik frissítés, csak a frissítési szabályok kiírása.

@item --to=@var{célverzió}
Azt adja meg, hogy melyik verzióra frissüljön a fájl. Alapértéke a legfrissebb
elérhető verzió. Példa: @code{--to=2.12.2}

@item -h, --help
Segítség kiírása az alkalmazás használatához.
@end table

Texinfo fájlokban található LilyPond részletek frissítéséhez az alábbi parancs
használatos:

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

A LilyPond két verziója közötti, a nyelvtanban bekövetkezett változások
megtekintéséhez pedig a következő:

@example
convert-ly --from=... --to=... -s
@end example


@node Problémák a convert-ly futtatása közben
@section Problémák a @command{convert-ly} futtatása közben
@translationof Problems running convert-ly

Amikor olyan forrásfájlt frissítünk a @command{convert-ly} segédprogrammal
Windows alatt parancssorból, amelynek elérési útja szóközt tartalmaz, a
forrásfájl elérési útját három-három (!) idézőjel közé kell írni:

@example
convert-ly """D:/Az én kottáim/Óda.ly""" > "D:/Az én kottáim/Óda - új.ly"
@end example

Ha az egyszerű @command{convert-ly -e *.ly} parancs futása meghiúsul a fájlok
nagy mennyisége miatt, a másik lehetőség a @command{convert-ly} futtatása
ciklusban. A következő, UNIX alatt használható példa minden @code{.ly} fájlt
frissít az aktuális könyvtárban:

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

A Windows parancssorában a megfelelő parancs:

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

A program nem minden változást képes kezelni.
A Scheme kód és a LilyPond Scheme felületének frissítése nem történik meg, a
Scheme kódrészleteket kézzel kell átírni.


@node Kézi frissítés
@section Kézi frissítés
@translationof Manual conversions

Ideális esetben a @command{convert-ly} minden változás kezelésére képes lenne.
Elvégre ha a régi verzió képes volt értelmezni a régi nyelvtant, az új verzió
pedig az újat, akkor elvileg létezhetne egy másik program, amelyik a kettő
közötti konverziót elvégzi@footnote{Legalábbis ez abban az esetben
lehetséges, ha a LilyPond fájl nem tartalmaz Scheme kódot. Ha viszont
tartalmaz, akkor egy Turing-teljes nyelvvel van dolgunk, és az
algoritmuselméletben jól ismert @qq{megállási problémába} ütközünk.}.

A gyakorlatban azonban a LilyPond erőforrásai korlátosak: nem minden konverzió
történik meg automatikusan. Íme az ismert problémák listája.


@verbatim
1.6 -> 2.0:
- A számozott basszus frissítése nem tökéletes, főleg a {< >} esetében.
Ez úgy kerülhető meg, hogy a '{<' karakterlánc összes előfordulását egy
ideiglenes másik karakterláncra cseréljük, pl. '{#'-re. Hasonlóképpen a
'>}' előfordulásai '&}'-re cserélendőek. A frissítés után pedig a következő
cseréket kell végrehajtani: '{ #' -> '{ <' és '& }' -> '> }'.
- A formázott szövegek frissítése sem mindig jó. Eddig zárójelekkel
csoportosítani lehetett több formázó parancsot, pl.:
   -#'((bold italic) "string")
Ez sajnos helytelenül a következővé alakul:
   -\markup{{\bold italic} "string"}
A helyes ez lenne:
   -\markup{\bold \italic "string"}

2.0 -> 2.2:
- A \partCombine frissítése nem támogatott.
- Az \addlyrics => \lyricsto frissítés nem történik meg, ez több versszakkal
rendelkező kották esetében problémát okozhat.

2.0 -> 2.4:
A következő konverziók nem támogatottak:
- \magnify #m => \fontsize #f, ahol f = 6ln(m)/ln(2))
- \applyMusic #(remove-tag '...) => \keepWithTag #'...
- first-page-number no => print-first-page-number = ##f
- "Első sor" \\\\ "Második sor" =>
  \markup \center-align < "Első sor" "Második sor" >
- \rced => \!
- \rc => \!

2.2 -> 2.4:
A \turnOff parancs (pl. a következő esetben:
\set Staff.VoltaBracket = \turnOff) frissítése helytelen.

2.4.2 -> 2.5.9
A \markup{ \center-align <{ ... }> } parancs a frissítés után
\markup{ \center-align {\line { ... }} } kellene, hogy legyen, de a \line
jelenleg hiányzik.

2.4 -> 2.6
A speciális LaTeX karakterek (pl. $~$) nem alakulnak át az UTF-8
megfelelőjükre.

2.8
A \score{} blokknak innentől kezdve egy zenei kifejezéssel kell kezdődnie.
Minden más (pl. a \header{} blokk) a zene után jöhet csak.
@end verbatim
