]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/topdocs/NEWS.texi
(ly:optimal-page-breaks): typo.
[lilypond.git] / Documentation / topdocs / NEWS.texi
index bbd55c2d4436060d42f8cba08b9cfa86713b17db..133d2f6f59646bbad3b995985c98f6198c5ccfd6 100644 (file)
@@ -7,8 +7,92 @@
 @unnumbered New features in 2.3 since 2.2
 
 @itemize @bullet
-@item The @code{--safe} mode has been revisited: it makes the basic
-ly: interface available, and stops malicious @TeX{} code.
+
+@item Key signature cancellations are now printed before the bar line,
+and their appearance has been improved.
+
+
+@item The automatic staff changer, which is invoked with
+@code{\autochange}, now creates the @code{up} and @code{down} staff
+automatically, and uses bass clef for the bottom staff.
+
+@item There is now support for putting two slurs on chords, both above
+and below. This is switched on with the @code{doubleSlurs} property.
+
+@item Running trills now have their own spanner and event,
+
+@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 for ambitus 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{\applymusic},
@@ -23,43 +107,40 @@ here is the new implementation @code{\applymusic},
 @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.
-
-@example
-@c TODO, see input/test/markup-score.ly
-@end example
-
+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 can be
 introduced using a @code{$} character (@code{$$} results in a single
-`$' character).  These forms are then printed in the pattern.
+`$' 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
 
-@item Music lists are allowed at toplevel.
+@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" @}
@@ -70,30 +151,29 @@ is the same as
 @}    
 @end example
 
-These toplevel forms 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}.
+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.
 
-@ignore
+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,
 
-@c FIXME: un-geekify
-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.
-@end ignore
+@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
@@ -104,7 +184,6 @@ The default value is one octave below middle C.
     \newlyrics @{
        Not much can go wrong!
     @}
->>
 @end example
 
 Syntactically, @code{\newlyrics} acts like an infix operator.
@@ -113,8 +192,8 @@ Syntactically, @code{\newlyrics} acts like an infix operator.
 @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
@@ -127,24 +206,26 @@ package installed to function properly.
 @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.
@@ -804,7 +885,7 @@ for chords, and
 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