[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

5.3 Modificar las propiedades

@translationof Modifying properties


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

5.3.1 Panorámica de la modificación de las propiedades

@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.

Véase también

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.

Advertencias y problemas conocidos

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] [ ? ]

5.3.2 La instrucción \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

[image of music]

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
}

[image of music]

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

[image of music]

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
}

[image of music]

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

[image of music]

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.

Véase también

Referencia de funcionamiento interno: (internals)Tunable context properties sección ‘Tunable context properties’ en Referencia de Funcionamiento Interno.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

5.3.3 La instrucción \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''

[image of music]

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
  }
>>

[image of music]

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
}

[image of music]

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
  }
>>

[image of music]

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
  }
>>

[image of music]

Véase también

Referencia de funcionamiento interno: (internals)Backend sección ‘Backend’ en Referencia de Funcionamiento Interno


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

5.3.4 La instrucción \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

[image of music]

\tweak se puede usar para modificar ligaduras de expresión:

 
\relative { c'-\tweak thickness #5 ( d e f) }

[image of music]

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

[image of music]

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

[image of music]

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''

[image of music]

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.

Véase también

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.

Advertencias y problemas conocidos

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] [ ? ]

5.3.5 \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] [ ? ]

5.3.6 La instrucción \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.

Propiedades que admiten el desplazamiento

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:

Los ejemplos siguientes tratan diversas propiedades de grob frente a los criterios que se han expuesto.

\offset como sobreescritura

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 "||"
}

[image of music]

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 "||"
}

[image of music]

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 "||"
}

[image of music]

\offset como trucaje

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
}

[image of music]

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'']
}

[image of music]

\offset con objetos extensos divididos

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'''
}

[image of music]

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')
}

[image of music]


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

5.3.7 Modificación de las listas-A

@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   }
>>

[image of music]

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   }
>>

[image of music]

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.