Many thanks David!

(In the course of trying to convert the \note syntax, I discovered the
existence of \note-by-number which solved 90% of my problem.  Sorry for
the confusing reference to \note.)

On Sun, 2023-09-17 at 00:38 +0200, David Kastrup wrote:
> Graham King <lilyp...@tremagi.org.uk> writes:
> 
> > I'm trying to convert a naive Scheme function which has been broken
> > by
> > the new syntax for \note.  Some arithmetic gives me the index (in
> > this
> > MNWE, 96) to a list  of pairs, foo, from which I want to extract
> > some
> > markup.
> > 
> > The 300-LOC problem seems to boil down to this:
> > 
> > %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > \version "2.25.7"
> > 
> > #(define foo '((96 . #{ \markup { \note-by-number #1 #0 #UP }#})))
> > 
> > { c'1^\markup {#(cdr (assoc 96 foo))} }
> > %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > 
> > Please could a kind Scheme expert point out the stupid and obvious
> > mistake that has eluded me for several evenings?
> 
> Uh, there isn't even \note in there?
> 
> The problem in the above is a quoting problem: you mustn't quote
> #{...#}, and you can avoid quoting it using quasiquote and unquote:
> 
> \version "2.25.7"
> 
> #(define foo `((96 . ,#{ \markup { \note-by-number #1 #0 #UP }#})))
> 
> { c'1^\markup {#(cdr (assoc 96 foo))} }
> 


Reply via email to