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 _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user