Le 20/04/2021 à 14:22, F M a écrit :
Centering a stencil on another stencil (unimi.it)
<https://lsr.di.unimi.it/LSR/Item?id=1009>
Centering markup on note heads automatically (unimi.it)
<https://lsr.di.unimi.it/LSR/Item?id=637>
I also found these two snippets in the repository, perhaps they could
be adapted to centering bar numbers over note columns. Thank you for
your time and interest.
Hello,
Something like this, then?
Best,
Jean
\version "2.23.3"
#(define (group-extent grobs refpoint axis)
(reduce interval-union
empty-interval
(map
(lambda (grob)
(ly:grob-extent grob refpoint axis))
grobs)))
#(define fake-musical-when-first
(grob-transformer 'after-line-breaking
(lambda (bar-number dummy)
(let* ((sys (ly:grob-system bar-number))
(columns (ly:grob-object sys 'columns))
(break-alignment (ly:grob-parent bar-number X))
(bar-number-column (ly:grob-parent break-alignment X))
(first-column (ly:grob-array-ref columns 0))
(first-musical-column (ly:grob-array-ref columns 1))
(is-first (eq? bar-number-column first-column)))
(if is-first
(let* ((refpoint (ly:grob-common-refpoint bar-number
first-musical-column X))
(musical-elements (ly:grob-object
first-musical-column 'elements))
(element-list (ly:grob-array->list musical-elements))
(note-columns (filter (lambda (g)
(grob::has-interface g
'note-column-interface))
element-list)))
(ly:grob-translate-axis!
bar-number
(- (interval-center
(group-extent note-columns refpoint X))
(interval-center (ly:grob-extent bar-number
refpoint X)))
X)))))))
\layout {
\context {
\Score
\override BarNumber.after-line-breaking = #fake-musical-when-first
\override BarNumber.break-visibility = ##(#f #t #t)
\override BarNumber.outside-staff-priority = 1000
}
}
<<
\set Score.currentBarNumber = 50000
{
c'1
\break
<c''' d'''>4_"Marcato" e' f' g'
a' b' c' d'
\break
<g' a' b' c' d' e'> g' g' g'
}
{
c'1
1
1
1
}
>>