@section Input structure
The main format of input for LilyPond are text files. By convention,
-these files end with @code{.ly}.
+these files end with @file{@/.ly}.
@menu
* Structure of a score::
is implicitly enclosed in a \book block. A \book block in a source
file produces at least one output file, and by default the name of the
output file produced is derived from the name of the input file, so
-@file{fandangoforelephants.ly} will produce
-@file{fandangoforelephants.pdf}.
+@file{fandangoforelephants@/.ly} will produce
+@file{fandangoforelephants@/.pdf}.
(For more details about @code{\book} blocks, see
@ref{Multiple scores in a book},
@funindex \book
-All the movements and texts which appear in the same @code{.ly} file
+All the movements and texts which appear in the same @file{@/.ly} file
will normally be typeset in the form of a single output file.
@example
@node Multiple output files from one input file
@subsection Multiple output files from one input file
-If you want multiple output files from the same .ly file, then you can
-add multiple @code{\book} blocks, where each such \book block will
-result in a separate output file. If you do not specify any
-@code{\book} block in the input file, LilyPond will implicitly treat
-the whole file as a single \book block, see @ref{File structure}.
+If you want multiple output files from the same @file{@/.ly} file,
+then you can add multiple @code{\book} blocks, where each
+such \book block will result in a separate output file.
+If you do not specify any @code{\book} block in the
+input file, LilyPond will implicitly treat the whole
+file as a single \book block, see
+@ref{File structure}.
When producing multiple files from a single source file, Lilypond
ensures that none of the output files from any @code{\book} block
@}
@end example
-in source file @file{eightminiatures.ly}
+in source file @file{eightminiatures@/.ly}
will produce
@itemize
@item
-@file{eightminiatures.pdf},
+@file{eightminiatures@/.pdf},
@item
-@file{eightminiatures-1.pdf} and
+@file{eightminiatures@/-1@/.pdf} and
@item
-@file{eightminiatures-2.pdf}.
+@file{eightminiatures@/-2@/.pdf}.
@end itemize
@node Output file names
producing several ouputs from a single source file. You also have the
ability to specify your own suffixes for each @code{\book} block, so
for example you can produce files called
-@file{eightminiatures-Romanze.pdf}, @file{eightminiatures-Menuetto.pdf}
-and @file{eightminiatures-Nocturne.pdf} by adding a
+@file{eightminiatures@/-Romanze@/.pdf}, @file{eightminiatures@/-Menuetto@/.pdf}
+and @file{eightminiatures@/-Nocturne@/.pdf} by adding a
@code{\bookOutputSuffix} declaration inside each @code{\book} block.
@example
@itemize
@item
-@file{Romanze.pdf},
+@file{Romanze@/.pdf},
@item
-@file{Menuetto.pdf} and
+@file{Menuetto@/.pdf} and
@item
-@file{Nocturne.pdf}.
+@file{Nocturne@/.pdf}.
@end itemize
@funindex \book
@funindex \bookpart
-A @code{.ly} file may contain any number of toplevel expressions, where a
+A @file{@/.ly} file may contain any number of toplevel expressions, where a
toplevel expression is one of the following:
@itemize
toplevel scores, and combined as a single @code{\book}.
This behavior can be changed by setting the variable
@code{toplevel-score-handler} at toplevel. The default handler is
-defined in the init file @file{../@/scm/@/lily@/.scm}.
+defined in the init file @file{@/.@/./@/scm/@/lily@/.scm}.
@item
A @code{\book} block logically combines multiple movements
are a number of @code{\score}s, one output file will be created
for each @code{\book} block, in which all corresponding movements
are concatenated. The only reason to explicitly specify
-@code{\book} blocks in a @code{.ly} file is if you wish to create
+@code{\book} blocks in a @file{@/.ly} file is if you wish to create
multiple output files from a single input file. One exception is
within lilypond-book documents, where you explicitly have to add
a @code{\book} block if you want more than a single @code{\score}
or @code{\markup} in the same example. This behavior can be
changed by setting the variable @code{toplevel-book-handler} at
toplevel. The default handler is defined in the init file
-@file{../@/scm/@/lily@/.scm}.
+@file{@/.@/./@/scm/@/lily@/.scm}.
@item
A @code{\bookpart} block. A book may be divided into several parts,
This behavior can be changed by setting the variable
@code{toplevel-music-handler} at toplevel. The default handler is
-defined in the init file @file{../@/scm/@/lily@/.scm}.
+defined in the init file @file{@/.@/./@/scm/@/lily@/.scm}.
@item
A markup text, a verse for example
@menu
* Creating titles::
-* Custom titles::
+* Custom headers footers and titles::
* Reference to page numbers::
* Table of contents::
@end menu
@end example
-@node Custom titles
-@subsection Custom titles
+@node Custom headers footers and titles
+@subsection Custom headers, footers, and titles
A more advanced option is to change the definitions of the following
variables in the @code{\paper} block. The init file
-@file{../@/ly/@/titling@/-init@/.ly} lists the default layout.
+@file{@/.@/./@/ly/@/titling@/-init@/.ly} lists the default layout.
@table @code
@funindex bookTitleMarkup
The following definition will put the title flush left, and the
composer flush right on a single line.
-@verbatim
-\paper {
- bookTitleMarkup = \markup {
- \fill-line {
+@example
+\paper @{
+ bookTitleMarkup = \markup @{
+ \fill-line @{
\fromproperty #'header:title
\fromproperty #'header:composer
- }
- }
-}
-@end verbatim
+ @}
+ @}
+@}
+@end example
+
+The header and footer are created by the functions
+@code{make-header} and @code{make-footer}, defined in
+@code{\paper}. The default implementations are in
+@file{ly/@/paper@/-defaults@/-init@/.ly} and
+@file{ly/@/titling@/-init@/.ly}.
+
+This example centers page numbers at the bottom of every page.
+
+@example
+\paper @{
+ print-page-number = ##t
+ print-first-page-number = ##t
+ oddHeaderMarkup = \markup \fill-line @{ " " @}
+ evenHeaderMarkup = \markup \fill-line @{ " " @}
+ oddFooterMarkup = \markup @{
+ \fill-line @{
+ \bold \fontsize #3
+ \on-the-fly #print-page-number-check-first
+ \fromproperty #'page:page-number-string
+ @}
+ @}
+ evenFooterMarkup = \markup @{
+ \fill-line @{
+ \bold \fontsize #3
+ \on-the-fly #print-page-number-check-first
+ \fromproperty #'page:page-number-string
+ @}
+ @}
+@}
+@end example
+
@node Reference to page numbers
@subsection Reference to page numbers
@seealso
-Init files: @file{../@/ly/@/toc@/-init@/.ly}.
+Init files: @file{@/.@/./@/ly/@/toc@/-init@/.ly}.
@predefined
@end example
The line @code{\include "otherfile.ly"} is equivalent to pasting the
-contents of @file{otherfile.ly} into the current file at the place
+contents of @file{otherfile@/.ly} into the current file at the place
where the @code{\include} appears. For example, in a large
project you might write separate files for each instrument part
and create a @qq{full score} file which brings together the
Files in other locations may be included by giving either a full
path reference or a relative path reference (but use the UNIX
forward slash, /, rather than the DOS/Windows back slash, \, as the
-directory separator.) For example, if @file{stuff.ly} is located
+directory separator.) For example, if @file{stuff@/.ly} is located
one directory higher than the current working directory, use
@example
Files can also be included from a directory in a search path
specified as an option when invoking LilyPond from the command
line. The included files are then specified using just their
-file name. For example, to compile @file{main.ly} which includes
+file name. For example, to compile @file{main@/.ly} which includes
files located in a subdirectory called @file{parts} by this method,
-cd to the directory containing @file{main.ly} and enter
+cd to the directory containing @file{main@/.ly} and enter
@example
lilypond --include=parts main.ly
@end example
Files which are to be included in many scores may be placed in
-the LilyPond directory @file{../ly}. (The location of this
+the LilyPond directory @file{@/.@/./ly}. (The location of this
directory is installation-dependent - see
@rlearning{Other sources of information}). These files can then
be included simply by naming them on an @code{\include} statement.
-This is how the language-dependent files like @file{english.ly} are
+This is how the language-dependent files like @file{english@/.ly} are
included.
LilyPond includes a number of files by default when you start
it skips all events, including tempo and instrument changes. You have
been warned.
-@lilypond[quote,relative=1,ragged-right,verbatim]
-\relative c'' {
- c8 d
- \set Score.skipTypesetting = ##t
- e8 e e e e e e e
- \set Score.skipTypesetting = ##f
- c8 d b bes a g c2
-}
+@lilypond[quote,relative=2,ragged-right,verbatim]
+c8 d
+\set Score.skipTypesetting = ##t
+e8 e e e e e e e
+\set Score.skipTypesetting = ##f
+c8 d b bes a g c2
@end lilypond
In polyphonic music, @code{Score.skipTypesetting} will affect all
Context definitions follow precisely the same syntax as those
within a @code{\layout} block. Translation modules for sound are
called performers. The contexts for MIDI output are defined in
-@file{../@/ly/@/performer@/-init@/.ly},
+@file{@/.@/./@/ly/@/performer@/-init@/.ly},
see @rlearning{Other sources of information}.
For example, to remove the effect of dynamics
from the MIDI output, insert the following lines in the
MIDI volume range. The default fractions range from 0.25 for
@notation{ppppp} to 0.95 for @notation{fffff}. The set of dynamic
marks and the associated fractions can be seen in
-@file{../@/scm/@/midi.scm}, see @rlearning{Other sources of information}.
+@file{@/.@/./@/scm/@/midi@/.scm}, see @rlearning{Other sources of information}.
This set of fractions may be changed or extended by providing a
function which takes a dynamic mark as its argument and returns the
required fraction, and setting
Alternatively, if the whole table of fractions needs to be
redefined, it would be better to use the
@notation{default-dynamic-absolute-volume} procedure in
-@file{../@/scm/@/midi.scm} and the associated table as a model.
+@file{@/.@/./@/scm/@/midi@/.scm} and the associated table as a model.
The final example in this section shows how this might be done.
@unnumberedsubsubsec Overall MIDI volume
LilyPond will, by default, apply a small degree of equalization
to a few instruments. The instruments and the equalization
applied are shown in the table @notation{instrument-equalizer-alist}
-in @file{../@/scm/@/midi.scm}.
+in @file{@/.@/./@/scm/@/midi@/.scm}.
This basic default equalizer can be replaced by setting
@code{instrumentEqualizer} in the @code{Score} context to a new
is done in the same way as shown for resetting the
@code{dynamicAbsoluteVolumeFunction} at the start of this section.
The default equalizer, @notation{default-instrument-equalizer}, in
-@file{../@/scm/@/midi.scm} shows how such a procedure might be written.
+@file{@/.@/./@/scm/@/midi@/.scm} shows how such a procedure might be written.
The following example sets the relative flute and clarinet volumes
to the same values as the previous example.