[Top][All Lists]
[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
hide-bar-number.png
Description: PNG image