Excellent, Thank you so much! This works wonderfully. *Benjamin Bloomfield*
On Thu, Sep 19, 2013 at 12:12 PM, David Nalesnik <[email protected]>wrote: > > > > On Thu, Sep 19, 2013 at 11:01 AM, David Nalesnik <[email protected] > > wrote: > >> Hi Benjamin, >> >> > [...] > > >> This is what I come up with: >> > > [...] > > OK, that was unnecessarily roundabout. Why bother with columns when I > have access to all grobs, and I can just compare LyricText grobs? > > Try this: > > (Again, should work on 2.16.1.) > > %%%%%%%%%%%%%%%%%%%% > > \version "2.17.25" > > #(define (my-callback grob) > (let* ((text (ly:grob-property-data grob 'text)) > (refp (ly:grob-system grob)) > ; This returns all grobs in a line. > (all-grobs (ly:grob-array->list > (ly:grob-object refp 'all-elements))) > ; We're only interested in LyricText grobs. > (just-syllables > (filter > (lambda (x) (grob::has-interface x > 'lyric-syllable-interface)) > all-grobs)) > ; We want the first LyricText grob in the system. We must > locate this > ; by position, since grobs don't seem to be listed in order in > the > ; 'all-elements grob array. > (first-syl > (fold > (lambda (elem prev) > (if (< (ly:grob-relative-coordinate elem refp X) > (ly:grob-relative-coordinate prev refp X)) > elem > prev)) > (car just-syllables) > just-syllables))) > > ; If our LyricText grob is the first on the line, override its > stencil. > (if (eq? grob first-syl) > (begin > (ly:grob-set-property! grob 'text > #{ \markup \combine #text \translate #'(1.6 . -0.5) > \draw-line #'(-4 . 0) #}) > (ly:grob-set-property! grob 'stencil (lyric-text::print > grob)))))) > > melody = \repeat unfold 16 g'4 > lyr = \lyricmode { > \repeat unfold 16 sol > } > \score { > \new Staff << > \new Voice = "voice" { > \melody > } > \new Lyrics \with { > \override LyricText #'after-line-breaking = #my-callback > } \lyricsto "voice" \lyr > >> > } > \paper { > indent = 0 > line-width = 5.5\cm > } > >
_______________________________________________ lilypond-user mailing list [email protected] https://lists.gnu.org/mailman/listinfo/lilypond-user
