[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Contexts affected by \override and \overrideProperty
From: |
David Kastrup |
Subject: |
Re: Contexts affected by \override and \overrideProperty |
Date: |
Mon, 18 Feb 2019 17:30:36 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) |
Urs Liska <address@hidden> writes:
> Can someone explain to me why \overrideProperty Staff.BarLine.color
> #red colors the barlines in *all* staves while \override
> Staff.BarLine.color = #red only affects the current Staff context?
>
> I have just re-read
> http://lilypond.org/doc/v2.19/Documentation/notation/set-versus-override
> and am scratching my head. I do claim to have some experience by now
> but this page isn't actually really helpful:
>
> "The commands ... |\overrideProperty| change grob properties by
> bypassing all context properties completely and, instead, catch
> grobs as they are being created, setting properties on them ... for
> a specific override."
>
> This doesn't give a clue when \overrideProperty should (or must) be
> used instead of \override or what the difference in behaviour actually
> is.
>
> \overrideProperty is also present on
> http://lilypond.org/doc/v2.19/Documentation/notation/available-music-functions#index-overrideProperty-1
>
> |overrideProperty| [music] - grob-property-path (list of indexes or
> symbols) value (any type)
> Set the grob property specified by grob-property-path to value.
> grob-property-path is a symbol list of the form
> |Context.GrobName.property| or |GrobName.property|, possibly
> with subproperties given as well.
>
> As opposed to |\override| which overrides the context-dependent
> defaults with which a grob is created, this command uses
> |Output_property_engraver| at the grob acknowledge stage. This
> may be necessary for overriding values set after the initial
> grob creation.
>
> This gives an indication for why it may in some cases be necessary to
> use \overrideProperty but it doesn't explain why it seems to affect
> objects in all contexts instead of just the one where it is used.
Because the respective engraver is only active at Score level and
overrides the properties in _all_ contexts of the given type.
--
David Kastrup