| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Modifying properties
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Overview of modifying properties
Cada contexto es responsable de la creación de ciertos tipos de objetos gráficos. Los ajustes que se usan para imprimir estos objetos también se almacenan por contexto. Mediante la modificación de estos ajustes, se puede alterar la apariencia de los objetos.
Existen dos tipos diferentes de propiedades almacenadas en los contextos: las propiedades de contexto y las propiedades de grob. Las propiedades de contexto son propiedades que se aplican al contexto como un todo y controlan la forma en que el propio contexto se imprime. Por contra, las propiedades de grob se aplican a los tipos de grob específicos que se imprimirán dentro del contexto.
Las instrucciones \set y \unset se usan para cambiar
los valores de las propiedades de contexto. Las instrucciones
\override y \revert se usan para cambiar los valores
de las propiedades de grob.
Referencia de funcionamiento interno: (internals)Backend sección ‘Backend’ en Referencia de Funcionamiento Interno, (internals)All layout objects sección ‘All layout objects’ en Referencia de Funcionamiento Interno, (internals)OverrideProperty sección ‘OverrideProperty’ en Referencia de Funcionamiento Interno, (internals)RevertProperty sección ‘RevertProperty’ en Referencia de Funcionamiento Interno, (internals)PropertySet sección ‘PropertySet’ en Referencia de Funcionamiento Interno.
El «back-end» o motor de salida no es muy estricto en la comprobación de tipos de las propiedades de objetos. Las referencias cíclicas en valores Scheme de propiedades pueden producir cuelgues o salidas abruptas, o las dos cosas.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
\set@translationof The set command
Cada contexto puede tener distintas propiedades, variables
contenidas dentro de ese contexto. Se pueden cambiar mientras
dura el paso de interpretación. Se consigue insertando la
instrucción \set dentro de la música:
\set contexto.propiedad = #valor |
valor es un objeto de Scheme, razón por la que va precedido
del carácter almohadilla, #.
El nombre de las propiedades de contexto suele ir en minúsculas
con mayúscula en medio. Controlan sobre todo la traducción de la
música a la notación, p.ej. localAlterations (para
determinar si hay que impriir alteraciones o no), o
measurePosition (para determinar cuándo hay que imprimir
una línea divisoria). El valor de las propiedades de contexto
puede modifcarse con el tiempo durante la interpretación de la
música; un ejemplo obvio es measurePosition. Las
propiedades de contexto se modifican mediante la instrucción
\set.
Por ejemplo, los silencios multicompás se combinan en un solo
compás si el valor de la propiedad de contexto skipBars se
establece a #t (verdadero):
R1*2 \set Score.skipBars = ##t R1*2
Si se omite el argumento context, entonces se utiliza el
contexto actual de nivel más bajo (normalmente ChordNames,
Voice o Lyrics). En este ejemplo:
\set Score.autoBeaming = ##f \relative { e''8 e e e \set autoBeaming = ##t e8 e e e } \\ \relative { c''8 c c c c8 c c c }
El cambio se aplica ‘al vuelo’, mientras dura la música, de forma que el ajuste sólo afecta al segundo grupo de corcheas.
Observe que el contexto del nivel más bajo no siempre contiene la
propiedad que querríamos modificar: por ejemplo, intentar ajustar
el valor de la propiedad skipBars del contexto
predeterminado del nivel más bajo, que en este caso es
Voice, no tendrá ningún efecto, porque skipBars es una
propiedad del contexto Score.
R1*2 \set skipBars = ##t R1*2
Los contextos son jerárquicos, y si se ha especificado un contexto
mayor, por ejemplo Staff, entonces el cambio se aplicaría
también a todos los contextos Voice dentro del pentagrama
actual.
También existe una instrucción \unset:
\unset contexto.propiedad |
que elimina la definición de propiedad. Esta instrucción elimina la definición solamente si está establecida dentro de contexto. Properties that have been set in enclosing contexts will not be altered by an unset in an enclosed context:
\set Score.autoBeaming = ##t \relative { \unset autoBeaming e''8 e e e \unset Score.autoBeaming e8 e e e } \\ \relative { c''8 c c c c8 c c c }
Como \set, el argumento contexto no se tiene que
especificar para un contexto del nivel más bajo, por lo que los
dos enunciados
\set Voice.autoBeaming = ##t \set autoBeaming = ##t |
son equivalentes si el contexto inferior en curso es Voice.
Los ajustes con \set o \unset que se aplican
solamente a un único paso de tiempo se pueden escribir con
\once, por ejemplo en
c''4 \once \set fontSize = #4.7 c''4 c''4
En el manual de Referencia de funcionamiento interno hay una descripción completa de todas las propiedades de contexto disponibles, consulte (internals)Tunable context properties sección ‘Tunable context properties’ en Referencia de Funcionamiento Interno.
Referencia de funcionamiento interno: (internals)Tunable context properties sección ‘Tunable context properties’ en Referencia de Funcionamiento Interno.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
\override@translationof The override command
Existe un tipo especial de propiedad de contexto: la descripción
de los grobs. Las decscripciones de los grobs reciben un nombre
en MayúsculasDeCamello (empezando en mayúscula). Contienen
los ‘ajustes predeterminados’ para un tipo particular de grob,
en forma de lista asociativa. Consulte
‘scm/define-grobs.scm’ para ver los ajustes de cada
descripción de grob. Las descripciones de grob se modifican con
\override.
La sintaxis de la instrucción \override es
\override [contexto.]NombreDelGrob.propiedad = #valor |
Por ejemplo, podemos aumentar el grosor de la plica de una figura
sobreescribiendo la propiedad thickness (grosor) del objeto
Stem (plica):
c''4 c'' \override Voice.Stem.thickness = #3.0 c''4 c''
Si no se ha especificado ningún contexto en la instrucción
\override, se utiliza el contexto del nivel inferior:
\override Staff.Stem.thickness = #3.0 << \relative { e''4 e \override Stem.thickness = #0.5 e4 e } \\ \relative { c''4 c c c } >>
Algunas opciones susceptibles de trucaje, se llaman ‘subpropiedades’ y residen dentro de las propiedades. Para efectura trujajes sobre ellas, utilice instrucciones de la forma
\override Stem.details.beamed-lengths = #'(4 4 3) |
o para modificar los extremos de los objetos extensos, utilice una forma como las siguientes:
\override TextSpanner.bound-details.left.text = "left text" \override TextSpanner.bound-details.right.text = "right text" |
El efecto de una instrucción de sobreescritura \override se
puede deshacer con \revert.
La sintaxis de la instrucción \revert es
\revert [Contexto.]NombreDelGrob.propiedad |
Por ejemplo,
\relative { c''4 \override Voice.Stem.thickness = #3.0 c4 c \revert Voice.Stem.thickness c4 }
Los efectos de \override y \revert se aplican a
todos los grobs del contexto afectado partiendo del momento actual
y hacia adelante:
<< \relative { e''4 \override Staff.Stem.thickness = #3.0 e4 e e } \\ \relative { c''4 c c \revert Staff.Stem.thickness c4 } >>
Se puede usar \once con \override o \revert
para afectar solamente al instante de tiempo actual:
<< \relative c { \override Stem.thickness = #3.0 e''4 e e e } \\ \relative { c''4 \once \override Stem.thickness = #3.0 c4 c c } >>
Referencia de funcionamiento interno: (internals)Backend sección ‘Backend’ en Referencia de Funcionamiento Interno
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
\tweak@translationof The tweak command
El cambio de las propiedades de grob mediante \override produce
la aplicación del cambio a todos los grobs dados en el contexto en el
momento en que se aplica dicho cambio. Sin embargo, en ocasiones
podemos desear que los cambios se apliquen a un solo grob en lugar de
a todos los grobs del contexto afectado. Esto se consigue con la
instrucción \tweak, que tiene la sintaxis siguiente:
\tweak [objeto-de-presentación.]propiedad-del-grob valor |
Es opcional especificar el objeto-de-presentación. La
instrucción \tweak se aplica al objeto musical que viene
inmediatamente después de valor dentro del flujo musical.
Para ver una introducción a la sintaxis y los usos de la instrucción tweak, consulte (learning)Métodos de trucaje sección ‘Métodos de trucaje’ en Manual de Aprendizaje.
Si se colocan varios elementos similares en el mismo momento
musical, la instrucción \override no se puede usar para
modificar uno solo de ellos: aquí es donde se debe usar la
instrucción \tweak. Entre los elementos que pueden
aparecer más de una vez en el mismo momento musical están los
siguientes:
En este ejemplo se modifican el color de una cabeza y el tipo de otra, dentro del mismo acorde:
< c'' \tweak color #red d'' g'' \tweak duration-log #1 a'' > 4
\tweak se puede usar para modificar ligaduras de expresión:
\relative { c'-\tweak thickness #5 ( d e f) }
Para que funcione la instrucción \tweak, debe permanecer
adyacente al objeto al que se ha de aplicar después de que el código
de entrada se ha convertido a un flujo musical. El trucaje de un
acorde completo no hace nada porque su evento musical actúa solamente
como un contenedor, y todos los objetos de presentación se crean a
partir de eventos dentro del EventChord:
\tweak color #red c''4 \tweak color #red <c'' e''>4 <\tweak color #red c'' e''>4
La instrucción \tweak sencilla no se puede usar para
modificar ningún objeto que no se haya creado directamente a
partir de la entrada. Concretamente, no afecta a las plicas,
barras automáticas ni alteraciones, porque éstos se generan
posteriormente por parte de objetos de presentación
NoteHead más que por elementos musicales del flujo de
entrada.
Tales objetos de presentación creados indirectamente se pueden
trucar usando la forma de la instrucción \tweak en que el
nombre del grob se especifica de forma explícita:
\tweak Stem.color #red \tweak Beam.color #green c''8 e'' <c'' e'' \tweak Accidental.font-size #-3 ges''>4
No se puede usar \tweak para modificar las claves o las
indicaciones de compás, porque éstos se separan de cualquier
instrucción \tweak precedente dentro del flujo de entrada
merced a la inserción automática de elementos adicionales que se
requieren para especificar el contexto.
Se pueden colocar varias instrucciones \tweak antes de un
elemento de notación; todos le afectan:
c' -\tweak style #'dashed-line -\tweak dash-fraction #0.2 -\tweak thickness #3 -\tweak color #red \glissando f''
El flujo musical que se genera a partir de una sección de un
archivo de entrada (incluido cualquier elemento insertado
automáticamente) puede examinarse, véase
(extending)Presentación de las expresiones musicales sección ‘Presentación de las expresiones musicales’ en Extender. Esto puede
ser de utilidad en la determinación de lo que puede modificarse
por medio de una instrucción \tweak.
Manual de aprendizaje: (learning)Métodos de trucaje sección ‘Métodos de trucaje’ en Manual de Aprendizaje.
Manual de extensión: (extending)Presentación de las expresiones musicales sección ‘Presentación de las expresiones musicales’ en Extender.
No se puede usar la instrucción \tweak para modificar los
puntos de control de una sola de varias ligaduras de unión dentro
de un acorde, aparte de la primera que se encuentre en el código
de entrada.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
\set frente a \override@translationof set versus override
Tanto la instrucción \set como \override manipulan
propiedades asociadas a contextos. En ambos casos las propiedades
siguen unajerarquía de contextos: las propiedades que no se
establecen dentro del contexto aún presentan los valores del
contexto de su padre respectivo.
El valor y la duración en el tiempo de una propiedad de contexto son dinámicos y están disponibles solamente cuando la música se está interpretando o ‘iterando’. En el momento de la creación del contexto, se inicializan las propiedades a partir de las definiciones correspondientes (así como otras posibles modificaciones) de dicho contexto. Cualquier cambio posterior se obtiene a través de instrucciones de establecimiento de propiedades dentro de la propia música.
Las definiciones de grob (objetos gráficos) son una clase especial de propiedades de contexto, pues su estructura y uso son distintos de las propiedades de contexto ordinarias. A diferencia de las propiedades de los contextos normales, las definiciones de grob se subdividen en propiedades de grob.
Además, en contraste con las propiedades de contexto normales, las definiciones de grob tienen su propio conjunto de ‘utilidades de mantenimiento’ de las propiedades individuales y, en su caso, sub-propiedades. Esto supone que es posible definir las distintas partes dentro de diferentes contextos y aún tener la definición completa del grob en el momento de su creación, montada a partir de todas las piezas proporcionadas por el contexto actual y su ancestro o ancestros, conjuntamente.
Un grob u objeto gráfico se crea normalmente por parte de un grabador en el momento de la interpretación de una expresión musical y recibe sus propiedades iniciales de la definición de grob en curso del contexto del grabador. El grabador (u otras partes del ‘backend’ de LilyPond) pueden después modificar (o añadirse a) las propiedades iniciales del grob; sin embargo, ello no afecta a la definición de grob del contexto.
Lo que LilyPond conoce como ‘propiedades de grob’ en el contexto del trucaje a nivel de usuario son en realidad las propiedades de la definición de grob de un contexto.
Se accede a las definiciones de grob con un conjunto de
instrucciones diferente. Se manipulan usando \override y
\revert y tienen un nombre que empieza con una letra
mayúscula (como ‘NoteHead’) mientras que las propiedades de
contexto ordinarias se manipulan utilizando \set y
\unset y se nombran empezando en letra minúscula.
Las instrucciones \tweak y \overrideProperty cambian
las propiedades de grob pasando por encima de las propiedades de
contexto completamente. En su lugar, atrapan a los grobs tan
pronto se crean, y establecen propiedades sobre ellos directamente
con \tweak cuando se originan a partir de un evento musical
o, en el caso de \overrideProperty, para una sobreescritura
específica.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
\offset@translationof The offset command
Aunque es posible fijar propiedades de grob a valores nuevos con
las instrucciones \override, \tweak y
\overrideProperty, muchas veces conviene más modificar
dichas propiedades en una cantidad relativa al valor
predeterminado. La instrucción \offset se encuentra
disponible para este fin.
La sintaxis de \offset es
[-]\offset propiedad incrementos elemento |
La instrucción funciona añadiendo el contenido de incrementos al ajuste predeterminado de la propiedad del grob indicado por elemento.
Dependiendo de la formulación de la instrucción, \offset
puede actuar como un \tweak (trucaje) o como un
\override (sobreescritura). Las variaciones en su uso se
explicarán después de haber examinado las propiedades de grob que
se pueden usar con \offset.
Muchas, pero no todas, las propiedades de grob admiten la
aplicación de un desplazamiento. Si propiedad no se puede
desplazar, el objeto permanece sin cambios y se emite una
advertencia. En estos casos se deben usar en su lugar
\override o \tweak para modificar el objeto.
Se puede trabajar por ensayo y error y dejar que las advertencias nos sirvan de guía para saber lo que puede o no puede ser desplazado. Sin embargo, es posible un enfoque más sistemático.
Los criterios siguientes determinan si una propiedad se puede
modificar con \offset:
number, una lista de
numbers, number-pair, y number-pair-list.
Las páginas de
(internals)All layout objects sección ‘All layout objects’ en Referencia de Funcionamiento Interno contienen una lista
de los tipos de datos característicos de cada propiedad. No
importa si el ajuste predeterminado es una función.
Los ejemplos siguientes tratan diversas propiedades de grob frente a los criterios que se han expuesto.
Hairpin.heightEsta propiedad no es una subpropiedad, y está en la lista que
aparece en
(internals)Hairpin sección ‘Hairpin’ en Referencia de Funcionamiento Interno. En cuanto a su valor, admite
‘dimension, in staff space’ (dimensión, en espacios de
pentagrama) fijado a 0.6666 (que claramente es un
number no infinito).
Arpeggio.positionsEn la lista de la página que describe
(internals)Arpeggio sección ‘Arpeggio’ en Referencia de Funcionamiento Interno
aparece una propiedad positions que admite una ‘pareja de
números’. Su valor predeterminado es
ly:arpeggio::positions, que es un ‘callback’ que se
evalúa durante la fase de tipografiado para dar como resultado una
pareja de números para cualguier objeto Arpeggio dado.
Hairpin.colorNo hay un listado para color en
(internals)Hairpin sección ‘Hairpin’ en Referencia de Funcionamiento Interno.
Hairpin.circled-tipLa lista de Hairpin.circled-tip en la página de
(internals)Hairpin sección ‘Hairpin’ en Referencia de Funcionamiento Interno muestra que admite un valor boolean.
Los valores booleanos so no numéricos.
Stem.details.lengthsAunque está listado en
(internals)Stem sección ‘Stem’ en Referencia de Funcionamiento Interno y su valor por omisión es
una lista de numbers, es una ‘subpropiedad’. Por el
momento no se contemplan las ‘propiedades anidadas’.
Si elemento es un nombre de grob como Arpeggio o
Staff.OttavaBracket, el resultado es un \override o
sobreescritura de el tipo de grob especificado.
\offset propiedad incremento [contexto.]NombreDeGrob |
Observe que el guión precedente nunca se utiliza con la
forma ‘override’, de igual manera que nunca se usa con la propia
instrucción \override.
El ejemplo siguiente usa la forma ‘override’, de sobreescritura,
para alargar los arpegios predeterminados que aparecen en el
primer compás para que cubran todo el tamaño de los acordes. Los
arpegios se amplían en medio espacio de pentagrama hacia arriba y
hacia abajo. También se muestra la misma operación efectuada
sobre el primer acorde con una sobreescritura normal de la
propiedad the positions. Este método no es en absoluto
expresivo de la acción de ‘ampliar en medio espacio de
pentagrama’, porque los extremos se tienen que especificar
mediante coordenadas absolutas, no relativas. Además, se
necesitarían sobreescrituras individuales para los otros acordes,
ya que varían en tamaño y posición.
arpeggioMusic = { <c' e' g'>\arpeggio <a' c'' e''>\arpeggio <d' f' a' c''>\arpeggio <c' e' g' b' d'' f'' a''>\arpeggio } { \arpeggioMusic \bar "||" \offset positions #'(-0.5 . 0.5) Arpeggio \arpeggioMusic \bar "||" \once \override Arpeggio.positions = #'(-3.5 . -0.5) <c' e' g'>1\arpeggio \bar "||" }
En su uso como ‘override’, \offset se puede hacer
preceder por \once o por \temporary y revertirse
mediante \revert con la propiedad. (véase
(extending)Funciones de sustitución intermedias sección ‘Funciones de sustitución intermedias’ en Extender). Esto se sigue a
partir del hecho de que \offset en realidad crea un
\override para la propiedad.
music = { c'8\< d' e' f'\! } { \music \offset height 1 Hairpin \music \music \revert Hairpin.height \music \bar "||" \once \offset height 1 Hairpin \music \music \bar "||" \override Hairpin.height = 0.2 \music \temporary \offset height 2 Hairpin \music \music \revert Hairpin.height \music \bar "||" }
Así como \override, la forma ‘override’ de \offset
se puede usar con \undo y con \single.
longStem = \offset length 6 Stem { \longStem c'4 c''' c' c'' \bar "||" \undo \longStem c'4 c''' c' c'' \bar "||" \single \longStem c'4 c''' c' c'' \bar "||" }
Si elemento es una expresión musical como ( o
\arpeggio, el resultado es la misma expresión musical con
un trucaje aplicado.
[-]\offset [NombreDeGrob.]propiedad incrementos expresión-musical |
La sintaxis de \offset en forma de ‘tweak’ es análoga a
la propia instrucción \tweak, tanto en orden como en cuanto
a la presencia o ausencia del guión inicial.
El ejemplo siguiente usa la forma ‘tweak’ para ajustar la
posición vertical del objeto BreathingSign. Compárelo con
la instrucción \tweak normal que también aparece. La
sintaxis es equivalente; sin embargo, la salida de \tweak
es menos intuitiva, ya que BreathingSign.Y-offset se
calcula a partir de la tercera línea del pentagrama. No es
necesario saber cómo se calcula Y-offset, al usar
\offset.
{ c''4 \breathe c''4 \offset Y-offset 2 \breathe c''2 \tweak Y-offset 3 \breathe }
En el ejemplo anterior, los objetos trucados se crearon
directamente a partir de la entrada del usuario: la instrucción
\breathe era una instrucción explícita para devolver un
objeto BreathingSign. Dado que el objeto de la instrucción
no es ambiguo, no había necesidad de especificar el nombre del
objeto. Sin embargo, cuando un objeto se crea
indirectamente, es necesario incluir el nombre del grob.
Es lo mismo que para la instrucción \tweak.
En el ejemplo siguiente, el objeto Beam se baja en dos
espacios de pentagrama aplicando \offset a la propiedad
positions.
La primera aplicación de \offset exige que se incluya el
nombre del grob, porque nada en el código de entrada crea
explícitamente la barra. En la segunda aplicación, la barra se
crea manualmente con la expresión musical [; por tanto, el
nombre del grob no es necesario (también aparece en la ilustración
una abreviatura: un solo número se aplica a los dos miembros de
una pareja).
{ c''8 g'' e'' d'' \offset Beam.positions #'(-2 . -2) c''8 g'' e'' d'' c''8 g'' e'' d'' c''8-\offset positions #-2 [ g'' e'' d''] }
También es posible modificar segmentos de un objeto que se extiende sobre un salto o saltos de línea. En este caso, offsets admite una lista de valores del tipo de datos requerido por la propiedad.
La instrucción \offset usada de esta forma es similar a la
instrucción \alterBroken
(véase Modificación de objetos de extensión divididos). Sin
embargo, a diferencia de \alterBroken, los valores que se
le dan a \offset son relativos, no absolutos.
El ejemplo siguiente desplaza el objeto ‘dividido’
OttavaBracket a través de su propiedad
staff-padding. Dado que la propiedad toma un
number, se le proporciona a incrementos una lista de
números para aplicarlos a los dos segmentos creados por el salto
de línea. La parte de corchete de la primera línea queda, en
realidad, inalterada, ya que se añade 0 a su valor por
omisión de staff-padding. El segmento que está en la
segunda línea se eleva tres espacios de pentagrama a partir de su
altura por omisión. La altura predeterminada resulta ser
2, aunque no es necesario saberlo para conseguir la
posición deseada.
{ \offset staff-padding #'(0 3) Staff.OttavaBracket \ottava #1 c'''2 c''' \break c'''2 c''' }
El ejemplo siguiente copia el efecto de la instrucción
\shape mediante el incremento de la propiedad
control-points del objeto Slur. Aquí,
incrementos es una lista de parejas de números, una por cada
segmento de la ligadura. Este ejemplo produce un resultado
idéntico a la ilustración correspondiente que aparece en
Modificación de las formas.
{ c'4-\offset control-points #'( ((0 . 0) (0 . 0) (0 . 0) (0 . 1)) ((0.5 . 1.5) (1 . 0) (0 . 0) (0 . -1.5)) ) ( f'4 g' c'' \break d'4 c'' f' c') }
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Modifying alists
Ciertas propiedades configurables por parte del usuario se representan internamente como listas-A (listas asociativas), que almacenan duplas de claves y valores. La estructura de una lista-A es la siguiente:
'((clave1 . valor1) (clave2 . valor2) (clave3 . valor3) …) |
Si una lista-A es una propiedad de un grob o una variable de
\paper, sus claves se pueden modificar individualmente sin
que afecte a las otras claves.
Por ejemplo, para reducir el espacio entre pentagramas adyacentes
dentro de un grupo, use la propiedad staff-staff-spacing
del grob StaffGrouper. La propiedad es una lista-A con
cuatro claves: basic-distance (distancia básica),
minimum-distance (distancia mínima), padding
(relleno) y stretchability (ampliabilidad). Los ajustes
estándar para esta propiedad se relacionan en la sección
“Backend” de la Referencia de Funcionamiento Interno (véase
(internals)StaffGrouper sección ‘StaffGrouper’ en Referencia de Funcionamiento Interno):
'((basic-distance . 9) (minimum-distance . 7) (padding . 1) (stretchability . 5)) |
Una forma de acercar los pentagramas entre sí es reducir el valor
de la clave basic-distance (9) para que se
corresponda con el valor de minimum-distance (7).
Para modificar una única clave de forma individual, utilice una
declaración anidada:
% default space between staves \new PianoStaff << \new Staff { \clef treble c''1 } \new Staff { \clef bass c1 } >> % reduced space between staves \new PianoStaff \with { % this is the nested declaration \override StaffGrouper.staff-staff-spacing.basic-distance = #7 } << \new Staff { \clef treble c''1 } \new Staff { \clef bass c1 } >>
La utilización de una declaración anidada actualiza la clave
especificada (como basic-distance en el ejemplo anterior)
sin alterar ninguna de las otras claves que ya se habían
establecido para la misma propiedad.
Ahora, supongamos que deseamos que los pentagramas estén tan próximos como sea posible sin que se superpongan. La manera más sencilla de hacerlo es establecer las cuatro claves de la lista-A a cero. Sin embargo, no es necesario escribir cuatro declaraciones anidadas, una por cada clave. En lugar de eso, se puede redefinir completamente la propiedad con una sola declaración, como una lista-A:
\new PianoStaff \with { \override StaffGrouper.staff-staff-spacing = #'((basic-distance . 0) (minimum-distance . 0) (padding . 0) (stretchability . 0)) } << \new Staff { \clef treble c''1 } \new Staff { \clef bass c1 } >>
Observe que cualquier clave que no haya sido relacionada
explícitamente en la definición de la lista-A, será reiniciada a
sus valores predeterminados si no se han fijado. En el
caso de staff-staff-spacing, el valor de cualquier clave no
fijada se reiniciaría a cero (excepto stretchability, que
toma el valor de basic-distance si no se fija). Así, las
dos declaraciones siguientes son equivalentes:
\override StaffGrouper.staff-staff-spacing =
#'((basic-distance . 7))
\override StaffGrouper.staff-staff-spacing =
#'((basic-distance . 7)
(minimum-distance . 0)
(padding . 0)
(stretchability . 7))
|
Una consecuencia de esto (posiblemente no intencionada) es la
eliminación de cualquier valor estándar que se establezca en un
archivo de inicio y que se carga cada vez que se compila un
archivo de entrada. En el ejemplo anterior, los ajustes estándar
para padding y minimum-distance (definidos en
‘scm/define-grobs.scm’) se reinician a sus valores
predeterminados si no se han fijado (cero para las dos claves).
La definición de una propiedad o variable como una lista-A (de
cualquier tamaño) siempre reinicia todos los valores de clave no
establecidos a sus valores predeterminados si no se han fijado.
Ano ser que este sea el resultado deseado, es más seguro
actualizar los valores de clave individualmente con una
declaración anidada.
Nota: Las declaraciones anidadas no funcionan para las listas-A
de propiedades de contexto (como beamExceptions,
keyAlterations, timeSignatureSettings, etc.). Estas
propiedades sólo se pueden modificar redefiniéndolas completamente
como listas-A.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] |
Este documento ha sido generado por gub el el 13 julio 2020 utilizando texi2html 1.82.
Otros idiomas: English, català, deutsch, français, italiano, 日本語.
Acerca de la selección automática del idioma.