[ << Actualizar ficheros con convert-ly ] | [Top][Contents][Index] | [ Ejecución de lilypond-book >> ] |
[ < Conversiones manuales ] | [ Up : Actualizar ficheros con convert-ly ] | [ Ejecución de lilypond-book > ] |
2.6 Escritura de código que contemple varias versiones
En ciertos casos, especialmente al escribir código de
bibliotecas, es deseable dar apoyo a más de una versión de
LilyPond, por encima de los cambios de sintaxis que rompen con la
práctica anterior. Para hacerlo, se pueden envolver porciones de
código alternativas dentro de expresiones condicionales que
dependen de la versión de LilyPond que se está ejecutando
actualmente. La función de Scheme ly:version?
admite un
operador de comparación op y una versión de referencia
ver que se pasa como una lista de enteros con un máximo de
tres elementos. Se ignoran los elementos que faltan, de forma que
'(2 20)
equivale a cualquier versión de la línea de
2.20. Son posibles construcciones como las siguientes:
#(cond ((ly:version? > '(2 20)) (ly:message "Esto es código para LilyPond posterior a 2.20")) ((ly:version? = '(2 19 57)) (ly:message "Esto solamente se ejecuta con LilyPond 2.19.57")) (else (ly:message "Esto se ejecuta en cualquier otra versión")))
Por lo general, esto se encontrará integrado dentro de funciones de biblioteca que permitan usar más de un tipo de sintaxis alternativas, pero también es posible usar la comparación directamente dentro de la música como en el ejemplo siguiente:
{ c' d' e' f' #(if (ly:version? = '(2 21)) #{ \override NoteHead.color = #red #} #{ \override NoteHead.color = #blue #}) g' a' b' c'' }
Nota: Esta función fue introducida en LilyPond 2.19.57, por lo que no es posible hacer la comparación con versiones anteriores a esa.
[ << Actualizar ficheros con convert-ly ] | [Top][Contents][Index] | [ Ejecución de lilypond-book >> ] |
[ < Conversiones manuales ] | [ Up : Actualizar ficheros con convert-ly ] | [ Ejecución de lilypond-book > ] |