Brilliant Harm, thank you! And thanks again to everybody who contributed to the thread, this is such a great community :-)
Brent. On Thu, 10 Jun 2021 at 08:25, Thomas Morley <thomasmorle...@gmail.com> wrote: > Am Di., 8. Juni 2021 um 19:07 Uhr schrieb Lukas-Fabian Moser <l...@gmx.de>: > > > > Hi Brent, > > > > > This is marvellous, thank you! Just one question: if I wanted to > > > remove the preceding zeros from the number, how would I do that? > > > > Just omit the (not very elegant) code that I added in order to add the > > preceding zeros. :-) > > > > To wit, replace > > > > (markup (format #f > > (string-append "~" (number->string digits) > > ",'0d") > > n))) > > > > by > > > > (number->string n)) > > > > I attach a complete version. > > > > One problem with my code is the fine-tuning of the bottom-alignment of > > the various \markup's: If you look closely, you see that LilyPond > > doesn't use the baselines of the text lines, but the actual lowest point > > of the markups: The lowest point of "Gottes Sohn ist kommen" (no > > descenders) are aligned to the lowest point of the 'g' in 'long'. Not > > ideal, but I don't know how to improve this. > > > > Lukas > > > > Hi Lukas, > > some remarks: > You refer to my very first LSR snippet > https://lsr.di.unimi.it/LSR/Item?id=765 > originally coded with 2.14. (or was it even 2.12.?, don't remember exactly > ...) > > There I c/p-ed general-column from define-markup-commands.scm, because > it is not public. > For wordwrap-right you obviously had copied (and renamed) the original > textRight (with a hardcoded baseline-skip). > > Nowadays I'd rather use general-column from a more recent version. The > LSR-snippet was already improved to have baseline-skip adjustable. > > > That said... > The problem of not base-aligned texts persist, because general-align > aligns the whole markup, not respecting baselines. > Thus I took a different approach. > Remember, dir-column _respects_ baselines. Following this idea means: > - create a list of line-stencils > - right-align them > - stack them up(!) in reverse order > And after deleting \general-align #Y #DOWN from scoreTitleMarkup we're > done. > > Leading to: > #(define-markup-command (column-right-up layout props args) (markup-list?) > #:properties ((baseline-skip)) > (let* ((lines (wordwrap-internal-markup-list layout props #f args)) > (right-aligned-lines > (map (lambda (stil) (ly:stencil-aligned-to stil X RIGHT)) > lines))) > (stack-lines > UP > 0.0 > baseline-skip > (reverse right-aligned-lines)))) > > #(define-markup-command (number-fromproperty layout props digits symbol) > (index? symbol?) > (let ((n (chain-assoc-get symbol props))) > (if (index? n) > (interpret-markup > layout props > (markup (format #f > (string-append "~" (number->string digits) > ",'0d") > n))) > empty-stencil))) > > #(define-markup-command (wordwrap-right-field layout props symbol) > (symbol?) > (let* ((m (chain-assoc-get symbol props))) > (if (markup-list? m) > (column-right-up-markup layout props m) > empty-stencil))) > > \paper { > scoreTitleMarkup = \markup > \overlay { > %% Only to demonstrate aligning to baseline, delete me! > \translate #'(0 . -0.1) \draw-hline > \fill-line { > \line { > \fontsize #7 \number-fromproperty #3 #'header:piece-nr > \hspace #1 > \normal-text \large \fromproperty #'header:piece-title > } > \italic \small > %% probably: > \override #'(baseline-skip . 2.5) > \override #'(line-width . 50) > \wordwrap-right-field #'header:infotext > } > } > } > > \paper { > indent = 0 > } > > \score { > \header { > piece-nr = 0 > piece-title = "Gottes Sohn ist kommen" > infotext = \markuplist { > This paragraph is in two or more rows, and the last line needs > to be level with the bit on the left. It really can be as long > as you want. > } > } > \relative c' { c1 c e f g a g } > } > > > \score { > \header { > piece-nr = 1 > piece-title = "Another piece" > infotext = \markuplist { > This paragraph is in two or more rows, and the last line needs > to be level with the bit on the left. It really can be as long > as you want. Bla bla text, bla bla text? Really important bla > bla text, bla bla text. > } > } > \relative g' { g2 f e c d b c1 } > } > > The draw-hline is only there to visualize baselines, should be deleted ... > > Best, > Harm >