Am Sa., 17. Okt. 2020 um 19:39 Uhr schrieb Jean Abou Samra <j...@abou-samra.fr>: > > Hi, > > Le 17/10/2020 à 19:27, Matthew Fong a écrit : > > > Hello Richard, > > > > I just discovered your explanation is in fact the case, and also > > concluded cond wouldn't work either. > > > > I might have to settle for an empty markup block for now. > > The point of interpret-markup is to turn a markup into a stencil, so I'd > use empty-stencil: > > \version "2.20.0" > > #(define-markup-command (print-if-defined layout props sym text) > (symbol? markup?) > (if (defined? sym) > (interpret-markup layout props > #{ \markup \with-color #'(0.8 0.2 0.2) #text #}) > empty-stencil)) > > symA = "Something" > > \markup { > \print-if-defined #'symA "Text" > \print-if-defined #'symB "More text" > } > > Best, > Jean > >
An empty stencil will still be spaced (unless removed by other markup-commands). Why not a void-function? print-if-defined = #(define-void-function (sym text) (symbol? markup?) (if (defined? sym) (add-text #{ \markup \with-color #'(0.8 0.2 0.2) #text #}))) symA = "Something" \print-if-defined #'symB "Text" \print-if-defined #'symA "Text" Cheers, Harm