Guide, node Updating translation committishes..
@end ignore
-@c \version "2.15.25"
+@c \version "2.16.0"
@node General input and output
@chapter General input and output
@item
An output definition, such as @code{\paper}, @code{\midi}, and
@code{\layout}. Such a definition at the toplevel changes the default
-book-wide settings. If more than one such definition of
-the same type is entered at the top level any definitions in the later
-expressions have precedence.
+book-wide settings. If more than one such definition of the same type
+is entered at the top level the definitions are combined, but in
+conflicting situations the later definitions take precedence. For
+details of how this affects the @code{\layout} block see
+@ref{The \layout block}.
@item
A direct scheme expression, such as
@end itemize
-
@seealso
Learning Manual:
@rlearning{How LilyPond input files work}.
+Notation Reference:
+@ref{The \layout block}.
+
@node Titles and headers
@section Titles and headers
@node Default layout of book and score title blocks
@unnumberedsubsubsec Default layout of book and score title blocks
-The layout and formatting of title blocks are controlled by two
-@code{\paper} variables; @code{bookTitleMarkup} for the main
-@code{\header} title block and @code{scoreTitleMarkup} for individual
-@code{\header} blocks within a @code{\score}.
+This example demonstrates all @code{\header} variables:
-@lilypond[papersize=a6,quote,verbatim,noragged-right]
-\header {
- % The following fields are centered
- dedication = "Dedication"
- title = "Title"
- subtitle = "Subtitle"
- subsubtitle = "Subsubtitle"
- instrument = "Instrument"
-
- % The following fields are left-aligned on the left side
- poet = "Poet"
- meter = "Meter"
-
- % The following fields are right-aligned on the right side
- composer = "Composer"
- arranger = "Arranger"
-}
-
-\score {
- { s1 }
+@lilypond[papersize=a7,quote,verbatim,noragged-right]
+\book {
\header {
- % The following fields are placed at opposite ends of the same line
- piece = "Piece"
- opus = "Opus"
+ % The following fields are centered
+ dedication = "Dedication"
+ title = "Title"
+ subtitle = "Subtitle"
+ subsubtitle = "Subsubtitle"
+ % The following fields are evenly spread on one line
+ % the field "instrument" also appears on following pages
+ instrument = \markup \with-color #green "Instrument"
+ poet = "Poet"
+ composer = "Composer"
+ % The following fields are placed at opposite ends of the same line
+ meter = "Meter"
+ arranger = "Arranger"
+ % The following fields are centered at the bottom
+ tagline = "tagline goes at the bottom of the last page"
+ copyright = "copyright goes at the bottom of the first page"
+ }
+ \score {
+ { s1 }
+ \header {
+ % The following fields are placed at opposite ends of the same line
+ piece = "Piece 1"
+ opus = "Opus 1"
+ }
+ }
+ \score {
+ { s1 }
+ \header {
+ % The following fields are placed at opposite ends of the same line
+ piece = "Piece 2 on the same page"
+ opus = "Opus 2"
+ }
+ }
+ \pageBreak
+ \score {
+ { s1 }
+ \header {
+ % The following fields are placed at opposite ends of the same line
+ piece = "Piece 3 on a new page"
+ opus = "Opus 3"
+ }
}
}
@end lilypond
-@c Is the bit about \null markups true? -mp
+Note that
+@itemize
+@item
+The instrument name will be repeated on every page.
+
+@item
+Only @code{piece} and @code{opus} are printed in a @code{\score}
+when the paper variable @code{print-all-headers} is set to
+@code{##f} (the default).
+
+@item
+@c Is the bit about \null markups true? -mp
Text fields left unset in a @code{\header} block are replaced with
@code{\null} markups so that the space is not wasted.
+@item
The default settings for @code{scoreTitleMarkup} place the @code{piece}
and @code{opus} text fields at opposite ends of the same line.
+@end itemize
+
+To change the default layout see @ref{Custom layout for title blocks}.
+
@cindex breakbefore
Use the @code{breakbefore} variable inside a @code{\header} block
@rlearning{How LilyPond input files work},
Notation Reference:
+@ref{Custom layout for title blocks},
@ref{File structure}.
Installed Files:
@file{ly/titling-init.ly}.
+
@node Default layout of headers and footers
@unnumberedsubsubsec Default layout of headers and footers
@node Custom layout for title blocks
@unnumberedsubsubsec Custom layout for title blocks
+@cindex bookTitleMarkup
+@cindex scoreTitleMarkup
+@funindex bookTitleMarkup
+@funindex scoreTitleMarkup
+
@code{\markup} commands in the @code{\header} block are useful for
simple text formatting, but they do not allow precise control over the
placement of titles. To customize the placement of the text fields,
-use either or both of the following @code{\paper} variables:
+change either or both of the following @code{\paper} variables:
@itemize
@item @code{bookTitleMarkup}
@item @code{scoreTitleMarkup}
@end itemize
-These markup variables are discussed in
+The placement of titles when using the default values of these
+@code{\markup} variables is shown in the examples in
@ref{Default layout of book and score title blocks}.
The default settings for @code{scoreTitleMarkup} as defined in
@item @code{evenFooterMarkup}
@end itemize
+@cindex markup, conditional
+@cindex on-the-fly
+@funindex \on-the-fly
+
+The @code{\markup} command @code{\on-the-fly} can be used to add
+markup conditionally to header and footer text defined within the
+@code{\paper} block, using the following syntax:
+
+@example
+@code{variable} = @code{\markup} @{
+ ...
+ @code{\on-the-fly} #@var{procedure} @var{markup}
+ ...
+@}
+@end example
+
+The @var{procedure} is called each time the @code{\markup} command
+in which it appears is evaluated. The @var{procedure} should test
+for a particular condition and interpret (i.e. print) the
+@var{markup} argument if and only if the condition is true.
+
+A number of ready-made procedures for testing various conditions are
+provided:
+
+@quotation
+@multitable {print-page-number-check-first-----} {should this page be printed-----}
+
+@headitem Procedure name @tab Condition tested
+
+@item print-page-number-check-first @tab should this page number be printed?
+@item create-page-number-stencil @tab 'print-page-numbers true?
+@item print-all-headers @tab 'print-all-headers true?
+@item first-page @tab first page in the book?
+@item (on-page nmbr) @tab page number = nmbr?
+@item last-page @tab last page in the book?
+@item not-first-page @tab not first page in the book?
+@item part-first-page @tab first page in the book part?
+@item part-last-page @tab last page in the book part?
+@item not-single-page @tab pages in book part > 1?
+
+@end multitable
+@end quotation
+
The following example centers page numbers at the bottom of every
page. First, the default settings for @code{oddHeaderMarkup} and
@code{evenHeaderMarkup} are removed by defining each as a @emph{null}
}
@end lilypond
+Several @code{\on-the-fly} conditions can be combined with an
+@q{and} operation, for example,
+
+@example
+ @code{\on-the-fly #first-page}
+ @code{\on-the-fly #last-page}
+ @code{@{ \markup ... \fromproperty #'header: ... @}}
+@end example
+
+determines if the output is a single page.
+
@seealso
Notation Reference:
@ref{Title blocks explained},
@ref{Default layout of book and score title blocks}.
+Installed Files:
+@file{../ly/titling-init.ly}.
+
+
@node Creating footnotes
@subsection Creating footnotes
@node Footnotes overview
@unnumberedsubsubsec Footnotes overview
-Automatic footnotes create incrementing, numerical indicators and
-manual footnotes allow a custom indicator to be created instead. All
-grobs, top-level @code{\markup} and chorded notes can be annotated.
+Automatic footnotes create incrementing numerical indicators and manual
+footnotes allow a custom indicator to be created instead. Footnotes are
+normally applied like @code{\tweak} and consequently can be placed
+directly on grobs (graphical objects) created by most music elements and
+post-events. In cases where this does not work (like with bar lines and
+meter changes, where the grobs are produced as a consequence of property
+changes), footnotes can also be specified as a standalone music event
+affecting all grobs of a given type at a particular time step.
+
+The full form of a footnote command is
-The order in which each grob is drawn determines the order in which each
-indicator and so footnotes are created during compilation.
+@example
+\footnote @var{mark} @var{offset} @var{grob-name} @var{footnote}
+@var{music}
+@end example
+The elements are as follows:
+
+@table @var
+@item mark
+is a markup or string specifying the footnote mark which is used for
+both marking the reference point as well as the footnote itself at the
+bottom of the page. It can be omitted (or equivalently replaced with
+@code{\default}) in which case a number in sequence will be generated.
+@item offset
+is a number pair such as @samp{#(2 . 1)} specifying the X and Y offset
+from the reference point where the mark will be placed.
+@item grob-name
+specifies a type of grob to mark (like @samp{#'Flag}). If it is given,
+the respective grob will be used as a reference point even in case that
+its @q{cause} is not the referenced @var{music} itself but a grob
+created from it. It can be omitted (or replaced with @code{\default}),
+and then only a directly created grob will be annotated.
+@item footnote
+This markup or string specifies the footnote text to use at the bottom
+of the page.
+@item music
+This is the item, a music event or chord constituent or post-event, that
+is being annotated. While it cannot be omitted, it @emph{can} be
+replaced by @code{\default} in which case the footnote is not attached
+to a music expression in particular, but rather to a moment of time. It
+is mandatory in this case to use the @var{grob-name} argument for
+selecting an affected grob type, like @samp{#'TimeSignature}.
+@end table
+
+Like with @code{\tweak}, if your @code{\footnote} is applied to a
+post-event or articulation, it will itself have to be preceded with
+@code{-} to make the parser attach the result to the preceding note or
+rest.
@node Automatic footnotes
@unnumberedsubsubsec Automatic footnotes
-Automatic footnotes take three arguments; the @var{Layout Object} to be
-annotated, the @var{(x . y)} position of the indicator and a
-@code{\markup} that will appear in the footnote at the bottom of the
-page.
-
-The command @code{\footnote} must come @emph{before} the grob that the
-footnote is being attached to:
+Automatic footnotes take four arguments: the @samp{(x . y)} position of
+the indicator, the optional @var{grob-name} specifying the layout object
+to be annotated, the @var{footnote} markup itself that will appear at
+the bottom of the page, and of course the @var{music} to attach the
+footnote to.
@lilypond[verbatim,quote,ragged-right,papersize=a8]
\book {
\header { tagline = ##f }
\relative c' {
- \footnote #'(0.5 . -2) #'NoteHead
+ \footnote #'(0.5 . -2)
\markup { The first note }
a'4 b8
- \footnote #'(0.5 . 1) #'NoteHead
+ \footnote #'(0.5 . 1) #'Flag
\markup { The third note }
- e c4 d4
+ e\noBeam c4 d4
}
}
@end lilypond
-To annotate chorded notes, the @code{\footnote} must come @emph{after}
-he note to which the footnote is being attached as a @code{TextScript}:
+Chorded notes pose no particular difficulty:
@lilypond[verbatim,quote,ragged-right,papersize=a8]
\book {
\header { tagline = ##f }
\relative c' {
<
- c-\footnote #'(1 . -1.25) "Here is a C"
- es-\footnote #'(2 . -0.25) \markup { \italic "An E-flat" }
- g-\footnote #'(2 . 3) \markup { \bold "This is a G" }
+ \footnote #'(1 . -1.25) "Here is a C" c
+ \footnote #'(2 . -0.25) \markup { \italic "An E-flat" } es
+ \footnote #'(2 . 3) \markup { \bold "This is a G" } g
>1
}
}
\book {
\header { copyright = \markup { "Copyright 1970" } }
\relative c' {
- \footnote #'(-3 . 0) #'DynamicText
- \markup { \bold Forte }
-
- \footnote #'(0 . 1.5) #'Slur
- \markup { A slur }
- a'4\f(
-
- \footnote #'(0 . -2) #'Beam
- \markup { Beam }
- b8)[ e]
-
+ a'4-\footnote #'(-3 . 0) \markup { \bold Forte } \f
+ -\footnote #'(0 . 1.5) \markup { A slur } (
+ b8)-\footnote #'(0 . -2) \markup { Beam } [ e]
\footnote #'(1 . -1) #'Stem
\markup { \teeny { This is a stem } }
c4
-
\footnote #'(0 . 0.5) #'AccidentalCautionary
\markup \italic { A cautionary accidental }
-
- \footnote #'(0.5 . -0.5) #'TextScript
- \markup \italic { Slow Down }
- dis?4_"rit."
+ \footnote #'(1 . 1) "The note itself"
+ dis?4-\footnote #'(0.5 . -0.5) \markup \italic { Slow Down }
+ _"rit."
}
}
@end lilypond
@cindex footnotes, manual
-Manual footnotes takes four arguments; the @var{Layout Object} to be
-annotated, the @var{(x . y)} position of the indicator and two
-@code{\markup} commands; the first is the indicator attached to the note
-or grob and the second is the footnote at the bottom of the page.
+Manually marked footnotes take an additional first markup argument
+@var{mark} for making the reference mark. In contrast to automatically
+generated footnote marks, they will not appear before the @var{footnote}
+markup at the bottom of the page: establishing the visual connection is
+left to the user. LilyPond will only make sure that the corresponding
+markup appears on the bottom of the same page.
-Like automatic footnotes, manual @code{\footnote} commands must come
-@emph{after} the grob that the footnote is annotating and attached as a
-@code{TextScript}:
+Other than that, the use is identical to that of automatically numbered
+footnotes.
@lilypond[verbatim,quote,ragged-right,papersize=a8]
\book {
\header { tagline = ##f }
\relative c' {
- a'4-\footnote
- "1" #'(0.5 . -2) #'NoteHead \markup { \italic "1. The first note" }
+ \footnote
+ "1" #'(0.5 . -2)
+ \markup { \italic "1. The first note" }
+ a'4
b8
- e-\footnote
- \markup { \bold "2" } #'(0.5 . 1) #'NoteHead "2. The second note"
+ \footnote
+ \markup { \bold "2" } #'(0.5 . 1)
+ "2. The second note"
+ e
c4
- d\p-\footnote "3" #'(0.5 . -1) #'DynamicText "3. Piano"
+ d-\footnote "3" #'(0.5 . -1) "3. Piano" \p
}
}
@end lilypond
\header { tagline = ##f }
\relative c' {
<
- c-\footnote "1" #'(1 . -1.25) "1. C"
- es-\footnote
- \markup { \bold "b" } #'(2 . -0.25) "b. E-flat"
- g-\footnote "3" #'(2 . 3) \markup { \italic "iii. G" }
+ \footnote "1" #'(1 . -1.25) "1. C" c
+ \footnote
+ \markup { \bold "b" } #'(2 . -0.25) "b. E-flat" es
+ \footnote "3" #'(2 . 3) \markup { \italic "iii. G" } g
>1
}
}
\book {
\header { tagline = ##f }
\relative c' {
- \footnote
- \markup { \teeny 1 } #'(-3 . 0) #'DynamicText
- \markup { 1. \bold Forte }
-
- \footnote
- \markup { \teeny b } #'(0 . 1.5) #'Slur
- \markup { b. A slur }
- a'4\f(
-
- \footnote
- \markup { \teeny 3 } #'(0 . -2) #'Beam
- \markup { 3. Beam }
- b8)[ e]
-
+ a'4-\footnote
+ \markup { \teeny 1 } #'(-3 . 0)
+ \markup { 1. \bold Forte } \f
+ -\footnote
+ \markup { \teeny b } #'(0 . 1.5)
+ \markup { b. A slur } (
+ b8)-\footnote
+ \markup { \teeny 3 } #'(0 . -2)
+ \markup { 3. Beam } [
+ e]
\footnote
\markup { 4 } #'(1 . -1) #'Stem
\markup { \bold 4. { This is a stem } }
c4
-
\footnote
\markup \concat \teeny { "sharp (v)" }
#'(0 . 0.5) #'AccidentalCautionary
\markup \italic { v. A cautionary accidental }
-
- \footnote
- \markup \concat \teeny { "a" } #'(0.5 . -0.5) #'TextScript
- \markup \italic { a. Slow Down }
- dis?4_"rit."
-
- \breathe
+ dis?4-\footnote
+ \markup \concat \teeny { "a" } #'(0.5 . -0.5)
+ \markup \italic { a. Slow Down } _"rit."
\footnote
\markup { \teeny \musicglyph #"rests.4" }
- #'(1.5 . -0.25) #'BreathingSign
- \markup { \null }
+ #'(1.5 . -0.25)
+ \markup { \null } \breathe
}
}
@end lilypond
referred to in a markup, to get the number of the page where the marked
point is placed, using the @code{\page-ref} markup command.
-@lilypond[verbatim]
+@lilypond[verbatim,papersize=a8landscape]
\header { tagline = ##f }
\book {
\label #'firstScore
(add-toc-item! 'tocActMarkup text))
@end verbatim
-@lilypond[line-width=11.0\cm]
+@lilypond[line-width=10.0\cm]
\header { tagline = ##f }
\paper {
tocActMarkup = \markup \large \column {
Dots can be added to fill the line between an item and its page number:
-@lilypond[verbatim,quote]
+@lilypond[verbatim,line-width=10.0\cm]
\header { tagline = ##f }
\paper {
tocItemMarkup = \tocItemWithDotsMarkup
}
@end lilypond
-
@seealso
-Init files: @file{../ly/toc-init.ly}.
-
+Installed Files:
+@file{ly/toc-init.ly}.
@predefined
@funindex \table-of-contents
@ref{Automatic part combining},
@ref{Including LilyPond files}.
-
@ignore
@c This warning is more general than this placement implies.
@c Rests are not merged whether or not they come from tagged sections.
@c Should be deleted? -td
@knownissues
-
Multiple rests are not merged if you create a score with more
than one tagged section at the same place.
@end ignore
+
@node Using global settings
@unnumberedsubsubsec Using global settings
Notation Reference:
@ref{Including LilyPond files}.
+
@node Special characters
@subsection Special characters
@file{ly/text-replacements.ly}.
-
@node Controlling output
@section Controlling output
Document Format (PDF) and PostScript (PS). Scalable Vector
Graphics (SVG), Encapsulated PostScript (EPS) and Portable
Network Graphics (PNG) output formats are also available through
-command line options, see @rprogram{Command line options for
-lilypond}.
+command line options, see
+@rprogram{Basic command line options for LilyPond}.
@node Replacing the notation font
reverse the process.
@seealso
-Learning Manual: @rlearning{Other sources of information}.
+Learning Manual:
+@rlearning{Other sources of information}.
@knownissues
Gonville cannot be used to typeset @q{Ancient Music} notation and it is
that are off or accidentals that were mistyped stand out very much
when listening to the MIDI output.
-Standard MIDI oputput is somewhat crude; optionally, an enhanced and
+Standard MIDI output is somewhat crude; optionally, an enhanced and
more realistic MIDI output is available by means of
@ref{The Articulate script}.
\score @{
@var{...music...}
\midi @{
- \context @{
- \Score
- tempoWholesPerMinute = #(ly:make-moment 72 4)
- @}
+ \tempo 4 = 72
@}
@}
@end example
In this example the tempo is set to 72 quarter note
-beats per minute. This kind of tempo specification cannot take
-a dotted note length as an argument. If one is required, break
-the dotted note into smaller units. For example, a tempo of 90
-dotted quarter notes per minute can be specified as 270 eighth
-notes per minute:
-
-@example
-tempoWholesPerMinute = #(ly:make-moment 270 8)
-@end example
+beats per minute. @code{\tempo} is actually a music command for
+setting properties during the interpretation of music: in the
+context of output definitions like a @code{\midi} block, as a matter of
+courtesy those are reinterpreted as if they were context modifications.
@cindex MIDI context definitions
>>
\layout {}
\midi {
+ \tempo 2 = 72
\context {
\Score
- tempoWholesPerMinute = #(ly:make-moment 72 2)
midiMinimumVolume = #0.2
midiMaximumVolume = #0.5
}
>>
\layout {}
\midi {
- \context {
- \Score
- tempoWholesPerMinute = #(ly:make-moment 72 2)
- }
+ \tempo 2 = 72
}
}
@end lilypond
>>
\layout { }
\midi {
- \context {
- \Score
- tempoWholesPerMinute = #(ly:make-moment 72 2)
- }
+ \tempo 2 = 72
}
}
@end lilypond