lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: define-markup-command


From: Jean Abou Samra
Subject: Re: define-markup-command
Date: Sat, 08 Apr 2023 11:14:58 +0200
User-agent: Evolution 3.46.4 (3.46.4-1.fc37)

Le vendredi 07 avril 2023 à 13:11 -0400, Ken Ledeen a écrit :

Hi All,
Thanks to Jean Abou Samra I can now create \markup that goes to a place in a youtube video.

These are of the form:

fis4^\markup \with-url#"https://youtu.be...?t=SEC" {ref} where "SEC" is replaced with the number of seconds in from the start.

I would like to create a function to simplify things so instead of having the entire URL repeated everywhere, would have something that looks like

fis4^\mymk "215". 

So far, I remain entirely confused about creating a new markup command.  I won't bother describing my many failed attempts.  I am clearly missing some basic concepts. I have no problem creating scheme functions to do various manipulations, but extending the markup function has eluded me.

Any guidance would be most appreciated!  

Try

\version "2.24.1"

mymk =
#(define-scheme-function (sec) (index?)
   #{
     \markup \with-url
       #(format #f "https://youtu.be/blablabla?t=~a" sec)
       #(number->string sec)
   #})

{
  fis4^\mymk 215
}

Note that this is a regular syntax function returning a markup (defined with define-scheme-function) rather than a markup command, but you can also define a markup command if you wish:

\version "2.24.1"

#(define-markup-command (mymk layout props sec) (index?)
   (interpret-markup
    layout props
    #{
      \markup \with-url
        #(format #f "https://youtu.be/blablabla?t=~a" sec)
        #(number->string sec)
    #}))

{
  fis4^\markup \mymk #215
}

Note that you have to enter \markup mode to use markup commands.

Markup mode is quite different from the normal mode (for example, \markup b1 just writes “b1”, while in normal mode, also called “notes mode”, “b1” is a B whole note; this is also the reason why you have to put a # before 215 when calling the markup command). Syntax functions and markup command have different use cases, but in this particular instance it happens that both can be used without a lot of difference.

Best,

Jean

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]