lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Formatting part of a header property


From: Thomas Morley
Subject: Re: Formatting part of a header property
Date: Mon, 17 Dec 2018 21:16:04 +0100

Am Mo., 17. Dez. 2018 um 19:21 Uhr schrieb Br. Samuel Springuel
<address@hidden>:
>
> On 2018-12-17 12:08 PM, David Kastrup wrote:
> > Uh, anything wrong with the obvious
> >
> >        custom = \markup { PRAELUDIUM I \italic { italicized text } Back to 
> > normal }
> >
> > ?
> It works in the MWE I posted, but not in my original use case (the
> contents of the field disappear entirely.  After some further
> exploration the problem seems to be that I'm making use of
> `\wordwrap-field` rather than `\fromproperty` (a necessity due to the
> fact that the contents of this field can get rather long).

\wordwrap-field only works for strings, otherwise an empty stencil is returned.
Though, there was a bit discussion on devel recently.
http://lilypond.1069038.n5.nabble.com/Let-wordwrap-field-and-justify-field-take-non-strings-td217729.html
I then started work on a patch. Up to now not published (still work in
progress and not sure when I'll have the time to continue).

The idea:

#(define-markup-command (wordwrap-field layout props symbol)
  (symbol?)
  #:category align
  "Wordwrap the data which has been assigned to @var{symbol}.

@lilypond[verbatim,quote]
\\header {
  title = \"My title\"
  myText = \"Lorem ipsum dolor sit amet, consectetur adipisicing
    elit, sed do eiusmod tempor incididunt ut labore et dolore
    magna aliqua.  Ut enim ad minim veniam, quis nostrud
    exercitation ullamco laboris nisi ut aliquip ex ea commodo
    consequat.\"
}

\\paper {
  bookTitleMarkup = \\markup {
    \\column {
      \\fill-line { \\fromproperty #'header:title }
      \\null
      \\wordwrap-field #'header:myText
    }
  }
}

\\markup {
  \\null
}
@end lilypond"
  (let* ((m (chain-assoc-get symbol props)))
    (cond ((string? m)
           (wordwrap-string-markup layout props m))
          ((markup-list? m)
           (wordwrap-markup layout props m))
          ((markup? m)
           (interpret-markup layout props m))
          (else empty-stencil))))



\book {
   \paper {
     indent = 0\mm
     scoreTitleMarkup = \markup {
       \fill-line {
         \null
         \fontsize #4 \bold \wordwrap-field #'header:piece
       }
     }
   }
   \header { tagline = ##f }
   \score {
     { s1 }
     \header {
       piece = \markup { PRAELUDIUM I \italic { italicized text } Back
to normal }
     }
   }
 }

Seems to work.


Cheers,
  Harm



reply via email to

[Prev in Thread] Current Thread [Next in Thread]