The markup macro builds markup expressions in Scheme while
providing a LilyPond-like syntax. For example,
(markup #:column (#:line (#:bold #:italic "hello" #:raise 0.4 "world")
#:bigger #:line ("foo" "bar" "baz")))
is equivalent to:
\markup \column { \line { \bold \italic "hello" \raise #0.4 "world" }
\bigger \line { foo bar baz } }
This example demonstrates the main translation rules between regular LilyPond markup syntax and Scheme markup syntax.
LilyPond Scheme \markup markup1(markup markup1)\markup { markup1 markup2 ... }(markup markup1 markup2 ... )\command#:command\variablevariable\center-align { ... }#:center-align ( ... )string"string"#scheme-argscheme-arg
The whole Scheme language is accessible inside the
markup macro. For example, You may use function calls inside
markup in order to manipulate character strings. This is
useful when defining new markup commands (see
New markup command definition).
The markup-list argument of commands such as #:line,
#:center, and #:column cannot be a variable or
the result of a function call.
(markup #:line (function-that-returns-markups))
is invalid. One should use the make-line-markup,
make-center-markup, or make-column-markup functions
instead,
(markup (make-line-markup (function-that-returns-markups)))
This page is for LilyPond-2.10.33 (stable-branch).