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

@ignore
    Translation of GIT committish: 0764a50d470cab82ca29da30298dacd333d3da12

    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: Pavel Fric


@node Aktualizace souborů pomocí convert-ly
@chapter Aktualizace souborů pomocí @command{convert-ly}
@translationof Updating files with convert-ly

@cindex Aktualizace souboru LilyPond
@cindex convert-ly

Vstupní skladba LilyPondu je vždy znovu měněna kvůli zjednodušení
nebo různým vylepšením a vývoji.
Vedlejší účinek toho je ale, že LilyPond často nadále nedokáže správně zpracovat
starší vstupní soubory.  Aby tento problém obešel, může program
používat @command{convert-ly}, který zvládá většinu změn ve skladbě
mezi různými verzemi LilyPondu.

@menu
* Proč se mění skladba?::
* Vyvolání convert-ly::
* Volby příkazového řádku pro convert-ly::
* Potíže s convert-ly::
* Ruční převod::
@end menu


@node Proč se mění skladba?
@section Proč se mění skladba?
@translationof Why does the syntax change?

@cindex convert-ly
@cindex Aktualizace starých vstupních souborů
@cindex Obnova starých vstupních souborů

Vstupní skladba LilyPondu se čas od času mění.
Když je program LilyPond zlepšen, je odpovídajícím způsobem
přizpůsobena i skladba (zadávací jazyk).  Některé změny dělají
vstupní text snadnější pro zápis a ke čtení,
jiné do LilyPondu přinášejí nové vlastnosti.

Například všechny názvy vlastností @code{\paper} a @code{\layout}
se mají zapisovat ve tvaru @code{první-druhá-třetí}. Ve
verzi 2.11.60 si však všímáme, že vlastnost
@code{printallheaders} se tohoto pravidla nedrží.
Měli bychom to tak teď nechat (díky čemuž budou noví uživatelé zmateni, protože
se musí vyrovnat se vstupním formátem, který není logický), nebo bychom to měli změnit (čímž
naštveme staré uživatele s jejich již napsanými notovými zápisy)?
V tomto případě jsme se rozhodli, že změníme název v
@code{print-all-headers}.  Naštěstí může být tato změna zautomatizována
naším nástrojem @command{convert-ly}.


Bohužel si @code{convert-ly} neporadí se všemi změnami ve skladbě.
Například v LilyPondu 2.4 a dřívějších byly přízvuky a neanglická písmena
v jiných jazycích zadávány příkazy LaTeXu -- tak například německé Änderung
(změna) bylo zapsáno jako @code{\"Anderung}, nebo v případě zobrazení
francouzského slova pro Vánoce bylo zadáno @code{No\"el}.  Od verze 2.6
se ale musí přízvuky a zvláštní znaky za zapsat
přímo jako znak UTF-8.  @code{convert-ly} nedokáže převést všechny
znaky LaTeXu, takže se musí kvůli aktualizaci starých souborů LilyPond převzít ručně.


@node Vyvolání convert-ly
@section Vyvolání @command{convert-ly}
@translationof Invoking convert-ly

@command{convert-ly} používá příkaz @code{\version} pro zjištění čísla
staré verze LilyPondu ve vstupním souboru.  Ve většině případů jednoduše stačí
napsat v příkazovém řádku

@example
convert-ly -e můjsoubor.ly
@end example

@noindent
v adresáři, v němž soubor leží.  Tím je
@file{můjsoubor.ly} přímo zaktualizován a původní soubor zachován v
@file{můjsoubor.ly~}.

@warning{@command{convert-ly} vždy převádí až po poslední změnu ve skladbě,
kterou program zvládá.  To znamená, že číslo @code{@bs{}version},
které v souboru stojí po převodu, je obvykle nižší než
verze samotného @command{convert-ly}.}

Pro převod všech souborů v adresáři se v příkazovém řádku
napíše:

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

Převedenému souboru lze rovněž určit jiný název, takže původní
soubor zůstane nezměněn.  K tomu se v příkazovém řádku napíše

@example
convert-ly můjsoubor.ly > můjnovýsoubor.ly
@end example

Program sestaví seznam s čísly všech verzí, pro které byl převod
proveden.  Pokud nejsou vypsána žádná čísla verzí, je soubor
v nejnovější verzi.

Uživatelé MacOS@tie{}X mohou příkazy spouštět přes položku nabídky
@code{Compile > Update syntax}.

Uživatelé Windows by tyto příkazy měli spouštět v příkazovém okně,
které se obvykle nachází pod @code{Start > Příslušenství > Příkazy}.


@node Volby příkazového řádku pro convert-ly
@section Volby příkazového řádku pro @command{convert-ly}
@translationof Command line options for convert-ly

Program je vyvolán následujícím způsobem:

@example
convert-ly [@var{volba}]@dots{} @var{souborovýnázev}@dots{}
@end example

Mohou se používat následující volby:

@table @code
@item -e, --edit
Použít převod přímo na vstupní soubor, takže je přímo změněn.

@item -f, --from=@var{od-čísloverze}
Nastavuje číslo verze, od kterého má převod začít.  Když
tato volba není použita, odhadne @command{convert-ly} číslo verze
na základě údaje o @code{\version} v souboru.  Například
@code{--from=2.10.25}

@item -n, --no-version
Obvykle do výstupu @command{convert-ly} přidá záznam @code{\version}
k převáděnému souboru.  Zadání této volby povede k potlačení tohoto chování.

@item -s, --show-rules
Ukázat všechny známé převody a ukončit.

@item --to=@var{po-čísloverze}
Nastavit cílovou verzi převodu.  Výchozí je poslední možná verze,
kterou program zvládá.  Například @code{--to=2.12.2}

@item -h, --help
Ukázat nápovědu k použití.
@end table

K aktualizaci úryvků LilyPondu v souborech texinfo lze použít

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

@noindent
.

Pro zobrazení změn ve skladbě LilyPondu mezi dvěma verzemi se
napíše

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


@node Potíže s convert-ly
@section Probleme mit @code{convert-ly}
@translationof Problems running convert-ly

Když se @command{convert-ly} používá v příkazovém okně ve Windows
na souboru, který má v názvu souboru nebo v cestě k němu mezery,
musí se celý název souboru obklopit třemi (!) dvojitými
uvozovkami:

@example
convert-ly """D:/My Scores/Ode.ly""" > "D:/My Scores/new Ode.ly"
@end example

Když jednoduchý příkaz @command{convert-ly -e *.ly} nepracuje,
protože je rozepsaný příkazový řádek příliš dlouhý, je také možné
@command{convert-ly} nechat běžet opakovaně ve smyčce.  Tento
příklad pro UNIX převede všechny soubory @file{-ly} v nynějším
adresáři:

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

Pro příkazové okno ve Windows zní odpovídající příkaz takto:

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

Ne všechny změny ve skladbě jsou převáděny.  Lze zadat jen volbu pro
výstup.  Automatická aktualizace Scheme a kódu Scheme v LilyPondu
je celkem nepravděpodobná, velice pravděpodobně se zde musí provést
aktualizace ručně.


@node Ruční převod
@section Ruční převod
@translationof Manual conversions

Teoreticky by mohl program jako @command{convert-ly} zvládnout všechny
změny ve skladbě.  Konečně je to počítačový program, který vykládá
starou a novou verzi souboru s notovým zápisem, takže jiný počítačový program
by mohl přeložit jeden soubor do druhého.@footnote{To je každopádně možné u každého souboru LilyPond,
který neobsahuje Scheme.  Když bylo v souboru použito Scheme,
potom takový soubor obsahuje úplný Turingův jazyk a my se tím dostáváme
do potíží se slavným @qq{Zastavovacím problémem} informatiky.}

Nicméně projekt LilyPond má omezené prostředky, počet členů jeho družstva je
malý, takže ne všechny převody pracují automaticky.  Dole je seznam známých potíží:


@verbatim
1.6->2.0:
 Číslovaný bas není vždy převeden správně, obzvláště věci jako {<
 >}.  Matovy poznámky k řešení:
   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 '> }'.
 Ne všechny textové popisy jsou vždy převeden správně.  Ve staré skladbě
 šlo seskupit více popisů závorkami, například:
   -#'((bold italic) "string")
   Toto je nesprávně převáděno na:
   -\markup{{\bold italic} "string"}
   namísto:
   -\markup{\bold \italic "string"}
2.0->2.2:
 Nerozumí \partCombine
 Nedělá \addlyrics => \lyricsto, takže některé soubory s mnoha slokami nepracují
2.0->2.4:
 \magnify není změněno na \fontsize.
    - \magnify #m => \fontsize #f, where f = 6ln(m)/ln(2)
 remove-tag není změněn.
    - \applyMusic #(remove-tag '. . .) => \keepWithTag #'. . .
 first-page-number není změněn.
    - first-page-number no => print-first-page-number = ##f
 Zalomení řádků v hlavičkách nejsou převedeny.
    - \\\\  jako zalomení řádku v polích \header => \markup \center-align <
      "První řádek" "Druhý řádek" >
 Koncové body pro crescendo a decrescendo-Endpunkte nejsou převedeny.
    - \rced => \!
    - \rc => \!
2.2->2.4:
 \turnOff (použito v \set Staff.VoltaBracket = \turnOff) není převeden správně
2.4.2->2.5.9
 \markup{ \center-align <{ ... }> } by měl být převeden na:
 \markup{ \center-align {\line { ... }} }
 nyní ale chybí \line.
2.4->2.6
 Zvláštní LaTeXové znaky jako $~$ v textu nejsou převedeny na UTF-8.
2.8
 \score{} nyní musí vždy začínat hudebním výrazem. Všechno ostatní
(obzvláště \header{}) smí přijít teprve po notách.
@end verbatim
