luis jure <[email protected]> writes:

> in my score i have a series of markups all with the same format, for
> example something like:
>
> \markup { \hspace #-1.6 \lower #3 \sans "1" }
> \markup { \hspace #-1.6 \lower #3 \sans "2" }
> \markup { \hspace #-1.6 \lower #3 \sans "3" }
> etc.

At top level?

> so i decided to create a function to save typing and to be consistent.
> i wrote the following expecting that it would work, but it didn't:
>
>
> \version "2.17.18"
>
> tiempo = #(define-music-function (parser location secs) (string?)
>        #{ \markup { \hspace #-1.6 \lower #3 \sans #secs } #})
>
> { c''4\tiempo "1" }

A music-function is supposed to return music.  You are returning a
markup instead.  Try using a scheme-function instead (quite likely that
it will work with 2.17.18).

Or use define-markup-command instead.

> reading the documentation i found something that i could adapt, and i came
> up with this:
>
> \version "2.17.18"
>
> tiempo = #(define-music-function (parser location secs) (string?)
>        #{ <>_\markup { \hspace #-1.6 \lower #3 \sans #secs } #})
>
> { \tiempo "1" c''4 }

> now, that *does* work, but i don't understand why it does

Because an empty chord with a markup subscript is music.

-- 
David Kastrup


_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to