Kieren,

On Thu, Apr 9, 2015 at 10:37 AM, Kieren MacMillan <
[email protected]> wrote:

> Hi David,
>
> > You are only using part of the code which I find here:
> http://www.autoindustry536.bllog.opensubscriber.com/message/[email protected]/12807136.html
>
> Yes! That was it. Thanks for the link.
>
> > Note that the following will work with your simple example, though
> \uppercase has to be directly before the markup:
> > #(define-markup-command (uppercase layout props markup-argument)
> >    (markup?)
> >    (interpret-markup layout props
> >      (string-upcase (markup->string markup-argument))))
>
> My issue is the same as in that 2009 post:
>
>     \uppercase \fromproperty #’header:title
>
> fails. Any thoughts on how to fix that?
>

Nicholas's \simple function requires a string, and mine requires that we be
able to get at the string within a markup argument.   Ordinarily, getting
the string wouldn't be a problem.   Not so with the markup returned by the
fromproperty command: the function markup->string won't work here.

Nevertheless, we can easily get the title string by referring to the
variable myTitle:

\version "2.19"

#(define-markup-command (uppercase paper props markup-argument)
   (markup?)
   "Make the markup uppercase.
  Syntax: \\uppercase \"string\""
   (interpret-markup paper (prepend-alist-chain 'case 'up props)
     markup-argument))

#(define-markup-command (simple paper props str) (string?)
   "Depending on the `case' property, may change the case
of the string before interpreting it."
   (let ((text-case (chain-assoc-get 'case props 'normal)))
     (interpret-markup paper props
       (case text-case
         ((up) (string-upcase str))
         ((down) (string-downcase str))
         ;; TODO: small caps, capitalized text, etc
         (else str)))))


\header {
  myTitle = "myTitle"
  title = \markup {
    from \uppercase \simple #myTitle
  }
}
\markup {
  \null
}

%%%
Though you could just as easily write the following:

\header {
  myTitle = #"myOtherTitle"
  title = \markup {
    from \italic #(string-upcase myTitle)
  }
}
\markup {
  \null
}

%%%

HTHm
David
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to