]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/invoking.itely
This commit was manufactured by cvs2svn to create tag 'lilypond_2_5_32'.
[lilypond.git] / Documentation / user / invoking.itely
1 @c -*- coding: latin-1; mode: texinfo; -*-
2 @node Running LilyPond
3 @chapter Running LilyPond
4
5 This chapter details the technicalities of running LilyPond.
6
7
8 @menu
9 * Invoking lilypond::           
10 * Error messages::              
11 * Updating files with convert-ly::  
12 * Reporting bugs::              
13 * Editor support::              
14 * File structure::              
15 * Including LilyPond files::    
16 @end menu
17
18 @node Invoking lilypond
19 @section Invoking lilypond
20 @cindex Invoking LilyPond
21 @cindex command line options
22 @cindex options, command line
23 @cindex switches
24
25
26 The @code{lilypond} executable may be called as follows from the command line.
27
28 @example
29 lilypond [@var{option}]@dots{} @var{file}@dots{}
30 @end example
31
32
33 When invoked with a filename that has no extension, the @file{.ly}
34 extension is tried first.  To read input from stdin, use a
35 dash (@code{-}) for @var{file}.
36
37 When @file{filename.ly} is processed it will produce
38 @file{filename.tex} as output (or @file{filename.ps} for PostScript
39 output).  If @file{filename.ly} contains more than one @code{\score}
40 block, then the rest of the scores will be output in numbered files,
41 starting with @file{filename-1.tex}.  Several files can be specified;
42 they will each be processed independently.  @footnote{The status of
43 GUILE is not reset after processing a @code{.ly} file, so be careful
44 not to change any system defaults from within Scheme.}
45
46
47 @section Command line options
48
49 The following options are supported:
50
51 @table @code
52
53 @item -e,--evaluate=@var{expr}
54 Evaluate the Scheme @var{expr} before parsing any @file{.ly} files.
55 Multiple @code{-e} options may be given, they will be evaluated
56 sequentially.  
57
58 @item -f,--format=@var{format}
59 which formats should be written.  Choices are @code{svg}, @code{ps},
60 @code{pdf}, @code{png}, @code{tex}, @code{dvi}.
61
62 @item -b,--backend=@var{format}
63 the output format to use for the back-end.  Choices are
64 @table @code
65 @item tex
66 for @TeX{} output, to be processed with La@TeX{}.  If present, the file
67 @file{file.textmetrics} is read to determine text extents.
68 @item texstr
69 dump text strings to @file{.texstr} file, which can be run through
70 (La)@TeX{}, resulting in a @code{.textmetrics} file, which contains the
71 extents of strings of text.
72 @item ps
73  for PostScript.
74 @cindex PostScript output
75
76   Postscript files include TTF, Type1 and OTF fonts.  No subsetting of
77   these fonts is done.  When using oriental character sets, this can
78   lead to huge files.  
79   
80 @item eps
81  for encapsulated PostScript.  This dumps every page (system) as a separate
82 @file{EPS} file, without fonts, and as one collated @file{EPS} file with
83 all pages (systems) including fonts.
84
85 This mode is used by default by lilypond-book.
86
87 @item svg
88  for SVG (Scalable Vector Graphics)
89 @cindex SVG (Scalable Vector Graphics)
90 @item scm
91  for a dump of the raw, internal Scheme-based drawing commands.
92 @cindex Scheme dump
93 @end table
94  
95 @cindex output format, setting
96
97 @item -d,--define-default=@var{var}=@var{val}
98 This sets the internal program option @var{var} to the Scheme value
99 @var{val}. If @var{val} is not supplied, then @var{#t} is used. To
100 switch off an option, @code{no-} may be prefixed to @var{var}, eg.
101 @example
102 -dno-point-and-click
103 @end example
104
105 @noindent
106 is the same as
107 @example
108 -dpoint-and-click='#f'
109 @end example
110
111 @cindex point and click
112
113 Setting the @code{help} option will print a summary of the options
114 available, and exit.
115
116 @item -h,--help
117 Show a summary of usage.
118
119 @item --include, -I=@var{directory}
120 Add @var{directory} to the search path for input files.
121 @cindex file searching
122 @cindex search path
123
124 @item -i,--init=@var{file}
125 Set init file to @var{file} (default: @file{init.ly}).
126
127 @item -o,--output=@var{FILE}
128 Set the default output file to @var{FILE}.  The appropriate
129 suffix will be added (ie @code{.pdf} for pdf, @code{.tex}
130 for tex, etc).
131
132 @item --ps
133 Generate PostScript.
134
135 @item --dvi
136 Generate DVI files.  In this case, the @TeX{} backend should be
137 specified, i.e., @code{-f tex}.
138
139 @item --png
140 Generate pictures of each page, in PNG format.  This implies
141 @code{--ps}.  The resolution in DPI of the image may be set with
142 @example
143 -dresolution=110 
144 @end example
145
146 @item --pdf
147 Generate PDF.  This implies @code{--ps}.
148
149 @item --preview
150 Generate an output file containing the titles and the first system
151
152 @item --no-pages
153 Do not generate the full pages.  Useful in combination with
154 @code{--preview}.
155
156 @item -s,--safe
157 Do not trust the @code{.ly} input.
158
159 When LilyPond formatting is available through a web server, either the
160 @code{--safe} or the @code{--jail} option @b{MUST} be passed.  The
161 @code{--safe} option will prevent inline Scheme code from wreaking
162 havoc, for example
163
164 When LilyPond formatting is available through a web server, the
165 @code{--safe} @b{MUST} be passed.  This will prevent inline Scheme
166 code from wreaking havoc, for example
167
168 @quotation
169 @verbatim
170 #(system "rm -rf /")
171 {
172   c4^#(ly:export (ly:gulp-file "/etc/passwd"))
173 }
174 @end verbatim
175 @end quotation
176
177 The @code{--safe} option works by evaluating in-line Scheme
178 expressions in a special safe module.  This safe module is derived from
179 GUILE @file{safe-r5rs} module, but adds a number of functions of the
180 LilyPond API.  These functions are listed in @file{scm/@/safe@/-lily@/.scm}.
181
182 In addition, @code{--safe} disallows @code{\include} directives and
183 disables the use of backslashes in @TeX{} strings.
184
185 In @code{--safe} mode, it is not possible to import LilyPond variables
186 into Scheme.
187
188 @code{--safe} does @emph{not} detect resource overuse.  It is still
189 possible to make the program hang indefinitely, for example by feeding
190 cyclic data structures into the backend.  Therefore, if using LilyPond
191 on a publicly accessible webserver, the process should be limited in
192 both CPU and memory usage.
193
194 Note that @code{--safe} will prevent many useful LilyPond snippets from
195 being compiled.  For a softer but secure alternative you can use the
196 @code{--jail} option.
197
198
199 @item -j,--jail=@var{user},@var{group},@var{jail},@var{dir}
200 Run LilyPond in a chroot jail.
201
202 The @code{--jail} option provides a more flexible alternative to 
203 @code{--safe} when LilyPond formatting is available through a web
204 server or whenever LilyPond executes externally provided
205 sources.
206
207 The @code{--jail} option works by changing the root of LilyPond to
208 @var{jail} just before starting the actual compilation process.  The user
209 and group are then changed to match those provided, and the current
210 directory is changed to @var{dir}.  This setup guarantees that it is not
211 possible (at least in theory) to escape from the jail.  Note that for
212 @code{--jail} to work LilyPond must be run as root, which is usually
213 accomplished in a safe way using @command{sudo}.
214
215 Setting up a jail is a slightly delicate matter, as we must be sure that
216 LilyPond is able to find whatever it needs to compile the source
217 @emph{inside the jail}. A typical setup comprises the following items:
218
219 @table @asis
220 @item Setting up a separate filesystem
221 A separate filesystem should be created for LilyPond, so that it can be
222 mounted with safe options such as @code{noexec}, @code{nodev}, and
223 @code{nosuid}.  In this way, it is impossible to run executables or to
224 write directly to a device from LilyPond.  If you do not want to create a
225 separate partition, just create a file of reasonable size and use it to
226 mount a loop device.  A separate filesystem also guarantees that LilyPond
227 cannot write more space than it is allowed.
228
229 @item Setting up a separate user
230 A separate user and group (say, @samp{lily}/@samp{lily}) with low
231 privileges should be used to run LilyPond inside the jail.  There should
232 be a single directory writable by this user, which should be passed in
233 @var{dir}.
234
235 @item Preparing the jail
236 LilyPond needs to read a number of files while running.  All these files
237 are to be copied into the jail, under the same path they apper in the
238 real root filesystem.  The entire content of the LilyPond installation
239 (e.g., @file{/usr/share/lilypond})
240 should be copied.
241
242 If problems arise, the simplest way to trace them down is to run
243 LilyPond using @command{strace}, which will allow you to determine which
244 files are missing.
245
246 @item Running LilyPond
247 In a jail mounted with @code{noexec} it is impossible to execute any external
248 program.  Therefore LilyPond must be run with a backend that does not
249 require any such program.  As we already mentioned, it must be also run
250 with superuser privileges (which, of course, it will lose immediately),
251 possibly using @command{sudo}.  It is a good idea to limit the number of
252 seconds of CPU time LilyPond can use (e.g., using @command{ulimit
253 -t}), and, if your operating system supports it, the amount of memory
254 that can be allocated.
255 @end table
256
257
258 @item -v,--version
259 Show version information.
260
261 @item -V,--verbose
262 Be verbose: show full paths of all files read, and give timing
263 information.
264
265 @item -w,--warranty
266 Show the warranty with which GNU LilyPond comes. (It comes with
267 @strong{NO WARRANTY}!)
268 @end table
269
270
271 @section Environment variables
272
273 @ignore
274 For processing both the @TeX{} and the PostScript output, the
275 appropriate environment variables must be set.  The following scripts
276 do this:
277
278 @itemize @bullet
279 @item @file{buildscripts/@/out/@/lilypond@/-profile}
280 (for SH shells)
281 @item @file{buildscripts/@/out/@/lilypond@/-login} (for C-shells)
282 @end itemize
283
284 They should normally be sourced as part of the login process.  If these
285 scripts are not run from the system wide login process, then you must
286 run them yourself.
287
288 @cindex installing LilyPond
289
290 If you use sh, bash, or a similar shell, then add the following to
291 your @file{.profile}:
292 @example
293 . @var{/the/path/to/}lilypond-profile
294 @end example
295
296 If you use csh, tcsh or a similar shell, then add the following to
297 your @file{~/.login}:
298 @example
299 source @var{/the/path/to/}lilypond-login
300 @end example
301
302 Of course, in both cases, you should substitute the proper location of
303 either script.
304
305 These scripts set the following variables:
306 @table @code
307 @item TEXMF
308 To make sure that @TeX{} and lilypond find data files (among
309 others @file{.tex}, @file{.mf}, and @file{.tfm}),
310 you have to set @code{TEXMF} to point to the lilypond data
311 file tree.  A typical setting would be
312 @example
313 @{/usr/share/lilypond/2.4.0,@{!!/usr/share/texmf@}@}
314 @end example
315
316 @end table
317
318 @cindex PostScript
319 @cindex TEXMF
320 @cindex printing postscript
321
322 @end ignore
323
324
325 @cindex LANG
326 @cindex LILYPONDPREFIX
327
328 @code{Lilypond} recognizes the following environment variables:
329 @table @code
330 @item LILYPONDPREFIX
331 This specifies a directory where locale messages and
332 data files will be looked up by default.  The directory should contain
333 subdirectories called @file{ly/}, @file{ps/}, @file{tex/}, etc.
334
335 @item LANG
336 This selects the language for the warning messages.
337 @end table
338
339
340 @node Error messages
341 @section Error messages
342
343 @cindex error messages
344 Different error messages can appear while compiling a file:
345
346 @table @emph
347 @cindex warning
348
349 @item Warning
350 Something looks suspect.  If you are requesting something out of the
351 ordinary then you will understand the message, and can ignore it.
352 However, warnings usually indicate that something is wrong with the
353 input file.
354
355 @item Error
356 Something is definitely wrong.  The current processing step (parsing,
357 interpreting, or formatting) will be finished, but the next step will
358 be skipped.
359
360 @cindex error
361 @cindex fatal error
362 @item Fatal error
363 Something is definitely wrong, and LilyPond cannot continue.  This
364 happens rarely.  The most usual cause is misinstalled fonts.
365
366 @cindex trace, Scheme
367 @cindex call trace
368 @cindex Scheme error
369 @item Scheme error
370 Errors that occur while executing Scheme code are caught by the Scheme
371 interpreter.  If running with the verbose option (@code{-V} or
372 @code{--verbose}) then a call trace of the offending
373 function call is printed.
374
375 @cindex Programming error
376 @item Programming error
377 There was some internal inconsistency.  These error messages are
378 intended to help the programmers and debuggers.  Usually, they can be
379 ignored.  Sometimes, they come in such big quantities that they obscure
380 other output.  In this case, file a bug-report.
381
382 @item Aborted (core dumped)
383 This signals a serious programming error that caused the program to
384 crash.  Such errors are considered critical.  If you stumble on one,
385 send a bug-report.
386
387
388 @end table
389
390 @cindex errors, message format
391 If warnings and errors can
392 be linked to some part of the input file, then error messages have the
393 following form
394
395 @example
396 @var{filename}:@var{lineno}:@var{columnno}: @var{message}
397 @var{offending input line}
398 @end example
399
400 A line-break is inserted in the offending line to indicate the column
401 where the error was found.  For example,
402
403 @example
404 test.ly:2:19: error: not a duration: 5:
405   @{ c'4 e'5
406              g' @}
407 @end example
408
409 These locations are LilyPond's best guess about where the warning or
410 error occured, but (by their very nature) warnings and errors occur
411 when something unexpected happens.  If you can't see an error in the
412 indicated line of your input file, try checking one or two lines
413 above the indicated position.
414
415
416 @node Updating files with convert-ly
417 @section Updating with @command{convert-ly}
418
419 The LilyPond input syntax is routinely changed to simplify it or improve
420 it in different ways.  As a side effect of this, the LilyPond interpreter
421 often is no longer compatible with older input files.  To remedy this,
422 the program @command{convert-ly} can be used to deal with most of the
423 syntax changes between LilyPond versions.
424
425 It uses @code{\version} statements in the input files to detect the
426 old version number.  In most cases, to upgrade your input file it is
427 sufficient to run@footnote{MacOS X users may execute this command
428 under the menu entry @samp{Compile > Update syntax}.}
429
430 @example
431 convert-ly -e myfile.ly
432 @end example
433
434 If there are no changes to myfile.ly and file called myfile.ly.NEW
435 is created, then myfile.ly is already updated.
436
437 @command{convert-ly} always converts up to the last syntax change handled by
438 it.  This means that the @code{\version} number left in the file is
439 usually lower than the version of @command{convert-ly} itself.
440
441 To upgrade LilyPond fragments in texinfo files, use
442
443 @example
444 convert-ly --from=... --to=... --no-version *.itely
445 @end example
446
447 To upgrade many files at once, combine @code{convert-ly} with
448 standard unix commands.  This example will upgrade all @code{.ly}
449 files in the current directory
450
451 @example
452 for f in *.ly; do convert-ly -e $f; done;
453 @end example
454
455 In general, the program is invoked as follows:
456
457 @example
458 convert-ly [@var{option}]@dots{} @var{file}@dots{}
459 @end example
460
461
462 The following options can be given:
463
464 @table @code
465 @item -e,--edit
466 Do an inline edit of the input file.  Overrides @code{--output}.
467
468 @item -f,--from=@var{from-patchlevel}
469 Set the version to convert from.  If this is not set, @command{convert-ly}
470 will guess this, on the basis of @code{\version} strings in the file.
471
472 @item -n,--no-version
473 Normally, @command{convert-ly} adds a @code{\version} indicator 
474 to the output.  Specifying this option suppresses this.  
475
476 @item -s, --show-rules
477 Show all known conversions and exit.
478
479 @item --to=@var{to-patchlevel}
480 Set the goal version of the conversion.  It defaults to the latest
481 available version.
482
483 @item -h, --help
484 Print usage help.
485 @end table
486
487
488 @refbugs
489
490 Not all language changes are handled.  Only one output option can be
491 specified.
492
493
494 @c  We might want to make this a completely new section, along with more
495 @c  info about how to upgrade old input files.  -gp
496
497 @ignore
498 Copy and paste from CVS, last updated
499 May 26, 2005
500
501 http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lily-bugs/bugs/convert-ly.txt?rev=HEAD&content-type=text/plain
502 @end ignore
503 @verbatim
504
505 There are a few things that the convert-ly cannot handle. Here's a list of limitations
506 that the community has complained about.
507
508 This bug report structure has been chosen because convert-ly has a structure that doesn't
509 allow to smoothly implement all needed changes. Thus this is just a wishlist, placed
510 here for reference.
511
512 1.6->2.0:
513  Doesn't always convert figured bass correctly, specifically things like {< >}. Mats' comment on working around this:
514    To be able to run convert-ly
515    on it, I first replaced all occurencies of '{<' to some dummy like '{#'
516    and similarly I replaced '>}' with '&}'. After the conversion, I could
517    then change back from '{ #' to '{ <' and from '& }' to '> }'.
518  Doesn't convert all text markup correctly. In the old markup syntax,
519  it was possible to group a number of markup commands together within parentheses, e.g.
520    -#'((bold italic) "string")
521    This will incorrectly be converted into
522    -\markup{{\bold italic} "string"}
523    instead of the correct
524    -\markup{\bold \italic "string"}
525 2.0->2.2:
526  Doesn't handle \partcombine
527  Doesn't do \addlyrics => \lyricsto, this breaks some scores with multiple stanzas.
528 2.0->2.4:
529  \magnify isn't changed to \fontsize.
530     - \magnify #m => \fontsize #f, where f = 6ln(m)/ln(2)
531  remove-tag isn't changed.
532     - \applymusic #(remove-tag '. . .) => \keepWithTag #'. . .
533  firstpagenumber isn't changed.
534     - firstpagenumber no => printfirstpagenumber = ##f
535  Line breaks in header strings aren't converted.
536     - \\\\  as line break in \header strings => \markup \center-align <
537       "First Line" "Second Line" >
538  Crescendo and decrescendo terminators aren't converted.
539     - \rced => \!
540     - \rc => \!
541 2.2->2.4:
542  \turnOff (used in \set Staff.VoltaBracket = \turnOff) is not properly converted.
543 2.4.2->2.5.9
544  \markup{ \center-align <{ ... }> } should be converted to:
545  \markup{ \center-align {\line { ... }} }
546  but now, \line is missing.
547
548 @end verbatim
549
550
551 @node Reporting bugs
552 @section Reporting bugs
553
554 @cindex bugs
555 @cindex reporting bugs
556
557 If you have input that results in a crash or an erroneous output, then
558 that is a bug.  We try to respond to bug-reports promptly, and fix them as
559 soon as possible.  Help us by sending a defective input file, so we can
560 reproduce the problem.  Make it small, so we can easily debug the
561 problem.  Don't forget to tell which version of LilyPond you use!  Send
562 the report to @email{bug-lilypond@@gnu.org}.
563
564 @ignore
565 @c the bug database is not up to date enough. 
566
567 When you've found a bug, have a look at our
568 @uref{http://@/lilypond@/.org/@/doc/@/v2.5/@/bugs/,bug database} to see if
569 it has already been reported.  You could also try to do a few searches
570 on the mailing list for the bug.  Sometimes the bug will have already
571 been reported and a fix or workaround is already known.
572 @end ignore
573
574 Here is an example of a good bug report:
575
576 @example
577 It seems that placement of accidentals is broken.  In the
578 following example, the accidental touches the note head.
579
580 Using Mac OSX 10.3.7, fink package lilypond-devel
581
582 \version "2.5.18"
583 \relative c''@{
584    a4 b cis d
585 @}
586 @end example
587
588 @lilypond[quote]
589 \version "2.5.18"
590 \relative c''{
591   \override Accidental #'extra-offset = #'(1.0 . 0)
592   a4 b cis d
593 }
594 @end lilypond
595
596 @node Editor support
597 @section Editor support
598
599 @cindex editors
600 @cindex vim
601 @cindex emacs
602 @cindex modes, editor
603 @cindex syntax coloring
604 @cindex coloring, syntax
605
606 There is support from different editors for LilyPond.
607
608 @table @asis
609 @item Emacs
610 Emacs has a @file{lilypond-mode}, which provides keyword
611 autocompletion, indentation, LilyPond specific parenthesis matching
612 and syntax coloring, handy compile short-cuts and reading LilyPond
613 manuals using Info.  If @file{lilypond-mode} is not installed on your
614 platform, then read the
615 @ifhtml
616 @uref{source/Documentation/topdocs/out-www/INSTALL.html,installation instructions}.
617 @end ifhtml
618 @ifnothtml
619 installation instructions.
620 @end ifnothtml
621
622 @item VIM
623
624 For @uref{http://@/www@/.vim@/.org,VIM}, a @file{vimrc} is supplied, along
625 with syntax coloring tools.  For more information, refer to the
626 @ifhtml
627 @uref{source/Documentation/topdocs/out-www/INSTALL.html,installation instructions}.
628 @end ifhtml
629 @ifnothtml
630 installation instructions.
631 @end ifnothtml
632
633
634 @item JEdit
635
636 The @uref{http://@/www@/.jedit@/.org@/,jEdit} editor has a LilyPond plugin.
637 This plugin includes a DVI viewer, integrated help and viewing via
638 GhostScript.  It can be installed by doing @key{Plugins > Plugin
639 Manager}, and selecting @code{LilyTool} from the @key{Install} tab.
640
641 @end table
642
643 All these editors can be made to jump into the input file to the source
644 of a symbol in the graphical output.  See @ref{Point and click}.
645
646
647 @node File structure
648 @section File structure
649
650 The major part of this manual is concerned with entering various
651 forms of music in LilyPond.  However, many music expressions are not
652 valid input on their own, for example, a @code{.ly} file containing
653 only a note
654 @example
655 c'4
656 @end example
657
658 @noindent
659 will result in a parsing error.  Instead, music should be inside other
660 expressions, which may be put in a file by themselves.  Such
661 expressions are called toplevel expressions.  This section enumerates
662 them all.
663
664 A @code{.ly} file contains any number of toplevel expressions, where a
665 toplevel expression is one of the following
666
667 @itemize @bullet
668 @item
669 An output definition, such as @code{\paper}, @code{\midi}, and
670 @code{\layout}.  Such a definition at the toplevel changes the default
671 settings for the block entered.
672
673 @item
674 A @code{\header} block.  This sets the global header block.  This
675 is the block containing the definitions for book-wide settings, like
676 composer, title, etc. 
677
678 @item
679 An @code{\addquote} statement.  See @ref{Quoting other voices}
680 for more information.
681
682 @item
683 A @code{\score} block.  This score will be collected with other
684 toplevel scores, and combined as a single @code{\book}.
685
686 This behavior can be changed by setting the variable
687 @code{toplevel-score-handler} at toplevel.  The default handler is
688 defined in the init file @file{scm/@/lily@/.scm}.
689
690 @item
691 A @code{\book} block logically combines multiple movements
692 (i.e., multiple @code{\score} blocks) in one document.  A number of
693 @code{\scores} creates a single output file, where all movement are
694 concatenated.
695
696 This behavior can be changed by setting the variable
697 @code{toplevel-book-handler} at toplevel.  The default handler is
698 defined in the init file @file{scm/@/lily@/.scm}.
699
700 @item
701 A compound music expression, such as
702 @example
703 @{ c'4 d' e'2 @}
704 @end example
705
706 This will add the piece in a @code{\score} and format it in a
707 single book together with all other toplevel @code{\score}s and music
708 expressions.
709  
710 This behavior can be changed by setting the variable
711 @code{toplevel-music-handler} at toplevel.  The default handler is
712 defined in the init file @file{scm/@/lily@/.scm}.
713
714 @item
715 A markup text, a verse for example
716 @example
717 \markup @{
718    2.  The first line verse two.
719 @}
720 @end example
721
722 Markup texts are rendered above, between or below the scores or music
723 expressions, wherever they appear.
724
725 @item
726 An indentifier, such as
727 @example
728 foo = @{ c4 d e d @}
729 @end example
730
731 This can be used later on in the file by entering @code{\foo}.  The
732 name of an identifier should have alphabetic characters only; no
733 numbers, underscores or dashes.
734
735 @end itemize
736
737 The following example shows three things that may be entered at
738 toplevel
739
740 @example
741 \layout @{
742   % movements are non-justified by default    
743   raggedright = ##t
744 @}
745
746 \header @{
747    title = "Do-re-mi"
748 @}
749    
750 @{ c'4 d' e2 @}
751 @end example
752
753
754 At any point in a file, any of the following lexical instructions can
755 be entered:
756
757 @itemize @bullet
758 @item @code{\version}
759 @item @code{\include}
760 @item @code{\renameinput}
761 @end itemize 
762
763
764 @node Including LilyPond files
765 @section Including LilyPond files
766
767 @cindex @code{\include}
768 @cindex including files
769
770 A large project may be split up into separate files.  To refer to another
771 file, use
772
773 @example
774 \include "otherfile.ly"
775 @end example
776
777 For example, you may write separate files for each instrument part and
778 create a ``full score'' file which brings together the individual
779 instrument files.
780