Le vendredi 16 juin 2023 à 09:41 -0400, Kieren MacMillan a écrit :
> Hi all!
>
> Anyone have a good \uppercase function they could share?
>
> I tried to make one, and it doesn’t throw an error, but also doesn’t work:
>
> ```
> \version "2.25.2"
>
> #(define-markup-command (uppercase layout props arg) (markup?)
> (interpret-markup layout props (string-upcase (markup->string arg))))
>
> \header {
> title = "My Awesome Piece"
> }
>
> \paper {
> scoreTitleMarkup = \markup \uppercase \fromproperty #'header:title
> }
>
> { c1 }
> ```
It's expected that this doesn't work, since you feed "\fromproperty
#'header:title" to markup->string, but you don't give the properties to
markup->string, so it doesn't know what value the "header:title" property.
Replacing `(markup->string arg)` with `(markup->string arg #:layout layout
#:props props)` should work. Better yet, use string transformers (since
2.23.12), which solve exactly this problem:
```
\version "2.24.1"
\markup uppercase =
\markup \with-string-transformer
#(lambda (layout props str) (string-upcase str))
\etc
\header {
title = "My Awesome Piece"
}
\paper {
scoreTitleMarkup = \markup \uppercase \fromproperty #'header:title
}
{ c1 }
```
Jean
signature.asc
Description: This is a digitally signed message part
