-@c -*-texinfo-*-
+@c -*- coding: latin-1; mode: texinfo; -*-
@node Changing defaults
@chapter Changing defaults
* Modifying context plug-ins::
* Layout tunings within contexts::
* Changing context default settings::
-* Defining new contexts::
+* Defining new contexts::
@end menu
@node Creating contexts
are equivalent.
+@cindex \once
Settings that should only apply to a single time-step can be entered
with @code{\once}, for example in
The adjustments of the previous subsections (@ref{Changing context
properties on the fly}, @ref{Modifying context plug-ins} and
@ref{Layout tunings within contexts}) can also be entered separate
-from the music, in the @code{\paper} block,
+from the music, in the @code{\layout} block,
@example
-\paper @{
+\layout @{
@dots{}
\context @{
\Staff
\set fontSize = #-2
- \override Stem #'thickness
+ \override Stem #'thickness = #4.0
\remove "Time_signature_engraver"
@}
@}
The statements
@example
\set fontSize = #-2
- \override Stem #'thickness
+ \override Stem #'thickness = #4.0
\remove "Time_signature_engraver"
@end example
Other contexts can be modified analogously.
-The @code{\set} keyword is optional within the @code{\paper} block, so
+The @code{\set} keyword is optional within the @code{\layout} block, so
@example
\context @{
them to one @code{\context} definition by referring to that variable.
-@node Defining new contexts
-@subsection Defining new contexts
+@node Defining new contexts
+@subsection Defining new contexts
Specific contexts, like @context{Staff} and @code{Voice}, are made of
simple building blocks, and it is possible to compose engraver
to indicate improvisation in Jazz pieces,
@lilypond[raggedright]
- \paper { \context {
+ \layout { \context {
\name ImproVoice
\type "Engraver_group_engraver"
\consists "Note_heads_engraver"
These settings are again done within a @code{\context} block inside a
-@code{\paper} block,
+@code{\layout} block,
@example
- \paper @{
+ \layout @{
\context @{
@dots{}
@}
\name ImproVoice
\type "Engraver_group_engraver"
\consists "Note_heads_engraver"
- \consists "Text_script_engraver"
+ \consists "Text_engraver"
\consists Pitch_squash_engraver
squashedPosition = #0
\override NoteHead #'style = #'slash
}
@end verbatim
-Putting both into a @code{\paper} block, like
+Putting both into a @code{\layout} block, like
@example
- \paper @{
+ \layout @{
\context @{
\name ImproVoice
@dots{}
@itemize @bullet
@item Its size is independent of the horizontal spacing, unlike slurs or beams.
-@item It is a piece of text. Granted, it's usually a very short text.
+@item It is a piece of text. Granted, it is usually a very short text.
@item That piece of text is typeset with a font, unlike slurs or beams.
@item Horizontally, the center of the symbol should be aligned to the
@verbatim
(Fingering
. (
- (print-function . ,Text_item::print)
+ (print-function . ,Text_interface::print)
(padding . 0.6)
(staff-padding . 0.6)
(self-alignment-X . 0)
and is passed similarly to lyric syllables.
If no @code{\encoding} has been specified, then the encoding is taken
-from the @code{\paper} block (or @code{\bookpaper}, if @code{\paper}
+from the @code{\layout} block (or @code{\paper}, if @code{\layout}
does not specify encoding). The variable @code{inputencoding} may be
set to a string or symbol specifying the encoding, e.g.
@verbatim
- \paper {
+ \layout {
inputencoding = "latin1"
}
@end verbatim
@verbatim
\header {
title = "Grazing cow"
- instrument = "Baßtuba"
+ instrument = "Baßtuba"
}
@end verbatim
Rather, you should say
@verbatim
- instrument = \markup { Baßtuba }
+ instrument = \markup { Baßtuba }
@end verbatim
@noindent
-or set @code{inputencoding} in the @code{\bookpaper} block.
+or set @code{inputencoding} in the @code{\paper} block.
There is a special encoding, called @code{TeX}. This encoding does not
reencode text for the font used. Rather, it tries to guess the width
@subsection Nested scores
It is possible to nest music inside markups, by adding a @code{\score}
-block to markup expression. Such a score must contain a @code{\paper}
+block to markup expression. Such a score must contain a @code{\layout}
block.
@lilypond[verbatim,raggedright]
c4 d^\markup {
\score {
\relative { c4 d e f }
- \paper { }
+ \layout { }
}
}
e f
* Multiple movements::
* Creating titles::
* Page breaking::
-* Paper size::
+* paper size::
* Page layout::
@end menu
@cindex font size, setting
@cindex staff size, setting
-@cindex @code{paper} file
+@cindex @code{layout} file
The Feta font provides musical symbols at eight different
sizes. Each font is tuned for a different staff size: at a smaller size
For example, the following piece contains lots of half, quarter, and
8th notes, the eighth note is followed by 1 note head width (NHW).
The quarter note is followed by 2 NHW, the half by 3 NHW, etc.
-@lilypond[fragment,verbatim,relative=1] c2 c4. c8 c4. c8 c4. c8 c8
+@lilypond[fragment,verbatim,relative=1]
+c2 c4. c8 c4. c8 c4. c8 c8
c8 c4 c4 c4
@end lilypond
@cindex @code{indent}
@cindex @code{linewidth}
+@c Although linewidth can be set in \layout, it should be set in paper
+@c block, to get page layout right.
+@c Setting indent in \paper block makes not much sense, but it works.
+
+@c Bit verbose and vague, use examples?
The most basic settings influencing the spacing are @code{indent} and
-@code{linewidth}. They are set in the @code{\paper} block. They
+@code{linewidth}. They are set in the @code{\layout} block. They
control the indentation of the first line of music, and the lengths of
the lines.
-If @code{raggedright} is set to true in the @code{\paper}
-block, then the lines are justified at their natural length. This
-useful for short fragments, and for checking how tight the natural
-spacing is.
+If @code{raggedright} is set to true in the @code{\layout} block, then
+the lines are justified at their natural length. This useful for
+short fragments, and for checking how tight the natural spacing is.
@cindex page layout
@cindex vertical spacing
The option @code{raggedlast} is similar to @code{raggedright}, but
-only affects the last line of the piece. No restrictions are put on
-that line. The result is similar to formatting text paragraphs. In a
+only affects the last line of the piece. No restrictions are put on
+that line. The result is similar to formatting text paragraphs. In a
paragraph, the last line simply takes its natural length.
-
+@c Note that for text there are several options for the last line.
+@c While Knuth TeX uses natural length, lead typesetters use the same
+@c stretch as the previous line. eTeX uses \lastlinefit to
+@c interpolate between both these solutions.
@node Line breaking
@subsection Line breaking
}
{ c'1 }
}
+ \paper {
+ linewidth = 8.0 \cm
+ }
}
@end lilypond
A more advanced option is to change the Scheme functions
@code{make-book-title} and @code{make-score-title} functions, defined
-in the @code{\bookpaper} of the @code{\book} block. These functions
+in the @code{\paper} of the @code{\book} block. These functions
create a block of titling, given the information in the
@code{\header}. The init file @file{ly/titling.scm} shows how the
default format is created, and it may be used as a template for
different styles.
-@cindex \bookpaper
+@cindex \paper
@cindex header
@cindex footer
@cindex page layout
a line break.
Page breaks are computed by the @code{page-breaking} function in the
-@code{\bookpaper} block.
+@code{\paper} block.
@refcommands
@cindex @code{\noPageBreak}
@code{\noPageBreak}
-@node Paper size
-@subsection Paper size
+@node paper size
+@subsection paper size
@cindex paper size
@cindex page size
To change the paper size, there are two commands,
@example
#(set-default-paper-size "a4")
- \paper@{
+ \layout@{
#(set-paper-size "a4")
@}
@end example
-The second one sets the size of the @code{\paper} block that it is in.
+The second one sets the size of the @code{\layout} block that it is in.
The following paper sizes are supported.
footers to each page.
The default layout responds to the following settings in the
-@code{\bookpaper} block
+@code{\paper} block
-@cindex \bookpaper
+@cindex \paper
@table @code
@item firstpagenumber
The value of the page number of the first page. Default is 1.
+@item printfirstpagenumber
+ If set to true will print the page number in the first page. Default is
+ false.
@item hsize
The width of the page
@item vsize
@item bottommargin
Margin between footer and bottom of the page
@item leftmargin
- Margin between the left side of the page and the beginning of the music.
+ Margin between the left side of the page and the beginning of the music
@item linewidth
- The length of the paper line.
+ The length of the systems
@item headsep
Distance between top-most music system and the page header
@item footsep
Distance between bottom-most music system and the page footer
@item raggedbottom
- If set to true, systems will not be spread across the page.
+ If set to true, systems will not be spread across the page.
+
+ This should be set false for pieces that have only two or three
+systems per page, for example orchestral scores.
+
@item raggedlastbottom
- If set to true, systems will not be spread to fill the last page.
+ If set to false, systems will be spread to fill the last page.
+
+ Pieces that amply fill two pages or more should have this set to
+true.
@item betweensystemspace
This dimensions determines the distance between systems. It is the
-ideal distance between the center of the bottom staff of one system, and
-the center of the top staff of the next system.
+ideal distance between the center of the bottom staff of one system,
+and the center of the top staff of the next system.
+
+Increasing this will provide a more even appearance of the page at the
+cost of using more vertical space.
@item betweensystempadding
This dimension is the minimum amount of white space that will always
be present between the bottom most symbol of one system, and the
topmost of the next system.
+Increasing this will put systems whose bounding boxes almost touch
+farther apart.
+
+@item aftertitlespace
+Amount of space between title and the first system
+@item beforetitlespace
+Amount of space between last system of the previous piece and the
+title of the next
+@item betweentitlespace
+Amount of space between consecutive titles (eg. the title of the
+book and the title of piece).
+
@end table
@example
- \bookpaper@{
+ \paper@{
hsize = 2\cm
topmargin = 3\cm
bottommargin = 3\cm
You can also define these values in scheme. In that case @code{mm},
@code{in}, @code{pt} and @code{cm} are variables defined in
-@file{book-paper-defaults.ly} with values in millimeters. That's why the
+@file{paper-defaults.ly} with values in millimeters. That's why the
value has to be multiplied in the example above.
@example
- \bookpaper@{
+ \paper@{
#(define bottommargin (* 2 cm))
@}
@end example
can.}
The header and footer are created by the functions @code{make-footer}
-and @code{make-header}, defined in @code{\bookpaper}. The default
+and @code{make-header}, defined in @code{\paper}. The default
implementations are in @file{scm/page-layout.scm}.
The following settings influence the header and footer layout.
@end table
The page layout itself is done by two functions in the
-@code{\bookpaper}, @code{page-music-height} and
+@code{\paper}, @code{page-music-height} and
@code{page-make-stencil}. The former tells the line-breaking algorithm
how much space can be spent on a page, the latter creates the actual
page given the system to put on it.
toplevel expressions is one of the following
@itemize @bullet
-@item An output definition, such as @code{\bookpaper}, @code{\midi}
-and @code{\paper}. Such a definition at toplevel changes the default
+@item An output definition, such as @code{\paper}, @code{\midi}
+and @code{\layout}. Such a definition at toplevel changes the default
settings for the block entered.
@item An @code{\header} block. This sets the global header block. This
The following example shows three things which may be entered at
toplevel
@verbatim
- \paper {
+ \layout {
% movements are non-justified by default
raggedright = ##t
}