lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: barline at end of staff


From: David Nalesnik
Subject: Re: barline at end of staff
Date: Sat, 23 Mar 2013 12:11:16 -0500

Wilbert,

On Sat, Mar 23, 2013 at 9:26 AM, Wilbert Berendsen <address@hidden> wrote:
Op 16-03-13 17:35, Arno Rog schreef:

L.S.

I'm trying to figure out a way to place the last bar line exactly at the end of
the staff in the score of the Dutch anthem at http://lsr.dsi.unimi.it/LSR/Snippet?
id=648

Now it's done manually: \override Staff.BarLine #'extra-offset = #'(23 . 0)
\bar "|."
Can this be automatically (and correctly)?

Arno Rog


I used to use alignGrob for this. (See the LSR). But later I wrote this based on that:

endbar = {
  \overrideProperty #"Staff.BarLine" #'after-line-breaking
  #(lambda (grob)
     (let* ((sys (ly:grob-system grob))

            (staff (ly:grob-object grob 'staff-symbol))
            (half-thickness (/ (ly:staff-symbol-line-thickness staff) 2))
            (cur-x (cdr (ly:grob-extent grob sys X)))
            (new-x (cdr (ly:grob-extent staff sys X)))
            (xoff (+ half-thickness (- new-x cur-x))))
         (ly:grob-set-property! grob 'extra-offset (cons xoff 0))))
}

Aha--I see.  Instead of 'blot-diameter, I should have incorporated the thickness of the staff lines.

Just for the record, with that substitution, I'd get:

   \override Staff.BarLine #'extra-offset = #(lambda (grob)
    (let* ((refp (ly:grob-system grob))
           (staff (ly:grob-object grob 'staff-symbol))
           (staff-extent-X (ly:grob-extent staff refp X))
           (bar-extent-X (ly:grob-extent grob refp X))
           (half-thickness (/ (ly:staff-symbol-line-thickness staff) 2)))
      (cons (- (cdr staff-extent-X) (cdr bar-extent-X) (- half-thickness))
            0)))


...which is basically the same as your function

-David

reply via email to

[Prev in Thread] Current Thread [Next in Thread]