Hi Davide, Avoid the the LilyPond \tempo command entirely: then use markup (in text spanner bound-details) for everything. Alignment (baseline and otherwise) can then be controlled with text spanner bound-details.
If you need an empty region of of whitespace between two elements in your (possibly enchained) text spanners, play with the dash fraction / dash period of the text spanner to make the dashes disappear, leaving only your markup visible. Trevor. On Sun, Oct 14, 2018 at 2:17 PM Davide Liessi <davide.lie...@gmail.com> wrote: > Dear Kieren, > > Il giorno ven 5 ott 2018 alle ore 15:11 Kieren MacMillan > <kieren_macmil...@sympatico.ca> ha scritto: > > This works for me: > [...] > > your solution works well to keep all TextSpanners baseline-aligned, > but it still does not solve my real problem, which indeed was not > apparent in my first message. > I'm trying to make TextSpanners and tempo markings look the same, > including being aligned at the same baseline. > The reason is to follow the recommendations of Gould for tempo > alteration markings (example at page 184). > > A slightly more realistic example follows: I would like to align > \tempo markings and TextSpanners to the same baseline. > As you can see using your trick on both does achieve the desired result. > I renamed the \test function to a more specific \baseline-align. > I'm cc-ing also Harm / Thomas Morley because I'm using his code, so he > may have some insights or suggestions. > > Thanks for your help so far. > Best wishes! > Davide > > %%% new example > \version "2.19.81" > > #(define (lists-map function ls) > "Apply @var{function} to @var{ls} and all of it sublists. > First it recurses over the children, then the function is applied to > @var{ls}." > (if (list? ls) > (set! ls (map (lambda (y) (lists-map function y)) ls)) > ls) > (function ls)) > > #(define baseline-align-proc > (lambda (e) > (if (and (list? e) (member 'glyph-string e)) > (begin > (for-each > (lambda (x) > (begin > (set-car! (cadr x) 0) > x)) > (cadr (last e))) > e) > e))) > > #(define-markup-command (baseline-align layout props glyph-name) > (markup?) > (let* ((stil (interpret-markup layout props glyph-name)) > (new-stile-expr > (lists-map > baseline-align-proc > (ly:stencil-expr stil)))) > > (ly:make-stencil > new-stile-expr > (ly:stencil-extent stil X) > ;(cons 0 (cdr (ly:stencil-extent stil Y))) > (ly:stencil-extent stil Y) > ))) > > startTempoSpan = > #(define-event-function > (left-text) > (markup?) > #{ > \tweak bound-details.left.text \markup { > \combine \transparent "Tj" > #left-text > } > \tweak font-shape #'upright > \tweak font-size 1 > \tweak font-series #'bold > \startTextSpan > #}) > stopTempoSpan = \stopTextSpan > > { > R1 | > \tempo \markup { \baseline-align \large "a" } > R1 | > \tempo \markup { \baseline-align \large "p" } > R1 | > <>\startTempoSpan "a" > R1 > <>\stopTempoSpan | > R1 | > <>\startTempoSpan "p" > R1 > <>\stopTempoSpan | > R1 > \tempo \markup { \large \combine \transparent "Tj" "a" } > R1 | > \tempo \markup { \large \combine \transparent "Tj" "p" } > R1 | > } > > _______________________________________________ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- Trevor Bača www.trevorbaca.com soundcloud.com/trevorbaca
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user