Hi Jan-Peter, On Mon, Jun 25, 2012 at 4:47 AM, Jan-Peter Voigt <jp.vo...@gmx.de> wrote:
> > Now the broken siblings are found, but only the first one is shaped. > But it seems possible ... I will have another look after lunch ;-) > I tried to fix what was amiss in your adaptation of \shape, but I didn't get very far. This problem seems very complex, and I was only able to get results by "starting from the ground up" -- namely, adding to the function I initially sent. It's awfully compressed. Hopefully, this is another step in the right direction. %%%%%%%%%%%%%%%%%%%%%%%% \version "2.15.40" shapeTieColumn = #(define-music-function (parser location all-offsets) (list?) #{ \override TieColumn #'after-line-breaking = #(lambda (grob) (let ((ties (ly:grob-array->list (ly:grob-object grob 'ties)))) (for-each (lambda (tie offsets-for-broken-pair) (let* ((orig (ly:grob-original tie)) (siblings (ly:spanner-broken-into orig))) (for-each (lambda (piece offsets-for-piece) (if (pair? offsets-for-piece) (set! (ly:grob-property piece 'control-points) (map (lambda (x y) (coord-translate x y)) (ly:tie::calc-control-points piece) offsets-for-piece)))) (if (null? siblings) (list orig) siblings) offsets-for-broken-pair))) ties all-offsets))) #}) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% { <d' e' g' a'>1 ~ q q ~ \shapeTieColumn #'( ( ((0 . 0) (0 . -1) (0 . -1) (0 . 0)) ) ; (bottom) first half only () ; or ( () () ) = skip ( ((0 . 0) (-0.25 . 0.5) (0.25 . 0.5) (0 . 0)) ((0 . 0) (-0.25 . 0.5) (0.25 . 0.5) (0 . 0)) ) ; both halves ( () ((0 . 0) (0 . 1) (0 . 1) (0 . 0)) ) ; (top) second half only ) \break q } \layout { ragged-right = ##t } %%%%%%%%%%%%%%%%%%%%%%% Best, David
_______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel