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




Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to