lilypond-user
[Top][All Lists]
Advanced

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

Re: hiding barnumber only when rehearsalmark appears


From: Neil Puttock
Subject: Re: hiding barnumber only when rehearsalmark appears
Date: Sun, 11 Jul 2010 21:49:39 +0100

On 11 July 2010 15:36, Nick Baskin <address@hidden> wrote:
> I've encountered a similar problem in my scores. My solution has been to
> create a command "beforeMark = { \once \override Score.BarNumber
> #'break-visibility = ##(#f #f #f) }" at the beginning of the file, and then
> call it when I have a mark (i.e. \beforeMark \mark \default). It seems to
> work well for me.

If you're using 2.13, a Scheme engraver will automate this process:

#(define (bar-number-visibility-engraver ctx)
   "Hides a bar number if it coincides with a rehearsal mark."
   (let ((mark #f)
         (bar-number #f))

     `((acknowledgers
        (break-alignable-interface . ,(lambda (trans grob source)
                                        (and (not (grob::has-interface
grob 'mark-interface))
                                             (set! bar-number grob))))
        (mark-interface . ,(lambda (trans grob source)
                             (set! mark grob))))

       (process-acknowledged . ,(lambda (trans)
                                  (and mark
                                       bar-number
                                       (set!
                                        (ly:grob-property bar-number
'break-visibility)
                                        all-invisible))))

       (stop-translation-timestep . ,(lambda (trans)
                                       (set! mark #f)
                                       (set! bar-number #f))))))

\score {
  \new Staff \relative c' {
    \override Score.BarNumber #'break-visibility = #end-of-line-invisible
    \set Score.barNumberVisibility = #all-bar-numbers-visible
    \set Score.markFormatter = #format-mark-box-letters
    \bar ""
    \repeat unfold 10 {
      c1
      \mark \default
      c1
    }
  }
  \layout {
    \context {
      \Score
      \consists #bar-number-visibility-engraver
    }
  }
}

Cheers,
Neil

Attachment: hide-bar-number.png
Description: PNG image


reply via email to

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