]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/lilypond-book.itely
* scripts/convert-ly.py (conv): dashes rule.
[lilypond.git] / Documentation / user / lilypond-book.itely
1 @c -*-texinfo-*-
2
3 @ignore
4
5 TODO: cleanup
6
7 ** AARGH.e We also have tutorial.itely: Integrating text and music.
8
9    Could also do with a cleanup.  Lost inspiration to fix this manual
10    where to describe what?
11
12 @end ignore
13
14
15 @node lilypond-book manual
16 @chapter lilypond-book manual
17
18 If you want to add pictures of music to a document, you can simply do
19 it the way you would do with other types of pictures.  The pictures
20 are created separately, yielding PostScript pictures or PNG images,
21 and those are included into a La@TeX{} or HTML document.
22
23 @command{lilypond-book} provides a way to automate this process: this
24 program extracts snippets of music from your document, runs LilyPond
25 on them, and outputs the document with pictures substituted for the
26 music.  The line width and font size definitions for the music are
27 adjusted to match the layout of your document.
28
29 This procedure may be applied to La@TeX{}, @code{html} or Texinfo
30 documents.  A tutorial on using lilypond-book is in @ref{Integrating
31 text and music}.  For more information about La@TeX{}
32 @uref{http://www.ctan.org/tex-archive/info/lshort/english/,The not so
33 Short Introduction to LaTeX} provides a introction to using La@TeX{}.
34
35
36
37
38 @menu
39 * Integrating Texinfo and music::  
40 * Integrating LaTeX and music::  
41 * Integrating HTML and music::  
42 * Music fragment options::      
43 * Invoking lilypond-book::      
44 @end menu
45
46
47
48 @cindex texinfo
49 @cindex latex
50 @cindex texinfo
51 @cindex @code{texi}
52 @cindex html
53 @cindex documents, adding music to
54
55
56 @node Integrating Texinfo and music
57 @section Integrating Texinfo and music
58
59 Music is specified like this:
60
61 @example
62 @@lilypond[options, go, here]
63   YOUR LILYPOND CODE
64 @@end lilypond
65 @@lilypond[options, go, here]@{ YOUR LILYPOND CODE @}
66 @@lilypondfile[options, go, here]@{@var{filename}@}
67 @end example
68
69 When lilypond-book is run on it, this results in a texinfo file. We
70 show two simple examples here.  First a complete block:
71
72 @example
73 @@lilypond[26pt]
74   c' d' e' f' g'2 g'
75 @@end lilypond
76 @end example
77
78 @noindent
79 produces
80
81 @lilypond
82   c' d' e' f' g'2 g'
83 @end lilypond
84
85 Then the short version:
86
87 @example
88 @@lilypond[11pt]@{<<c' e' g'>>@}
89 @end example
90
91 @noindent
92 produces
93
94 @lilypond[11pt]{ <<c' e' g'>> }
95
96 @command{lilypond-book} knows the default margins and a few paper
97 sizes.  One of these commands should be in the beginning of the document:
98
99 @itemize @bullet
100 @item @code{@@afourpaper}
101 @item @code{@@afourlatex}
102 @item @code{@@afourwide}
103 @item @code{@@smallbook}
104 @end itemize
105
106 @noindent
107 @code{@@pagesizes} are not yet supported.
108
109 When producing texinfo, lilypond-book also generates bitmaps of the
110 music, so you can make a HTML document with embedded music.
111
112
113 @c @TeX{} in node name seems to barf
114 @node Integrating LaTeX and music
115 @section Integrating LaTeX and music
116
117
118 For La@TeX{}, music is entered using
119
120 @example
121 \begin[options, go, here]@{lilypond@}
122   YOUR LILYPOND CODE
123 \end@{lilypond@}
124 @end example
125
126 @example
127 \lilypondfile[options, go,here]@{@var{filename}@}
128 @end example
129
130 @noindent
131 or
132
133 @example
134 \lilypond@{ YOUR LILYPOND CODE @}
135 @end example
136
137 Running lilypond-book yields a file that can be processed with
138 La@TeX{}. We show some examples here:
139
140 @example
141 \begin[26pt]@{lilypond@}
142   c' d' e' f' g'2 g'2
143 \end@{lilypond@}
144 @end example
145
146 @noindent
147 produces
148
149 @lilypond[26pt]
150   c' d' e' f' g'2 g'2
151 @end lilypond
152
153 Then the short version:
154
155 @example
156 \lilypond[11pt]@{<<c' e' g'>>@}
157 @end example
158
159 @noindent
160 produces
161
162 @lilypond[11pt]{<<c' e' g'>>}
163
164 The linewidth of the music will be adjust by examining the commands in
165 the document preamble, the part of the document before
166 @code{\begin@{document@}}: @command{lilypond-book} sends these to
167 La@TeX{} to find out how wide the text is. The line width variable for
168 the music fragments are adjusted to the text width.
169
170 After @code{\begin@{document@}}, the column changing commands
171 @code{\onecolumn} , @code{\twocolumn} commands and the
172 @code{multicols} environment from the multicol package are also
173 interpreted.
174
175 The titling from the @code{\header} section of the fragments can be
176 imported by adding the following to the top of the La@TeX{} file:
177
178 @example
179 \input titledefs.tex
180 \def\preLilyPondExample@{\def\mustmakelilypondtitle@{@}@}
181 @end example
182
183 The music will be surrounded by @code{\preLilyPondExample} and
184 @code{\postLilyPondExample}, which are defined to be empty by default.
185
186 @node Integrating HTML and music
187 @section Integrating HTML and music
188
189 Music is entered using
190
191 @example
192 <lilypond relative1 verbatim>
193   \key c \minor r8 c16 b c8 g as c16 b c8 d | g,4
194 </lilypond>
195 @end example
196
197 @noindent
198 of which lilypond-book will produce a HTML with appropriate image tags for the
199 music fragments:
200  
201 @example
202 <lilypond relative1 verbatim>
203   \key c \minor r8 c16 b c8 g as c16 b c8 d | g,4
204 </lilypond>
205 @end example
206
207 @lilypond[relative1]
208   \key c \minor r8 c16 b c8 g as c16 b c8 d | g,4
209 @end lilypond
210
211 For inline pictures, use @code{<lilypond ... />} syntax, eg.
212 @example
213 Some music in <lilypond a b c/> a line of text.
214 @end example
215
216 A special feature not (yet) available in other output formats, is the
217 @code{<ly2dvifile>} tag, for example,
218 @example
219   <ly2dvifile>trip.ly</ly2dvifile>
220 @end example
221 This runs @file{trip.ly} through ly2dvi (see also @ref{Invoking
222 ly2dvi}), and substitutes a preview image in the output. The image
223 links to a separate HTML file, so clicking it will take the viewer to
224 a menu, with links to images, midi and printouts.
225
226 @cindex ly2dvi
227 @cindex titling in THML
228 @cindex preview image
229 @cindex thumbnail
230
231 @node Music fragment options
232 @section Music fragment options
233
234 The commands for lilypond-book have room to specify one or more of the
235 following options:
236
237 @table @code
238 @item verbatim
239 CONTENTS is copied into the source enclosed in a verbatim block,
240 followed by any text given with the @code{intertext} option, then
241 the actual music is displayed.  This option does not work with
242 the short version of the music blocks:
243
244 @code{ @@lilypond@{ CONTENTS @} } and @code{ \lilypond@{ CONTENTS @} }
245
246 @item smallverbatim
247 works like @code{verbatim}, but in a smaller font.
248
249 @item intertext="@var{text}"
250 is used in conjunction with @code{verbatim} option: This puts
251 @var{text} between the code and the music (without indentation).
252
253 @item filename="@var{filename}"
254 saves the LilyPond code to @var{filename}.  By default, a hash value
255 of the code is used.
256
257 @item 11pt
258 @lilypond[11pt, eps]
259 \relative c' {
260   r16 c[ d e] f[ d e c] g'8[ c] b[\prall c] |
261   d16[ g, a b] c[ a b g] d'8[ g f\prall g]
262 }
263 @end lilypond
264
265 @item 13pt
266 @lilypond[13pt, eps]
267 \relative c' {
268   r16 c[ d e] f[ d e c] g'8[ c] b[\prall c] |
269   d16[ g, a b] c[ a b g] d'8[ g f\prall g]
270 }
271 @end lilypond
272
273 @item 16pt
274 @lilypond[16pt, eps]
275 \relative c' {
276   r16 c[ d e] f[ d e c] g'8[ c] b[\prall c] |
277 }
278 @end lilypond
279
280 @item 20pt
281 @lilypond[20pt, eps]
282 \relative c' {
283   r16 [c d e][f d e c] [g'8 c][b-\prall c] |
284 }
285 @end lilypond
286
287 @item 26pt
288 @lilypond[26pt, eps]
289 \relative c' {
290   r16 c[ d e] f[ d e c] g'8[ c] b[\prall c] |
291 }
292 @end lilypond
293
294 @item raggedright
295 produces naturally spaced lines (i.e., @code{raggedright = ##t}); this
296 works well for small music fragments.
297
298 @item multiline
299 is the opposite of @code{singleline}: it justifies and breaks lines.
300
301 @item linewidth=@var{size}@var{unit}
302 sets linewidth to @var{size}, where @var{unit} = cm, mm, in, or pt.
303 This option affects LilyPond output, not the text layout.
304
305 @item notime
306 prevents printing time signature.
307
308 @item fragment
309 @itemx nofragment
310 overrides @command{lilypond-book} auto detection of what type of code is
311 in the LilyPond block, voice contents or complete code.
312
313 @item indent=@var{size}@var{unit}
314 sets indentation of the first music system to @var{size},
315 where @var{unit} = cm, mm, in, or pt.  This option affects LilyPond,
316 not the text layout.  For single-line fragments the default is to
317 use no indentation.
318
319 @item noindent
320 sets indentation of the first music system to zero.  This option
321 affects LilyPond, not the text layout.
322
323 @item notexidoc
324 prevents including @code{texidoc}. This is only for Texinfo output.
325
326 In Texinfo, the music fragment is normally preceded by the
327 @code{texidoc} field from the @code{\header}. The LilyPond test
328 documents are composed from small @file{.ly} files in this way:
329
330 @example
331   \header @{
332     texidoc = "this file demonstrates a single note"
333   @}
334   \score @{ \notes @{ c'4 @} @} 
335 @end example
336
337 @item quote
338 instructs @command{lilypond-book} to put La@TeX{} and Texinfo output
339 into a quotation block.
340
341 @item printfilename
342 prints the file name before the music example.  Useful in conjunction
343 with @code{\lilypondfile}.
344
345 @item relative, relative @var{N}
346 uses relative octave mode.  By default, notes are specified relative
347 central C.  The optional integer argument specifies the octave of the
348 starting note, where the default @code{1} is central C.
349 @end table
350
351
352 @node Invoking lilypond-book
353 @section Invoking lilypond-book
354
355 Running @command{lilypond-book} generates lots of small files that
356 LilyPond will process.  To avoid all that garbage in the source
357 directory, it is advisable to change to a temporary directory first:
358 @example
359 cd out && lilypond-book ../yourfile.tex
360 @end example
361
362 @noindent
363 or to use the @option{--outdir} command line option, and change to
364 that director before running La@TeX{} or @file{makeinfo}:
365
366 @example
367 lilypond-book --outdir=out yourfile.tex
368 cd out  && latex yourfile.latex
369 @end example
370
371 For La@TeX{} input, the file to give to La@TeX{} has extension @file{.latex}.
372 Texinfo input will be written to a file with extension @file{.texi}.
373
374 @cindex titling and lilypond-book
375 @cindex lilypond-book and titling
376 @cindex @code{\header} in La@TeX{} documents
377
378 To add titling from the @code{\header} section of the files, add the
379 following to the top of the La@TeX{} file:
380 @example
381 \input titledefs.tex
382 \def\preLilyPondExample@{\def\mustmakelilypondtitle@{@}@}
383 @end example
384
385 @cindex outline fonts
386 @cindex type1 fonts
387 @cindex dvips
388 @cindex invoking dvips
389
390 For printing the LaTeX  document, you will need  to use dvips. For
391 producing PS  with scalable fonts, add the following options to the dvips
392 command line:
393 @example
394  -Ppdf -u +lilypond.map
395 @end example 
396
397
398
399 @command{lilypond-book} accepts the following command line options:
400
401 @table @code
402 @item @option{-f @var{format}}, @option{--format=@var{format}}
403 Specify the document type to process: @code{html}, @code{latex} or
404 @code{texi} (the default).  @command{lilypond-book} usually figures this
405 out automatically.
406
407 The @code{texi} document type produces a texinfo file with music
408 fragments in the DVI output only. For getting images in the HTML
409 version,  the format 
410 @code{texi-html} must be used.
411
412 @item @option{--default-music-fontsize=@var{sz}pt}
413 Set the music font size to use if no fontsize is given as option.
414
415 @item @option{--force-music-fontsize=@var{sz}pt}
416 Force all music to use this fontsize, overriding options given to
417 @code{\begin@{lilypond@}}.
418
419 @item @option{-I @var{dir}}, @option{--include=@var{dir}}
420 Add @var{DIR} to the include path.
421
422 @item @option{-M}, @option{--dependencies}
423 Write dependencies to @file{filename.dep}.
424
425 @item @option{--dep-prefix=@var{pref}}
426 Prepend @var{pref} before each @option{-M} dependency.
427
428 @item @option{-n}, @option{--no-lily}
429 Generate the @code{.ly} files, but do not process them.
430
431 @item @option{--no-music}
432 Strip all music from the input file.
433
434 @item @option{--no-pictures}
435 Do not generate pictures when processing Texinfo.
436
437 @item @option{--outname=@var{file}}
438 The name of La@TeX{} file to output.  If this option is not given,
439 the output name is derived from the input name.
440
441 @item @option{--outdir=@var{dir}}
442 Place generated files in @var{dir}.
443
444 @item @option{--version}
445 Print version information.
446
447 @item @option{--help}
448 Print a short help message.
449 @end table
450
451
452
453 @section Bugs
454
455 The La@TeX{} @code{\includeonly@{...@}} command is ignored.
456
457 The Texinfo command @code{pagesize} is not interpreted. Almost all
458 La@TeX{} commands that change margins and line widths are ignored.
459
460 The size of a music block is limited to 1.5 kb, due to technical
461 problems with the Python regular expression engine. For longer files,
462 use @code{\lilypondfile}.  Using @code{\lilypondfile} also makes
463 upgrading files (through convert-ly, see @ref{Invoking convert-ly})
464 easier.
465
466 @command{lilypond-book} processes all music fragments in one big run.
467 The state of the GUILE interpreter is not reset between fragments;
468 this means that changes made to global GUILE definitions, e.g. done
469 with @code{set!} or @code{set-cdr!}, can leak from one fragment into
470 the next fragment.