Ope- I found where I got it:
https://lists.gnu.org/archive/html/lilypond-user/2020-08/msg00171.html

On Sat, Dec 23, 2023 at 1:09 PM Jon Arnold <jonarnoldsem...@gmail.com>
wrote:

> I'm not sure where I found it, but the file that I have is slightly
> different. It's worked well for me.
>
> Here's the content:
>
>> \version "2.20.0"
>>
>> #(define (conditional-kill-lyric-extender-callback . args)
>>   (lambda (grob)
>>    (let* ((orig (ly:grob-original grob))
>>  (siblings (ly:spanner-broken-into orig))
>>           (minimum-length
>>            (if (null? args)
>>             (ly:grob-property grob 'minimum-length 0)
>>             (car args)))
>>           (X-extent (ly:stencil-extent (ly:grob-property grob 'stencil
>> empty-stencil) X))
>>           (natural-length (- (cdr X-extent) (car X-extent))))
>>     (if (and (> minimum-length natural-length)
>> (<= (length siblings) 1)) ;; never kill a broken extender
>>      (ly:grob-suicide! grob)))))
>>
>> \layout {
>>   \context {
>>     \Lyrics
>>     \override LyricExtender.minimum-length = #1
>>     \override LyricExtender.after-line-breaking =
>> #(conditional-kill-lyric-extender-callback)
>>   }
>> }
>>
>> autoextenders =
>> #(define-music-function (lyrics) (ly:music?)
>>    (let* ((has-hyphen?
>>            (lambda (event)
>>              (let* ((art (ly:music-property event 'articulations))
>>                     (is-hyphen? (lambda (ev) (eq? (ly:music-property ev
>> 'name) 'HyphenEvent))))
>>                (find is-hyphen? art))))
>>           (has-extender?
>>            (lambda (event)
>>              (let* ((art (ly:music-property event 'articulations))
>>                     (is-hyphen? (lambda (ev) (eq? (ly:music-property ev
>> 'name) 'ExtenderEvent))))
>>                (find is-hyphen? art))))
>>           (add-extender!
>>            (lambda (event)
>>              (ly:music-set-property! event 'articulations
>>                (append (ly:music-property event 'articulations) (list
>> (make-music 'ExtenderEvent))))
>>              event)))
>>      (music-map
>>       (lambda (event)
>>         (if (and (eq? (ly:music-property event 'name) 'LyricEvent)
>>                  ; do not add extenders below hyphens
>>                  (not (has-hyphen? event))
>>                  ; do not duplicate extenders
>>                  (not (has-extender? event))
>>                  ; do not add additional extenders after _ (internally
>> equivalent to " ")
>>                  ; to avoid killed extenders
>>                  (not (equal? (ly:music-property event 'text) " "))
>>                  ; do not add extenders after "" to allow ending extenders
>>                  ; within _ _ _ _ skip sequences with _ _ "" _ _
>>                  (not (equal? (ly:music-property event 'text) ""))
>>                  ; ditto, with _ _ \markup{|null} _ _
>>                  (not (equal? (ly:music-property event 'text) (markup
>> #:null)))
>>                  )
>>             (add-extender! event))
>>         event)
>>       lyrics)))
>>
>> #(set! toplevel-music-functions
>>        (cons (lambda (music) (autoextenders music))
>>          toplevel-music-functions))
>>
>
> On Sat, Dec 23, 2023 at 10:39 AM Werner LEMBERG <w...@gnu.org> wrote:
>
>>
>> > Often, multiple voices in a score have the same lyrics, or the
>> > lyrics have repeating components (such as lines from a poem).  Is
>> > there a way to automatically add extender lines to melismata in the
>> > lyrics?
>>
>> Examples, please, both a scan from a real-world example, and ideally
>> some LilyPond code that demonstrates how you want to do it.
>>
>> Have you already checked our issues database?  Maybe the problem is
>> already filed.
>>
>>   https://gitlab.com/lilypond/lilypond/-/issues
>>
>>
>>      Werner
>>
>>

Reply via email to