\version "2.18.2" #(define-public (string-or-markup-or-boolean? e) (or (string? e) (markup? e) (boolean? e))) #(define (double-rehearsalmark-stencil grob) (let* ((grobs-event (ly:grob-property grob 'cause '())) (left-label (ly:event-property grobs-event 'left-label)) (right-label (ly:event-property grobs-event 'right-label)) (gap (ly:grob-property grob 'gap 1.4))) (case (ly:item-break-dir grob) ((-1) (if (boolean? left-label) empty-stencil (grob-interpret-markup grob (make-right-align-markup left-label)))) ((1) (if (boolean? right-label) empty-stencil (grob-interpret-markup grob (make-left-align-markup right-label)))) (else (if (boolean? left-label) (grob-interpret-markup grob (if left-label (make-center-align-markup right-label) (make-left-align-markup right-label))) (if (boolean? right-label) (grob-interpret-markup grob (if right-label (make-center-align-markup left-label) (make-right-align-markup left-label))) (ly:stencil-add (ly:stencil-translate (grob-interpret-markup grob (make-right-align-markup left-label)) (cons (* -0.5 gap) 0.0)) (ly:stencil-translate (grob-interpret-markup grob (make-left-align-markup right-label)) (cons (* 0.5 gap) 0.0))))))))) doubleMark = #(define-music-function (parser location left-string right-string) (string-or-markup-or-boolean? string-or-markup-or-boolean?) (if (and (boolean? left-string) (boolean? right-string)) (ly:warning "~a \\doubleMark - at least one string or markup required" location)) (make-music 'SequentialMusic 'elements (list (make-music 'ContextSpeccedMusic 'context-type 'Score 'element (make-music 'OverrideProperty 'symbol 'RehearsalMark 'grob-value double-rehearsalmark-stencil 'grob-property-path (list 'stencil) 'pop-first #t 'once #t)) (make-music 'ContextSpeccedMusic 'context-type 'Score 'element (make-music 'OverrideProperty 'symbol 'RehearsalMark 'grob-value #f 'grob-property-path (list 'self-alignment-X) 'pop-first #t 'once #t)) (make-music 'ContextSpeccedMusic 'context-type 'Score 'element (make-music 'OverrideProperty 'symbol 'RehearsalMark 'grob-value `#(,(not (boolean? left-string)) #t ,(not (boolean? right-string))) 'grob-property-path (list 'break-visibility) 'pop-first #t 'once #t)) (make-music 'MarkEvent 'label #f 'left-label (if (string? left-string) (make-simple-markup left-string) left-string) 'right-label (if (string? right-string) (make-simple-markup right-string) right-string) 'origin location)))) { \mark \markup { \box \bold \fontsize #2 A} \repeat volta 2 { s1*4 | \break } \alternative { { s1*4 \break} { s1*4 \once\override Score.RehearsalMark.break-visibility = #end-of-line-visible \once\override Score.RehearsalMark.self-alignment-X = #RIGHT \doubleMark \markup {\hspace #8 \italic "fine"} \markup { \box \bold \fontsize #2 B} | \bar "||" \break} } s1*4\break s1*4 \once \override Score.RehearsalMark #'direction = #DOWN \once \override Score.RehearsalMark.break-visibility = #end-of-line-visible \once \override Score.RehearsalMark.self-alignment-X = #RIGHT \mark \markup {\hspace #8 \bold "D.C. al 2nd Ending"} \bar "||" \break }