LilyPond erweitern: 1.2.6 Zusammengesetzte LilyPond-Variablen

### 1.2.6 Zusammengesetzte LilyPond-Variablen

### Abstände (offset)

Zweidimensionale Abstände (X- und Y-Koordinaten) werden als pairs (Paare) gespeichert. Der `car`-Wert des Abstands ist die X-Koordinate und der `cdr`-Wert die Y-Koordinate.

>     \override TextScript.extra-offset = #'(1 . 2)

Hierdurch wird das Paar `(1 . 2)` mit der Eigenschaft `extra-offset` des TextScript-Objektes verknüpft. Diese Zahlen werden in Systembreiten gemessen, so dass der Befehl das Objekt eine Systembreite nach rechts verschiebt und zwei Breiten nach oben.

Prozeduren, um mit Abständen zu arbeiten, finden sich in ‘`scm/lily-library.scm`’.

### Brüche (fractions)

Brüche, wie sie LilyPond benutzt, werden wiederum als Paare gespeichert, dieses Mal als unbezeichnete ganze Zahlen. Während Scheme rationale Zahlen als einen negativen Typ darstellen kann, sind musikalische gesehen ‘`2/4`’ und ‘`1/2`’ nicht das selbe, sodass man zwischen beiden unterscheiden können muss. Ähnlich gibt es auch keine negativen Brüche in LilyPonds Sinn. Somit bedeutet `2/4` in LilyPond `(2 . 4)` in Scheme, und `#2/4` in LilyPond bedeutet `1/2` in Scheme.

### Bereiche (extend)

Paare werden auch benutzt, um Intervalle zu speichern, die einen Zahlenbereich vom Minimum (dem `car`) bis zum Maximum (dem `cdr`) darstellen. Intervalle werden benutzt, um die X- und Y-Ausdehnung von druckbaren Objekten zu speichern. Bei X-Ausdehnungen ist `car` die linke X-Koordinate und `cdr` die rechte X-Koordinate. Für Y-Ausdehnungen ist `car` die untere Koordinate und `cdr` die obere Koordinate.

Prozeduren, um mit Intervallen zu arbeiten, finden sich in ‘`scm/lily-library.scm`’. Diese Prozeduren sollten benutzt, wenn es möglich ist, um den Code konsistent zu halten.

### Eigenschafts-Alisten (property alist)

Eine Eigenschafts-Aliste ist eine LilyPond-Datenstruktur, die eine Aliste darstellt, deren Schlüssel Eigenschaften sind und deren Werte Scheme-Ausdrücke sind, die den erwünschen Wert der Eigenschaft ausgeben.

LilyPond-Eigenschaften sind Scheme-Symbole, wie etwa `'thickness` (Dicke).

### Alisten-Ketten (alist chains)

Eine Alisten-Kette ist eine Liste, die Eigenschafts-Alisten enthält.

Die Menge aller Eigenschaften, die sich auf einen Grob auswirken, wird typischerweise in einer Alisten-Kette gespeichert. Um den Wert einer bestimmten Eigenschaft zu finden, die ein Grob haben soll, wird jede Liste in der Kette nach einander durchsucht, wobei nach einem Eintrag geschaut wird, der den Eigenschaftsschlüssel enthält. Der erste gefundene Alisten-Eintrag wird benutzt und dessen Wert ist der Wert der Eigenschaft.

Die Scheme-Prozedur `chain-assoc-get` wird normalerweise benutzt, um Grob-Eigenschaftenwerte zu erhalten.

#### LilyPond – Extending v2.24.4 (stabiler Zweig).