Trevor Bača <address@hidden> writes:
> On Fri, Feb 22, 2019 at 2:58 AM Andrew Bernard <address@hidden>
> wrote:
>
>> Solved. It's right-broken-padding set to false that does the trick.
>>
>> \override TextSpanner.bound-details.right-broken.padding = ##f
>> \override TextSpanner.bound-details.right.padding = #11
>>
>
>
> As a note for posterity (whenever the time comes to finally equip text
> spanners with their remaining missing features), it would be fantastic to
> allow text spanners to start (and stop) nonmusical items, like bar lines.
>
> Then magic numbers (like 11, in the example here) can be replaced by
> something semantic that says "stop text span on bar line", which seems to
> be what Andrew is actually engraving in this excerpt.
So? There is the to-barline property.
Hi David,
This is extremely useful. Thank you so much for sending over the example; I had no idea to-barline was implemented on TextSpanner.
A cleaned up the example for future archive-searchers:
%%% TEXT SPANNER TO BARLINE (MID-SYSTEM) %%%
\version "2.19.82"
left-bracket-path = #'(
(moveto 0 -1)
(lineto 0 0)
(lineto 2 0)
)
right-bracket-path = #'(
(lineto 2 0)
(lineto 2 -1)
)
repeat-spanner-start-markup = \markup {
\path #0.25 #left-bracket-path
\general-align #Y #CENTER
\sans \upright " x3"
}
repeat-spanner-stop-markup = \markup {
\general-align #X #RIGHT
\line {
\general-align #Y #CENTER
\sans \upright " x3"
\path #0.25 #right-bracket-path
}
}
\new Staff
{
c'1
- \tweak bound-details.left.text \repeat-spanner-start-markup
- \tweak bound-details.left-broken.text ##f
- \tweak bound-details.right.padding 0
- \tweak bound-details.right.text \repeat-spanner-stop-markup
- \tweak bound-details.right-broken.text ##f
- \tweak dash-period 1
- \tweak staff-padding 4
- \tweak to-barline ##t
\startTextSpan
c'1
\break
c'1
c'1
\stopTextSpan
}
\paper {
indent = 0
system-system-spacing = #'((minimum-distance . 20))
}
%%% END %%%
IMPORTANT NOTE: the likely-to-be-overlooked key here is "\general-align #X #RIGHT" included in the definition of the markup used *at the right end* of the spanner. (In this example, repeat-spanner-stop-markup.)
Equally astonishingly, the example can be made to work at line breaks:
%%% TEXT SPANNER TO BARLINE (END-OF-SYSTEM) %%%
\version "2.19.82"
left-bracket-path = #'(
(moveto 0 -1)
(lineto 0 0)
(lineto 2 0)
)
right-bracket-path = #'(
(lineto 2 0)
(lineto 2 -1)
)
repeat-spanner-start-markup = \markup {
\path #0.25 #left-bracket-path
\general-align #Y #CENTER
\sans \upright " x3"
}
repeat-spanner-stop-markup = \markup {
\general-align #X #RIGHT
\line {
\general-align #Y #CENTER
\sans \upright " x3"
\path #0.25 #right-bracket-path
}
}
\new Staff
{
c'1
- \tweak bound-details.left.text \repeat-spanner-start-markup
- \tweak bound-details.left-broken.text ##f
- \tweak bound-details.right.padding 0
- \tweak bound-details.right.text \repeat-spanner-stop-markup
%%%- \tweak bound-details.right-broken.text ##f
- \tweak dash-period 1
- \tweak staff-padding 4
- \tweak to-barline ##t
\startTextSpan
c'1
\break
c'1
\stopTextSpan
c'1
}
\paper {
indent = 0
system-system-spacing = #'((minimum-distance . 20))
}
%%% END %%%
These examples are hugely important if you are engraving extensively with text spanners.
I had assumed that these were gaps in Lily's functionality; good to see I was wrong.
Trevor.