@end ignore
+@item
+It is now possible to move systems with reference to their current
+position using the @code{extra-offset} subproperty of
+@code{NonMusicalPaperColumn.line-break-system-details}. Both vertical
+and horizontal changes are possible. This feature is especially useful
+for making slight adjustments to the default vertical position of
+individual systems. See @ruser{Explicit staff and system positioning} for
+more information.
+
@item
It is now possible to add text to analysis brackets through the
@code{HorizontalBracketText} object.
can specify exact vertical positions on the page.
@code{NonMusicalPaperColumn.line-break-system-details} accepts
-an associative list of three different settings:
+an associative list of four different settings:
@itemize
@item @code{X-offset}
@item @code{Y-offset}
+@item @code{extra-offset}
@item @code{alignment-distances}
@end itemize
too, that the @code{Y-offset} property here determines the exact vertical
position on the page at which each new system will render.
+In contrast to the absolute positioning available through
+@code{Y-offset} and @code{X-offset}, relative positioning is possible
+with the @code{extra-offset} property of
+@code{line-break-system-details}. Placement is relative to the
+default layout or to the absolute positioning created by setting
+@code{X-offset} and @code{Y-offset}. The property @code{extra-offset}
+accepts a @code{pair} consisting of displacements along the X-axis and
+Y-axis.
+
+@lilypond[verbatim,quote,staffsize=16]
+\header { tagline = ##f }
+\paper { left-margin = 0\mm }
+\book {
+ \score {
+ <<
+ \new Staff <<
+ \new Voice {
+ s1*5 \break
+ \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
+ #'((extra-offset . (0 . 10)))
+ s1*5 \break
+ \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
+ #'((extra-offset . (0 . 10)))
+ s1*5 \break
+ }
+ \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
+ >>
+ \new Staff {
+ \repeat unfold 15 { d'4 d' d' d' }
+ }
+ >>
+ }
+}
+@end lilypond
+
Now that we have set the vertical startpoint of each system
explicitly, we can also set the vertical distances between staves
within each system manually. We do this using the @code{alignment-distances}
do not count as a staff.
@item The units of the numbers passed to @code{X-offset},
-@code{Y-offset} and @code{alignment-distances} are interpreted as multiples
-of the distance between adjacent staff lines. Positive values move staves
-and lyrics up, negative values move staves and lyrics down.
+@code{Y-offset}, @code{extra-offset} and @code{alignment-distances} are
+interpreted as multiples of the distance between adjacent staff lines.
+Positive values move staves and lyrics up, negative values move staves
+and lyrics down.
@item Because the @code{NonMusicalPaperColumn.line-break-system-details}
settings given here allow the positioning of staves and systems anywhere
--- /dev/null
+\version "2.19.60"
+
+\header {
+ texidoc = "By setting @code{extra-offset} within the
+@code{line-break-system-details} of @code{NonMusicalPaperColumn},
+systems may be moved in relation either to their default position on the
+printable area of the page or the absolute position specified by
+@code{X-offset} or @code{Y-offset} within
+@code{line-break-system-details}."
+
+}
+
+#(set-default-paper-size "a6" 'portrait)
+
+\paper {
+ indent = 0.0
+ oddHeaderMarkup = "header"
+ oddFooterMarkup = "footer"
+ system-separator-markup = \slashSeparator
+ ragged-right = ##t
+}
+
+\book {
+ \score {
+ {
+ \overrideProperty
+ Score.NonMusicalPaperColumn.line-break-system-details
+ #'((extra-offset . (8.0 . 0.0)))
+ c1 c1 \break
+
+ \overrideProperty
+ Score.NonMusicalPaperColumn.line-break-system-details
+ #'((extra-offset . (12.0 . 8.0)))
+ c1 c1 \break
+
+ \overrideProperty
+ Score.NonMusicalPaperColumn.line-break-system-details
+ #'((X-offset . 8.0)
+ (Y-offset . 36.0)
+ (extra-offset . (-8.0 . 30.0))
+ )
+ c1 c1
+ }
+ }
+}
system-separator-markup)
#f))
- (page-stencil (ly:make-stencil '()))
+ (page-stencil empty-stencil)
(last-system #f)
(last-y 0.0)
(add-system
(lambda (system)
(let* ((stencil (paper-system-stencil system))
- (y (ly:prob-property system 'Y-offset 0))
+ (extra-offset (ly:prob-property system 'extra-offset '(0 . 0)))
+ (x (+ (ly:prob-property system 'X-offset 0.0)
+ (car extra-offset)))
+ (y (+ (ly:prob-property system 'Y-offset 0.0)
+ (cdr extra-offset)))
(is-title (paper-system-title?
system)))
- (add-to-page stencil
- (ly:prob-property system 'X-offset 0.0)
- y)
+ (add-to-page stencil x y)
(if (and (ly:stencil? system-separator-stencil)
last-system
(not (paper-system-title? system))