Hello Lilyponders:I've already made this question, but now it's lost under a ton of mails, so I'll ask again:
I've been using David Nalesnik's CenterPaperColumn function for a while now, and I've stumbled upon a glitch with tied notes in the first staff when one of the notes involved is centered. This only seems to happen when the system is broken manualy. See the attachment for details.
Thanks, best regards.
\version "2.19.15" #(define center-column (lambda (col) (let* ((sys (ly:grob-system col)) (all-cols (ly:grob-array->list (ly:grob-object sys 'columns))) (measure-no (car (ly:grob-property col 'rhythmic-location))) ; we need to find out if there is another ; PaperColumn in the measure. If there is, ; we make no adjustments. (in-company? ; is there a column... (any (lambda (c) (and ; which is NOT our column... (not (eq? col c)) ; which is a PaperColumn... (not (eq? #t (ly:grob-property c 'non-musical))) ; which is in the same measure (eq? (car (ly:grob-property c 'rhythmic-location)) measure-no))) all-cols)) (alone? (not in-company?))) ; (if alone? (let* ((left-col (ly:grob-object col 'left-neighbor)) (right-col (ly:grob-object col 'right-neighbor)) (elts-list (ly:grob-array->list (ly:grob-object col 'elements))) (note-cols (filter (lambda (elt) (grob::has-interface elt 'note-column-interface)) elts-list)) (all-rests (map (lambda (c) (ly:grob-object c 'rest)) note-cols)) (all-rests (filter ly:grob? all-rests)) (all-notes (map (lambda (c) (ly:grob-object c 'note-heads)) note-cols)) (all (map (lambda (ga) (if (ly:grob-array? ga) (ly:grob-array->list ga) '())) all-notes)) (all (flatten-list all)) (all (append all all-rests)) (same-dur? (every (lambda (o) (equal? (ly:grob-property o 'duration-log) (ly:grob-property (car all) 'duration-log))) all))) (if same-dur? (let* ((col-center (interval-center (ly:grob-extent col sys X))) (left-right-X (cdr (ly:grob-extent left-col sys X))) (right-left-X (car (ly:grob-extent right-col sys X))) (middle-X (- (average left-right-X right-left-X) col-center))) (ly:grob-translate-axis! col middle-X X)))))))) centerSolitaryPaperColumn = \override Score.PaperColumn.after-line-breaking = #center-column \score{ << \new Staff \relative c' { \time 3/4 \repeat unfold 9 f4 \break f2.~ f4 \repeat unfold 7 f4 f~ f2. } \new Staff \relative c' { \time 3/4 \repeat unfold 9 f4 \break f2.~ f4 \repeat unfold 7 f4 f~ f2. } >> } \layout{ \centerSolitaryPaperColumn }
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user