Hello Jean and Thomas, Thank you -- both solutions are insightful and useful in future solutions.
I did not know about empty stencils, and I read about a void-function earlier, but was not entirely sure how to utilize it. Many thanks, mattfong On Sat, Oct 17, 2020 at 10:49 AM Thomas Morley <thomasmorle...@gmail.com> wrote: > 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 >