Hi Leo,
Am 07.12.20 um 23:36 schrieb Leo Correia de Verdier:
> I’m not sure if this is an interesting suggestion, but if you want this as the actual clef you could write
> %%%%%%%%%%%%%%
> \once \override Staff.Clef.stencil = #ly:text-interface::print
> \once \override Staff.Clef.text = \markup {
> \override #'(font-size . -6.5)
> \unit-height-column { First second third fourth fifth sixth seventh eighth ninth tenth eleventh } }
> \once \override Staff.Clef.Y-offset = #5
> \clef treble % or whatever
> %%%%%%%%%%%%%%
That's an excellent suggestion - I remember when I read Michael's
question I thought: If we want "a sort of clef", we should use a \clef
for it. But of course that changes the layout (even though one might use
a whiteout property to hide the staff lines).
I moved your logic into a function (and replaced your explicit Y-offset
by 0 combined with Y-centering the markup):
\version "2.21.80"
#(define-markup-command (force-unit-height layout props arg) (markup?)
(let* ((y-centered-arg (markup #:general-align 1 0 arg))
(stil (interpret-markup layout props y-centered-arg))
(x (ly:stencil-extent stil 0))
(y (cons -1/2 1/2)))
(ly:stencil-outline stil (make-filled-box-stencil x y))))
#(define-markup-command (unit-height-column layout props args)
(markup-list?)
(interpret-markup layout props #{
\markup {
\override #'(baseline-skip . 0)
\center-column \force-unit-height #args
} #} ))
columnClef =
#(define-music-function (contents) (markup-list?)
#{
\once \override Staff.Clef.stencil = #ly:text-interface::print
\once \override Staff.Clef.Y-offset = 0
\once \override Staff.Clef.text = \markup {
\override #'(font-size . -6.5)
\general-align #Y #CENTER
\unit-height-column #contents
}
#})
\new Staff {
\columnClef \markuplist { first second third fourth }
a'4
}
Lukas