;
markup_top:
- simple_markup_list {
+ markup_list {
$$ = scm_list_2 (ly_lily_module_constant ("line-markup"), $1);
}
| markup_head_1_list simple_markup
;
-simple_markup_list:
+markup_list:
markup_composed_list {
$$ = $1;
}
}
;
-markup_list:
- simple_markup_list
- | markup_score
- {
- $$ = scm_list_1 (scm_list_2 (ly_lily_module_constant ("score-lines-markup-list"), $1));
- }
- ;
-
-markup_score:
- SCORE {
- SCM nn = parser->lexer_->lookup_identifier ("pitchnames");
- parser->lexer_->push_note_state (nn);
- } '{' score_body '}' {
- $$ = $4;
- parser->lexer_->pop_state ();
- }
- ;
-
markup_composed_list:
markup_head_1_list markup_uncomposed_list {
$$ = MAKE_SYNTAX ("composed-markup-list",
| markup_braced_list_body markup {
$$ = scm_cons ($2, $1);
}
- | markup_braced_list_body simple_markup_list {
+ | markup_braced_list_body markup_list {
$$ = scm_reverse_x ($2, $1);
}
;
STRING {
$$ = make_simple_markup ($1);
}
+ | SCORE {
+ SCM nn = parser->lexer_->lookup_identifier ("pitchnames");
+ parser->lexer_->push_note_state (nn);
+ } '{' score_body '}' {
+ $$ = scm_list_2 (ly_lily_module_constant ("score-markup"), $4);
+ parser->lexer_->pop_state ();
+ }
| MARKUP_FUNCTION markup_command_basic_arguments {
$$ = scm_cons ($1, scm_reverse_x ($2, SCM_EOL));
}
{
$$ = $2;
}
- | markup_score
- {
- $$ = scm_list_2 (ly_lily_module_constant ("score-markup"), $1);
- }
;
markup:
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"
- (stack-stencils Y DOWN baseline-skip
- (score-lines-markup-list layout props score)))
+ (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))))
(define-markup-command (null layout props)
()