But this is all modulo a little change in the C++ source of the Stanza_number_engraver. That engraver would be a good candidate for getting moved to Scheme so it can be customized ...

This would lead to:

\version "2.24"

#(define (Loquacious_stanza_number_engraver context)
   ;; translated from Stanza_number_engraver
   ;; but without the mechanism that creates only newly set stanza numbers
   (let
    ((stanza-grob #f))
    (make-engraver
     ((process-music engraver)
      (let ((stanza (ly:context-property context 'stanza)))
        (when (markup? stanza)
          (set! stanza-grob
                (ly:engraver-make-grob engraver 'StanzaNumber '()))
          (ly:grob-set-property! stanza-grob 'text stanza))))
     (acknowledgers
      ((lyric-syllable-interface engraver lyric-grob source-engraver)
       (when stanza-grob
         (ly:pointer-group-interface::add-grob stanza-grob
 'side-support-elements
                                               lyric-grob))))
     ((stop-translation-timestep engraver)
      (set! stanza-grob #f)))))

\layout {
  \context {
    \Lyrics
    \remove Stanza_number_engraver
    \consists #Loquacious_stanza_number_engraver
    \override StanzaNumber.after-line-breaking = #ly:chord-name::after-line-breaking
    \override StanzaNumber.begin-of-line-visible = ##t
  }
}

<<
  \new Staff {
    \repeat unfold 30 c'1
  }
  \new Lyrics \lyricmode {
    \set stanza = "1."
    \repeat unfold 15 { oh my }
  }
  \new Lyrics \lyricmode {
    \set stanza = "2."
    \repeat unfold 15 { I won't }
  }
>>

Can anybody explain to me why collecting LyricText grobs in the StanzaNumber's side-support-elements is necessary?

Lukas


Reply via email to