'avoid-slur proposals:
1. remove 'avoid-slur from Slur properties
Why does Slur have an 'avoid-slur property?
Can anyone give an example where the command
\override Slur #'avoid-slur = #<something>
has an effect?
2. add a choice: 'ignore
\override Fingering #'avoid-slur = ##f triggers the
message: "warning: Ignoring grob for slur: Fingering.
avoid-slur not set?"
Staff.Accidental also triggers the warning (and I don't
know how many others). Perhaps the warning could be
removed if the user demonstrates intent like this:
\override Fingering #'avoid-slur = #'ignore
By the way, is there a way to suppress this warning? I'm
working on a macro that could potentially trigger this
warning dozens of times in a single compile. Something
akin to \override NoteColumn #'ignore-collision = ##t
but for Slur instead?
3. rewrite the docstring.
I can hear Graham already. Well, fine, I'll do it
myself.
If you're curious, here are 2 paragraphs of the type
of confusion that awaits a user reading the current
docstring (I know from experience):
How does a clef move "around" or "outside" a slur? For
a clef to be "inside" a slur is intuitive - but it's
not the clef that moves (as in the case of scripts),
the *slur* does. The docs say:
"'around only moves the
script if there is a
collision; 'outside always moves the script."
Is a clef a script? With the command:
\override Staff.Clef #'avoid-slur = #'around
there is a collision, but no script is moved. And
\override Staff.Clef #'avoid-slur = #'outside
doesn't cause anything to move either, which renders
the docstring confusing IMO. But with this option:
\override Staff.Clef #'avoid-slur = #'ignore
I think the situation would be clearer.
So here's my new docstring. Notice that I'm so adamant
about the 'ignore choice that I've incorporated it
already. Perhaps it's a little too long, but I prefer
it this way. The super-concise version that's there
nowhas confused me for long enough.
__________________________________
Method of handling slur collisions.
Choices are 'inside, 'outside, 'around,and 'ignore.
'inside adjusts the slur if needed to keep the grob inside
the slur. 'outside moves the grob vertically to the outside
of the slur. 'around moves the grob vertically to the
outside of the slur only if there is a collision. 'ignore
does not move either. In grobs whose notational significance
depends on vertical position (such as accidentals, clefs,
etc.), 'outside and 'around behave like 'ignore.
__________________________________
4. implement 'avoid-ties and 'avoid-phrasing-slurs?
just an idea.
5. answer 2 more of my questions
Why is it that\override Script #'avoid-slur = ##f
looks like 'inside for staccato dots, but looks like
'around for accents? And why do neither of them actually
ignore the slurs, as the current docstring suggests they
might?
And finally, why trigger a warning for Fingering and
Staff.Accidental (and, as previously stated, I don't know
how many others) but not for Staff.TimeSignature and
Staff.Clef?
Thanks.
- Mark
p.s. Are my posts too long generally?
\version "2.13.0"
\pointAndClickOff
\layout {
\context {
\Staff
\override InstrumentName #'self-alignment-X = #1
\override InstrumentName #'padding = #1.5
}
}
\paper {
indent = #40
}
\markup "\override <grob> #'avoid-slur = #"
\relative g'' {
\set Staff.instrumentName = #"Script"
\override TextScript #'staff-padding = #4
\override Script #'avoid-slur = #'around
g^"'around"-.( g-. g-. g-.)
\override Script #'avoid-slur = #'inside
g^"'inside"-.( g-. g-. g-.)
\override Script #'avoid-slur = #'outside
g^"'outside"-.( g-. g-. g-.)
\override Script #'avoid-slur = ##f
g^"#f"-.( g-. g-. g-.)
}
\relative g'' {
\set Staff.instrumentName = #"Script"
\override TextScript #'staff-padding = #4
\override Script #'avoid-slur = #'around
g^"'around"->( g-> g-> g->)
\override Script #'avoid-slur = #'inside
g^"'inside"->( g-> g-> g->)
\override Script #'avoid-slur = #'outside
g^"'outside"->( g-> g-> g->)
\override Script #'avoid-slur = ##f
g^"#f"->( g-> g-> g->)
}
\relative g'' {
\set Staff.instrumentName = #"Fingering"
\override TextScript #'staff-padding = #5
\override Fingering #'avoid-slur = #'around
g^3^"'around"( g g g^3)
\override Fingering #'avoid-slur = #'inside
g^3^"'inside"( g g g^3)
\override Fingering #'avoid-slur = #'outside
g^3^"'outside"( g g g^3)
\override Fingering #'avoid-slur = ##f
g^3^\markup {"#f" \with-color #red \bold *}(
\override TextScript #'staff-padding = #0
g g g^3)_\markup \halign #0 \fontsize #-2
\with-color #red \column
{ \concat
{\bold * "warning: Ignoring grob"}
" for slur: Fingering."
" avoid-slur not set?"}
}
\relative b' {
\set Staff.instrumentName = #"Staff.Accidental"
\override TextScript #'staff-padding = #4
\override Staff.Accidental #'avoid-slur = #'around
b^3^"'around"( fis' g g)
\override Staff.Accidental #'avoid-slur = #'inside
b,^3^"'inside"( fis' g g)
\override Staff.Accidental #'avoid-slur = #'outside
b,^3^"'outside"( fis' g g)
\override Staff.Accidental #'avoid-slur = ##f
b,^3^\markup {"#f" \with-color #red \bold *}(
\override TextScript #'staff-padding = #0
fis' g g)_\markup \halign #0 \fontsize #-2
\with-color #red \column
{ \concat
{\bold * "warning: Ignoring grob"}
" for slur: Accidental."
" avoid-slur not set?"}
}
\relative g'' {
\set Staff.instrumentName = #"Slur"
\override TextScript #'staff-padding = #4
\override Slur #'avoid-slur = #'around
g^"'around"-.( g-. g-. g-.)
\override Slur #'avoid-slur = #'inside
g^"'inside"-.( g-. g-. g-.)
\override Slur #'avoid-slur = #'outside
g^"'outside"-.( g-. g-. g-.)
\override Slur #'avoid-slur = ##f
g^"#f"-.( g-. g-. g-.)
}
{
\set Staff.instrumentName = #"Staff.Clef"
\override TextScript #'staff-padding = #2
\override Staff.Clef #'avoid-slur = #'around
\clef bass d^"'around"( \clef treble b')
\override Staff.Clef #'avoid-slur = #'inside
\clef bass d^"'inside"( \clef treble b')
\override Staff.Clef #'avoid-slur = #'outside
\clef bass d^"'outside"( \clef treble b')
\override Staff.Clef #'avoid-slur = ##f
\clef bass d^"#f"( \clef treble b')
}
\relative b' {
\set Staff.instrumentName = #"Staff.TimeSignature"
\override Staff.TimeSignature #'style = #'numbered
\override TextScript #'staff-padding = #2
b2. f4(^"'around" |
\override Staff.TimeSignature #'avoid-slur = #'around
\time 3/4 b2) f4(^"'inside" |
\override Staff.TimeSignature #'avoid-slur = #'inside
\time 4/4 b2.) f4(^"'outside" |
\override Staff.TimeSignature #'avoid-slur = #'outside
\time 3/4 b2) f4(^"#f" |
\override Staff.TimeSignature #'avoid-slur = ##f
\time 4/4 b1) |
}
_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel