A.2.5 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’.
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.