Hi Harm & hi Nathan, Incredible. I'm shocked that this do-able.
Harm, the solution of overriding the after-line-breaking property on the Instrument grob with a lambda especially blows my mind. Nathan, thank you for expanding my understanding of context construction with a single example. Integrated into my score and it works perfectly. Very much appreciated. Trevor. On Tue, Mar 31, 2015 at 6:54 PM, Thomas Morley <thomasmorle...@gmail.com> wrote: > 2015-03-31 22:23 GMT+02:00 Nathan Ho <when.possi...@gmail.com>: > > On Tue, Mar 31, 2015 at 12:46 PM, Trevor Bača <trevorb...@gmail.com> > wrote: > >> > >> Hi, > >> > >> Let's say that I have a stylesheet that sets instrumentName values and > >> shortInstrumentName values for a bunch of contexts in the normal way: > >> > >> \context { > >> \Staff > >> ... > >> instrumentName = \markup { Flute } > >> shortInstrumentName = \markup { Fl. } > >> } > >> \context { > >> \Staff > >> ... > >> instrumentName = \markup { Oboe } > >> shortInstrumentName = \markup { Ob. } > >> } > >> ... > >> > >> QUESTION: is there a way to have the shortInstrumentName values appear > at > >> the start of the score (meaning that the instrumentName values will > never > >> appear)? > >> > >> The question looks pathological. (Why would you set a value for > >> instrumentName if you don't want instrumentName to appear in the > score?) But > >> the motivation is as follows. I have a complex score that I've broken > into > >> multiple chunks (meaning separate LilyPond files with separate score > >> blocks). All chunks \include the same stylesheet. But I want > instrumentName > >> to appear at the start of only chunk 1 (because chunk 1 is the start of > the > >> actual sore). For chunks 2, 3, ... I'd like shortInstrumentName to > appear at > >> the start of each "score" (because each non-first "score" is actually > >> modeling subsequent parts of the one actual score). > >> > >> I can't imagine that there would be a setting for this. But is there > some > >> sort of Scheme wizardry that can be put at the beginning of each of the > >> non-first score chunks to say "set instrumentName to the value of > >> shortInstrumentName"? > > > > > > This is pretty nasty but it does what you're trying to accomplish. > > > > shortInstrAsInstr = #(lambda (context) > > > > (ly:context-set-property! context > > > > 'instrumentName (ly:context-property context > > 'shortInstrumentName)) '()) > > > > > > \new Staff \with { > > > > instrumentName = "Viola" > > > > shortInstrumentName = "Vla." > > > > \consists \shortInstrAsInstr > > > > } { > > > > c1 c1 \break c1 c1 > > > > } > > > > > > Regards, > > > > Nathan > > > Less nasty: > > \version "2.19.17" > > \layout { > \context { > \Staff > \override InstrumentName.after-line-breaking = > #(lambda (grob) > (ly:grob-set-property! grob 'long-text > (ly:grob-property grob 'text))) > } > } > > \new Staff > \with { > instrumentName = "Flute" > shortInstrumentName = "Fl." > } > { c''1 } > \new Staff > \with { > instrumentName = "Oboe" > shortInstrumentName = "Ob." > } > { d''1 } > > > HTH, > Harm > -- Trevor Bača trevorb...@gmail.com
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user