Hallo,
folgender Code
\version "2.20.0"
\book {
\paper {
print-first-page-number = ##t
}
{
% \set Score.currentBarNumber = 1
\override Score.BarNumber #'break-visibility = #end-of-line-invisible
\set Score.barNumberVisibility = #(every-nth-bar-number-visible 1)
\override Score.BarNumber.self-alignment-X = #LEFT
c'1 1 1 1
1 1 1 \override Score.BarNumber.self-alignment-X = #RIGHT 1
}
}
produziert - wie erwartet - Taktnummern am Taktanfang (links),
abgesehen davon, dass die 1. Taktnummer nicht angezeigt wird (keine Ahnung, warum nicht).
Aber mein Hauptproblem ist ein anderes : wenn ich im letzten Takt (und nur dort) die Taktnummer
am Taktende (rechts) haben will, warum wird sie dann in den vorletzten Takt geschoben ?
Bin für Hilfe dankbar.
Gruß,
Reinhard
Hallo Reinhard,
die erste Taktnummer wird links vom Notenschlüssel angezeigt (v2.24.0).
self-alignment-X definiert die Ausrichtung der Taktnummer zum Taktstrich am Anfang des Taktes. Du kannst die Nummer manuell verschieben:
\version "2.24.0"
{
\override Score.BarNumber.break-visibility = #end-of-line-invisible
\set Score.barNumberVisibility = #(every-nth-bar-number-visible 1)
\override Score.BarNumber.self-alignment-X = #LEFT
c'1 1
\override Score.BarNumber.self-alignment-X = #CENTER
1 1
\override Score.BarNumber.self-alignment-X = #RIGHT
1 1
\override Score.BarNumber.extra-offset = #'( 8 . 0)
1
}
Lässt sich vermutlich auch mit etwas scheme-magic automatisieren...
Grüße, Jürgen.
Danke.
Gruß,
Reinhard
Hier noch mit automatischer Berechnung des Offset:
\version "2.24.0"
% based on
% https://lists.gnu.org/archive/html/lilypond-user/2015-08/msg00517.html
#(define move-to-next-barline
(lambda (grob)
(let* ((sys (ly:grob-system grob))
(all-elts (ly:grob-array->list (ly:grob-object sys 'all-elements)))
(barlines (filter (lambda (elt)
(grob::has-interface elt 'bar-line-interface))
all-elts))
(grob-pos (grob::rhythmic-location grob))
(next (filter (lambda (b)
(rhythmic-location<? grob-pos (grob::rhythmic-location b)))
barlines))
(next (reduce
(lambda (elem prev)
(if (rhythmic-location<?
(grob::rhythmic-location prev)
(grob::rhythmic-location elem))
prev
elem))
#f
next)))
(if next
(let* ((grob-x (ly:grob-relative-coordinate grob sys X))
(grob-x-ext (ly:grob-property grob 'X-extent))
(grob-width (- (cdr grob-x-ext) (car grob-x-ext)))
(next-X (ly:grob-relative-coordinate next sys X))
(next-x-ext (ly:grob-property next 'X-extent))
(next-width (- (cdr next-x-ext) (car next-x-ext)))
(offset (- (- next-X grob-x) grob-width)))
(ly:grob-set-property! grob 'extra-offset (cons offset 0)))))))
{
\override Score.BarNumber.break-visibility = #end-of-line-invisible
\set Score.barNumberVisibility = #(every-nth-bar-number-visible 1)
c'1 1 1 1 1
\once \override Score.BarNumber.after-line-breaking = #move-to-next-barline
1
}
ToDo: Position bei unterschiedlichen BarLines (Repeat, Segno, ...)?
Grüße, Jürgen.
Das ist natürlich noch besser ... :)
Gruß,
Reinhard