-@c -*- coding: latin-1; mode: texinfo; -*-
+c -*- coding: utf-8; mode: texinfo; -*-
@ignore
This procedure may be applied to La@TeX{}, HTML or Texinfo documents.
@menu
-* An example of a musicological document::
-* Integrating LaTeX and music::
-* Integrating Texinfo and music::
-* Integrating HTML and music::
-* Music fragment options::
-* Invoking lilypond-book::
-* Filename extensions::
+* An example of a musicological document::
+* Integrating LaTeX and music::
+* Integrating Texinfo and music::
+* Integrating HTML and music::
+* Music fragment options::
+* Invoking lilypond-book::
+* Filename extensions::
@end menu
@quotation
@verbatim
\documentclass[a4paper]{article}
+
\begin{document}
Documents for @command{lilypond-book} may freely mix music and text.
@example
cd input/tutorial
mkdir -p out/
-lilypond-book --output=out lilybook.tex
-@emph{lilypond-book (GNU LilyPond) 2.5.0}
+lilypond-book --output=out --psfonts lilybook.tex
+@emph{lilypond-book (GNU LilyPond) 2.6.0}
@emph{Reading lilybook.tex...}
@emph{..lots of stuff deleted..}
@emph{Compiling out/lilybook.tex...}
To convert the file into a PDF document, run the following commands
@example
-dvips -Ppdf -u+lilypond -u+ec-mftrace lilybook
+dvips -o -Ppdf -h lilybook.psfonts lilybook
ps2pdf lilybook.ps
@end example
remedy this, use the @code{--output=@var{dir}} option. It will create
the files in a separate subdirectory @file{dir}.
+Running dvips will produce many warnings about fonts. They are not
+harmful; please ignore them.
+
Finally the result of the La@TeX{} example shown above.@footnote{This
tutorial is processed with Texinfo, so the example gives slightly
different results in layout.} This finishes the tutorial section.
@cindex texinfo
@cindex latex
@cindex texinfo
-@cindex @code{texi}
+@findex texi
@cindex html
@cindex documents, adding music to
@code{\lilypond@{@}}, so this command is only useful with the
@code{fragment} option.
-The default linewidth of the music will be adjusted by examining the
+The default line width of the music will be adjusted by examining the
commands in the document preamble, the part of the document before
@code{\begin@{document@}}. The @command{lilypond-book} command sends
these to La@TeX{} to find out how wide the text is. The line width for
the music fragments is then adjusted to the text width. Note that this
heuristic algorithm can fail easily; in such cases it is necessary to
-use the @code{linewidth} music fragment option.
+use the @code{line-width} music fragment option.
@cindex titling and lilypond-book
-@cindex @code{\header} in La@TeX{} documents
+@findex \header in La@TeX{} documents
+
+Each snippet will call the following macros if they have been defined by
+the user:
-Each snippet calls @code{\preLilyPondExample} before and
-@code{\postLilyPondExample} after the music if those macros have been
-defined by the user.
+@code{\preLilyPondExample} called before the music
+
+@code{\postLilyPondExample} called after the music
+
+@code{\betweenLilyPondSystem[1]} is called between systems if
+@code{lilypond-book} has split the snippet into several postscript
+files. It must be defined as taking one parameter and will be
+passed the number of files already included in this snippet.
+The default is to simply insert a @code{\linebreak}.
+
+@ignore
+Broken stuff. :(
@cindex Latex, feta symbols
@cindex fetachar
kpsewhich feta20.tex
@end example
+@end ignore
+
@cindex outline fonts
@cindex type1 fonts
@cindex dvips
command line:
@example
--Ppdf -u+lilypond.map -u+ec-mftrace.map
+-o -Ppdf -h @var{file}.psfonts
@end example
@noindent
-PDF can then be produced with a PostScript to PDF translator like
-@code{ps2pdf} (which is part of GhostScript).
+where the @var{file}@command{psfonts} file is obtained from
+@command{lilypond-book}, @xref{Invoking lilypond-book}, for details. PDF
+can then be produced with a PostScript to PDF translator like
+@code{ps2pdf} (which is part of GhostScript). Running @command{dvips}
+will produce some warnings about fonts; these are harmless and may
+be ignored.
@cindex international characters
@cindex latin1
+Sometimes it is useful to display music elements (such as ties and slurs)
+as if they continued after the end of the fragment. This can be done by
+breaking the staff and suppressing inclusion of the rest of the lilypond
+output.
+
+In La@TeX{}, define @code{\betweenLilyPondSystem} in such a way that
+inclusion of other systems is terminated once the required number of
+systems are included. Since @code{\betweenLilypondSystem} is first
+called @b{after} the first system, including only the first system
+is trivial.
+
+@example
+\def\betweenLilyPondSystem#1@{\endinput@}
+
+\begin[fragment]@{lilypond@}
+ c'1\( e'( c'~ \break c' d) e f\)
+\end@{lilypond@}
+@end example
+
+If a greater number of systems is requested, a TeX conditional must be
+used before the @code{\endinput}. In this example, replace "2" by
+the numer of systems you want in the output,
+
+@example
+\def\betweenLilyPondSystem#1@{
+ \ifnum##1<2\else\endinput\fi
+@}
+@end example
+
+Remember that the definition of @code{\betweenLilyPondSystem} is
+effective until @TeX{} quits the current group (such as the La@TeX{}
+environment) or is overridden by another definition (which is, in
+most cases, for the rest of the document). To reset your
+definition, write
+
+@example
+\let\betweenLilyPondSystem\undefined
+@end example
+
+@noindent
+in your LaTeX source.
+
+This may be simplified by defining a @TeX{} macro
+
+@example
+\def\onlyFirstNSystems#1@{
+ \def\betweenLilyPondSystem##1@{\ifnum##1<#1\else\endinput\fi@}
+@}
+@end example
+
+@noindent
+and then saying only how many systems you want before each fragment,
+
+@example
+\onlyFirstNSystems@{3@}
+\begin@{lilypond@}...\end@{lilypond@}
+\onlyFirstNSystems@{1@}
+\begin@{lilypond@}...\end@{lilypond@}
+@end example
+
@node Integrating Texinfo and music
@section Integrating Texinfo and music
@item staffsize=@var{ht}
Set staff size to @var{ht}, which is measured in points.
-@item raggedright
-Produce ragged-right lines with natural spacing (i.e., @code{raggedright
+@item ragged-right
+Produce ragged-right lines with natural spacing (i.e., @code{ragged-right
= ##t} is added to the LilyPond snippet). This is the default for the
-@code{\lilypond@{@}} command if no @code{linewidth} option is present.
+@code{\lilypond@{@}} command if no @code{line-width} option is present.
It is also the default for the @code{lilypond} environment if the
@code{fragment} option is set, and no line width is explicitly
specified.
Produce lines with packed spacing (i.e., @code{packed = ##t} is added
to the LilyPond snippet).
-@item linewidth
-@itemx linewidth=@var{size}\@var{unit}
+@item line-width
+@itemx line-width=@var{size}\@var{unit}
Set line width to @var{size}, using @var{unit} as units. @var{unit} is
one of the following strings: @code{cm}, @code{mm}, @code{in}, or
@code{pt}. This option affects LilyPond output (this is, the staff
If used without an argument, set line width to a default value (as
computed with a heuristic algorithm).
-If no @code{linewidth} option is given, @command{lilypond-book} tries to
+If no @code{line-width} option is given, @command{lilypond-book} tries to
guess a default for @code{lilypond} environments which don't use the
-@code{raggedright} option.
+@code{ragged-right} option.
@item notime
-Do not print the time signature.
+Do not print the time signature, and turns off the timing (key signature,
+bar lines) in the score.
@item fragment
Make @command{lilypond-book} add some boilerplate code so that you can
output format. Both @file{.tex} and @file{.texi} files need further
processing.
-To produce PDF output from the @file{.tex} file, you should do
+@command{lilypond-book} can also create a PSFONTS file, which is required
+by @command{dvips} to produce Postscript and PDF files. You can call
+this file whatever you want as long as you refer to the same file when
+you call @command{dvips}.
+
+To produce PDF output from the lilypond-book file (here called
+@code{yourfile.lytex}), you should do
@example
+lilypond-book --psfonts yourfile.lytex
latex yourfile.tex
-dvips -Ppdf -u+ec-mftrace.map -u+lilypond.map yourfile.dvi
+dvips -o -h yourfile.psfonts -Ppdf yourfile.dvi
ps2pdf yourfile.ps
@end example
+The @file{.dvi} file created by this process will not contain
+noteheads. This is normal; if you follow the instructions, they
+will be included in the @file{.ps} and @file{.pdf} files.
+
To produce a Texinfo document (in any output format), follow the normal
procedures for Texinfo (this is, either call @command{texi2dvi} or
-@command{makeinfo}, depending on the output format you want to create).
+@command{makeinfo}, depending on the output format you want to
+create).
+@ifinfo
@xref{Format with texi2dvi, , , texinfo, GNU Texinfo}, and @ref{Creating
an Info File, , , texinfo, GNU Texinfo}.
+@end ifinfo
+@ifnotinfo
+See the documentation of Texinfo for further details.
+@end ifnotinfo
+
@command{lilypond-book} accepts the following command line options:
@code{lilypond}. @code{lilypond-book} will not --filter and --process
at the same time.
+@itemx --psfonts
+extract all PostScript fonts into @file{@var{file}.psfonts} for dvips.
+This is necessary for @command{dvips -h @var{file}.psfonts}.
+
@item -V
@itemx --verbose
Be verbose.
Only the first @code{\score} of a LilyPond block is processed.
-@c CHECKME--FIXME
-The size of a music block is limited to 1.5 KB, due to technical
-problems with the Python regular expression engine. For longer files,
-use @code{\lilypondfile}.
-
@node Filename extensions
@section Filename extensions