Simon - Thanks for the instructive commentary. This thread is a keeper.
Just rummaged a bit on your blog, looking for the lily source -- didn't find it. As a treble clef euphoniumist, I'd like to transpose on letter size for my own entertainment. - Bruce -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Simon Bailey Sent: Wednesday, November 23, 2005 7:52 AM To: Mats Bengtsson Cc: lilypond-user@gnu.org Subject: Re: RehearsalMark hack hi mats, bruce, On 11/23/05, Mats Bengtsson <[EMAIL PROTECTED]> wrote: > For the horizontal position, why did you not directly redefine the > function that handles the placement av rehearsal marks after line > breaks? The default function has the following definition (from > scm/output-lib.scm): > > (define-public (shift-right-at-line-begin g) > "Shift an item to the right, but only at the start of the line." > (if (and (ly:item? g) (equal? (ly:item-break-dir g) RIGHT)) > (ly:grob-translate-axis! g 3.5 X))) > > and you can specify your own function using: > \override Score.RehearsalMark #'after-line-breaking-callback = > #my-shift-right-at-line-begin i didn't redefine this function, because i didn't know that rehearsalmarks were categorically shifted to the right at the beginning of a line. it is not stated in the documentation that this property is set to #shift-right-at-line-begin by default. in fact, the only documentation for after-line-breaking-callback is: "This procedure is called after line breaking. Its return value is ignored." in docs for 2.6 at: http://lilypond.org/doc/v2.6/Documentation/user/out-www/lilypond-internals/g rob_002dinterface.html and: "Dummy property, used to trigger callback for after-line-breaking" in the docs for 2.7 at: http://lilypond.org/doc/v2.6/Documentation/user/out-www/lilypond-internals/g rob_002dinterface.html my naive assumption was that there is an invisible bar-line after prefatory matter over which rehearsal marks are aligned. (probably because of this: http://lilypond.org/doc/v2.6/input/regression/out-www/lily-1278860194.ly) my solution is almost the same as your's if i'm not mistaken, except for the fact that it is called before a line break, rather than after (which is probably better and which i will change now). fairchild wrote: > Impressive detective work. Please add commentary about the > documentation trail you followed to discover your result. Maybe > include some explanation of what code does what. the documentation trail: Difficult tweaks: http://lilypond.org/doc/v2.6/Documentation/user/out-www/lilypond/Difficult-t weaks.html --> defining a 2-line callback function for after line breaking which just categorically changed the extra-offset property. that didn't work, so i started reading the scheme functions for lily: http://lilypond.org/doc/v2.7/Documentation/user/out-www/lilypond-internals/S cheme-functions.html and searching for break led me to the ly:item-break-dir function. checking for beginning of line was then a matter of working out how to do an if branch in scheme. code comments: % define a function called mark-callback which receives "grob" as a parameter #(define (mark-callback grob) % is this item is at the beginning of the line (ly:item-break-dir returns 1) (if (= (ly:item-break-dir grob) 1) % set extra-offset to the desired shift. (ly:grob-set-property! grob 'extra-offset '(-2.8 . 1)))) the \book and \repeat commands are well documented in the manual. \repeat definitely is, and i only used it out of laziness in this example. for 2.4. and 2.6. please use Mats' version which is: \override Score.RehearsalMark #'after-line-breaking-callback = #mark-callback Mats' version is semantically more correct -- the only difference being that this callback seems to shift further to the left. sample output again at: http://binabik.boldlygoingnowhere.org/r-marks.pdf the whole reason i wanted this hack was for the following scenario: http://binabik.boldlygoingnowhere.org/trbns/ all three files are generated from the same source. i was having problems with the first piece in the "marschbuch" format (a5-landscape). lily's solution is in the "standard" version and collides nastily with the multimeasure rests; my solution is visible in the "hacked" version. [nb, the staff line vertical spacing has been seriously overriden in this document]. the reason i didn't want to hard code this in the source files is because of the concert.pdf and score.pdf which are generated from the same sources. regards, sb -- Do not meddle in the affairs of trombonists, for they are subtle and quick to anger. _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user