X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fusage%2Flilypond-book.itely;h=d41d70ed07702db998566c549032bf4d8641cd9c;hb=4e71964c781e1d86d53d50f746e67575cfe0c358;hp=4e2aa4c5cdda3065cf632c015df77ea221fbdf28;hpb=2cb02ca327fbbde256ae6712d1e968b9da5d492e;p=lilypond.git diff --git a/Documentation/usage/lilypond-book.itely b/Documentation/usage/lilypond-book.itely index 4e2aa4c5cd..d41d70ed07 100644 --- a/Documentation/usage/lilypond-book.itely +++ b/Documentation/usage/lilypond-book.itely @@ -4,10 +4,11 @@ Translation of GIT committish: FILL-IN-HEAD-COMMITTISH When revising a translation, copy the HEAD committish of the - version that you are working on. See TRANSLATION for details. + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. @end ignore -@c \version "2.12.0" +@c \version "2.13.36" @c Note: keep this node named so that `info lilypond-book' brings you here. @node lilypond-book @@ -51,6 +52,7 @@ documents. * Invoking lilypond-book:: * Filename extensions:: * lilypond-book templates:: +* Sharing the table of contents:: * Alternate methods of mixing text and music:: @end menu @@ -83,13 +85,13 @@ For example, \begin{lilypond} \relative c' { - c2 g'2 \times 2/3 { f8 e d } c'2 g4 + c2 e2 \times 2/3 { f8 a b } a2 e4 } \end{lilypond} Options are put in brackets. -\begin[fragment,quote,staffsize=26,verbatim]{lilypond} +\begin{lilypond}[fragment,quote,staffsize=26,verbatim] c'4 f16 \end{lilypond} @@ -98,8 +100,8 @@ Larger examples can be put into a separate file, and introduced with \lilypondfile[quote,noindent]{screech-boink.ly} -(If needed, replace screech-boink.ly by any .ly file you put in the same -directory as this file.) +(If needed, replace @file{screech-boink.ly} by any @file{.ly} file +you put in the same directory as this file.) \end{document} @end verbatim @@ -142,7 +144,7 @@ For example, @lilypond \relative c' { - c2 g'2 \times 2/3 { f8 e d } c'2 g4 + c2 e2 \times 2/3 { f8 a b } a2 e4 } @end lilypond @@ -187,7 +189,7 @@ to use @LaTeX{}. Music is entered using @example -\begin[options,go,here]@{lilypond@} +\begin@{lilypond@}[options,go,here] YOUR LILYPOND CODE \end@{lilypond@} @end example @@ -214,7 +216,7 @@ processed with @LaTeX{}. We show some examples here. The @code{lilypond} environment @example -\begin[quote,fragment,staffsize=26]@{lilypond@} +\begin@{lilypond@}[quote,fragment,staffsize=26] c' d' e' f' g'2 g'2 \end@{lilypond@} @end example @@ -314,7 +316,7 @@ is trivial. @example \def\betweenLilyPondSystem#1@{\endinput@} -\begin[fragment]@{lilypond@} +\begin@{lilypond@}[fragment] c'1\( e'( c'~ \break c' d) e f\) \end@{lilypond@} @end example @@ -325,7 +327,7 @@ the number of systems you want in the output. @example \def\betweenLilyPondSystem#1@{ - \ifnum##1<2\else\expandafter\endinput\fi + \ifnum#1<2\else\expandafter\endinput\fi @} @end example @@ -452,6 +454,7 @@ Music is entered using \key c \minor c4 es g2 @end example + @noindent @command{lilypond-book} then produces an HTML file with appropriate image tags for the music fragments: @@ -467,13 +470,15 @@ are separated by a colon from the music, for example Some music in a line of text. @end example - To include separate files, say @example @var{filename} @end example +For a list of options to use with the @code{lilypond} or +@code{lilypondfile} tags, see @ref{Music fragment options}. + Additionally, @code{} displays the current version of lilypond. @@ -487,7 +492,7 @@ of lilypond. For inserting LilyPond snippets it is good to keep the conformity of our DocBook document, thus allowing us to use DocBook editors, validation -etc. So we don't use custom tags, only specify a convention based on the +etc. So we don't use custom tags, only specify a convention based on the standard DocBook elements. @subheading Common conventions @@ -617,7 +622,7 @@ Since this is the default, @code{nofragment} is redundant normally. @item indent=@var{size}\@var{unit} Set indentation of the first music system to @var{size}, using -@var{unit} as units. @var{unit} is one of the following strings: +@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, not the text layout. @@ -696,12 +701,12 @@ as a domain. @item texidoc (Only for Texinfo output.) If @command{lilypond} is called with the @option{--header=@/texidoc} option, and the file to be processed is -called @file{foo@/.ly}, it creates a file @file{foo@/.texidoc} if there +called @file{foo.ly}, it creates a file @file{foo.texidoc} if there is a @code{texidoc} field in the @code{\header}. The @code{texidoc} option makes @command{lilypond-book} include such files, adding its contents as a documentation block right before the music snippet. -Assuming the file @file{foo@/.ly} contains +Assuming the file @file{foo.ly} contains @example \header @{ @@ -729,11 +734,11 @@ Most LilyPond test documents (in the @file{input} directory of the distribution) are small @file{.ly} files which look exactly like this. For localization purpose, if the Texinfo document contains -@code{@@documentlanguage @var{LANG}} and @file{foo@/.ly} header +@code{@@documentlanguage @var{LANG}} and @file{foo.ly} header contains a @code{texidoc@var{LANG}} field, and if @command{lilypond} is called with @option{--header=@/texidoc@var{LANG}}, then -@file{foo@/.texidoc@var{LANG}} will be included instead of -@file{foo@/.texidoc}. +@file{foo.texidoc@var{LANG}} will be included instead of +@file{foo.texidoc}. @item lilyquote (Only for Texinfo output.) This option is similar to quote, but only @@ -746,9 +751,9 @@ useful if you want to @code{quote} the music snippet but not the (Only for Texinfo output.) This option works similarly to @code{texidoc} option: if @command{lilypond} is called with the @option{--header=@/doctitle} option, and the file to be processed is -called @file{foo@/.ly} and contains a @code{doctitle} field in the -@code{\header}, it creates a file @file{foo@/.doctitle}. When -@code{doctitle} option is used, the contents of @file{foo@/.doctitle}, +called @file{foo.ly} and contains a @code{doctitle} field in the +@code{\header}, it creates a file @file{foo.doctitle}. When +@code{doctitle} option is used, the contents of @file{foo.doctitle}, which should be a single line of @var{text}, is inserted in the Texinfo document as @code{@@lydoctitle @var{text}}. @code{@@lydoctitle} should be a macro defined in the Texinfo document. @@ -846,7 +851,7 @@ See the documentation of Texinfo for further details. Specify the document type to process: @code{html}, @code{latex}, @code{texi} (the default) or @code{docbook}. If this option is missing, @command{lilypond-book} tries to detect the format automatically, see -@ref{Filename extensions}. Currently, @code{texi} is the same as +@ref{Filename extensions}. Currently, @code{texi} is the same as @code{texi-html}. @c This complicated detail is not implemented, comment it out -jm @@ -914,7 +919,7 @@ useful if your document is processed with @command{xelatex}, for example. @itemx --left-padding=@var{amount} -Pad EPS boxes by this much. @var{amount} is measured in millimeters, +Pad EPS boxes by this much. @var{amount} is measured in millimeters, and is 3.0 by default. This option should be used if the lines of music stick out of the right margin. @@ -970,6 +975,7 @@ selects the output format based on the input filename's extension. @item @strong{extension} @tab @strong{output format} @item @item @file{.html} @tab HTML +@item @file{.htmly} @tab HTML @item @file{.itely} @tab Texinfo @item @file{.latex} @tab @LaTeX{} @item @file{.lytex} @tab @LaTeX{} @@ -1010,16 +1016,14 @@ Normal LaTeX text. \begin@{lilypond@} \relative c'' @{ -a4 b c d + a4 b c d @} \end@{lilypond@} -More LaTeX text. +More LaTeX text, and options in square brackets. -\begin@{lilypond@} -\relative c'' @{ +\begin@{lilypond@}[fragment,relative=2,quote,staffsize=26,verbatim] d4 c b a -@} \end@{lilypond@} \end@{document@} @end example @@ -1030,16 +1034,19 @@ You can include LilyPond fragments in Texinfo; in fact, this entire manual is written in Texinfo. @example -\input texinfo +\input texinfo @c -*-texinfo-*- @@node Top +@@top Texinfo text -@@lilypond[verbatim,fragment,ragged-right] -a4 b c d +@@lilypond +\relative c' @{ + a4 b c d +@} @@end lilypond -More Texinfo text +More Texinfo text, and options in brackets. @@lilypond[verbatim,fragment,ragged-right] d4 c b a @@ -1049,6 +1056,38 @@ d4 c b a @end example +@subsection html + +@example + + + + + +

+Documents for lilypond-book may freely mix music and text. For +example, + +\relative c'' @{ + a4 b c d +@} + +

+ +

+Another bit of lilypond, this time with options: + + +a4 b c d + +

+ + + + + +@end example + @subsection xelatex @verbatim @@ -1092,7 +1131,7 @@ and so on. The fonts of snippets set with LilyPond will have to be set from inside -of the snippet. For this you should read the AU on how to use +of the snippet. For this you should read the AU on how to use lilypond-book. \selectlanguage{ngerman} @@ -1104,6 +1143,112 @@ unterst__tzt werden. @end verbatim +@node Sharing the table of contents +@section Sharing the table of contents + +These functions already exist in the OrchestralLily package: + +@example +@url{http://repo.or.cz/w/orchestrallily.git} +@end example + +For greater flexibility in text handling, some users prefer to +export the table of contents from lilypond and read it into +@LaTeX{}. + +@subsubheading Exporting the ToC from LilyPond + +This assumes that your score has multiple movements in the same lilypond +output file. + +@smallexample +#(define (oly:create-toc-file layout pages) + (let* ((label-table (ly:output-def-lookup layout 'label-page-table))) + (if (not (null? label-table)) + (let* ((format-line (lambda (toc-item) + (let* ((label (car toc-item)) + (text (caddr toc-item)) + (label-page (and (list? label-table) + (assoc label label-table))) + (page (and label-page (cdr label-page)))) + (format #f "~a, section, 1, @{~a@}, ~a" page text label)))) + (formatted-toc-items (map format-line (toc-items))) + (whole-string (string-join formatted-toc-items ",\n")) + (output-name (ly:parser-output-name parser)) + (outfilename (format "~a.toc" output-name)) + (outfile (open-output-file outfilename))) + (if (output-port? outfile) + (display whole-string outfile) + (ly:warning (_ "Unable to open output file ~a for the TOC information") outfilename)) + (close-output-port outfile))))) + +\paper @{ + #(define (page-post-process layout pages) (oly:create-toc-file layout pages)) +@} +@end smallexample + +@subsubheading Importing the ToC into LaTeX + +In LaTeX, the header should include: + +@c no, this doesn't require the smallexample, but since the other +@c two blocks on this page use it, I figured I might as well +@c user it here as well, for consistency. -gp +@smallexample +\usepackage@{pdfpages@} +\includescore@{nameofthescore@} +@end smallexample + +@noindent +where @code{\includescore} is defined as: + +@smallexample +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \includescore@{PossibleExtension@} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Read in the TOC entries for a PDF file from the corresponding .toc file. +% This requires some heave latex tweaking, since reading in things from a file +% and inserting it into the arguments of a macro is not (easily) possible + +% Solution by Patrick Fimml on #latex on April 18, 2009: +% \readfile@{filename@}@{\variable@} +% reads in the contents of the file into \variable (undefined if file +% doesn't exist) +\newread\readfile@@f +\def\readfile@@line#1@{% +@{\catcode`\^^M=10\global\read\readfile@@f to \readfile@@tmp@}% +\edef\do@{\noexpand\g@@addto@@macro@{\noexpand#1@}@{\readfile@@tmp@}@}\do% +\ifeof\readfile@@f\else% +\readfile@@line@{#1@}% +\fi% +@} +\def\readfile#1#2@{% +\openin\readfile@@f=#1 % +\ifeof\readfile@@f% +\typeout@{No TOC file #1 available!@}% +\else% +\gdef#2@{@}% +\readfile@@line@{#2@}% +\fi +\closein\readfile@@f% +@}% + + +\newcommand@{\includescore@}[1]@{ +\def\oly@@fname@{\oly@@basename\@@ifmtarg@{#1@}@{@}@{_#1@}@} +\let\oly@@addtotoc\undefined +\readfile@{\oly@@xxxxxxxxx@}@{\oly@@addtotoc@} +\ifx\oly@@addtotoc\undefined +\includepdf[pages=-]@{\oly@@fname@} +\else +\edef\includeit@{\noexpand\includepdf[pages=-,addtotoc=@{\oly@@addtotoc@}] +@{\oly@@fname@}@}\includeit +\fi +@} +@end smallexample + + @node Alternate methods of mixing text and music @section Alternative methods of mixing text and music