lilypond-devel
[Top][All Lists]
Advanced

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

Re: Quesgion about breakbefore in \header { }


From: Graham Percival
Subject: Re: Quesgion about breakbefore in \header { }
Date: Tue, 29 Mar 2011 21:50:27 +0100

On 3/29/11, James Lowe <address@hidden> wrote:
> However if I move the \header { breakbefore = ##t } anywhere else from this
> specific place I get an 'unexepcted \header' error.. for instance:
>
> \book {
>   \header { title = "Hello" }
>   \score {
>     \header { breakbefore = ##t }
>     \repeat unfold 10 { e'' e'' e'' e'' }
>   }
>   \score {
>     \repeat unfold 10 { b' b' b' b' }
>   }
> }
>
> The header is still inside the \score { } but this fails.


Yes, because a score must start with a music expression.  LM 3?


> Also if I put it in the second \score construct like so:
>
> \book {
>   \header { title = "Hello" }
>   \score {
>     \repeat unfold 10 { e'' e'' e'' e'' }
>   }
>   \score {
>     \repeat unfold 10 { b' b' b' b' }
>     \header { breakbefore = ##t }
>   }
> }
>
> I get the title on the page 1 with the first score and the second score on a
> new page - 2 pages instead of 3.


That seems to be expected -- there's a break before the second score?


> If I add a second 'header' making the assumption that the breakbefore will
> break the *previous* header, then this:
>
> \book {
>   \header { title = "hello" }
>   \score {
>     \repeat unfold 10 { e'' e'' e'' e'' }
>       \header { title = "goodbye" }
>   }
>   \score {
>     \repeat unfold 10 { b' b' b' b' }
>     \header { breakbefore = ##t }
>   }
> }
>
> Outputs the same as the one previous (I get no "goodbye" in my title).


Did you turn on print-all-headers ?  If not, then IIRC a \header{}
inside a \book{} will only print the piece and opus fields.


> If I try to move my real header inside the \score { }
>
> \book {
>   \score {
>     \repeat unfold 10 { e'' e'' e'' e'' }
>       \header { title = "goodbye" }
>   }
>   \score {
>     \repeat unfold 10 { b' b' b' b' }
>     \header { breakbefore = ##t }
>   }
> }
>
> Then I get 2 pages but no titles at all.


Sounds like the print-all-headers thing.


> So I really don't know what use this is as
>
> 1. It only allows one \header { } title to be displayed - even if you add
> different \header { } components (i.e. poet = or instrument = etc) they
> don't print.

Nothing to do with breakbefore; this is strictly a matter of headers in general.

> 2. You must put the \breakbefore in a *very* specific place else it does
> nothing or gives you a compilation error. You cannot just put it 'anywhere'
> inside the score and you have to put it in the 'first' and then in a place
> after the notes.

You "must" place it anywhere a \header is valid.  Again, nothing to do
with breakbefore in particular; this is just a general issue of
lilypond input syntax.
I know it's a bit iffy seeing a \header {breakbefore==#t} which
affects the "previous" music expression... think about it this way: a
\score{} is a "simultaneous" expression.  The music expression, and
any optional \header{}, \layout{}, and \midi{} all "happen" at the
"same time".

> So I'm struggling to see the point of this breakbefore and wonder if anyone
> really uses it in this context.

I think the problem lies in the general docs about input syntax, and
print-all-headers.  I'm more concerned about the first point -- could
you read Learning 3.1 How LilyPond input files work   and look for the
missing info?

(hmm... I almost wonder if we should have a "learning week" -- we
really encourage people to read the Learning manual against,
regardless of their ability level.  Highly advanced users won't learn
anything but might suggest improvements, while anybody who isn't one
of the top 10 lilypond users in the world are almost guaranteed to
learn something they missed the first few times reading it!)

Cheers,
- Graham



reply via email to

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