-@c -*-texinfo-*-
+@c -*- coding: latin-1; mode: texinfo; -*-
+
@ignore
@end ignore
-@node lilypond-book manual
-@chapter lilypond-book manual
+@node Integrating text and music
+@chapter Integrating text and music
If you want to add pictures of music to a document, you can simply do
it the way you would do with other types of pictures. The pictures
adjusted to match the layout of your document.
This procedure may be applied to La@TeX{}, @code{html} or Texinfo
-documents. A tutorial on using lilypond-book is in @ref{Integrating
-text and music}. For more information about La@TeX{}
-@uref{http://www.ctan.org/tex-archive/info/lshort/english/,The not so
-Short Introduction to LaTeX} provides a introction to using La@TeX{}.
+documents.
@menu
+* An example of a musicological document::
* Integrating Texinfo and music::
* Integrating LaTeX and music::
* Integrating HTML and music::
* Music fragment options::
-* Invoking lilypond-book::
+* Invoking lilypond-book::
+* Filename extensions::
@end menu
-@cindex texinfo
-@cindex latex
-@cindex texinfo
-@cindex @code{texi}
-@cindex html
-@cindex documents, adding music to
+@node An example of a musicological document
+@section An example of a musicological document
-@node Integrating Texinfo and music
-@section Integrating Texinfo and music
+@cindex musicology
+@cindex La@TeX{}, music in
+@cindex HTML, music in
+@cindex Texinfo, music in
+Some texts contain music examples. These texts are musicological
+treatises, songbooks or manuals like this. Such texts can be made by
+hand, simply by importing a PostScript figure into the word processor.
+However, there is an automated procedure to reduce the amount of work
+involved HTML, La@TeX{}, and Texinfo documents.
+
+A script called @code{lilypond-book} will extract the music fragments,
+format them, and put back the resulting notation. Here we show a
+small example for use with La@TeX{}. The example also contains explanatory text, so we will
+not comment on it further
+
+@verbatim
+\documentclass[a4paper]{article}
+\begin{document}
+
+Documents for lilypond-book may freely mix music and text. For
+example,
+
+\begin{lilypond}
+\relative {
+ c2 g'2 \times 2/3 { f8 e d } c'2 g4
+}
+\end{lilypond}
+
+Options are put in brackets.
+
+\begin[fragment,quote,staffsize=26,verbatim]{lilypond}
+ c'4 f16
+\end{lilypond}
+
+Larger examples can be put in a separate file, and introduced with
+\verb+\lilypondfile+.
+
+\lilypondfile[quote,noindent]{screech-boink.ly}
-Music is specified like this:
+\end{document}
+@end verbatim
+
+Under Unix, you can view the results as follows
@example
-@@lilypond[options,go,here]
- YOUR LILYPOND CODE
-@@end lilypond
-@@lilypond[options,go,here]@{ YOUR LILYPOND CODE @}
-@@lilypondfile[options,go,here]@{@var{filename}@}
+cd input/tutorial
+mkdir -p out/
+lilypond-book --output=out/ lilybook.tex
+@emph{lilypond-book (GNU LilyPond) 2.3.11}
+@emph{Reading `input/tutorial/lilybook.tex'}
+@emph{..lots of stuff deleted..}
+@emph{Compiling `out//lilybook.tex'}
+cd out
+latex lilybook
+@emph{lots of stuff deleted}
+xdvi lilybook
@end example
-When lilypond-book is run on it, this results in a texinfo file. We
-show two simple examples here. First a complete block:
+To convert the file into a nice PDF document, run the following
+commands
@example
-@@lilypond[staffsize=26]
- c' d' e' f' g'2 g'
-@@end lilypond
+dvips -Ppdf -u+lilypond -u+ec-mftrace lilybook
+ps2pdf lilybook.ps
@end example
-@noindent
-produces
+Running lilypond-book and running latex creates a lot of temporary
+files, which would clutter up the working directory. To remedy this,
+use the @code{--output=@var{dir}} option. It will create the files in
+a separate subdirectory @file{dir}.
+
+Finally the result of the La@TeX{} example shown above.@footnote{ This
+tutorial is processed with Texinfo, so the example is as well. This
+gives slightly different results in layout.} This finishes the
+tutorial section.
+
+@page
+
+Documents for lilypond-book may freely mix music and text. For
+example,
@lilypond
- c' d' e' f' g'2 g'
+\relative c' {
+ c2 g'2 \times 2/3 { f8 e d } c'2 g4
+}
@end lilypond
-Then the short version:
+Options are put in brackets.
-@example
-@@lilypond[staffsize=11]@{<c' e' g'>@}
-@end example
+@lilypond[fragment,quote,staffsize=26,verbatim]
+c'4 f16
+@end lilypond
-@noindent
-produces
+Larger examples can be put in a separate file, and introduced with
+@code{\lilypondfile}.
-@lilypond[staffsize=11]{ <c' e' g'> }
+@lilypondfile[quote,noindent]{screech-boink.ly}
+
+
+@cindex texinfo
+@cindex latex
+@cindex texinfo
+@cindex @code{texi}
+@cindex html
+@cindex documents, adding music to
-When producing texinfo, lilypond-book also generates bitmaps of the
-music, so you can make a HTML document with embedded music.
@c @TeX{} in node name seems to barf
@node Integrating LaTeX and music
@section Integrating LaTeX and music
+La@TeX{} is the de facto standard for publishing layouts in the exact
+sciences. It is built on top of the @TeX{} typesetting engine, so it
+provides the best typography available anywhere.
+
+For more information about La@TeX{}
+@uref{http://www.ctan.org/tex-archive/info/lshort/english/,The not so
+Short Introduction to La@TeX{}} provides a introduction to using
+La@TeX{}.
For La@TeX{}, music is entered using
@noindent
produces
-@lilypond[staffsize=26]
+@lilypond[fragment,staffsize=26]
c' d' e' f' g'2 g'2
@end lilypond
@noindent
produces
-@lilypond[staffsize=11]{<c' e' g'>}
+@lilypond[fragment,staffsize=11]{<c' e' g'>}
The linewidth of the music will be adjust by examining the commands in
the document preamble, the part of the document before
-@code{\begin@{document@}}: @command{lilypond-book} sends these to
-La@TeX{} to find out how wide the text is. The line width variable for
-the music fragments are adjusted to the text width.
+@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.
After @code{\begin@{document@}}, the column changing commands
@code{\onecolumn}, @code{\twocolumn} commands
@end ignore
are also interpreted.
-The titling from the @code{\header} section of the fragments can be
-imported by adding the following to the top of the La@TeX{} file:
+@cindex titling and lilypond-book
+@cindex @code{\header} in La@TeX{} documents
-@example
-\input titledefs.tex
-\def\preLilyPondExample@{\def\mustmakelilypondtitle@{@}@}
-@end example
The music will be surrounded by @code{\preLilyPondExample} and
@code{\postLilyPondExample}, which are defined to be empty by default.
-@cindex titling and lilypond-book
-@cindex lilypond-book and titling
-@cindex @code{\header} in La@TeX{} documents
-
-To add titling from the @code{\header} section of the files, add the
-following to the top of the La@TeX{} file:
-@example
-\input titledefs.tex
-\def\preLilyPondExample@{\def\mustmakelilypondtitle@{@}@}
-@end example
-
@cindex outline fonts
@cindex type1 fonts
@cindex dvips
@cindex invoking dvips
-For printing the LaTeX document, you will need to use dvips. For
+For printing the La@TeX{} document, you will need to use dvips. For
producing PostScript with scalable fonts, add the following options to
the dvips command line:
@example
- -Ppdf -u +lilypond.map
+ -Ppdf -u+lilypond.map -u+ec-mftrace.map
@end example
@noindent
PDF can then be produced with @code{ps2pdf}.
+@cindex international characters
+@cindex latin1
+
+LilyPond does not use the La@TeX{} font handling scheme for lyrics and text
+markups, so if you use characters in your lilypond-book
+documents that are not included in the standard US-ASCII character set,
+include @code{\usepackage[latin1]@{inputenc@}} in the file
+header but do not include @code{\usepackage[T1]@{fontenc@}}. Character
+sets other than latin1 are not supported directly but may be handled by
+explicitly specifying the @code{font-name} property in LilyPond and
+using the corresponding La@TeX{} packages. Please consult the mailing list
+for more details.
+
+
+
+
+@node Integrating Texinfo and music
+@section Integrating Texinfo and music
+
+Texinfo is the standard format for documentation at the GNU
+project. An example of a texinfo document is this manual. The HTML,
+PDF and Info versions of the manual are made from the document.
+
+When run on a lilypond-book, produces a @file{.texi} file containing
+@code{@@image} tags for HTML and info. For the printed edition, the
+raw @TeX{} output of LilyPond is included into the main document.
+
+In the input file, music is specified like
+
+@example
+@@lilypond[options,go,here]
+ YOUR LILYPOND CODE
+@@end lilypond
+@@lilypond[options,go,here]@{ YOUR LILYPOND CODE @}
+@@lilypondfile[options,go,here]@{@var{filename}@}
+@end example
+
+When lilypond-book is run on it, this results in a texinfo file. We
+show two simple examples here. First a complete block:
+
+@example
+@@lilypond[staffsize=26]
+ c' d' e' f' g'2 g'
+@@end lilypond
+@end example
+
+@noindent
+produces
+
+@lilypond[fragment]
+ c' d' e' f' g'2 g'
+@end lilypond
+
+Then the short version:
+
+@example
+@@lilypond[staffsize=11]@{<c' e' g'>@}
+@end example
+
+@noindent
+produces
+
+@lilypond[fragment,staffsize=11]{ <c' e' g'> }
+
+When producing texinfo, lilypond-book also generates bitmaps of the
+music, so you can make a HTML document with embedded music.
+
+
+
+
@node Integrating HTML and music
@section Integrating HTML and music
Music is entered using
@example
-<lilypond relative=1 verbatim>
+<lilypond relative=2 verbatim>
\key c \minor r8 c16 b c8 g as c16 b c8 d | g,4
</lilypond>
@end example
@noindent
of which lilypond-book will produce a HTML with appropriate image tags for the
music fragments:
-
+
+@c why the second example? -gp
@example
-<lilypond relative=1 verbatim>
+<lilypond relative=2 verbatim>
\key c \minor r8 c16 b c8 g as c16 b c8 d | g,4
</lilypond>
@end example
-@lilypond[relative=1]
+@lilypond[fragment,relative=2]
\key c \minor r8 c16 b c8 g as c16 b c8 d | g,4
@end lilypond
-For inline pictures, use @code{<lilypond ... />} syntax, eg.
+For inline pictures, use @code{<lilypond ... />} syntax, e.g.
@example
Some music in <lilypond a b c/> a line of text.
@end example
+@c FIXME: check if this feature is coming soon; if not, @ignore this stuff.
A special feature not (yet) available in other output formats, is the
@code{<lilypondfile>} tag, for example,
@example
@table @code
@item verbatim
-CONTENTS is copied into the source enclosed in a verbatim block,
-followed by any text given with the @code{intertext} option, then
+@var{contents} is copied into the source, enclosed in a verbatim block;
+followed by any text given with the @code{intertext} option; then
the actual music is displayed. This option does not work with
the short version of the music blocks:
@code{ @@lilypond@{ CONTENTS @} } and @code{ \lilypond@{ CONTENTS @} }
@item filename=@var{filename}
-name the file (for @code{printfilename} option). The argument should
-be unquoted.
+This names the file for the @code{printfilename} option. The argument
+should be unquoted.
-@item staffsize=POINTS
-@lilypond[staffsize=31.41592658]
-\relative c' {
- r16 c[ d e] f[ d e c] g'8[ c] b[\prall c] |
- d16[ g, a b] c[ a b g] d'8[ g f\prall g]
-}
-@end lilypond
+@item staffsize=@var{ht}
+Sets the staff height to @var{ht}, which is measured in points.
@item raggedright
produces naturally spaced lines (i.e., @code{raggedright = ##t}); this
works well for small music fragments.
-@item linewidth=@var{size}\\@var{unit}
+@item linewidth=@var{size}\@var{unit}
sets linewidth to @var{size}, where @var{unit} = cm, mm, in, or pt.
This option affects LilyPond output, not the text layout.
prevents printing time signature.
@item fragment
-@item nofragment
-overrides @command{lilypond-book} auto detection of what type of code is
-in the LilyPond block, voice contents or complete code.
+adds some boilerplate code, so you can enter like
+
+@example
+ c'4
+@end example
-@item indent=@var{size}\\@var{unit}
+@noindent
+without @code{\layout}, @code{\score} or other red tape.
+
+@item indent=@var{size}\@var{unit}
sets indentation of the first music system to @var{size},
where @var{unit} = cm, mm, in, or pt. This option affects LilyPond,
-not the text layout. For single-line fragments the default is to
+not the text layout. For single-line fragments, the default is to
use no indentation.
For example
@example
- \begin[indent=\\5cm,raggedright]@{lilypond@}
+ \begin[indent=5\cm,raggedright]@{lilypond@}
...
\end@{lilypond@}
@end example
sets indentation of the first music system to zero. This option
affects LilyPond, not the text layout.
+@item quote
+sets linewidth to the width of a quotation and puts the output
+in a quotation block.
+
@item texidoc
Includes the @code{texidoc} field, if defined in the file. This is
only for Texinfo output.
\header @{
texidoc = "this file demonstrates a single note"
@}
- \score @{ \notes @{ c'4 @} @}
+ @{ c'4 @}
@end example
@item relative, relative=@var{N}
uses relative octave mode. By default, notes are specified relative
-central C. The optional integer argument specifies the octave of the
-starting note, where the default @code{1} is central C.
+to middle C. The optional integer argument specifies the octave of the
+starting note, where the default @code{1} is middle C.
@end table
Running @command{lilypond-book} generates lots of small files that
LilyPond will process. To avoid all that garbage in the source
-directory, it is advisable to change to a temporary directory first:
+directory use the @option{--output} command line option, and change to
+that directory before running La@TeX{} or @file{makeinfo}:
+
@example
-cd out && lilypond-book ../yourfile.tex
+lilypond-book --output=out yourfile.lytex
+cd out
@end example
-@noindent
-or to use the @option{--output} command line option, and change to
-that director before running La@TeX{} or @file{makeinfo}:
+This will produce a .tex or .texi file. To produce a pdf from the
+.tex file, you should do
@example
-lilypond-book --output=out yourfile.lytex
-cd out && latex yourfile.tex
+latex yourfile.tex
+dvips -Ppdf -u+ec-mftrace.map -u+lilypond.map yourfile.dvi
+ps2pdf yourfile.ps
@end example
+To produce a texinfo document (in any output format), follow the normal
+procedures for texinfo.
@command{lilypond-book} accepts the following command line options:
@table @code
@item @option{-f @var{format}}, @option{--format=@var{format}}
Specify the document type to process: @code{html}, @code{latex} or
-@code{texi} (the default). @command{lilypond-book} usually figures this
+@code{texi} (the default). @command{lilypond-book} figures this
out automatically.
The @code{texi} document type produces a texinfo file with music
For example:
@example
- lilypond-book --filter='convert-ly --from=2.0.0' my-book.tely
+ lilypond-book --filter='convert-ly --from=2.0.0' my-book.tely
@end example
@item @option{--help}
@item @option{-P @var{process}}, @option{--process=@var{COMMAND}}
Process lilypond snippets using @var{command}. The default command is
-@var{lilypon-bin}.
+@code{lilypond}.
@item @option{--verbose}
Be verbose.
-@section Bugs
-
-The La@TeX{} @code{\includeonly@{...@}} command is ignored.
+@refbugs
The Texinfo command @code{pagesize} is not interpreted. Almost all
La@TeX{} commands that change margins and line widths are ignored.
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
+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}.
-@command{lilypond-book} processes all music fragments in one big run.
-The state of the GUILE interpreter is not reset between fragments;
-this means that changes made to global GUILE definitions, e.g. done
-with @code{set!} or @code{set-cdr!}, can leak from one fragment into
-the next fragment.
+@node Filename extensions
+@section Filename extensions
+
+You can use any filename extension, but if you do not use the
+recommended extension, you may need to manually specify what output
+format you want. See @ref{Invoking lilypond-book} for details.
+
+@code{Lilypond-book} automatically selects the output format based
+on the filename.
+
+@table @code
+
+@item @emph{.html} produces html output
+
+@item @emph{.itely} produces texinfo output
+
+@item @emph{.lytex} produces latex output
+
+@end table