[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
text block as spanner
From: |
Leo Correia de Verdier |
Subject: |
text block as spanner |
Date: |
Thu, 31 Jan 2019 10:27:22 +0100 |
Dear List!
I’m still learning lilypond and working on a piece with long text instructions
that appear over a note or group of notes. So far I have managed to achieve
this by hacking off the stencils from text spanners and replacing them with the
line wrapped markup, but I feel there should be a neater solution out there
that I just haven’t thought or learned about. This hack has also reached it’s
limits because it has created the need for multiple simultaneous text spanners
(not in the example). While I could go further down the hack road by placing
additional spanners in separate voices with spacer rests or starting to destroy
trill spanners too, that would just increase the mess. Could you please point
me towards a tidier path? :)
Thanks a lot!
/Leo
\version "2.19.80"
longTextInstr =
#(define-music-function (alongtext)
(string?)
#{
\once \override Staff.TextSpanner.stencil =
#(lambda (grob)
(let* ((grob-X (interval-length
(ly:stencil-extent (ly:line-spanner::print grob) X)))
(layout (ly:grob-layout grob))
(props (ly:grob-alist-chain grob
(ly:output-def-lookup layout
'text-font-defaults))))
(ly:text-interface::interpret-markup layout props
#{ \markup {
\override #(cons 'line-width grob-X)
\wordwrap-string #alongtext }
#})
))
#}
)
\relative {
c'1 \longTextInstr "this is a long text instruction to be printed
line-wrapped over a group of notes"
d \startTextSpan
e f
e \stopTextSpan
d
}
- text block as spanner,
Leo Correia de Verdier <=