2018-03-13 20:31 GMT+01:00 Br. Samuel Springuel <rpspring...@gmail.com>: > I'm creating a custom bookTitleMarkup for a project I'm working on and have > some lines which are setup like `meter` and `arranger` in the default > template (two blocks of text, one flushed left the other right, on the same > line). > > However, on one of those lines the header properties to be used may be very > long and thus I need to force word wrapping to less than the full line width > for each field. On the left side, that is not a problem, I just use > `\override #'(line-width . 30) \wordwrap-field`. However, on the right side > this doesn't work because the wrapping of the text within the field is left > aligned inside its box (which is right aligned on the line). What I'd like > is for the wrapped text to be right aligned inside its box. I tried > changing `text-direction` to -1, and this did change the alignment, but also > reversed the word order on each line. > > Is there an equivalent for `\wordwrap-field` that will flush right the text > (much like `\justify-field` leads to it being justified)? > > %%% Begin Snippet %%% > \paper { > % custom title layout > bookTitleMarkup = \markup { \column { > \fill-line { \fromproperty #'header:title } > \fill-line { > \fromproperty #'header:meter > \fromproperty #'header:tune > } > \fill-line { > \fromproperty #'header:poet > \fromproperty #'header:composer > } > \fill-line { > { \override #'(line-width . 30) \wordwrap-field > #'header:poet_copyright } > { \override #'(line-width . 30) \wordwrap-field > #'header:tune_copyright } > } > }} > scoreTitleMarkup = {} > } > > \header { > title = "Title of song (from lyrics)" > meter = "8.8.8.8" > tune = "name of tune" > poet = "Poet" > composer = "Composer" > poet_copyright = "A sometimes long statement indicating at least the > year of the copyright. Should be flushed left." > tune_copyright = "Also may be long and in need of wrapping. Should be > flushed right." > } > > \new Staff > { > \new Voice = "mel" { c' } > } > > %%% End Snippet %%
Hi, do you mean like below? Based on http://lsr.di.unimi.it/LSR/Item?u=1&id=765 #(define (general-column align-dir baseline mols) (let* ((aligned-mols (map (lambda (x) (ly:stencil-aligned-to x X align-dir)) mols))) (stack-lines -1 0.0 baseline aligned-mols))) #(define-markup-command (my-wordwrap-field layout props symbol) (symbol?) #:category align #:properties ((baseline-skip) (align-dir LEFT)) (let* ((m (chain-assoc-get symbol props))) (if (string? m) (general-column align-dir baseline-skip (wordwrap-string-internal-markup-list layout props #f m)) empty-stencil))) \paper { % custom title layout bookTitleMarkup = \markup { \column { \fill-line { \fromproperty #'header:title } \fill-line { \fromproperty #'header:meter \fromproperty #'header:tune } \fill-line { \fromproperty #'header:poet \fromproperty #'header:composer } \fill-line { { \override #'(line-width . 30) \wordwrap-field #'header:poet_copyright } { \override #'(line-width . 30) \override #'(align-dir . 1) \my-wordwrap-field #'header:tune_copyright } } }} scoreTitleMarkup = {} } \header { title = "Title of song (from lyrics)" meter = "8.8.8.8" tune = "name of tune" poet = "Poet" composer = "Composer" poet_copyright = "A sometimes long statement indicating at least the year of the copyright. Should be flushed left." tune_copyright = "Also may be long and in need of wrapping. Should be flushed right." } \new Staff { \new Voice = "mel" { c' } } Cheers, Harm _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user