LilyPond Használati útmutató: 1.4 Gyakori hibák

## 1.4 Gyakori hibák

Az alábbi hibajelenségek gyakran előfordulnak, ugyanakkor az okuk nem mindig egyértelmű vagy könnyen megtalálható. Ha azonban egyszer megértjük a természetüket, gyorsan meg lehet rájuk találni a megoldást.

### A kotta nem fér ki az oldalra

Ha a kotta jobb oldalra „lefolyik” az oldalról, vagy rendkívül össze van sűrítve, szinte mindig hibás hanghosszúságról van szó, amely miatt egy ütemben az utolsó hang túlnyúlik az ütemvonalom. Ez nem számít hibának, de ha sok ilyen van egymás után, akkor a sor nem tud megtörni, mert sortörés csak olyan ütemek végén helyezkedhet el, amelyek végén nem nyúlik túl hang.

A hibás ritmus könnyen megtalálható ütemhatár-ellenőrzésekkel: ld. a Bar and bar number checks c. szakaszt.

Ha sok ilyen rendhagyó ütemre van szükség, akkor láthatatlan ütemvonalat kell oda beszúrni, ahol a sortörés megengedett. Ennek módját a Bar lines c. szakasz írja le.

### Egy kottasorral több van a kelleténél

Ha a kontextusokat nem explicite hozzuk létre a `\new` paranccsal, akkor minden figyelmeztetés nélkül létrejön egy új kontextus ott, ahol olyan parancs fordul elő, amely a létező kontextusban nem alkalmazható. Egyszerű kottákban a kontextusok automatikus létrehozása hasznos, és a legtöbb példa hasznát veszi ennek az egyszerűsítésnek. De olykor ez nem várt kottasorok vagy tételek megjelenését eredményezheti. Például a következő kódtól azt várnánk, hogy a kottasorban minden kottafej piros lesz, miközben valójában az eredmény két kottasor, mely közül az alsóban alapértelmezett színű, fekete kottafejek lesznek.

>     \override Staff.NoteHead #'color = #red
>     \new Staff { a }

Ez azért történik, mert a `Staff` kontextus nem létezik az `\override` parancs helyén, így létrejön, a finomhangolás pedig az így létrehozott kottasorra fog vonatkozni, nem a `\new Staff` paranccsal létrehozott kottasorra. A példa helyesen:

>     \new Staff {
>       \override Staff.NoteHead #'color = #red
>       a
>     }

Másik példánkban egy `\relative` blokk szerepel egy `\repeat` blokkon belül, ami két kottasort eredményez, amely közül a második később kezdődik, mint az első, mert a `\repeat` parancs hatására két `\relative` blokk keletkezik, amik implicit módon létrehoznak egy-egy `Staff` és `Voice` kontextust.

>     \repeat unfold 2 {
>       \relative c' { c d e f }
>     }

A megoldás a `\repeat` és a `\relative` parancsok felcserélése, a következő módon:

>     \relative c' {
>       \repeat unfold 2 { c d e f }
>     }

### Hiba a `../ly/init.ly` fájlban

Különféle rejtélyes hibaüzenetek jelenhetnek meg, melyek a ‘`../ly/init.ly`’ fájlban található szintaktikai hibára utalnak, ha a forrásfájl nem jól formált, például nem egyezik a nyitó és csukó kapcsos zárójelek vagy idézőjelek száma.

A leggyakoribb hiba a hiányzó `}` karakter egy blokk, pl. `\score` blokk végén. A megoldás kézenfekvő: ellenőrizni kell, hogy minden kapcsos zárójelnek megvan-e a párja. A Hogyan működnek a LilyPond bemeneti fájlok? lecke írja le a forrásfájlok helyes szerkezetét. Egy olyan szövegszerkesztő használatával, mely kiemeli a zárójelpárokat, elkerülhetőek az ilyen hibák.

Egy másik gyakori ok az, hogy nincs szóköz a dalszöveg utolsó szótagja és a dalszöveg blokk záró kapcsos zárójele között. Enélkül az elválasztás nélkül a kapcsos zárójel a szótag részének számít. Emellett minden kapcsos zárójel körül érdemes szóközt vagy sortörést hagyni. A jelenség magyarázata a Lyrics explained c. szakaszban olvasható.

A hiba akkor is előfordulhat, amikor egy záró idézőjel (`"`) hiányzik. Ebben az esetben a hiba egy közeli sorban jelentkezik. A pár nélküli idézőjel általában néhány sorral feljebb található.

### `Unbound variable %` hibaüzenet

Ez a hiba akkor fordul elő (egy „GUILE signaled an error ...” hibaüzenettel együtt), amikor a LilyPondba ágyazott Scheme kód LilyPond formátumú megjegyzést tartalmaz Scheme formátumú helyett.

A LilyPondban a megjegyzések százalékjellel (`%`) kezdődnek, és nem használhatóak Scheme kódon belül. A Scheme kódban a megjegyzések pontosvesszővel (`;`) kezdődnek.

### `FT_Get_Glyph_Name` hibaüzenet

Ez a hiba azt jelzi, hogy a bemeneti fájl egy nem ASCII karaktert tartalmaz, ugyanakkor nem UTF-8 karakterkódolással lett elmentve. Részletekért ld. a Text encoding c. szakaszt.

Más nyelvek: English, deutsch, español, français, italiano, 日本語.

#### LilyPond — Használat