lilypond-user
[Top][All Lists]
Advanced

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

Re: DurationLine avoiding RehearsalMarks


From: Jean Abou Samra
Subject: Re: DurationLine avoiding RehearsalMarks
Date: Mon, 11 Apr 2022 12:40:37 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0

Le 11/04/2022 à 10:30, Thomas Morley a écrit :
Hi Mark,
DurationLine is designed not to be printed if breakable items at
line-end/start are present, like Clef, KeySignature etc.
I wasn't aware RehearsalMark is ofcourse one of them.
Currently I'm preparing a patch to disregard RehearsalMark.
Is your use-case urgent?


Well, the same problem exists for breakable items in another staff
than the one where the DurationLine is being printed.


\version "2.23.7"

\layout {
  \context {
    \Voice
    \consists Duration_line_engraver
  }
}

<<
  \new Staff { c'1\- \break s1 c'1 }
  \new Staff { s1 \key cis \major s1 s1 }
>>


How about adding a Scheme interface for Axis_group_interface::staff_extent
from lily/axis-group-interface.cc and using it in duration-line::print?
It essentially does the same as (untested code):

#(define (grob::has-in-ancestry? grob potential-ancestor axis)
   (or (eq? grob potential-ancestor)
       (let ((parent (ly:grob-parent grob axis)))
         (and (not (null? parent))
              (grob::has-in-ancestry parent potential-ancestor axis)))))


#(define (axis-group-interface::staff-extent axis-group refpoint ext-axis staff parent-axis)
   (ly:relative-group-extent
    (filter
     (lambda (elt)
       (grob::has-in-ancestry? elt staff parent-axis))
     (ly:grob-array->list (ly:grob-object axis-group 'elements)))
    refpoint
    ext-axis))



Best,
Jean






reply via email to

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