]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/input.itely
4806a5e72796111191f549ef6c6579c406c1e9bd
[lilypond.git] / Documentation / user / input.itely
1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @c This file is part of lilypond.tely
3 @ignore
4     Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  See TRANSLATION for details.
8 @end ignore
9
10 @c \version "2.11.38"
11
12 @node Input syntax
13 @chapter Input syntax
14
15 This section deals with general LilyPond input syntax issues,
16 rather than specific notation.
17
18 FIXME: don't complain about anything in this chapter.  It's still
19 under heavy development.
20
21 @menu
22 * Input structure::
23 * Useful concepts and properties::
24 * Titles and headers::
25 * Working with input files::
26 * Controlling output::
27 @end menu
28
29
30 @node Input structure
31 @section Input structure
32
33 The main format of input for LilyPond are text files.  By convention,
34 these files end with @code{.ly}.
35
36 @menu
37 * Structure of a score::
38 * Multiple scores in a book::
39 * File structure::
40 @end menu
41
42
43 @node Structure of a score
44 @subsection Structure of a score
45
46 @funindex \score
47
48 A @code{\score} block must contain a single music expression
49 delimited by curly brackets:
50
51 @example
52 \score @{
53 ...
54 @}
55 @end example
56
57 @warning{There must be @strong{only one} outer music expression in
58 a @code{\score} block, and it @strong{must} be surrounded by
59 curly brackets.}
60
61 This single music expression may be of any size, and may contain
62 other music expressions to any complexity.  All of these examples
63 are music expressions:
64
65 @example
66 @{ c'4 c' c' c' @}
67 @end example
68
69 @lilypond[verbatim,quote]
70 {
71   { c'4 c' c' c'}
72   { d'4 d' d' d'}
73 }
74 @end lilypond
75
76 @lilypond[verbatim,quote]
77 <<
78   \new Staff { c'4 c' c' c' }
79   \new Staff { d'4 d' d' d' }
80 >>
81 @end lilypond
82
83 @example
84 @{
85   \new GrandStaff <<
86     \new StaffGroup <<
87       \new Staff @{ \flute @}
88       \new Staff @{ \oboe @}
89     >>
90     \new StaffGroup <<
91       \new Staff @{ \violinI @}
92       \new Staff @{ \violinII @}
93     >>
94   >>
95 @}
96 @end example
97
98 Comments are one exception to this general rule.  (For others see
99 @ref{File structure}.)  Both single-line comments and comments
100 delimited by @code{%@{ .. %@}} may be placed anywhere within an
101 input file.  They may be placed inside or outside a @code{\score}
102 block, and inside or outside the single music expression within a
103 @code{\score} block.
104
105 @seealso
106
107 Learning Manual:
108
109 @rlearning{Working on input files},
110 @rlearning{Music expressions explained},
111 @rlearning{Score is a single (compound) musical expression}.
112
113
114 @node Multiple scores in a book
115 @subsection Multiple scores in a book
116
117 @funindex \book
118 @cindex movements, multiple
119
120 A document may contain multiple pieces of music and text.  Examples
121 of these are an etude book, or an orchestral part with multiple
122 movements.  Each movement is entered with a @code{\score} block,
123
124 @example
125 \score @{
126   @var{..music..}
127 @}
128 @end example
129
130 and texts are entered with a @code{\markup} block,
131
132 @example
133 \markup @{
134   @var{..text..}
135 @}
136 @end example
137
138 @funindex \book
139
140 All the movements and texts which appear in the same @code{.ly} file
141 will normally be typeset in the form of a single output file.
142
143 @example
144 \score @{
145   @var{..}
146 @}
147 \markup @{
148   @var{..}
149 @}
150 \score @{
151   @var{..}
152 @}
153 @end example
154
155 However, if you want multiple output files from the same @code{.ly}
156 file, then you can add multiple @code{\book} blocks, where each such
157 @code{\book} block will result in a separate output.  If you do not
158 specify any @code{\book} block in the file, LilyPond will implicitly
159 treat the full file as a single @code{\book} block, see @ref{File
160 structure}.  One important exception is within lilypond-book documents,
161 where you explicitly have to add a @code{\book} block, otherwise only
162 the first @code{\score} or @code{\markup} will appear in the output.
163
164 The header for each piece of music can be put inside the @code{\score}
165 block.  The @code{piece} name from the header will be printed before
166 each movement.  The title for the entire book can be put inside the
167 @code{\book}, but if it is not present, the @code{\header} which is at
168 the top of the file is inserted.
169
170 @example
171 \header @{
172   title = "Eight miniatures"
173   composer = "Igor Stravinsky"
174 @}
175 \score @{
176   @dots{}
177   \header @{ piece = "Romanze" @}
178 @}
179 \markup @{
180    ..text of second verse..
181 @}
182 \markup @{
183    ..text of third verse..
184 @}
185 \score @{
186   @dots{}
187   \header @{ piece = "Menuetto" @}
188 @}
189 @end example
190
191 @node File structure
192 @subsection File structure
193
194 @funindex \paper
195 @funindex \midi
196 @funindex \layout
197 @funindex \header
198 @funindex \score
199 @funindex \book
200
201 A @code{.ly} file may contain any number of toplevel expressions, where a
202 toplevel expression is one of the following:
203
204 @itemize @bullet
205 @item
206 An output definition, such as @code{\paper}, @code{\midi}, and
207 @code{\layout}.  Such a definition at the toplevel changes the default
208 book-wide settings.  If more than one such definition of
209 the same type is entered at the top level any definitions in the later
210 expressions have precedence.
211
212 @item
213 A direct scheme expression, such as
214 @code{#(set-default-paper-size "a7" 'landscape)} or
215 @code{#(ly:set-option 'point-and-click #f)}.
216
217 @item
218 A @code{\header} block.  This sets the global header block.  This
219 is the block containing the definitions for book-wide settings, like
220 composer, title, etc.
221
222 @item
223 A @code{\score} block.  This score will be collected with other
224 toplevel scores, and combined as a single @code{\book}.
225 This behavior can be changed by setting the variable
226 @code{toplevel-score-handler} at toplevel.  The default handler is
227 defined in the init file @file{scm/@/lily@/.scm}.
228
229 @item
230 A @code{\book} block logically combines multiple movements
231 (i.e., multiple @code{\score} blocks) in one document.  If there
232 are a number of @code{\score}s, one output file will be created
233 for each @code{\book} block, in which all corresponding movements
234 are concatenated.  The only reason to explicitly specify
235 @code{\book} blocks in a @code{.ly} file is if you wish to create
236 multiple output files from a single input file.  One exception is
237 within lilypond-book documents, where you explicitly have to add
238 a @code{\book} block if you want more than a single @code{\score}
239 or @code{\markup} in the same example.  This behavior can be
240 changed by setting the variable @code{toplevel-book-handler} at
241 toplevel.  The default handler is defined in the init file
242 @file{scm/@/lily@/.scm}.
243
244 @item
245 A compound music expression, such as
246 @example
247 @{ c'4 d' e'2 @}
248 @end example
249
250 This will add the piece in a @code{\score} and format it in a
251 single book together with all other toplevel @code{\score}s and music
252 expressions.  In other words, a file containing only the above
253 music expression will be translated into
254
255 @example
256 \book @{
257   \score @{
258     \new Staff @{
259       \new Voice @{
260         @{ c'4 d' e'2 @}
261       @}
262     @}
263   @}
264         \layout @{ @}
265         \header @{ @}
266 @}
267 @end example
268
269 This behavior can be changed by setting the variable
270 @code{toplevel-music-handler} at toplevel.  The default handler is
271 defined in the init file @file{scm/@/lily@/.scm}.
272
273 @item
274 A markup text, a verse for example
275 @example
276 \markup @{
277    2.  The first line verse two.
278 @}
279 @end example
280
281 Markup texts are rendered above, between or below the scores or music
282 expressions, wherever they appear.
283
284 @cindex variables
285
286 @item
287 A variable, such as
288 @example
289 foo = @{ c4 d e d @}
290 @end example
291
292 This can be used later on in the file by entering @code{\foo}.  The
293 name of an variable should have alphabetic characters only; no
294 numbers, underscores or dashes.
295
296 @end itemize
297
298 The following example shows three things that may be entered at
299 toplevel
300
301 @example
302 \layout @{
303   % Don't justify the output
304   ragged-right = ##t
305 @}
306
307 \header @{
308    title = "Do-re-mi"
309 @}
310
311 @{ c'4 d' e2 @}
312 @end example
313
314
315 At any point in a file, any of the following lexical instructions can
316 be entered:
317
318 @itemize
319 @item @code{\version}
320 @item @code{\include}
321 @item @code{\sourcefilename}
322 @item @code{\sourcefileline}
323 @item
324 A single-line comment, introduced by a leading @code{%} sign.
325
326 @item
327 A multi-line comment delimited by @code{%@{ .. %@}}.
328
329 @end itemize
330
331 @seealso
332
333 Learning Manual:
334 @rlearning{How LilyPond input files work}.
335
336 @node Useful concepts and properties
337 @section Useful concepts and properties
338
339
340 @menu
341 * Input modes::
342 * Direction and placement::
343 * Distances and measurements::
344 * Spanners::
345 @end menu
346
347 @node Input modes
348 @subsection Input modes
349
350 The way in which the notation contained within an input file is
351 interpreted is determined by the current input mode.
352
353 @strong{Chord mode}
354
355 This is activated with the @code{\chordmode} command, and causes
356 input to be interpreted with the syntax of chord notation, see
357 @ref{Chord notation}.  Chords are rendered as notes on a staff.
358
359 Chord mode is also activated with the @code{\chords} command.
360 This also creates a new @code{ChordNames} context and
361 causes the following input to be interpreted with the syntax of
362 chord notation and rendered as chord names in the @code{ChordNames}
363 context, see @ref{Printing chord names}.
364
365 @strong{Drum mode}
366
367 This is activated with the @code{\drummode} command, and causes
368 input to be interpreted with the syntax of drum notation, see
369 @ref{Basic percussion notation}.
370
371 Drum mode is also activated with the @code{\drums} command.
372 This also creates a new @code{DrumStaff} context and causes the
373 following input to be interpreted with the syntax of drum notation
374 and rendered as drum symbols on a drum staff, see @ref{Basic
375 percussion notation}.
376
377 @strong{Figure mode}
378
379 This is activated with the @code{\figuremode} command, and causes
380 input to be interpreted with the syntax of figured bass, see
381 @ref{Entering figured bass}.
382
383 Figure mode is also activated with the @code{\figures} command.
384 This also creates a new @code{FiguredBass} context and causes the
385 following input to be interpreted with the figured bass syntax
386 and rendered as figured bass symbols in the @code{FiguredBass}
387 context, see @ref{Introduction to figured bass}.
388
389 @strong{Fret and tab modes}
390
391 There are no special input modes for entering fret and tab symbols.
392
393 To create tab diagrams, enter notes or chords in note mode and
394 render them in a @code{TabStaff} context, see
395 @ref{Default tablatures}.
396
397 To create fret diagrams above a staff, enter them as markup
398 above the notes using the @code{\fret-diagram} command, see
399 @ref{Fret diagrams}.
400
401 @strong{Lyrics mode}
402
403 This is activated with the @code{\lyricmode} command, and causes
404 input to be interpreted as lyric syllables with optional durations
405 and associated lyric modifiers, see @ref{Vocal music}.
406
407 Lyric mode is also activated with the @code{\addlyrics} command.
408 This also creates a new @code{Lyrics} context and an implicit
409 @code{\lyricsto} command which associates the following lyrics
410 with the preceding music.
411
412 @strong{Markup mode}
413
414 This is activated with the @code{\markup} command, and causes
415 input to be interpreted with the syntax of markup, see
416 @ref{Text markup commands}.
417
418 @c silly work-around for texinfo broken-ness
419 @c (@strong{Note...} causes a spurious cross-reference in Info)
420 @b{Note mode}
421
422 This is the default mode or it may be activated with the
423 @code{\notemode} command.  Input is interpreted as pitches,
424 durations, markup, etc and typeset as musical notation on a staff.
425
426 It is not normally necessary to specify note mode explicitly, but
427 it may be useful to do so in certain situations, for example if you
428 are in lyric mode, chord mode or any other mode and want to insert
429 something that only can be done with note mode syntax.
430
431 For example, to indicate dynamic markings for the verses of a
432 choral pieces it is necessary to enter note mode to interpret
433 the markings:
434
435 @lilypond[verbatim,relative=2,quote]
436 { c4 c4 c4 c4 }
437 \addlyrics {
438   \notemode{\set stanza = \markup{ \dynamic f 1. } }
439   To be sung loudly
440 }
441 \addlyrics {
442   \notemode{\set stanza = \markup{ \dynamic p 2. } }
443   To be sung quietly
444 }
445 @end lilypond
446
447
448
449 @node Direction and placement
450 @subsection Direction and placement
451
452 In typesetting music the direction and placement of many items is
453 a matter of choice.  For example, the stems of notes can
454 be directed up or down; lyrics, dynamics, and other expressive
455 marks may be placed above or below the staff; text may be aligned
456 left, right or center; etc.  Most of these choices may be left to
457 be determined automatically by LilyPond, but in some cases it may
458 be desirable to force a particular direction or placement.
459
460 @strong{Default actions}
461
462 By default some directions are always up or always down (e.g.
463 dynamics or fermata), while other things can alternate between
464 up or down based on the stem direction (like slurs or accents).
465
466 @c TODO Add table showing these
467
468 @strong{Context layout}
469
470 Contexts are positioned in a system from top to bottom in the
471 order in which they are encountered.  Note, however, that a
472 context will be created implicitly if a command is encountered
473 when there is no suitable context available to contain it.
474
475 @c TODO Add example ?
476
477 The default order in which contexts are laid out can be changed,
478 see @ref{Aligning contexts}
479
480 @strong{Articulation direction indicators}
481
482 When adding articulations to notes the direction indicator,
483 @code{^} (meaning @qq{up}), @code{_} (meaning @qq{down}) or
484 @code{-} (meaning @qq{use default direction}), can usually be
485 omitted, in which case @code{-} is assumed.  But a direction
486 indicator is @strong{always} required before
487
488 @itemize
489 @item @code{\tweak} commands
490 @item @code{\markup} commands
491 @item @code{\tag} commands
492 @item string markups, e.g. -"string"
493 @item fingering instructions, e.g. @code{-1}
494 @item articulation shortcuts, e.g. @code{-.}, @code{->}, @code{--}
495 @end itemize
496
497 @strong{The direction property}
498
499 The position or direction of many layout objects is controlled
500 by the @code{direction} property.
501
502 The value of the @code{direction} property may be
503 set to @code{1}, meaning @qq{up} or @qq{above}, or to @code{-1},
504 meaning @qq{down} or @qq{below}.  The symbols @code{UP} and
505 @code{DOWN} may be used instead of @code{1} and @code{-1}
506 respectively.  The default direction may be specified by setting
507 @code{direction} to @code{0} or @code{CENTER}.  Alternatively,
508 in many cases predefined commands
509 exist to specify the direction.  These are all of the form
510
511 @noindent
512 @code{\xxxUp}, @code{xxxDown}, @code{xxxNeutral}
513
514 @noindent
515 where @code{xxxNeutral} means @qq{use the default direction}.
516 See @rlearning{Within-staff objects}.
517
518 In a few cases, arpeggio being the only common example, the value
519 of the @code{direction} property specifies whether the object
520 is to be placed to the right or left of the parent object.  In
521 this case @code{-1} or @code{LEFT} means @qq{to the left} and
522 @code{1} or @code{RIGHT} means @qq{to the right}.  @code{0}
523 or @code{CENTER} means @qq{use the default} direction, as before.
524
525 @ignore
526 These all have side-axis set to #X
527 AmbitusAccidental - direction has no effect
528 Arpeggio - works
529 StanzaNumber - not tried
530 TrillPitchAccidental - not tried
531 TrillPitchGroup - not tried
532 @end ignore
533
534
535
536 @node Distances and measurements
537 @subsection Distances and measurements
538
539 DISCUSS after working on other sections.
540
541 TODO: staff spaces.  Maybe move into tweaks?
542
543
544 @node Spanners
545 @subsection Spanners
546
547 Many objects of musical notation extend over several notes or even
548 several bars.  Examples are crescendi, trills, tuplet brackets, and
549 volta repeat brackets.  Such objects are called @qq{spanners}, and
550 have special properties to control their appearance and behaviour.
551 Some of these properties are common to all spanners; others are
552 restricted to a sub-set of the spanners.
553
554 @node Titles and headers
555 @section Titles and headers
556
557 Almost all printed music includes a title and the composer's name;
558 some pieces include a lot more information.
559
560 @menu
561 * Creating titles::
562 * Custom titles::
563 * Reference to page numbers::
564 * Table of contents::
565 @end menu
566
567
568 @node Creating titles
569 @subsection Creating titles
570
571 Titles are created for each @code{\score} block, as well as for the full
572 input file (or @code{\book} block).
573
574 The contents of the titles are taken from the @code{\header} blocks.
575 The header block for a book supports the following
576
577
578 @table @code
579 @funindex dedication
580 @item dedication
581 The dedicatee of the music, centered at the top of the first page.
582
583 @funindex title
584 @item title
585 The title of the music, centered just below the dedication.
586
587 @funindex subtitle
588 @item subtitle
589 Subtitle, centered below the title.
590
591 @funindex subsubtitle
592 @item subsubtitle
593 Subsubtitle, centered below the subtitle.
594
595 @funindex poet
596 @item poet
597 Name of the poet, flush-left below the subtitle.
598
599 @funindex composer
600 @item composer
601 Name of the composer, flush-right below the subtitle.
602
603 @funindex meter
604 @item meter
605 Meter string, flush-left below the poet.
606
607 @funindex opus
608 @item opus
609 Name of the opus, flush-right below the composer.
610
611 @funindex arranger
612 @item arranger
613 Name of the arranger, flush-right below the opus.
614
615 @funindex instrument
616 @item instrument
617 Name of the instrument, centered below the arranger.  Also
618 centered at the top of pages (other than the first page).
619
620 @funindex piece
621 @item piece
622 Name of the piece, flush-left below the instrument.
623
624 @cindex page breaks, forcing
625 @funindex breakbefore
626 @item breakbefore
627 This forces the title to start on a new page (set to ##t or ##f).
628
629 @funindex copyright
630 @item copyright
631 Copyright notice, centered at the bottom of the first page.  To
632 insert the copyright symbol, see @ref{Text encoding}.
633
634 @funindex tagline
635 @item tagline
636 Centered at the bottom of the last page.
637
638 @end table
639
640 Here is a demonstration of the fields available.  Note that you
641 may use any @ref{Formatting text}, commands in the header.
642
643 @lilypond[quote,verbatim,line-width=11.0\cm]
644 \paper {
645   line-width = 9.0\cm
646   paper-height = 10.0\cm
647 }
648
649 \book {
650   \header {
651     dedication = "dedicated to me"
652     title = \markup \center-align { "Title first line" "Title second line,
653 longer" }
654     subtitle = "the subtitle,"
655     subsubtitle = #(string-append "subsubtitle LilyPond version "
656 (lilypond-version))
657     poet = "Poet"
658     composer =  \markup \center-align { "composer" \small "(1847-1973)" }
659     texttranslator = "Text Translator"
660     meter = \markup { \teeny "m" \tiny "e" \normalsize "t" \large "e" \huge
661 "r" }
662     arranger = \markup { \fontsize #8.5 "a" \fontsize #2.5 "r" \fontsize
663 #-2.5 "r" \fontsize #-5.3 "a" \fontsize #7.5 "nger" }
664     instrument = \markup \bold \italic "instrument"
665     piece = "Piece"
666   }
667
668   \score {
669     { c'1 }
670     \header {
671       piece = "piece1"
672       opus = "opus1"
673     }
674   }
675   \markup {
676       and now...
677   }
678   \score {
679     { c'1 }
680     \header {
681       piece = "piece2"
682       opus = "opus2"
683     }
684   }
685 }
686 @end lilypond
687
688 As demonstrated before, you can use multiple @code{\header} blocks.
689 When same fields appear in different blocks, the latter is used.
690 Here is a short example.
691
692 @example
693 \header @{
694   composer = "Composer"
695 @}
696 \header @{
697   piece = "Piece"
698 @}
699 \score @{
700   \new Staff @{ c'4 @}
701   \header @{
702     piece = "New piece"  % overwrite previous one
703   @}
704 @}
705 @end example
706
707 If you define the @code{\header} inside the @code{\score} block, then
708 normally only the @code{piece} and @code{opus} headers will be printed.
709 Note that the music expression must come before the @code{\header}.
710
711 @lilypond[quote,verbatim,line-width=11.0\cm]
712 \score {
713   { c'4 }
714   \header {
715     title = "title"  % not printed
716     piece = "piece"
717     opus = "opus"
718   }
719 }
720 @end lilypond
721
722 @funindex printallheaders
723 @noindent
724 You may change this behavior (and print all the headers when defining
725 @code{\header} inside @code{\score}) by using
726
727 @example
728 \paper@{
729   printallheaders=##t
730 @}
731 @end example
732
733 @cindex copyright
734 @cindex tagline
735
736 The default footer is empty, except for the first page, where the
737 @code{copyright} field from @code{\header} is inserted, and the last
738 page, where @code{tagline} from @code{\header} is added.  The default
739 tagline is @qq{Music engraving by LilyPond (@var{version})}.@footnote{Nicely
740 printed parts are good PR for us, so please leave the tagline if you
741 can.}
742
743 Headers may be completely removed by setting them to false.
744
745 @example
746 \header @{
747   tagline = ##f
748   composer = ##f
749 @}
750 @end example
751
752
753 @node Custom titles
754 @subsection Custom titles
755
756 A more advanced option is to change the definitions of the following
757 variables in the @code{\paper} block.  The init file
758 @file{ly/titling-init.ly} lists the default layout.
759
760 @table @code
761 @funindex bookTitleMarkup
762 @item bookTitleMarkup
763   This is the title added at the top of the entire output document.
764 Typically, it has the composer and the title of the piece
765
766 @funindex scoreTitleMarkup
767 @item scoreTitleMarkup
768   This is the title put over a @code{\score} block.  Typically, it has
769 the name of the movement (@code{piece} field).
770
771 @funindex oddHeaderMarkup
772 @item oddHeaderMarkup
773   This is the page header for odd-numbered pages.
774
775 @funindex evenHeaderMarkup
776 @item evenHeaderMarkup
777   This is the page header for even-numbered pages.  If unspecified,
778   the odd header is used instead.
779
780   By default, headers are defined such that the page number is on the
781   outside edge, and the instrument is centered.
782
783 @funindex oddFooterMarkup
784 @item oddFooterMarkup
785   This is the page footer for odd-numbered pages.
786
787 @funindex evenFooterMarkup
788 @item evenFooterMarkup
789   This is the page footer for even-numbered pages.  If unspecified,
790   the odd header is used instead.
791
792   By default, the footer has the copyright notice on the first, and
793   the tagline on the last page.
794 @end table
795
796
797 @cindex \paper
798 @cindex header
799 @cindex footer
800 @cindex page layout
801 @cindex titles
802
803 The following definition will put the title flush left, and the
804 composer flush right on a single line.
805
806 @verbatim
807 \paper {
808   bookTitleMarkup = \markup {
809    \fill-line {
810      \fromproperty #'header:title
811      \fromproperty #'header:composer
812    }
813   }
814 }
815 @end verbatim
816
817 @node Reference to page numbers
818 @subsection Reference to page numbers
819
820 A particular place of a score can be marked using the @code{\label}
821 command, either at top-level or inside music.  This label can then be
822 referred to in a markup, to get the number of the page where the marked
823 point is placed, using the @code{\page-ref} markup command.
824
825 @lilypond[verbatim,line-width=11.0\cm]
826 \header { tagline = ##f }
827 \book {
828   \label #'firstScore
829   \score {
830     {
831       c'1
832       \pageBreak \mark A \label #'markA
833       c'
834     }
835   }
836
837   \markup { The first score begins on page \page-ref #'firstScore "0" "?" }
838   \markup { Mark A is on page \page-ref #'markA "0" "?" }
839 }
840 @end lilypond
841
842 The @code{\page-ref} markup command takes three arguments:
843 @enumerate
844 @item the label, a scheme symbol, eg. @code{#'firstScore};
845 @item a markup that will be used as a gauge to estimate the dimensions
846 of the markup;
847 @item a markup that will be used in place of the page number if the label 
848 is not known;
849 @end enumerate
850
851 The reason why a gauge is needed is that, at the time markups are
852 interpreted, the page breaking has not yet occurred, so the page numbers
853 are not yet known.  To work around this issue, the actual markup
854 interpretation is delayed to a later time; however, the dimensions of
855 the markup have to be known before, so a gauge is used to decide these
856 dimensions.  If the book has between 10 and 99 pages, it may be "00",
857 ie. a two digit number.
858
859 @predefined
860
861 @funindex \label
862 @code{\label}
863 @funindex \page-ref
864 @code{\page-ref}
865
866 @node Table of contents
867 @subsection Table of contents
868 A table of contents is included using the @code{\markuplines \table-of-contents}
869 command.  The elements which should appear in the table of contents are
870 entered with the @code{\tocItem} command, which may be used either at
871 top-level, or inside a music expression.
872
873 @verbatim
874 \markuplines \table-of-contents
875 \pageBreak
876
877 \tocItem \markup "First score"
878 \score { 
879   {
880     c'  % ...
881     \tocItem \markup "Some particular point in the first score"
882     d'  % ... 
883   }
884 }
885
886 \tocItem \markup "Second score"
887 \score {
888   {
889     e' % ...
890   }
891 }
892 @end verbatim
893
894 The markups which are used to format the table of contents are defined
895 in the @code{\paper} block.  The default ones are @code{tocTitleMarkup},
896 for formatting the title of the table, and @code{tocItemMarkup}, for
897 formatting the toc elements, composed of the element title and page
898 number.  These variables may be changed by the user:
899
900 @verbatim
901 \paper {
902   %% Translate the toc title into French:
903   tocTitleMarkup = \markup \huge \column {
904     \fill-line { \null "Table des matières" \null }
905     \hspace #1
906   }
907   %% use larger font size
908   tocItemMarkup = \markup \large \fill-line {
909     \fromproperty #'toc:text \fromproperty #'toc:page
910   }
911 }
912 @end verbatim
913
914 Note how the toc element text and page number are referred to in
915 the @code{tocItemMarkup} definition.
916
917 New commands and markups may also be defined to build more elaborated
918 table of contents:
919 @itemize
920 @item first, define a new markup variable in the @code{\paper} block
921 @item then, define a music function which aims at adding a toc element
922 using this markup paper variable.
923 @end itemize
924
925 In the following example, a new style is defined for entering act names
926 in the table of contents of an opera:
927
928 @verbatim
929 \paper {
930   tocActMarkup = \markup \large \column {
931     \hspace #1
932     \fill-line { \null \italic \fromproperty #'toc:text \null }
933     \hspace #1
934   }
935 }
936
937 tocAct = 
938 #(define-music-function (parser location text) (markup?)
939    (add-toc-item! 'tocActMarkup text))
940 @end verbatim
941
942 @lilypond[line-width=11.0\cm]
943 \header { tagline = ##f }
944 \paper {
945   tocActMarkup = \markup \large \column {
946     \hspace #1
947     \fill-line { \null \italic \fromproperty #'toc:text \null }
948     \hspace #1
949   }
950 }
951
952 tocAct = 
953 #(define-music-function (parser location text) (markup?)
954    (add-toc-item! 'tocActMarkup text))
955
956 \book {
957   \markuplines \table-of-contents
958   \tocAct \markup { Atto Primo }
959   \tocItem \markup { Coro. Viva il nostro Alcide }
960   \tocItem \markup { Cesare. Presti omai l'Egizzia terra }
961   \tocAct \markup { Atto Secondo }
962   \tocItem \markup { Sinfonia }
963   \tocItem \markup { Cleopatra. V'adoro, pupille, saette d'Amore }
964   \markup \null
965 }
966 @end lilypond
967
968 @seealso
969
970 Init files: @file{ly/@/toc@/-init@/.ly}.
971
972 @predefined
973
974 @funindex \table-of-contents
975 @code{\table-of-contents}
976 @funindex \tocItem
977 @code{\tocItem}
978
979
980 @node Working with input files
981 @section Working with input files
982
983 @menu
984 * Including LilyPond files::    
985 * Different editions from one source::  
986 * Text encoding::               
987 * Displaying LilyPond notation::  
988 @end menu
989
990
991 @node Including LilyPond files
992 @subsection Including LilyPond files
993
994 @funindex \include
995 @cindex including files
996
997 A large project may be split up into separate files.  To refer to another
998 file, use
999
1000 @example
1001 \include "otherfile.ly"
1002 @end example
1003
1004 The line @code{\include "file.ly"} is equivalent to pasting the contents
1005 of file.ly into the current file at the place where you have the
1006 \include.  For example, for a large project you might write separate files
1007 for each instrument part and create a @q{full score} file which brings
1008 together the individual instrument files.
1009
1010 The initialization of LilyPond is done in a number of files that are
1011 included by default when you start the program, normally transparent to the
1012 user.  Run @code{lilypond --verbose} to see a list of paths and files that Lily
1013 finds.
1014
1015 Files placed in directory @file{PATH/TO/share/lilypond/VERSION/ly/} (where
1016 VERSION is in the form @q{2.6.1}) are on the path and available to
1017 @code{\include}.  Files in the
1018 current working directory are available to \include, but a file of the same
1019 name in LilyPond's installation takes precedence.  Files are
1020 available to \include from directories in the search path specified as an
1021 option when invoking @code{lilypond --include=DIR} which adds DIR to the
1022 search path.
1023
1024 The @code{\include} statement can use full path information, but with the UNIX
1025 convention @code{/} rather than the DOS/Windows @code{\}.  For example,
1026 if @file{stuff.ly} is located one directory higher than the current working
1027 directory, use
1028
1029 @example
1030 \include "../stuff.ly"
1031 @end example
1032
1033
1034 @node Different editions from one source
1035 @subsection Different editions from one source
1036
1037 @funindex \tag
1038 @cindex tag
1039
1040 The @code{\tag} command marks music expressions with a name.  These
1041 tagged expressions can be filtered out later.  With this mechanism it
1042 is possible to make different versions of the same music source.
1043
1044 In the following example, we see two versions of a piece of music, one
1045 for the full score, and one with cue notes for the instrumental part
1046
1047 @example
1048 c1
1049 <<
1050   \tag #'part <<
1051     R1 \\
1052     @{
1053       \set fontSize = #-1
1054       c4_"cue" f2 g4 @}
1055   >>
1056   \tag #'score R1
1057 >>
1058 c1
1059 @end example
1060
1061 The same can be applied to articulations, texts, etc.: they are
1062 made by prepending
1063 @example
1064 -\tag #@var{your-tag}
1065 @end example
1066 to an articulation, for example,
1067 @example
1068 c1-\tag #'part ^4
1069 @end example
1070
1071 This defines a note with a conditional fingering indication.
1072
1073 @cindex keepWithTag
1074 @cindex removeWithTag
1075 By applying the @code{\keepWithTag} and @code{\removeWithTag}
1076 commands, tagged expressions can be filtered.  For example,
1077 @example
1078 <<
1079   @var{the music}
1080   \keepWithTag #'score @var{the music}
1081   \keepWithTag #'part @var{the music}
1082 >>
1083 @end example
1084 would yield
1085
1086 @c FIXME: broken
1087 @c @lilypondfile[ragged-right,quote]{tag-filter.ly}
1088
1089 The arguments of the @code{\tag} command should be a symbol
1090 (such as @code{#'score} or @code{#'part}), followed by a
1091 music expression.  It is possible to put multiple tags on
1092 a piece of music with multiple @code{\tag} entries,
1093
1094 @example
1095   \tag #'original-part \tag #'transposed-part @dots{}
1096 @end example
1097
1098
1099 @knownissues
1100
1101 Multiple rests are not merged if you create the score with both tagged
1102 sections.
1103
1104
1105 @node Text encoding
1106 @subsection Text encoding
1107
1108 LilyPond uses the Pango library to format multi-lingual texts, and
1109 does not perform any input-encoding conversions.  This means that any
1110 text, be it title, lyric text, or musical instruction containing
1111 non-ASCII characters, must be utf-8.  The easiest way to enter such text is
1112 by using a Unicode-aware editor and saving the file with utf-8 encoding.  Most
1113 popular modern editors have utf-8 support, for example, vim, Emacs,
1114 jEdit, and GEdit do.
1115
1116 @c  Currently not working
1117 @ignore
1118 Depending on the fonts installed, the following fragment shows Hebrew
1119 and Cyrillic lyrics,
1120
1121 @cindex Cyrillic
1122 @cindex Hebrew
1123 @cindex ASCII, non
1124
1125 @li lypondfile[fontload]{utf-8.ly}
1126
1127 The @TeX{} backend does not handle encoding specially at all.  Strings
1128 in the input are put in the output as-is.  Extents of text items in the
1129 @TeX{} backend, are determined by reading a file created via the
1130 @file{texstr} backend,
1131
1132 @example
1133 lilypond -dbackend=texstr input/les-nereides.ly
1134 latex les-nereides.texstr
1135 @end example
1136
1137 The last command produces @file{les-nereides.textmetrics}, which is
1138 read when you execute
1139
1140 @example
1141 lilypond -dbackend=tex input/les-nereides.ly
1142 @end example
1143
1144 Both @file{les-nereides.texstr} and @file{les-nereides.tex} need
1145 suitable LaTeX wrappers to load appropriate La@TeX{} packages for
1146 interpreting non-ASCII strings.
1147
1148 @end ignore
1149
1150 To use a Unicode escape sequence, use
1151
1152 @example
1153 #(ly:export (ly:wide-char->utf-8 #x2014))
1154 @end example
1155
1156
1157 @node Displaying LilyPond notation
1158 @subsection Displaying LilyPond notation
1159
1160 @funindex \displayLilyMusic
1161 Displaying a music expression in LilyPond notation can be
1162 done using the music function @code{\displayLilyMusic}.  For example,
1163
1164 @example
1165 @{
1166   \displayLilyMusic \transpose c a, @{ c e g a bes @}
1167 @}
1168 @end example
1169
1170 will display
1171
1172 @example
1173 @{ a, cis e fis g @}
1174 @end example
1175
1176 By default, LilyPond will print these messages to the console along
1177 with all the other messages.  To split up these messages and save
1178 the results of @code{\display@{STUFF@}}, redirect the output to
1179 a file.
1180
1181 @example
1182 lilypond file.ly >display.txt
1183 @end example
1184
1185
1186
1187 @node Controlling output
1188 @section Controlling output
1189
1190 @menu
1191 * Extracting fragments of music::
1192 * Skipping corrected music::    
1193 @end menu
1194
1195 @node Extracting fragments of music
1196 @subsection Extracting fragments of music
1197
1198 It is possible to quote small fragments of a large score directly from
1199 the output.  This can be compared to clipping a piece of a paper score
1200 with scissors.
1201
1202 This is done by defining the measures that need to be cut out
1203 separately.  For example, including the following definition
1204
1205
1206 @verbatim
1207 \layout {
1208   clip-regions
1209   = #(list
1210       (cons
1211        (make-rhythmic-location 5 1 2)
1212        (make-rhythmic-location 7 3 4)))
1213 }       
1214 @end verbatim
1215
1216 @noindent
1217 will extract a fragment starting halfway the fifth measure, ending in
1218 the seventh measure.  The meaning of @code{5 1 2} is: after a 1/2 note
1219 in measure 5, and @code{7 3 4} after 3 quarter notes in measure 7.
1220
1221 More clip regions can be defined by adding more pairs of
1222 rhythmic-locations to the list. 
1223
1224 In order to use this feature, LilyPond must be invoked with
1225 @code{-dclip-systems}.  The clips are output as EPS files, and are
1226 converted to PDF and PNG if these formats are switched on as well.
1227
1228 For more information on output formats, see @rprogram{Invoking lilypond}.
1229
1230 @node Skipping corrected music
1231 @subsection Skipping corrected music
1232
1233
1234 @funindex skipTypesetting
1235 @funindex showLastLength
1236
1237 When entering or copying music, usually only the music near the end (where
1238 you
1239 are adding notes) is interesting to view and correct.  To speed up
1240 this correction process, it is possible to skip typesetting of all but
1241 the last few measures.  This is achieved by putting
1242
1243 @verbatim
1244 showLastLength = R1*5
1245 \score { ... }
1246 @end verbatim
1247
1248 @noindent
1249 in your source file.  This will render only the last 5 measures
1250 (assuming 4/4 time signature) of every @code{\score} in the input
1251 file.  For longer pieces, rendering only a small part is often an order
1252 of magnitude quicker than rendering it completely
1253
1254 Skipping parts of a score can be controlled in a more fine-grained
1255 fashion with the property @code{Score.skipTypesetting}.  When it is
1256 set, no typesetting is performed at all.
1257
1258 This property is also used to control output to the MIDI file.  Note that
1259 it skips all events, including tempo and instrument changes.  You have
1260 been warned.
1261
1262 @lilypond[quote,fragment,ragged-right,verbatim]
1263 \relative c'' {
1264   c8 d
1265   \set Score.skipTypesetting = ##t
1266   e e e e e e e e
1267   \set Score.skipTypesetting = ##f
1268   c d b bes a g c2 }
1269 @end lilypond
1270
1271 In polyphonic music, @code{Score.skipTypesetting} will affect all
1272 voices and staves, saving even more time.
1273
1274