lilypond-user
[Top][All Lists]

 From: Mats Bengtsson Subject: Re: Missing noteheads Date: Mon, 14 Aug 2006 10:02:58 +0200 User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13) Gecko/20060417

You have certainly exposed a bug/inconsistency, but probably not

the one you thought that you found. I include a copy of this email to lilypond-bug.

First of all, the note heads and other symbols should certainly work in your

first example. As far as I can see from your earlier emails, you have managed to get lilypond-book to work correctly with other files and if you use exactly
the same sequence of commands this time, you should get a correct output
also in this example.

Back to the bug. Your second example contains two \score{...} sections
(even though you haven't written them out explicitly). This doesn't work
in lilypond-book and if you really want two (or more) separate scores in
one and the same example, you should add a \book{...} around the full
example (then you also need to add the \score{...} statements explicitly).

The rest of my answer is mainly intended for bug-lilypond.
What happens in tiM's second example is a collision between two
different naming conventions:

A. When there is more then a single \score{...} block in a lilypond example
within lilypond-book, the corresponding outputs are named
<basename>{.eps,-systems.tex,-N.eps}
<basename>-1{.eps,-systems.tex,-N.eps}
<basename>-2{.eps,-systems.tex,-N.eps}
...

where the .eps file contains the full score and all fonts whereas the -N.eps files contain single score lines and no fonts (to avoid duplicating the same
 information several times in the PS file for the full document).

This is similar to the naming scheme obtained if you call LilyPond directly
 on a .ly file that contains several \book{...} blocks.


B. The score lines for each single score of a lilypond example in lilypond-book
 are named
<basename>-1.eps
<basename>-2.eps
<basename>-3.eps
...

Clearly, these two naming schemes collide and the same file names will

appear several times. Since the score blocks are processed in sequential order, the <basename>-1.eps file with the first score line of the first score will be
overwritten by the full score of the second score and so on.

For example, the following snippet
\begin{lilypond}
\score{\repeat unfold 4 {c'1 \break | }}
\score{\repeat unfold 4 {d'1 \break | }}
\score{\repeat unfold 4 {e'1 \break | }}
\score{\repeat unfold 4 {f'1 \break | }}
\end{lilypond}
will result in
The full second \score{...} followed by
The full third \score{...} followed by
The full fourth \score{...} followed by
The last score line of the first score.

If we changed one of these naming schemes, for example using something else

then a '-' before the number, then the output from lilypond-book would at least contain the full first score while the rest of the scores would disappear, which at least is a simple rule that easily can be documented ("only the first \score{...}
block will appear in the output"). Well, at second thought the message to be
conveyed in the manual should anyway be "Use only a single \score{...} block
or combine everything into a single \book{...} block".


I've actually considered adding a 'book' or 'keep-together' option to lilypond-book
snippets, which adds the \book{...} block in the generated .ly file.

/Mats

/Mats

tiM wrote:


Hi, i think i found a very strange bug using lilypond-book. Now i'm just new
at lilypond, but the inconsistency makes me think it's not my fault, still
i'm aware that it could well be me doing something wrong.

The following code leads to an output with missing noteheads and time
signature and fingering in courier new.

\begin{lilypond}
\relative c'{
\context RhythmicStaff {
\override Staff.TimeSignature  #'style = #'()
\time 4/4

g4_4 g_4 a_5 a_5 g2_4 e_2 }
}
\end{lilypond}

While the exact same code placed twice leads to the output I expected from
the input above.

\begin{lilypond}
\relative c'{
\context RhythmicStaff {
\override Staff.TimeSignature  #'style = #'()
\time 4/4

g4_4 g_4 a_5 a_5 g2_4 e_2 }
}
\relative c'{
\context RhythmicStaff {
\override Staff.TimeSignature  #'style = #'()
\time 4/4
g4_4 g_4 a_5 a_5 g2_4 e_2
}
}
\end{lilypond}

How is this possible?

Tnx. tiM

_______________________________________________
lilypond-user mailing list
http://lists.gnu.org/mailman/listinfo/lilypond-user


--
=============================================
Mats Bengtsson
Signal Processing
Signals, Sensors and Systems
Royal Institute of Technology
SE-100 44  STOCKHOLM
Sweden
Phone: (+46) 8 790 8463
Fax:   (+46) 8 790 7260