avoid collisions.
@lilypond[fragment,ragged-right,relative=1]
-{
\override TextScript #'outside-staff-priority = #1
c''
\once \override TextScript #'self-alignment-X = #CENTER
b^"this goes above the previous markup"
a8_"this goes below the dynamic"
a\f
+@end lilypond
+
+@item Staves are spaced vertically using a skyline algorithm. This helps to avoid
+uneven vertical spacing.
+
+@lilypond[ragged-right]
+\book {
+ \score {
+ {
+ a,,1 | a'4 b' c'' d'' \break
+ \repeat unfold 2 {a' b' c'' d''} | b''''1
+ }
+ }
}
+@end lilypond
@end itemize
--- /dev/null
+\header {
+ texidoc = "We use a skyline algorithm to determine the distance to the next
+system instead of relying only on bounding boxes. This keeps gaps between
+systems more uniform."
+}
+
+\paper {ragged-right = ##t}
+
+\version "2.11.0"
+\book {
+ \score {
+ {
+ a,,1 | a'4 b' c'' d'' \break
+ \repeat unfold 2 {a' b' c'' d''} | b''''1
+ }
+ }
+}