@itemize @bullet
+@item Running trills now have their own spanner and event,
+for example,
+
+@example
+ c1\startTrillSpan c4\stopTrillSpan
+@end example
+
+@item There is a new markup command @code{\postscript} that takes a
+string that is dumped as verbatim PostScript in the output.
+
+@item The melody for a @code{\lyricsto} text can be changed during a
+melody by setting the @code{associatedVoice} property.
+
+@item The @code{\lyricsto} keyword now automatically switches on
+@code{\lyrics} mode.
+
+@item The LilyPond binary now supports output options
+@code{--dvi} @code{--png} @code{--ps} @code{--pdf} and
+@code{--preview}. The old wrapper script for La@TeX{} has been
+renamed to @code{lilypond-latex}.
+
+@item Support ambituses has been rewritten. The Ambitus object is now
+a grouping object, composed of @code{AmbitusLine},
+@code{AmbitusAccidental} and @code{AmbitusNoteHead}. These objects may
+be tuned similar to accidentals and note heads.
+
+@item Ledger lines are now shortened when the spacing is tight. This
+prevents ledger lines from colliding with each other.
+
+@item Slur formatting has been rewritten. The new slur code
+works similar to the Beam formatter: scores are assigned for all
+esthetic components of a slur. A large number of combinations for
+begin and end points is then tried out. Slurs will now also take into
+account collisions with staff lines, scripts (like staccato and
+accent) and accidentals.
+
+
+@item In the LilyPond emacs mode, entering @code{|} will display the
+ current beat within the measure.
+
+@item Colliding notes are now correctly aligned relative to notes in other staves.
+
+@item An experimental GNOME output backend is available for developers.
+It depends on several unreleased packages such as gnome-guile TLA and
+Pango CVS. The output interface coverage is sparse, but it already
+does support point-and-click on the GNOME Canvas. See also
+@file{scm/output-gnome.scm}.
+
+@item Context definitions are now stored in identifiers that match the
+context name, in other words, to modify a @code{Staff} context, the
+following code may be used.
+
+@example
+\context @{
+ \Staff
+ ..
+@}
+@end example
+
+@item A new block, @code{\bookpaper} has been introduced to
+hold settings for paper size and output scaling. Further options
+include @code{raggedbottom} (if set, systems are not vertically filled
+to reach the bottom of the page), and @code{raggedlastbottom}.
+
+
+
+@item Support for fret diagrams has been contributed by Carl
+D. Sorensen. @file{input/test/fret-diagram.ly} contains an example.
+
+@item The @code{--safe-mode} has been revisited: GUILE evaluation
+is done in the R5RS safe module, with only the basic @code{ly:}
+interface available and malicious @TeX{} code is stopped. However, to
+be reasonably safe, you are advised to use the PostScript backend
+rather than the @TeX{} backend anyway; and if possible use an UML
+sandbox to run gs or latex.
@item Music syntax can now be extended seamlessly. As an example,
-here is the new implementation @code{\apply},
+here is the new implementation @code{\applymusic},
@example
- apply = #(ly:make-music-function
+ applymusic = #(ly:make-music-function
(list procedure? ly:music?) ; signature
(lambda (where func music) ; the function
(func music)))
@end example
-@item Music can be used as a markup.
-When inserting a @code{score} block as part of a @code{\markup},
-it produces a rendered markup of the music.
-
-@example
-@c TODO, see input/test/markup-score.ly
-@end example
+@item @code{\apply} has been renamed to @code{\applymusic}.
+@item Music can be used as a markup.
+When inserting a @code{score} block as part of a @code{\markup}, it
+produces a rendered markup of the music. An example is in
+@file{input/test/markup-score.ly}.
@item LilyPond expressions can be embedded into Scheme. The syntax for
-this is @code{#@{ ... #@}}. Within such a block, Scheme forms, for
-instance variable names, can be introduced thanks to a @code{$}
-character (@code{$$} results in a single `$' character). These forms
-are then printed in the pattern.
+this is @code{#@{ ... #@}}. Within such a block, Scheme forms can be
+introduced using a @code{$} character (@code{$$} results in a single
+`$' character). These forms are then inserted in the pattern.
@example
#(define (textoffset dx dy)
(ly:export
#@{ \override Voice.TextScript #'extra-offset = #(cons $dx $dy) #@}))
-\score @{
- \notes @{
- c'^"normal text"
- %% the following statement is the same as
- %% \override Voice.TextScript #'extra-offset = #(cons 2 -3)
- #(textoffset 2 -3)
- c'^"text with offset"
- @}
+@{
+ c'^"normal text"
+ %% The following embedded scheme call is the same as
+ %% \override Voice.TextScript #'extra-offset = #(cons 2 -3)
+ #(textoffset 2 -3)
+ c'^"text with offset"
@}
@end example
-@c FIXME: un-geekify
-@item Music lists are allowed at toplevel, and are handled by
-@code{default-toplevel-music-handler}. Similarly, a @code{score} block
-at toplevel is handled by @code{default-toplevel-score-handler} an a
-@code{book} at toplevel is handled by @code{default-toplevel-book-handler}.
-
-These default handlers have the following effect. A Music list at
-toplevel is encapsulated in a @code{score} block, and a @code{score}
-block at toplevel is encapsulated in a @code{book} block. A
-@code{book} block at toplevel generates printed output.
+@item A music list at toplevel is interpreted as implicit @code{\score}
+a @code{\score} block at toplevel is interpreted as an implicit
+@code{\book} and @code{\notes} mode is the default lexer mode. The
+result is that
@example
\header @{ title = "The Title" @}
-\notes @{ a b c @}
+@{ a b c @}
@end example
-is the same as
+is interpreted as
@example
\header @{ title = "The Title" @}
@}
@end example
+This is handled by the function defined in
+@code{toplevel-music-handler}. Similarly, @code{\score} and
+@code{\book} are handled by @code{toplevel-score-handler} and a
+@code{toplevel-book-handler}. By changing these variables, different
+results can be obtained.
+
+This required a small change in the syntax. Mode changing commands,
+such as @code{\chords} and @code{\figures} now be directly followed by
+delimeters. The following example demonstrates the new behavior,
+
+@verbatim
+ \figures \context Figures { .. } % wrong
+ \context Figures \figures { .. } % right
+@end verbatim
+
+
@item Start pitch for @code{relative} music is optional for music lists.
-The default value is one octave below middle C.
+The default value is middle C.
@c update-me? formal definition of newaddlyrics, once it works
-@item Combining lyrics with music can be @code{newlyrics}
+@item Combining lyrics with music can be done with @code{\newlyrics}
@example
-<<
\relative @{
\clef bass
d2 d c4 bes a2 \break
\newlyrics @{
Not much can go wrong!
@}
->>
@end example
-Syntactically, @code{\newlyrics} acts like an infix operator
+Syntactically, @code{\newlyrics} acts like an infix operator.
@item The parser is encapsulated in a Scheme function
@code{ly:parse-file}, so the following fragment processes two files
@verbatim
- #(ly:parse-file "another.ly")
- \score { \notes { c4 }}
+#(ly:parse-file "another.ly")
+\score { \notes { c4 }}
@end verbatim
@item The @code{font-encoding} property can now be used to select
@code{\encoding}. The strings for markup texts are translated
automatically.
-@item The toplevel block @code{book} introduces page layout.
-A @code{book} groups @code{score} blocks into one page layout entity.
-Page layout consists of markup titles, headers and footers, and page
-breaking. Two page breaking algorithms are available, the classic
-ragged pages (the default), and optimal page breaking
+@item The toplevel block @code{\book} introduces page layout.
+A @code{\book} groups @code{\score} blocks into one page layout
+entity. For example, two scores are combined in one book with
@example
-\paper @{
- %% Select page breaking function.
- %% #(define page-breaking ly:ragged-page-breaks)
- #(define page-breaking ly:optimal-page-breaks)
-@}
\book @{
\score @{ ... @}
\score @{ ... @}
@}
@end example
+Titling and page breaks are handled by LilyPond. For automatic page
+breaking, two algorithms are available, the classic ragged pages (the
+default), and optimal page breaking.
+Page breaks may be inserted manually with
+@example
+ \pageBreak
+@end example
+
+@item
The @code{lilypond} program does not generate La@TeX{} titles or page
layout. If you need La@TeX{} titles, you can use the
@code{lilypond-book} program.
for simultaneous music.
To convert your files from <PITCHES> to <<PITCHES>>, use the script
-included in buildscripts/convert-new-chords.py
+included in @file{buildscripts/convert-new-chords.py}.
This change was introduced for the following reasons