@end ignore
+@item
+It is now possible to add text to analysis brackets through the
+@code{HorizontalBracketText} object.
+@lilypond[quote,verbatim]
+\layout {
+ \context {
+ \Voice
+ \consists "Horizontal_bracket_engraver"
+ }
+}
+
+{
+ \once \override HorizontalBracketText.text = "a"
+ c''\startGroup d''\stopGroup
+ e''-\tweak text "a'" \startGroup d''\stopGroup
+}
+@end lilypond
+
+@item
+The ends of hairpins may now be fine-tuned using the @code{shorten-pair}
+grob property, which previously only affected text-spanners like
+@code{TupletBracket} and @code{OttavaBracket}. Positive values offset
+to the right, negative to the left.
+@lilypond[quote,verbatim]
+{ \once \override Hairpin.shorten-pair = #'(2 . 2)
+ c'1~\<
+ c'2~ c'\!
+ \once \override Hairpin.shorten-pair = #'(-2 . -2)
+ c'1~\<
+ c'2~ c'\! }
+@end lilypond
+
+@item
+In fret-diagrams the distance between frets and the distance between strings is
+now independently adjustable. Available are @code{fret-distance} and
+@code{string-distance} as subproperties of @code{fret-diagram-details}.
+@lilypond[verbatim,quote]
+fretMrkp = \markup { \fret-diagram-terse #"x;x;o;2;3;2;" }
+
+\markuplist
+\override #'(padding . 2)
+\table #'(0 -1) {
+ "default"
+
+ \fretMrkp
+
+ "fret-distance"
+
+ \override #'(fret-diagram-details . ((fret-distance . 2)))
+ \fretMrkp
+
+ "string-distance"
+
+ \override #'(fret-diagram-details . ((string-distance . 2)))
+ \fretMrkp
+}
+@end lilypond
+
+@item
+Accidental rules can now be defined across @code{ChoirStaff} contexts.
+Two new rules @code{choral} and @code{choral-cautionary} are available
+that combine the characteristics of @code{modern-voice} and @code{piano}
+or their equivalents with cautionary accidentals.
+
+@item
+The music function @code{\unfoldRepeats} can now take an
+optional argument-list specifying which type(s) of repeated music
+should be unfolded. Possible entries are @code{percent}, @code{tremolo},
+@code{volta}.
+If the optional argument-list is unspecified, @code{repeated-music} will be
+used, unfolding all.
+
+@item
+A new @code{output-attributes} grob property is now used for svg output
+instead of the @code{id} grob property. It allows multiple attributes
+to be defined as an association list. For example, @code{#'((id . 123)
+(class . foo) (data-whatever . @qq{bar}))} will produce the following
+group tag in an SVG file: @code{<g id=@qq{123} class=@qq{foo}
+data-whatever=@qq{bar}> @dots{} </g>}.
+
+@item
+Slurs and phrasing slurs may now be started from individual notes
+in a chord. Several simultanous slurs per @code{Voice} need to be
+distinguished by @code{spanner-id} setting.
+
+@item
+The music and grob property @code{spanner-id} for distinguishing
+simultaneous slurs and phrasing slurs has been changed from a
+string to a @q{key}, a non-negative integer or symbol.
+
+@item
+There is a new command @code{\=} for specifying the
+@code{spanner-id} for simultaneous slurs and phrasing slurs.
+@lilypond[verbatim,quote]
+\fixed c' {
+ <c~ f\=1( g\=2( >2 <c e\=1) a\=2) >
+}
+@end lilypond
+
+@item
+Blocks introduced with @code{\header} can be stored in variables
+and used as arguments to music and scheme functions and as the
+body of @code{#@{@dots{}#@}} constructs. They are represented as
+a Guile module.
+
+While @code{\book}, @code{\bookpart}, @code{\score}, @code{\with},
+@code{\layout}, @code{\midi}, @code{\paper} blocks can be passed
+around in similar manner, they are represented by different data
+types.
+
+@item
+Dot-separated symbol lists like @code{FretBoard.stencil} were
+already supported as of version@tie{}2.18. They may now also
+contain unsigned integers, and may alternatively be separated by
+commata. This allows usage such as
+@lilypond[quote,verbatim]
+{ \time 2,2,1 5/8 g'8 8 8 8 8 }
+@end lilypond
+and
+@example
+\tagGroup violin,oboe,bassoon
+@end example
+
+@item
+Such lists may also be used in expressions for assignments, sets,
+and overrides. This allows usage such as
+@lilypond[quote,verbatim]
+{ \unset Timing.beamExceptions
+ \set Timing.beatStructure = 1,2,1
+ g'8 8 8 8 8 8 8 8 }
+@end lilypond
+
+@item
+Association list elements could previously be assigned values
+individually (for example, paper variables like
+@code{system-system-spacing.basic-distance}). They may now be
+also referenced in this manner, as with
+@example
+\paper @{
+ \void \displayScheme \system-system-spacing.basic-distance
+@}
+@end example
+
+In combination with the previously mentioned changes, this allows
+setting and referencing pseudovariables like @code{violin.1}.
+
+@item
+LilyPond source files may now be embedded inside the generated PDF files.
+This experimental feature is disabled by default and may be regarded as unsafe,
+as PDF documents with hidden content tend to present a security risk.
+Please note that not all PDF viewers have the ability to handle embedded
+documents (if not, the PDF output will appear normally and source files
+will remain invisible). This feature only works with the PDF backend.
+
+@item
+French note names are now defined specifically instead of
+being aliased to Italian note names: in addition to the
+generic Italian-derived syntax, the @var{d} pitch may be
+entered as @code{ré}. Double sharps may also be
+entered using the @code{-x} suffix.
+
+@item
+Additional bass strings (for lute tablature) are supported.
+@lilypond[quote,verbatim]
+m = { f'4 d' a f d a, g, fis, e, d, c, \bar "|." }
+
+\score {
+ \new TabStaff \m
+ \layout {
+ \context {
+ \Score
+ tablatureFormat = #fret-letter-tablature-format
+ }
+ \context {
+ \TabStaff
+ stringTunings = \stringTuning <a, d f a d' f'>
+ additionalBassStrings = \stringTuning <c, d, e, fis, g,>
+ fretLabels = #'("a" "b" "r" "d" "e" "f" "g" "h" "i" "k")
+ }
+ }
+}
+@end lilypond
+
+@item
+The markup-list-command @code{\table} is now available.
+Each column may be aligned differently.
+@lilypond[quote,verbatim]
+\markuplist {
+ \override #'(padding . 2)
+ \table
+ #'(0 1 0 -1)
+ {
+ \underline { center-aligned right-aligned center-aligned left-aligned }
+ one "1" thousandth "0.001"
+ eleven "11" hundredth "0.01"
+ twenty "20" tenth "0.1"
+ thousand "1000" one "1.0"
+ }
+}
+@end lilypond
+
+@item
+A new markup-command, @code{\with-dimensions-from}, makes
+@code{\with-dimensions} easier to use by taking the new
+dimensions from a markup object, given as first argument.
+@lilypond[quote,verbatim]
+\markup {
+ \pattern #5 #Y #0 "x"
+ \pattern #5 #Y #0 \with-dimensions-from "x" "f"
+ \pattern #5 #Y #0 \with-dimensions-from "x" "g"
+ \override #'(baseline-skip . 2)
+ \column {
+ \pattern #5 #X #0 "n"
+ \pattern #5 #X #0 \with-dimensions-from "n" "m"
+ \pattern #5 #X #0 \with-dimensions-from "n" "!"
+ }
+}
+@end lilypond
+
+@item
+There are two new page breaking functions. @code{ly:one-page-breaking}
+automatically adjusts the height of the page to fit the music, so that
+everything fits on one page. @code{ly:one-line-auto-height-breaking}
+is like @code{ly:one-line-breaking}, placing the music on a single
+line and adjusting the page width accordingly, however it also
+automatically adjusts the page height to fit the music.
+
+@item
+Markup-command @code{\draw-squiggle-line} is now available.
+Customizing is possible with overrides of @code{thickness}, @code{angularity},
+@code{height} and @code{orientation}
+@lilypond[quote,verbatim]
+\markup
+ \overlay {
+ \draw-squiggle-line #0.5 #'(3 . 3) ##t
+
+ \translate #'(3 . 3)
+ \override #'(thickness . 4)
+ \draw-squiggle-line #0.5 #'(3 . -3) ##t
+
+ \translate #'(6 . 0)
+ \override #'(angularity . -5)
+ \draw-squiggle-line #0.5 #'(-3 . -3) ##t
+
+ \translate #'(3 . -3)
+ \override #'(angularity . 2)
+ \override #'(height . 0.3)
+ \override #'(orientation . -1)
+ \draw-squiggle-line #0.2 #'(-3 . 3) ##t
+ }
+@end lilypond
+
+@item
+A new command, @code{\RemoveAllEmptyStaves}, has been made available, which
+acts exactly like @code{\RemoveEmptyStaves}, except for also removing empty
+staves on the first system in a score.
+
+@item
+Markup-commands @code{\undertie} and @code{\overtie} are now available, as well
+as the generic markup-command @code{\tie}.
+@lilypond[quote,verbatim]
+\markup {
+ \undertie "undertied"
+ \overtie "overtied"
+}
+
+m = {
+ c''1 \prall -\tweak text \markup \tie "131" -1
+}
+
+{ \voiceOne \m \voiceTwo \m }
+@end lilypond
+
+@item
+@code{TabStaff} is now able to print micro-tones for bendings etc.
+@lilypond[quote,verbatim]
+\layout {
+ \context {
+ \Score
+ supportNonIntegerFret = ##t
+ }
+}
+
+mus = \relative { c'4 cih d dih }
+
+<<
+ \new Staff << \clef "G_8" \mus >>
+ \new TabStaff \mus
+>>
+@end lilypond
+
+@item
+Two new styles of whiteout are now available. The @code{outline} style
+approximates the contours of a glyph's outline, and its shape is
+produced from multiple displaced copies of the glyph. The
+@code{rounded-box} style produces a rounded rectangle shape. For all
+three styles, including the default @code{box} style, the whiteout
+shape's @code{thickness}, as a multiple of staff-line thickness, can be
+customized.
+
+@lilypond[verbatim,quote]
+\markup {
+ \combine
+ \filled-box #'(-1 . 15) #'(-3 . 4) #1
+ \override #'(thickness . 3)
+ \whiteout whiteout-box
+}
+\markup {
+ \combine
+ \filled-box #'(-1 . 24) #'(-3 . 4) #1
+ \override #'(style . rounded-box)
+ \override #'(thickness . 3)
+ \whiteout whiteout-rounded-box
+}
+\markup {
+ \combine
+ \filled-box #'(-1 . 18) #'(-3 . 4) #1
+ \override #'(style . outline)
+ \override #'(thickness . 3)
+ \whiteout whiteout-outline
+}
+\relative {
+ \override Staff.Clef.whiteout-style = #'outline
+ \override Staff.Clef.whiteout = 3
+ g'1
+}
+@end lilypond
+
+@item
+All of @code{\override}, @code{\revert}, @code{\set}, and
+@code{\unset} now work with the @code{\once} prefix for making
+one-time settings.
+@lilypond[quote,verbatim]
+\relative {
+ c'4 d
+ \override NoteHead.color = #red
+ e4 f |
+ \once \override NoteHead.color = #green
+ g4 a
+ \once \revert NoteHead.color
+ b c |
+ \revert NoteHead.color
+ f2 c |
+}
+@end lilypond
+
+@item
+When outputting MIDI, LilyPond will now store the @code{title}
+defined in a score's @code{\header} block (or, if there is no
+such definition on the @code{\score} level, the first such
+definition found in a @code{\header} block of the score's
+enclosing @code{\bookpart}, @code{\book}, or top-level scope)
+as the name of the MIDI sequence in the MIDI file. Optionally,
+the name of the MIDI sequence can be overridden using the new
+@code{midititle} @code{\header} field independently of
+@code{title} (for example, in case @code{title} contains markup
+code which does not render as plain text in a satisfactory way
+automatically).
+
@item
Music (and scheme and void) functions and markup commands that
-just supply the final parameters to a chain of music and function
-and markup command calls, respectively, can now be defined in the
-form of just writing the expression cut short with @code{\etc}.
+just supply the final parameters to a chain of overrides, music
+function and markup command calls can now be defined in the form
+of just writing the expression cut short with @code{\etc}.
+
@lilypond[verbatim,quote]
bold-red-markup = \markup \bold \with-color #red \etc
highlight = \tweak font-size 3 \tweak color #red \etc
legacy use of @code{parser} and @code{location} arguments,
providing backwards-compatible semantics for some time.
-@item
-The @code{whiteout} grob property and @code{\whiteout} markup command
-now create a white background built from multiple displaced copies of
-the glyph in order to approximate the contours of its outline.
-The previous rounded box white background can be achieved with the
-new @code{whiteout-box} grob property and @code{\whiteout-box} markup
-command. Setting the @code{whiteout} property to a number now sets
-the thickness of the white outline as a multiple of staff-line
-thickness. Similarly, overriding the @code{thickness} property of
-the @code{\whiteout} markup command sets the thickness of the white
-outline it produces.
-
@item
In the "english" notename language, the long notenames for pitches
with accidentals now contain a hyphen for better readability. You
constructs.
@item
-The @code{NullVoice} context is now @q{below} @code{Score}.
-
-@item
-A new command @code{\tagGroup} has now been added. This compliments
+A new command @code{\tagGroup} has now been added. This complements
the existing @code{\keepWithTag} and @code{\removeWithTag} commands.
For Example:
declares a list of @q{tags} that belong to a single @q{tag group}.
@example
-\keepwithTag#'violinI
+\keepWithTag #'violinI
@end example
Is now only concerned with @q{tags} from @q{violinI}’s tag group.
position of the tuplet bracket, even if it was not printed. This could
lead to stranded tuplet numbers. Now they are now positioned
closer to the kneed-beam when an appropriate beam segment exists for its
-placement and when the the bracket is not drawn.
+placement and when the bracket is not drawn.
Collision detection is also added, offsetting horizontally if too close
to an adjoining note column but preserving the number's vertical
\clef "varC" c c c c
\clef "altovarC" c c c c
\clef "tenorvarC" c c c c
- \clef "baritonevarC" c c c
+ \clef "baritonevarC" c c c c
\clef "varpercussion" c c c c
@end lilypond