Thanks, but unfortunately using a backtick and commas seems to produce the same 
output. If it’s helpful, here’s the same example with a backtick and commas:

```
\version "2.22.0"

\paper {
 scoreTitleMarkup = \markup {
   \column {
     \fromproperty #'header:piece
     \justify-field #'header:instruction
   }
 }
}

#(define instructions `(
 ; Using a LilyPond code block does not work.
 (1 . ,#{
   \markup {
     "Does not work"
     \score {
       \new Staff { c'1 }
       \layout { ragged-right = ##t indent = 0 }
     }
   }
 #})
 ; Using the Scheme form of a markup expression does not work.
 (2 . ,(markup #:line (#:simple "Does not work")))
 ; Using a string works.
 (3 . "Works")))

\book {
 #(do ((study-number 1 (1+ study-number)))
     ((> study-number 3))
   (let ((header (make-module)))
     (module-define! header 'piece (number->string study-number))
     (let* (
         (instruction (assoc study-number instructions))
         (score (scorify-music #{ { c'1 } #})))
       (begin
         (if instruction (module-define! header 'instruction (cdr instruction)))
         (ly:score-set-header! score header)
         (add-score score)))))
}
```

> On Dec 2, 2021, at 11:02 AM, David Kastrup <d...@gnu.org> wrote:
> 
> Nate Whetsell <nathan.whets...@gmail.com <mailto:nathan.whets...@gmail.com>> 
> writes:
> 
>> I’m trying to programmatically add items to score headers from an alist. 
>> This works when an item consists of just a string. I can’t seem to get this 
>> to work when an item is a markup, no matter how the markup is entered. Is 
>> there some way to store markups in an alist, and then use those markups in a 
>> header?
>> 
>> Below is an example illustrating the issue I’m having. Any help would be 
>> greatly appreciated!
>> 
>> Thanks,
>> Nate
>> 
>> ```
>> \version "2.22.0"
>> 
>> \paper {
>>  scoreTitleMarkup = \markup {
>>    \column {
>>      \fromproperty #'header:piece
>>      \justify-field #'header:instruction
>>    }
>>  }
>> }
>> 
>> #(define instructions '(
>>  ; Using a LilyPond code block does not work.
>>  (1 . #{
>>    \markup {
>>      "Does not work"
> 
> ' introduces a non-evaluated constant expression but you need to
> evaluate #{ ... #} to get a markup.  So try
> 
> #(define instructions `( ;; note backtick instead of forward tick
>  (1 . ,#{               ;; note comma to evaluate one part of the
>                         ;; quasi-quoted list
> 
> -- 
> David Kastrup

Reply via email to