On Wed, Jun 10, 2015 at 7:17 AM, Víctor <piratabonifa...@gmail.com> wrote:

> Hi all:
>
> solfa =
> #(define-music-function
>     (parser location framed number note)
>     (string? string? string?)
>   #{
>     ^\markup{
>       \box
>       \pad-to-box #'(0 . 0) #'(0 . 2.2){ #framed }
>       #number :
>       \italic #note
>     }
>   #})
>
> \relative c' { c4^\solfa "C" "I" "do" }
>
> I need this function to stop drawing the box when first argument is "" or
> stop printing the ":" when second or third argument are "". I'm very new to
> Scheme and any help is very much apreciated.
>
> Regards,
> Víctor.
>

Hi Victor,

Here's one way to do it:

solfa =
#(define-music-function
    (parser location framed number note)
    (string? string? string?)
  (make-music
    'TextScriptEvent
    'direction 1
    'text
    (markup
       (if (not (equal? framed ""))
          (markup #:box #:pad-to-box '(0 . 0) '(0 . 2.2) framed)
          "")
        #:simple number
        (if (not (or (equal? number "") (equal? note "")))
          (markup #:simple ":")
          "")
        #:italic note)))

\relative c' {
  c1^\solfa "C" "I" "do"
  c1^\solfa "" "I" "do"
  c1^\solfa "C" "" "do"
  c1^\solfa "C" "I" ""
}

Regards,
Nathan
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to