Extender LilyPond: A.2.6 Variables de LilyPond compuestas

### A.2.6 Variables de LilyPond compuestas

#### Desplazamientos

Los desplazamientos bidimensionales (coordenadas X e Y) se almacenan como parejas. El `car` del desplazamiento es la coordenada X, y el `cdr` es la coordenada Y.

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

Esto asigna la pareja `(1 . 2)` a la propiedad `extra-offset` del objeto TextScript. Estos números se miden en espacios de pentagrama, y así esta instrucción mueve el objeto un espacio de pentagrama a la derecha, y dos espacios hacia arriba.

Los procedimientos para trabajar con desplazamientos están en ‘`scm/lily-library.scm`’.

#### Fracciones

### Fractions

Las fracciones tal y como se utilizan por parte de LilyPond se almacenan, de nuevo, como parejas, esta vez de enteros sin signo. Mientras que Scheme es capaz de representar números racionaes como un tipo nativo, musicalmente ‘`2/4`’ y ‘`1/2`’ no son lo mismo, y necesitamos poder distinguir entre ellos. De igual forma, no existe el concepto de ‘fracciones’ negativas en LilyPond. Así pues, `2/4` en LilyPond significa `(2 . 4)` en Scheme, y `#2/4` en LilyPond significa `1/2` en Scheme.

#### Dimensiones

Las parejas se usan también para almacenar intervalos, que representan un rango de números desde el mínimo (el `car`) hasta el máximo (el `cdr`). Los intervalos se usan para almacenar las dimensiones en X y en Y de los objetos imprimibles. Para dimensiones en X, el `car` es la coordenada X de la parte izquierda, y el `cdr` es la coordenada X de la parte derecha. Para las dimensiones en Y, el `car` es la coordenada inferior, y el `cdr` es la coordenada superior.

Los procedimientos para trabajar con intervalos están en ‘`scm/lily-library.scm`’. Se deben usar estos procedimientos siempre que sea posible, para asegurar la consistencia del código.

#### Listas-A de propiedades

Una lista-A de propiedades es una estructura de datos de LilyPond que es una lista-A cuyas claves son propiedades y cuyos valores son expresiones de Scheme que dan el valor deseado de la propiedad.

Las propiedades de LilyPond son símbolos de Scheme, como por ejemplo `'thickness`.

#### Cadenas de listas-A

Una cadena de listas-A es una lista que contiene listas-A de propiedades.

El conjunto de todas las propiedades que se aplican a un grob se almacena por lo general como una cadena de listas-A. Para poder encontrar el valor de una propiedad determinada que debería tener un grob, se busca por todas las listas-A de la cadena, una a una, tratando de encontrar una entrada que contenga la clave de la propiedad. Se devuelve la primera entrada de lista-A que se encuentre, y el valor es el valor de la propiedad.

El procedimiento de Scheme `chain-assoc-get` se usa normalmente para obtener los valores de propiedades.

#### LilyPond — Extender v2.22.2 (rama estable).