2015-05-14 8:51 GMT+02:00 Alexander Kobel <n...@a-kobel.de>: > On 2015-05-14 05:09, Murray-Luke Peard wrote: >> >> [...] >> One is to use the Mensurstriche layout, which has bar lines between >> staves but not through them. My preferred option is to move the barline >> up or down if the note is low or high, and split it if the note is in >> the middle. >> >> I've been able to move the barline up and down with the following >> commands: >> >> upBar = { \override Staff.BarLine #'bar-extent = #'(0.5 . 3) } >> downBar = { \override Staff.BarLine #'bar-extent = #'(-3 . -0.5) } >> >> And reset it to normal with >> >> fullBar = { \override Staff.BarLine #'bar-extent = #'(-2 . 2) } >> >> But I can't figure out how to get the split bar line. Ideally, it would >> look something like : >> >> topPart = { \override Staff.BarLine #'bar-extent = #'(2 . 3) } >> bottomPart = [ \override Staff.BarLine #'bar-extent = #'(-3 . -2) } >> >> but both at the same time! >> >> Can anyone suggest how I might achieve this? > > > > Hi Murray-Luke, > > I had the exact same problem a few days ago, in a different context (read > the thread "TimeSignatures over BarLines" from May 07 here: > <http://lists.gnu.org/archive/html/lilypond-user/2015-05/msg00276.html>). > The problem is that the BarLine is drawn only once, and the most recent > extent is taken. There is a solution however: to draw the short BarLine > twice, and move one of the instances as necessary. The code is as follows: > > \once \override Staff.BarLine #'stencil = > #(lambda (grob) > (ly:grob-set-property! grob 'bar-extent '(-3 . -2)) > (ly:stencil-add > (ly:bar-line::print grob) > (ly:stencil-translate-axis (ly:bar-line::print grob) 5 Y))) > > If you want two stubs of different length, you have to work a little bit > harder, but this should get you started. > > > HTH, > Alexander
Hi Murray-Luke, alternatively you could define your own bar-lines, leading to: \version "2.19.18" #(define (make-up-tick-bar-line grob extent) (let* ((line-thickness (layout-line-thickness grob)) (thickness (* (ly:grob-property grob 'hair-thickness 1) line-thickness)) (staff-space (ly:staff-symbol-staff-space grob)) (height (interval-end extent))) (ly:round-filled-box (cons 0 thickness) (cons height (+ height staff-space)) 0))) #(define (make-down-tick-bar-line grob extent) (let* ((line-thickness (layout-line-thickness grob)) (thickness (* (ly:grob-property grob 'hair-thickness 1) line-thickness)) (staff-space (ly:staff-symbol-staff-space grob)) (bottom (interval-start extent))) (ly:round-filled-box (cons 0 thickness) (ordered-cons bottom (- bottom staff-space)) 0))) #(define (make-both-tick-bar-line grob extent) (ly:stencil-add (make-up-tick-bar-line grob extent) (make-down-tick-bar-line grob extent))) #(add-bar-glyph-print-procedure "u" make-up-tick-bar-line) #(define-bar-line "u" "u" #f #f) #(add-bar-glyph-print-procedure "d" make-down-tick-bar-line) #(define-bar-line "d" "d" #f #f) #(add-bar-glyph-print-procedure "b" make-both-tick-bar-line) #(define-bar-line "b" "b" #f #f) %%%%%%%%%%%%%%%%%% %% EXAMPLE %%%%%%%%%%%%%%%%%% { r1 \bar "u" r \bar "u" \break r \bar "d" r \bar "d" \break r \bar "b" r \bar "b" \break } HTH, Harm _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user