]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/invoking.itexi
* mf/feta-params.mf (stafflines): introduce linethickness as
[lilypond.git] / Documentation / user / invoking.itexi
1 @c -*-texinfo-*-
2 @node Invoking LilyPond
3 @chapter Invoking LilyPond
4
5 This chapter details the technicalities of running LilyPond.
6
7  
8 @menu
9 * Invoking lilypond::           Titling LilyPond scores.
10 * Invoking the lilypond binary::  
11 * Error messages::              
12 * Reporting bugs::              
13 * Editor support::              
14 * Point and click::             
15 @end menu
16
17 @node Invoking lilypond
18 @section Invoking lilypond
19
20 Nicely titled output is created through a separate program:
21 @file{@code{lilypond}} is a script that uses the LilyPond formatting
22 engine (which is in a separate program) and La@TeX{} to create a
23 nicely titled piece of sheet music, in PDF (Portable Document Format)
24 format.
25
26 @example
27         @code{lilypond} [@var{option}]@dots{} @var{file}@dots{}
28 @end example
29
30 To have @code{lilypond} read from stdin, use a dash @code{-} for @var{file}.
31
32 The @code{lilypond} program supports the following options:
33
34 @table @code
35 @item -k,--keep
36     Keep the temporary directory with all output
37 files. The temporary directory is created in the current directory as @code{@code{lilypond}.dir}.
38 @item -d,--dependencies
39     Write @code{Makefile} dependencies for every input file.
40 @item -h,--help
41     Print usage help.
42 @item -I,--include=@var{dir}
43     Add @var{dir} to LilyPond's include path.
44 @item -m,--no-paper
45     Produce MIDI output only.
46 @item --no-lily
47     Do not run @file{lilypond-bin}. Useful for debugging @code{lilypond}.
48 @item -o,--output=@var{file}
49     Generate output to @var{file}.  The extension of @var{file} is ignored.
50 @item --no-pdf
51     Do not generate  (PDF) or PS.
52
53 @cindex PDF
54 @cindex Scalable fonts
55     
56 @c why is this comment here? --hwn
57
58         If you use lilypond-book or your own wrapper files, do not use
59 @code{\usepackage[[T1]@{fontenc@}} in the file header but do not forget
60 @code{\usepackage[latin1]@{inputenc@}} if you use any other
61 non-anglosaxian characters.
62
63 @item --png
64     Also generate pictures of each page, in PNG format. 
65 @item --psgz
66     Gzip the postscript file.
67 @item --html
68     Make a .HTML file with links to all output files.
69 @item --preview
70     Also generate a picture of the first system of the score.
71
72 @cindex preview
73 @cindex picture
74 @cindex bitmap
75 @cindex pixmap
76 @cindex thumbnail
77 @cindex screenshot
78     
79 @item -s,--set=@var{key}=@var{val}
80     Add @var{key}= @var{val} to the settings, overriding those specified
81 in the files. Possible keys: @code{language}, @code{latexheaders},
82 @code{latexpackages}, @code{latexoptions}, @code{papersize},
83 @code{pagenumber}, @code{linewidth}, @code{orientation},
84 @code{textheight}.
85 @item -v,--version
86 Show version information.
87 @item -V,--verbose
88 Be verbose. This prints out commands as they are executed, and more
89 information about the formatting process is printed.
90 @item --debug
91 Print even more information. This is useful when generating bugreports.
92 @item -w,--warranty
93 Show the warranty with which GNU LilyPond comes. (It comes with 
94 @strong{NO WARRANTY}!)
95 @end table
96
97 @subsection Titling layout
98
99 @code{lilypond} extracts the following header fields from the LY files
100 to generate titling; an example demonstrating all these fields is in
101 @inputfileref{input/test,lilypond-testpage.ly}:
102
103 @table @code
104 @item title
105     The title of the music. Centered on top of the first page.
106 @item subtitle
107     Subtitle, centered below the title.
108 @item poet
109     Name of the poet, left flushed below the subtitle.
110 @item composer
111     Name of the composer, right flushed below the subtitle.
112 @item meter
113     Meter string, left flushed below the poet.
114 @item opus
115     Name of the opus, right flushed below the composer.
116 @item arranger
117     Name of the arranger, right flushed below the opus.
118 @item instrument
119     Name of the instrument, centered below the arranger.
120 @item dedication            
121     To whom the piece is dedicated.
122 @item piece
123     Name of the piece, left flushed below the instrument.
124 @item head
125     A text to print in the header of all pages. It is not called
126 @code{header}, because @code{\header} is a reserved word in LilyPond.
127 @item copyright
128     A text to print in the footer of the first page. Default is to 
129     print the standard footer also on the first page.
130 @item footer
131     A text to print in the footer of all but the last page.
132 @item tagline
133     Line to print at the bottom of last page. The default text is ``Lily
134 was here, @var{version-number}''.
135 @end table
136
137
138 @cindex header
139 @cindex footer
140 @cindex page layout
141 @cindex titles
142
143
144
145 @subsection Additional parameters
146
147 The @code{lilypond} program responds to several parameters specified
148 in a @code{\paper} section of the input file. They can be overridden
149 by supplying a @code{--set} command line option.
150
151 @table @code
152 @item language
153     Specify La@TeX{} language: the @code{babel} package will be
154 included.  Default: unset.
155
156         Read from the @code{\header} block.
157
158 @item latexheaders
159     Specify additional La@TeX{} headers file.
160
161         Normally read from the @code{\header} block. Default value: empty.
162
163 @item latexpackages
164     Specify additional La@TeX{} packages file. This works cumulative,
165 so you can add multiple packages using multiple @code{-s=latexpackages} options.
166        Normally read from the @code{\header} block. Default value:
167 @code{geometry}.
168
169 @item latexoptions
170     Specify additional options for the La@TeX{}
171 @code{\documentclass}. You can put any valid value here. This was
172 designed to allow @code{lilypond} to produce output for double-sided
173 paper, with balanced margins and pagenumbers on alternating sides. To
174 achieve this specify @code{twoside}.
175
176 @item orientation
177     Set orientation. Choices are @code{portrait} or @code{landscape}. Is
178 read from the @code{\paper} block, if set.
179         
180 @item textheight
181     The vertical extension of the music on the page. It is normally 
182     calculated automatically, based on the paper size.
183
184 @item linewidth
185         The music line width. It is normally read from the @code{\paper}
186 block.
187
188 @item papersize
189    The paper size (as a name, e.g. @code{a4}). It is normally read from
190 the @code{\paper} block.
191
192 @item pagenumber
193    If set to @code{no}, no page numbers will be printed.  If set to a
194 positive integer, start with this value as the first page number.
195
196   
197   @item fontenc
198      The font encoding, should be set identical to the @code{font-encoding}
199      property in the score.
200 @end table
201
202
203
204 @node Invoking the lilypond binary
205 @section Invoking the lilypond binary
206 @cindex Invoking LilyPond
207 @cindex command line options
208 @cindex options, command line
209 @cindex switches
210
211
212 The LilyPond system consists of two parts: a binary executable, which
213 is responsible for the formatting functionality, and support scripts,
214 which post-process the resulting output. Normally, the support scripts
215 are called, which in turn invoke the @code{lilypond-bin}
216 binary. However, @code{lilypond-bin} may be called directly as
217 follows.
218
219 @example
220         lilypond-bin [@var{option}]@dots{} @var{file}@dots{}
221 @end example
222
223
224 When invoked with a filename that has no extension, the @file{.ly}
225 extension is tried first.  To read input from  stdin, use a
226 dash @code{-} for @var{file}.
227
228 When @file{filename.ly} is processed it will produce
229 @file{filename.tex} as output (or @file{filename.ps} for PostScript
230 output).  If @file{filename.ly} contains more than one @code{\score}
231 block, then the rest of the scores will be output in numbered files,
232 starting with @file{filename-1.tex}.  Several files can be specified;
233 they will each be processed independently.  @footnote{The status of
234   GUILE is not reset across invocations, so be careful not to change any
235   system defaults from within Scheme.}
236
237
238 @section Command line options
239
240 The following options are supported:
241
242 @table @code
243
244 @item -e,--evaluate=@var{expr}
245 Evaluate the Scheme @var{expr} before parsing any @file{.ly} files.
246 Multiple @code{-e} options may be given, they will be evaluated
247 sequentially.  The function @code{ly:set-option} allows for access to
248 some internal variables.  Use @code{-e '(ly:option-usage')} for more
249 information.
250
251 @item -f,--format=@var{format}
252 @c
253 @c
254 Output format for sheet music. Choices are @code{tex} (for @TeX{}
255 output, to be processed with plain @TeX{}, or through @code{lilypond}),
256 @code{pdftex} for PDF@TeX{} input, @code{ps} (for PostScript),
257 @code{scm} (for a Scheme dump), @code{sk} (for Sketch) and @code{as}
258 (for ASCII-art).
259
260 @strong{This option is only for developers}. Only the @TeX{} output of
261 these is usable for real work.
262
263
264 @cindex output format, setting
265 @cindex Sketch output
266 @cindex ASCII-art output
267 @cindex PDFTeX output
268 @cindex PostScript output
269 @cindex Scheme dump
270
271 @item -h,--help
272 Show a summary of usage.
273 @item --include, -I=@var{directory}
274 Add @var{directory} to the search path for input files.
275 @cindex file searching
276 @cindex search path
277 @item -i,--init=@var{file}
278 Set init file to @var{file} (default: @file{init.ly}).
279 @item -m,--no-paper
280 @cindex MIDI
281 Disable @TeX{} output. If you have a @code{\midi} definition MIDI output
282 will be generated.
283 @item -M,--dependencies
284 Output rules to be included in Makefile.
285 @item -o,--output=@var{FILE}
286 Set the default output file to @var{FILE}.
287
288 @ignore
289 @item -s,--safe
290 Disallow untrusted @code{\include} directives, in-line
291 Scheme evaluation, backslashes in @TeX{}, code.
292
293 @strong{WARNING}: the @code{--safe} option has not been reviewed for a
294 long time. Do not rely on it for automatic invocation (e.g. over the
295 web). Volunteers are welcome to do a new audit.
296 @end ignore
297
298 @item -v,--version
299 Show version information.
300 @item -V,--verbose
301 Be verbose: show full paths of all  files read, and give timing
302 information.
303
304 @item -w,--warranty
305 Show the warranty with which GNU LilyPond comes. (It comes with 
306 @strong{NO WARRANTY}!)
307 @end table
308
309 @section Environment variables
310
311
312 For processing both the @TeX{} and the PostScript output, the
313 appropriate environment variables must be set.  The following scripts
314 do this:
315
316 @itemize @bullet
317 @item @file{buildscripts/out/lilypond-profile}
318 (for SH shells)
319 @item  @file{buildscripts/out/lilypond-login} (for C-shells)
320 @end itemize
321
322 They should normally be sourced as part of the login process. If these
323 scripts are not run from the system wide login process, then you must
324 run it yourself.
325
326 @cindex installing LilyPond
327
328 If you use sh, bash, or a similar shell, then add the following to
329 your @file{.profile}:
330 @example
331         . @var{/the/path/to/}lilypond-profile
332 @end example
333
334 If you use csh, tcsh or a similar shell, then add the following to
335 your @file{~/.login}:
336 @example
337         source @var{/the/path/to/}lilypond-login
338 @end example
339
340 Of course, in both cases, you should substitute the proper location of
341 either script.
342
343 These scripts set the following variables:
344 @table @code
345 @item TEXMF
346  To make sure that @TeX{} and lilypond find data files (among
347 others @file{.tex}, @file{.mf} and @file{.tfm}),
348 you have to set @code{TEXMF} to point to the lilypond data
349 file tree. A typical setting would be
350 @example
351 @{/usr/share/lilypond/1.6.0,@{!!/usr/share/texmf@}@}
352 @end example
353
354
355 @item GS_LIB
356 For processing PostScript output (obtained with
357 @code{-f ps}) with Ghostscript you have to set @code{GS_LIB} to
358 point to the directory containing library PS files.
359
360 @item GS_FONTPATH
361 For processing PostScript output (obtained with
362 @code{-f ps}) with Ghostscript you have to set @code{GS_FONTPATH} to
363 point to the directory containing  PFA files.
364
365 When you print direct PS output, remember to send the PFA files to the
366 printer as well.
367 @end table
368
369
370 @cindex ghostscript
371 @cindex PostScript
372 @cindex GS_FONTPATH
373 @cindex GS_LIB
374 @cindex TEXMF
375 @cindex printing postscript
376
377 The  binary itself recognizes the following environment variables:
378 @table @code
379 @item LILYPONDPREFIX
380 This specifies a directory where locale messages and
381 data files will be looked up by default. The directory should contain
382 subdirectories called @file{ly/}, @file{ps/}, @file{tex/}, etc.
383
384 @item LANG
385 This selects the language for the warning messages.
386 @end table
387
388 @cindex LANG
389 @cindex LILYPONDPREFIX
390
391 @node Error messages
392 @section Error messages
393
394 @cindex error messages
395 Different error messages can appear while compiling a file:
396
397 @table @emph
398 @cindex warning
399
400 @item Warning
401   Something looks suspect. If you are requesting something out of the
402 ordinary then you will understand the message, and can ignore it.
403 However, warnings usually indicate that something is wrong with the
404 input file.
405
406 @item Error
407 Something is definitely wrong.  The current processing step (parsing,
408 interpreting, or formatting) will be finished, but the next step will
409 be skipped.
410
411 @cindex error
412 @cindex fatal error
413 @item Fatal error
414 Something is definitely wrong, and LilyPond cannot continue. This
415 happens rarely. The most usual cause is misinstalled fonts.
416
417 @cindex call trace
418 @cindex Scheme error
419 @item Scheme error
420 Errors that occur while executing Scheme code are caught by the Scheme
421 interpreter. If running with the verbose option (@code{-V} or
422 @code{--verbose}) then a call trace is printed of the offending
423 function call.
424
425 @cindex Programming error
426 @item Programming error
427 There was some internal inconsistency. These error messages are
428 intended to help the programmers and debuggers. Usually, they can be
429 ignored. Sometimes, they come in such big quantities that they obscure
430 other output. In this case, a bug-report should be filed.
431
432 @end table
433
434 @cindex errors, message format
435 If warnings and errors can
436 be linked to some part of the input file, then error messages have the
437 following form
438
439 @example
440   @var{filename}:@var{lineno}:@var{columnno}: @var{message}
441   @var{offending input line}
442 @end example 
443
444 A line-break is inserted in offending line to indicate the column
445 where the error was found. For example, 
446
447 @example
448 test.ly:2:19: error: not a duration: 5:
449   \notes @{ c'4 e'5 
450                    g' @}
451 @end example
452
453
454 @node Reporting bugs
455 @section Reporting bugs
456
457 @cindex bugs
458 @cindex reporting bugs
459
460 If you have input that results in a crash or an erroneous output, then
461 that is a bug. We try respond to bug-reports promptly, and fix them as
462 soon as possible. For this, we need to reproduce and isolate the
463 problem. Help us by sending a defective input file, so we can
464 reproduce the problem. Make it small, so we can easily debug the
465 problem. Don't forget to tell which version you use, and on which
466 platform you run it.  Send the report to
467 @email{bug-lilypond@@gnu.org}.
468
469 @node Editor support
470 @section Editor support
471
472 @cindex editors
473 @cindex vim
474 @cindex emacs
475 @cindex modes, editor 
476 @cindex syntax coloring
477 @cindex coloring, syntax
478
479 There is support from different editors  for LilyPond.
480
481 Emacs has a @file{lilypond-mode}, which provides keyword
482 autocompletion, indentation, LilyPond specific parenthesis matching
483 and syntax coloring, handy compile short-cuts and reading LilyPond
484 manuals using Info.  If lilypond-mode is not installed on your
485 platform, then refer to the installation instructions for more
486 information.
487
488 For VIM, a vimrc is supplied, along with syntax coloring tools. For
489 more information, refer to the
490 @ifhtml
491 @uref{../../../topdocs/out-www/INSTALL.html,installation instructions}.
492 @end ifhtml
493
494 @ifnothtml
495 installation instructions.
496 @end ifnothtml
497
498 For both editors, there is also a facility to jump in the input file
499 to the source of errors in the graphical output. See @ref{Point and
500 click}.
501
502 There exists a plugin jEdit. Refer to the
503 @uref{website,lily4jedit.sourceforget.net} for more information.
504
505
506 @node Point and click
507 @section Point and click
508 @cindex poind and click
509
510 Point and click lets you find notes in the input by clicking on them in
511 the Xdvi window. This makes it easier to find input that causes some
512 error in the sheet music.
513
514 To use it, you need the following software:
515 @itemize @bullet
516 @item a dvi viewer that supports src specials:
517 @itemize @bullet
518 @item Xdvi, version 22.36 or newer.  Available from
519 @uref{ftp://ftp.math.berkeley.edu/pub/Software/TeX/xdvi.tar.gz,ftp.math.berkeley.edu}.
520
521    Most @TeX{} distributions ship with xdvik, which is always a few
522 versions behind the official Xdvi. To find out which Xdvi you are
523 running, try @code{xdvi -version} or @code{xdvi.bin -version}.
524 @item KDVI.  A dvi viewer for KDE.  You need KDVI from KDE 3.0 or
525 newer.  Enable option @emph{Inverse search} in the menu @emph{Settings}.
526
527 Apparently, KDVI does not process PostScript specials correctly. Beams
528 and slurs will not be visible in KDVI.
529
530 @cindex Xdvi
531 @cindex KDVI
532 @cindex KDE
533
534
535
536 @end itemize
537 @item an editor with a client/server interface (or a lightweight GUI
538 editor):
539
540 @cindex editor
541
542 @itemize @bullet
543 @item Emacs. Emacs is an extensible text-editor.  It is available from
544 @uref{http://www.gnu.org/software/emacs/}.  You need version 21 to use
545 column location.
546
547 @c move this elsewhere?
548
549
550 @cindex Emacs
551 @cindex Emacs mode
552 @cindex lilypond-mode for Emacs
553 @cindex syntax coloring
554
555 @item XEmacs. XEmacs is very similar to Emacs.
556
557 @cindex XEmacs
558
559 @item NEdit.  NEdit runs under Windows, and Unix.
560   It is available from @uref{http://www.nedit.org}.
561
562 @cindex NEdit
563
564 @item GVim.  GVim is a GUI variant of VIM, the popular VI
565 clone.  It is available from @uref{http://www.vim.org}.
566
567 @cindex GVim
568 @cindex Vim
569
570 @end itemize
571 @end itemize
572
573
574 Xdvi must be configured to find the @TeX{} fonts and music
575 fonts. Refer to the Xdvi documentation for more information.
576
577 To use point-and-click, add one of these lines to the top of your .ly
578 file:
579 @example
580 #(ly:set-point-and-click 'line)
581 @end example
582 @cindex line-location
583
584 When viewing, Control-Mousebutton 1 will take you to the originating
585 spot in the @file{.ly} file.  Control-Mousebutton 2 will show all
586 clickable boxes.
587
588 If you correct large files with point-and-click, be sure to start
589 correcting at the end of the file. When you start at the top, and
590 insert one line, all following locations will be off by a line.
591
592 @cindex Emacs
593 For using point-and-click with Emacs,  add the following
594 In your Emacs startup file (usually @file{~/.emacs}):
595 @example
596 (server-start)
597 @end example
598
599 Make sure that the environment variable @var{XEDITOR} is set to
600 @example
601 emacsclient --no-wait +%l %f
602 @end example
603 @cindex @var{XEDITOR}
604 If you use XEmacs instead of Emacs, you use @code{(gnuserve-start)} in
605 your @file{.emacs}, and set @code{XEDITOR} to @code{gnuclient -q +%l %f}.
606
607 For using Vim, set @code{XEDITOR} to @code{gvim --remote +%l %f}, or
608 use this argument with Xdvi's @code{-editor} option.
609
610 @cindex NEdit
611 For using NEdit, set @code{XEDITOR} to @code{nc -noask +%l %f}, or
612 use this argument with Xdvi's @code{-editor} option.
613
614 If can also make your editor jump to the exact location of the note
615 you clicked. This is only supported on Emacs and VIM. Users of Emacs version
616 20 must apply the patch @file{emacsclient.patch}. Users of version 21
617 must apply @file{server.el.patch} (version 21.2 and earlier).  At the
618 top of the @code{ly} file, replace the @code{set-point-and-click} line
619 with the following line:
620 @example
621 #(ly:set-point-and-click 'line-column)
622 @end example
623 @cindex line-colomn-location
624 and set @code{XEDITOR} to @code{emacsclient --no-wait +%l:%c %f}.  Vim
625 users can set @var{XEDITOR} to @code{gvim --remote +:%l:norm%c| %f}.
626
627
628
629 @refbugs
630
631 When you convert the @TeX{} file to PostScript using @code{dvips}, it
632 will complain about not finding @code{src:X:Y} files. These complaints
633 are harmless, and can be ignored.
634
635
636