lilypond-user
[Top][All Lists]
Advanced

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

page break failure


From: Hugh Myers
Subject: page break failure
Date: Tue, 1 Dec 2009 21:57:00 -0700

Pardon the length of the piece of code, but clearly demonstrates the
problem where as other pieces don't (got to be a page long for
instance...):

%
% malaguena.ly -- q&d testbed for mixed notation score and tab.
%
\version "2.13.7"
\header {
  title = "Malaguena"
  subtitle = "none"
  composer = "Music by Unknown"
}

tspan = #(define-music-function (parser location text osp dirn shorten
adjBreak adjEnd) (string? number? number? pair? number? number?) #{
  % set osp to 999 if spanner is colliding with another element
  % this will position the spanner outside all other elements
  % can be normally be set to zero
  \once \override TextSpanner #'outside-staff-priority = #$osp
  % add '\bold' to end of \markup if desired...
  \once \override TextSpanner #'bound-details #'left #'text =
\markup\italic\small { \concat { { $text } " " } }
  \once \override TextSpanner #'font-shape = #'upright
  % direction (either #UP or #DOWN)
  \once \override TextSpanner #'direction = #$dirn
  % setup dashed line and draw a bracket edge on RHS
  \once \override TextSpanner #'dash-period = #1.5
  \once \override TextSpanner #'dash-fraction = #0.3
  \once \override TextSpanner #'thickness = #0.8
  \once \override TextSpanner #'bound-details #'right #'text = \markup
{ \draw-line #(cons 0 (/ $dirn -1)) }
  % set alignment of line with reference to left text
  \once \override TextSpanner #'bound-details #'left
#'stencil-align-dir-y = #CENTER
  \once \override TextSpanner #'bound-details #'left #'padding = #(car $shorten)
  \once \override TextSpanner #'bound-details #'right #'padding =
#(cdr $shorten)
  % allow adjustment of line end when it wraps to following stave
  \once \override TextSpanner #'bound-details #'right-broken #'padding
= #$adjEnd
  % adjust LH end of line when it wraps to following stave so that it doesn't
  % extend to the left of the notes on the stave
  \once \override TextSpanner #'bound-details #'left-broken #'X = #$adjBreak
  % optional override to remove text and bracket edge at line breaks
  % comment out to repeat text at each measure wrap
%  \once \override TextSpanner #'bound-details #'left-broken #'text = ##f
%  \once \override TextSpanner #'bound-details #'right-broken #'text = ##f
#})

ringer = \tspan "let ring" #0 #DOWN #'(0 . -0.5) #5 #1
chord = < e b gis e b e, >
nullTempo = { \once \set Score.tempoHideNote = ##t \tempo 4 = 199 }
upper = {
  \tempo 4=90
  \barNumberCheck #1 \chord \chord \chord
  \repeat volta 2 {
    \tempo 4=200
    \barNumberCheck #2 b c d
    \barNumberCheck #3 d c b
    \barNumberCheck #4 c a b
    \barNumberCheck #5 \acciaccatura d8 \voiceOne c4 b a
    \barNumberCheck #6 b a g
    \barNumberCheck #7 a g f
    \nullTempo
  }
  \alternative {
    {
      \override TupletBracket #'bracket-visibility = ##t
      \barNumberCheck #8 r4  \ringer \times 2/3 { gis8 \startTextSpan
b e } e,4 \times 2/3 { gis8 b e } e,2
    }
    {
      \repeat volta 2 {
        \bar ":|.|:"
        \barNumberCheck #10 { e8 [e'] gis, [e'] b [e] }
        \barNumberCheck #11 e,8 [e'] gis, [e'] b [e]
        \barNumberCheck #12 a,8 [e'] c [e] b [e]
        \barNumberCheck #13 a,8 [e'] g, [e'] f, [e']
      }
    }
  }
  \barNumberCheck #14 e,8 [e'] gis, [e'] b [e]
  \barNumberCheck #15 d8 [e] c [e] b [e]
  \barNumberCheck #16 c8 [e] a, [e'] b [e]
  \barNumberCheck #17 c8 [e] b [e] a, [e']
  \barNumberCheck #18 b8 [e] a, [e'] g, [e']
  \barNumberCheck #19 a,8 [e'] g, [e'] f, [e']
  \barNumberCheck #20 e,4 gis b
  \stopTextSpan
  \barNumberCheck #21 < e b gis e b e, >2.
  \barNumberCheck #22 e4 e e
  \barNumberCheck #23 e4 e d
  \barNumberCheck #24 f4 e d
  \barNumberCheck #25 c2.
  \barNumberCheck #26 c4 c c
  \barNumberCheck #27 c4 c b
  \barNumberCheck #28 d4 c b
  \barNumberCheck #29 a2.
  \barNumberCheck #30 a4 b c
  \barNumberCheck #31 d4 e d
  \barNumberCheck #32 f4 e d
  \barNumberCheck #33 c2.
  \barNumberCheck #34 c4 d e
  \barNumberCheck #35 f4 g f
  \barNumberCheck #36 f2 e16 f g ( f )
  \tempo 4=200
  \barNumberCheck #37 < e b gis e b e, >2.
  \barNumberCheck #38 e,,8 [ < b'' e > ] gis, [ < b' e > ] b, [ < b' e > ]
  \barNumberCheck #39 e,,8 [ < b'' e > ] gis, [ < b' e > ] b, [ < b' e > ]
  \barNumberCheck #40 a,8 [ < c' e > ] c, [ < c' e > ] b, [ < c' e > ]
  \barNumberCheck #41 a,8 [ < c' e > ] g, [ < b' e > ] f, [ < b' e > ]
  \barNumberCheck #42 e,,8 [ < b'' e > ] gis, [ < b' e > ] b, [ < b' e > ]
  \barNumberCheck #43 e,,8 [ < b'' e > ] gis, [ < b' e > ] b, [ < b' e > ]
  \barNumberCheck #44 a,8 [ < c' e> ] b, [ < c' e > ] c, [ < c' e > ]
  \barNumberCheck #45 d,8 [ < c' e> ] \stemDown e, [ < c' e > ] f, [ < c' e > ]
  \bar "|:"
  \barNumberCheck #46 \ringer \times 2/3 { e,8 \startTextSpan  [ e' b
] } \times 2/3 { gis8 [ e' b ] } \times 2/3 { b\3 [ e b ] }
  \barNumberCheck #47 \times 2/3 { e,8 [ e' b ] } \times 2/3 { gis8 [
e' b ] } \times 2/3 { b\3 [ e b ] }
  \barNumberCheck #48 \times 2/3 { a8 [ e' c ] } \times 2/3 { c\3 [ e
e\2 ] } \times 2/3 { b\3 [ e d ] }
  \barNumberCheck #49 \times 2/3 { a8 [ e' c ] } \times 2/3 { g [ e' b
] } \times 2/3 { f [ e' b ] }
  \bar ":|"
  \barNumberCheck #50 \stemNeutral e,4 gis b \stopTextSpan
  \barNumberCheck #51 \stemUp e2 e4
  \barNumberCheck #52 e4 e d
  \barNumberCheck #53 f4 e c
  \barNumberCheck #54 d d c
  \barNumberCheck #55 <b e> d b
  \barNumberCheck #56 c c b
  \barNumberCheck #57 d c a
  \barNumberCheck #58 gis4 gis a
  \barNumberCheck #59 b2 e4
  \barNumberCheck #60 a4 a gis
  \barNumberCheck #61 g f e
  \barNumberCheck #62 g g fis
  \barNumberCheck #63 f e d
  \barNumberCheck #64 f f e
  \barNumberCheck #65 d c d
  e e dis
  d c b
  c c c
  \acciaccatura d8 c4 b a
  b b b
  \acciaccatura c8 b4 a g
  a b c
  c d dis
}

lower = {
  \barNumberCheck #1 s2.
  \barNumberCheck #2 < gis d e, >2.
  \barNumberCheck #3 e,2.
  \barNumberCheck #4 a2.
  \barNumberCheck #5 a2.
  \barNumberCheck #6 g2.
  \barNumberCheck #7 f2.
  \barNumberCheck #8 e2.~e2.
  \barNumberCheck #10 s2.
  \barNumberCheck #11 s2.
  \barNumberCheck #12 s2.
  \barNumberCheck #13 s2.
  \barNumberCheck #14 s2.
  \barNumberCheck #15 s2.
  \barNumberCheck #16 s2.
  \barNumberCheck #17 s2.
  \barNumberCheck #18 s2.
  \barNumberCheck #19 s2.
  \barNumberCheck #20 s2.
  \barNumberCheck #21 s2.
  \barNumberCheck #22 <b' gis e,>2.
  \barNumberCheck #23 e,,2.
  \barNumberCheck #24 e2.
  \barNumberCheck #25 c'4 e g
  \barNumberCheck #26 c,2.
  \barNumberCheck #27 e2.
  \barNumberCheck #28 c2.
  \barNumberCheck #29 f,4 c' f
  \barNumberCheck #30 f,2.
  \barNumberCheck #31 f'2.
  \barNumberCheck #32 g,2.
  \barNumberCheck #33 c4 e g
  \barNumberCheck #34 c,2.
  \barNumberCheck #35 d2.
  \barNumberCheck #36 < b' a d, >2.
  \barNumberCheck #37 s2.
  \barNumberCheck #38 s2.
  \barNumberCheck #39 s2.
  \barNumberCheck #40 s2.
  \barNumberCheck #41 s2.
  \barNumberCheck #42 s2.
  \barNumberCheck #43 s2.
  \barNumberCheck #44 s2.
  \barNumberCheck #45 s2.
  \barNumberCheck #46 s2.
  \barNumberCheck #47 s2.
  \barNumberCheck #48 s2.
  \barNumberCheck #49 s2.
  \barNumberCheck #50 s2.
  \barNumberCheck #51 < e,, b' e gis b >2.
  \barNumberCheck #52 < a a' c >2.
  \barNumberCheck #53 a2.
  \barNumberCheck #54 < e d' g >2.
  \barNumberCheck #55 g'2.
  \barNumberCheck #56 < f, f' a >2.
  \barNumberCheck #57 < f' a >2.
  \barNumberCheck #58 < e, b' e >2.
  \barNumberCheck #59 < e b' e gis >2.
  \barNumberCheck #60 a2.
  \barNumberCheck #61 a2.
  \barNumberCheck #62 g2.
  \barNumberCheck #63 g2.
  \barNumberCheck #64 f2.
  \barNumberCheck #65 f2.
  e2.
  e2.
  a2.
  a2.
  g2.
  g2.
  f2.
  ~f2.
}

{
  \time 3/4
  \set Score.barNumberVisibility = #all-bar-numbers-visible
  \bar ""
  \set Score.voltaSpannerDuration = #(ly:make-moment 3 4)
  \override Score.BarNumber #'break-visibility = #'#(#t #t #t)
  \set Score.defaultBarType = "|"
  <<
  \new Staff \relative c'' {
    <<
  \override TupletBracket #'bracket-visibility = ##t
      \new Voice = "1" { \voiceOne \upper }
      \new Voice = "2" { \voiceTwo \lower }
    >>
  }
  \new TabStaff \relative c' {
    <<
      \new TabVoice = "t1" { \voiceOne \upper }
      \new TabVoice = "t2" { \voiceTwo \lower }
    >>
  }
  >>
}

Note that the last tab overlaps the bottom of the page! Clearly it
shouldn't. How do I work around this problem (somehow I don't think I
should have to but that is another issue...)?

--hsm




reply via email to

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