Texto de marcado dentro del segundo paréntesis volta

Quiero dar formato al texto en los encabezados de los paréntesis de Volta finales primero y segundo en Lilypond. Hay varios ejemplos de texto formateado en el primer corchete final, pero parece que no puedo encontrar uno con texto formateado (usando un comando de marcado) en el segundo corchete final.

En otras palabras, tengo este fragmento:

01 voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
02
03 \relativa c'' {
04 c1
05 \set Score.repeatCommands = #(list (list 'volta voltaAdLib) 'start-repeat)
06 c4 bde
07 \set Score.repeatCommands = #'((volta #f) (volta "4.") fin-repetir)
08 f1
09 \set Puntuación.repetirComandos = #'((volta #f))
10 }

Y quiero agregar otro myText = \markup...bloque en lugar de "4". en la línea 07. ¿Cómo haría eso?

Respuestas (1)

Eso es más una cuestión de sintaxis de Scheme que de LilyPond. Primero, debe tener en cuenta que 'en Scheme se usa para citar material en lugar de interpretarlo. Lo que vale la pena citar son las listas (las cosas incluidas en (... )) y los símbolos (cadenas básicas que se usan como identificadores). Una lista, cuando se cita, tiene todos sus elementos citados y entonces es una lista. Si no está entre comillas, se evalúa. Una lista evaluada es una llamada de función, siendo el primer elemento la función y los elementos restantes los valores, todos los cuales se evalúan antes de la llamada.

Una función típica es listla que toma sus argumentos y los pone en una lista.

Otro elemento que es diferente cuando se evalúa es un símbolo (mencionado anteriormente). Sin evaluar, es una cosa única que no se compara igual a ninguna otra cosa única. Evaluado, es más o menos un acceso variable.

Entonces, en lo anterior,

    #(lista (lista 'volta voltaAdLib) 'inicio-repetir)

es básicamente lo mismo que

    #'((volta me-gustaría-el-valor-de-voltaAdLib) inicio-repetición)

para lo cual se pueden usar cuasicomillas que citan cualquier cosa que no esté precedida por ,. Así que uno podría escribir esto como

    #`((volta ,voltaAdLib) inicio-repetición)

Tenga en cuenta que ahora estoy usando la cuasi-comilla que apunta hacia atrás después de #. Si utilizo la cotización regular, el resultado sería equivalente a

    #'((volta (sin comillas voltaAdLib)) inicio-repetición)

que no ayuda. Las cuasicomillas suelen ser bastante más convenientes para la creación de listas con solo unos pocos valores de variables o llamadas a funciones que para la creación de listas con llamadas de lista explícitas. Entonces, volviendo a su caso de uso, es probable que desee

    \set Score.repeatCommands = #`((volta #f) (volta ,#{ \markup "ad lib." #}) end-repeat)

#{ \markup ... #}Creo que se admite el uso directo en Scheme desde la versión 2.16, pero, por supuesto, también puede usar una variable como en su primer ejemplo.