Alternate \textSpanner engraver: Difference between revisions

Created page with "LilyPond's default text spanner engraver can only handle a single text spanner per voice at a time. The engraver in this snippet provides an alternate implementation to circumvent this limitation; it uses spanner IDs to specify start and end of overlapping text spanners. To use it, replace <code>Text_spanner_engraver</code> with <code>\alternateTextSpannerEngraver</code>. The example below demonstrates two possible ways to specify a spanner ID: either define a new com..."
 
mNo edit summary
 
(One intermediate revision by the same user not shown)
Line 171: Line 171:
      spanners)
      spanners)
             (set! spanners (cons (cons new-idx new) spanners))
             (set! spanners (cons (cons new-idx new) spanners))
             (set! spanners
             (set! spanners (sort spanners car<))))
                  (sort spanners (lambda (x y)
  (< (car x) (car y)))))))
         start-events)
         start-events)


Line 236: Line 234:
   \context {
   \context {
     \Voice
     \Voice
     \remove #"Text_spanner_engraver"
     \remove Text_spanner_engraver
     \consists \alternateTextSpannerEngraver
     \consists \alternateTextSpannerEngraver
   }
   }