X-extent
Y-extent)))
+(define-markup-list-command (score-lines layout props score)
+ (ly:score?)
+ "
+This is the same as the @code{\\score} markup but delivers its
+systems as a list of lines. This is not usually called directly by
+the user. Instead, it is called when the parser encounters
+@code{\\score} in a context where only markup lists are allowed. When
+used as the argument of a toplevel @code{\\markuplist}, the result can
+be split across pages."
+ (let ((output (ly:score-embedded-format score layout)))
+
+ (if (ly:music-output? output)
+ (map
+ (lambda (paper-system)
+ ;; shift such that the refpoint of the bottom staff of
+ ;; the first system is the baseline of the score
+ (ly:stencil-translate-axis
+ (paper-system-stencil paper-system)
+ (- (car (paper-system-staff-extents paper-system)))
+ Y))
+ (vector->list (ly:paper-score-paper-systems output)))
+ (begin
+ (ly:warning (_"no systems found in \\score markup, does it have a \\layout block?"))
+ '()))))
+
(define-markup-command (score layout props score)
(ly:score?)
#:category music
}
}
@end lilypond"
- (let ((output (ly:score-embedded-format score layout)))
-
- (if (ly:music-output? output)
- (let ((paper-systems
- (vector->list
- (ly:paper-score-paper-systems output))))
- (if (pair? paper-systems)
- ;; shift such that the refpoint of the bottom staff of
- ;; the first system is the baseline of the score
- (ly:stencil-translate-axis
- (stack-stencils Y DOWN baseline-skip
- (map paper-system-stencil paper-systems))
- (- (car (paper-system-staff-extents (car paper-systems))))
- Y)
- empty-stencil))
- (begin
- (ly:warning (_"no systems found in \\score markup, does it have a \\layout block?"))
- empty-stencil))))
+ (stack-stencils Y DOWN baseline-skip
+ (score-lines-markup-list layout props score)))
(define-markup-command (null layout props)
()