]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/text.itely
Merge branch 'master' of git://git.sv.gnu.org/lilypond
[lilypond.git] / Documentation / user / text.itely
1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @ignore
3     Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
4
5     When revising a translation, copy the HEAD committish of the
6     version that you are working on.  See TRANSLATION for details.
7 @end ignore
8
9 @c \version "2.11.38"
10
11 @node Text
12 @section Text
13
14 @lilypondfile[quote]{text-headword.ly}
15
16 This section explains how to include text (with various
17 formatting) in music scores.
18
19 @noindent
20 Some text elements that are not dealt with here are discussed in other
21 specific sections: @ref{Vocal music}, @ref{Titles and headers}.
22
23
24 @cindex Text, other languages
25 @warning{To write accented and special text (such as characters
26 from other languages), simply insert the characters directly into
27 the LilyPond file.  The file must be saved as UTF-8.  For more
28 information, see @ref{Text encoding}.}
29
30 @menu
31 * Writing text::                
32 * Formatting text::             
33 * Fonts::                       
34 @end menu
35
36
37 @node Writing text
38 @subsection Writing text
39
40 This section introduces different ways of adding text to a score.
41
42 @menu
43 * Text scripts::                
44 * Text spanners::               
45 * Text marks::                  
46 * Separate text::               
47 @end menu
48
49
50 @node Text scripts
51 @subsubsection Text scripts
52
53 @cindex Text scripts
54 @cindex text items, non-empty
55 @cindex non-empty texts
56 @cindex quoted text
57
58 Simple @q{quoted text} indications may be added
59 to a score, as demonstrated in the following example.
60 Such indications can be manually placed
61 above or below the staff, using the
62 simple syntax described in @ref{Direction and
63 placement}.
64
65 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
66 d8^"pizz." e f g a4-"scherz." f
67 @end lilypond
68
69 This syntax is actually a shorthand; more complex text
70 formatting may be added to a note by explicitly using a
71 @code{\markup} block, as described in @ref{Formatting text}.
72
73 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
74 d8^\markup { \italic pizz. } e f g 
75 a4_\markup { \tiny scherz. \bold molto } f
76 @end lilypond
77
78 By default, text indications do not influence the note spacing.
79 However, their widths can be taken into account:
80 in the following example, the first text string does not affect 
81 spacing, whereas the second one does.
82
83 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
84 d8^"pizz." e f g \textLengthOn a4_"scherzando" f
85 @end lilypond
86
87 @predefined
88
89 @funindex \textLengthOn
90 @code{\textLengthOn},
91 @funindex \textLengthOff
92 @code{\textLengthOff}
93
94
95 @seealso
96
97 Notation Reference: @ref{Formatting text},
98 @ref{Direction and placement}.
99
100 Snippets:
101 @rlsr{Text}.
102
103 Internals Reference: @rinternals{TextScript}.
104
105 @knownissues
106
107 Checking to make sure that text scripts and lyrics are within the
108 margins is a relatively large computational task.  To speed up
109 processing, LilyPond does not perform such calculations by
110 default; to enable it, use
111
112 @example
113 \override Score.PaperColumn #'keep-inside-line = ##t
114 @end example
115
116
117 @node Text spanners
118 @subsubsection Text spanners
119
120 @cindex Text spanners
121
122 Some performance indications, e.g., @i{rallentando} or
123 @i{accelerando}, are written as text and are extended over many
124 measures with dotted lines.
125 Such objects, called @q{spanners}, may be created
126 from one note to another using the following syntax:
127
128 @lilypond[verbatim,quote,ragged-right,fragment,relative=2]
129 \override TextSpanner #'bound-details #'left #'text = "rit." 
130 b1\startTextSpan 
131 e,\stopTextSpan
132 @end lilypond
133
134 @noindent
135 The string to be printed is set through
136 object properties.  By default it is printed in italic characters,
137 but different formatting can be obtained using
138 @code{\markup} blocks, as described in @ref{Formatting text}.
139
140 @lilypond[quote,ragged-right,fragment,relative=2,verbatim]
141 \override TextSpanner #'bound-details #'left #'text =
142   \markup { \upright "rit." } 
143 b1\startTextSpan c
144 e,\stopTextSpan
145 @end lilypond
146
147 The line style, as well as the text string, can be defined as an
148 object property.  This syntax is described in @ref{Line styles}.
149
150 @predefined
151
152 @funindex textSpannerUp
153 @code{\textSpannerUp},
154 @funindex textSpannerDown
155 @code{\textSpannerDown},
156 @funindex textSpannerNeutral
157 @code{\textSpannerNeutral}
158
159 @seealso
160
161 Notation Reference: @ref{Line styles}.
162
163 Snippets:
164 @rlsr{Text}.
165
166 Internals Reference: @rinternals{TextSpanner}.
167
168
169 @node Text marks
170 @subsubsection Text marks
171
172 @cindex coda on bar line
173 @cindex segno on bar line
174 @cindex fermata on bar line
175 @cindex bar lines, symbols on
176 @funindex \mark
177
178 Various text elements can be added to a score using
179 the syntax described in @ref{Rehearsal marks}:
180
181 @lilypond[verbatim,quote,ragged-right,fragment,relative=2]
182 c4\mark "Allegro" c c c
183 @end lilypond
184
185 This syntax makes possible to put any text on a bar line;
186 more complex text formatting may be added using a @code{\markup}
187 block, as described in @ref{Formatting text}.  This can be used to print
188 signs like coda, segno or fermata, by specifying the appropriate
189 symbol name:
190
191 @lilypond[fragment,quote,ragged-right,verbatim,relative=2]
192 c1 \mark \markup { \musicglyph #"scripts.ufermata" }
193 c1
194 @end lilypond
195
196 @noindent
197 Such objects are only typeset above the top staff of the score; depending on
198 whether they are specified at the end or the middle of a bar, they 
199 can be placed above the bar line or between notes.  When specified at the
200 beginning of a score or at a line break, marks will be printed at
201 the beginning of the line (the next line, in case of a line break).
202
203 @lilypond[fragment,quote,ragged-right,verbatim,relative=2]
204 \mark "Allegro" c1
205 c\mark "assai" \break
206 c c
207 @end lilypond
208
209
210 @snippets
211
212 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
213 {printing-marks-at-the-end-of-a-line-or-a-score.ly}
214
215 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
216 {aligning-marks-with-various-notation-objects.ly}
217
218 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
219 {printing-marks-on-every-staff.ly}
220
221 @seealso
222
223 Notation Reference: @ref{Rehearsal marks},
224 @ref{Formatting text}, @ref{The Feta font}.
225
226 Snippets:
227 @rlsr{Text}.
228
229 Internals Reference: @rinternals{RehearsalMark}.
230
231 @knownissues
232 @c  To be removed when Issue 69 in the tracker gets fixed. -vv
233
234 If a mark is entered at the end of the last bar of the score (where
235 there is no next line), then the mark will not be printed at
236 all.
237
238 @node Separate text
239 @subsubsection Separate text
240
241 @cindex separate text
242 @cindex standalone text
243 @cindex top-level text
244 @cindex text, standalone
245 @funindex \markup
246
247 A @code{\markup} block can exist by itself, outside of any
248 any @code{\score} block, as a @qq{top-level
249 expression}.  This syntax is described in @ref{File structure}.
250
251 @lilypond[verbatim,quote]
252 \markup {
253   Tomorrow, and tomorrow, and tomorrow...
254 }
255 @end lilypond
256
257 @noindent
258 This allows to print text separately
259 from the music, which is particularly 
260 useful when the input file contains
261 several music pieces, as described in
262 @ref{Multiple scores in a book}.
263
264 @lilypond[quote,ragged-right,verbatim]
265 \score {
266   c'1
267 }
268 \markup {
269   Tomorrow, and tomorrow, and tomorrow...
270 }
271 \score {
272   c'1
273 }
274 @end lilypond
275
276 Using a specific syntax, text blocks can be spread
277 over multiple pages, making possible to print
278 text documents or books -- and therefore to
279 use LilyPond as a word processor.  This syntax is described in
280 @ref{Multi-page markup}.
281
282 @predefined
283
284 @code{\markup},
285 @funindex \markuplines
286 @code{\markuplines}
287
288 @ignore
289 @snippets
290
291 TODO: add convenient snippets in input/new -vv
292 @end ignore
293
294 @seealso
295
296 Notation Reference: @ref{Formatting text},
297 @ref{File structure}, 
298 @ref{Multiple scores in a book},
299 @ref{Multi-page markup}.
300
301 Snippets:
302 @rlsr{Text}.
303
304 Internals Reference: @rinternals{TextScript}.
305
306
307 @node Formatting text
308 @subsection Formatting text
309
310 This section presents basic and advanced text formatting,
311 using the @code{\markup} mode specific syntax.
312
313 @menu
314 * Text markup introduction::    
315 * Common markup commands::      
316 * Text alignment::              
317 * Graphic notation inside markup::  
318 * Music notation inside markup::  
319 * Multi-page markup::          
320 @end menu
321
322 @node Text markup introduction
323 @subsubsection Text markup introduction
324
325 @cindex markup
326 @cindex text markup
327 @cindex markup text
328 @cindex typeset text
329 @funindex \markup
330
331 A @code{\markup} block is used to typeset text with an extensible
332 specific syntax called @qq{markup mode}.
333
334 @cindex markup expressions
335 @cindex markup syntax
336
337 The markup syntax is similar to LilyPond's usual syntax: a
338 @code{\markup} expression is enclosed in curly braces @code{@{
339 @dots{} @}}.
340
341 Unlike simple @q{quoted text} indications, @code{\markup} blocks
342 may contain nested expressions or specific commands,
343 entered using the backslash @code{\} character.
344 Such commands only affect the first following expression.
345
346 @lilypond[quote,verbatim,fragment,relative=1]
347 e1-\markup "intenso"
348 a2^\markup { poco \italic più forte  }
349 c e1
350 d2_\markup { \italic "string. assai" }
351
352 b1^\markup { \bold { molto \italic  agitato } }
353 c
354 @end lilypond
355
356 @cindex special characters in markup mode
357 @cindex markup mode, special characters
358 @cindex reserved characters, printing
359 @cindex printing special characters
360 @cindex quoted text in markup mode
361
362 A @code{\markup} block may also contain quoted text, which
363 can be useful to print special characters (such as @code{\} and @code{#}).
364 Quoted text even allows to print double quotation marks, by preceding
365 them with backslashes:
366
367 @lilypond[quote,verbatim,fragment,relative=1]
368 \clef bass
369 a^\markup "##\ LEPORELLO \##"
370 a_\markup "Bravi! \"Cosa rara\"!"
371 r a8 d
372 cis a r4 r2
373 @end lilypond
374
375 The way markup expressions are defined affects 
376 how these expressions will stacked, centered and aligned
377 when using the commands explained in @ref{Text alignment}.
378
379 @lilypond[quote,verbatim,fragment,relative=1]
380 c1^\markup { \column { a bbbb \line { c d } } }
381 c1^\markup { \center-align { a bbbb c } }
382 c1^\markup { \line { a b c } }
383 @end lilypond
384
385 Lists of words that are not enclosed with double quotes
386 or preceded by a command are not kept distinct.  In
387 the following example, the first two @code{\markup} expressions
388 are equivalent:
389
390 @lilypond[quote,verbatim,fragment,relative=1]
391 c1^\markup { \center-align { a bbb c } }
392 c1^\markup { \center-align { a { bbb c } } }
393 c1^\markup { \center-align { a \line { bbb c } } }
394 @end lilypond
395
396
397 Markups can be stored in variables.  These variables may be
398 directly attached to notes:
399
400 @lilypond[quote,verbatim]
401 allegro = \markup { \bold \large Allegro }
402
403 {
404   d''8.^\allegro
405   d'16 d'4 r2
406 }
407 @end lilypond
408
409
410 @noindent
411 An exhaustive list of @code{\markup}-specific commands can be found in
412 @ref{Text markup commands}.
413
414
415 @seealso
416
417 This manual: @ref{Text markup commands}.
418
419 Snippets:
420 @rlsr{Text}.
421
422 Internals Reference: @rinternals{TextScript}.
423
424 Init files: @file{scm/@/new@/-markup@/.scm}.
425
426
427 @knownissues
428
429 Syntax errors for markup mode are confusing.
430
431
432 @node Common markup commands
433 @subsubsection Common markup commands
434
435 Markup text may be formatted using simple commands.
436
437 @cindex font switching
438 @funindex \italic
439 @funindex \bold
440 @funindex \underline
441
442 Basic font switching is supported:
443
444 @lilypond[quote,verbatim,relative=2]
445 {
446   d1^\markup { 
447       \bold { Più mosso } 
448       \italic { non troppo \underline Allegro } 
449     }
450   r2 r4 r8
451   d,_\markup { \italic quasi \smallCaps Tromba }
452   f1 d2 r
453 }
454 @end lilypond
455
456 @cindex font size
457 @cindex text size
458 @funindex \fontsize
459 @funindex \small
460 @funindex \large
461 @funindex \smaller
462 @funindex \larger
463 @funindex \magnify
464
465 The size of the characters can also be altered in different ways:
466 @itemize @bullet
467 @item
468 the font size can be defined to an absolute value,
469
470 @item
471 predefined commands allow to easily select standard sizes,
472
473 @item
474 other commands allow to change the size relatively to its previous value.
475 @end itemize
476
477 @noindent
478 The following example demonstrates these three methods:
479
480 @lilypond[quote,verbatim,relative=2]
481 {
482   f1^\markup { \fontsize #5 Sinfonia } 
483   a,_\markup { 
484          \tiny espressivo
485          \large e
486          \normalsize intenso 
487          }
488   bes^\markup { (con 
489          \larger grande 
490          \smaller emozione 
491          \magnify #0.6 {e sentimento } )
492          }
493   d c2 r8 c bes a g1
494 }
495 @end lilypond
496
497 @cindex subscript
498 @cindex superscript
499 @funindex \super
500 @funindex \sub
501
502 Text may be printed as subscript or superscript. By default
503 these are printed in a smaller size, but a normal size can be used as well:
504
505 @lilypond[quote,verbatim]
506 \markup {
507   \column {
508     \line { 1 \super st movement }
509     \line { 1 \normal-size-super st movement 
510       \sub { (part two) }  }
511   }
512 }
513 @end lilypond
514
515 The markup mode provides an easy way to select alternate
516 font families.  The default serif font, of roman type, is automatically
517 selected unless specified otherwise: on the last line of the following example,
518 there is no difference between the first word and the following words.
519
520 @lilypond[quote,verbatim]
521 \markup {
522   \column {
523     \line { Act \number 1 }
524     \line { \sans { Scene I. } }
525     \line { \typewriter { Verona. An open place. } }
526     \line { \roman Enter Valentine and Proteus. }
527   }
528 }
529 @end lilypond
530
531 It is also possible to defined custom sets of fonts, as explained in
532 @ref{Fonts}.
533
534 @noindent
535 An exhaustive list of font-switching, font-size and font-families related
536 commands can be found in @ref{Font}.
537
538 @knownissues
539 When used inside a word, some of these commands may produce an unwanted
540 blank space.  This can easily be solved by concatenating the text
541 elements together, using a specific command
542 described in @ref{Text alignment}.
543
544
545
546 @node Text alignment
547 @subsubsection Text alignment
548
549
550 Some objects have alignment procedures of their own, which cancel
551 out any effects of alignments applied to their markup arguments as
552 a whole.  For example, the @rinternals{RehearsalMark} is
553 horizontally centered, so using @code{\mark \markup @{ \left-align
554 .. @}} has no effect.
555
556 In addition, vertical placement is performed after creating the
557 text markup object.  If you wish to move an entire piece of
558 markup, you need to use the #'padding property or create an
559 @q{anchor} point inside the markup (generally with @code{\hspace
560 #0}).
561
562 @lilypond[quote,verbatim,fragment,relative=1]
563 \textLengthOn
564 c'4^\markup{ \raise #5 "not raised" }
565 \once \override TextScript #'padding = #3
566 c'4^\markup{ raised }
567 c'4^\markup{ \hspace #0 \raise #1.5 raised }
568 @end lilypond
569
570 Some situations (such as dynamic marks) have preset font-related
571 properties.  If you are creating text in such situations, it is
572 advisable to cancel those properties with @code{normal-text}.  See
573 @ref{Text markup commands}, for more details.
574
575
576 Alignment basics:
577 \left-align
578 \center-align
579 \right-align
580
581 Horizontal alignment:
582 \hcenter
583 \general-align
584 \halign 
585
586
587 Vertical alignment: 
588 \vcenter
589 \column 
590 \dir-column 
591
592 Building a "large" markup:
593
594 \line
595
596 \fill-line
597
598 \hcenter-in
599         
600 \pad-around
601 \pad-markup
602 \pad-to-box
603 \pad-x
604         
605 Alignment inside a "large" markup:
606
607 \justify-field 
608 \justify
609 \justify-string
610
611 \wordwrap-field
612 \wordwrap
613 \wordwrap-string
614
615
616 @ignore
617 TODO: here are some commands that could be described here.
618 I'm putting them in bulk, prior to working on this section. -vv
619
620 \simple
621
622 \char
623 \fraction
624
625 \combine
626 \concat
627 \put-adjacent
628
629
630 \page-ref (see also "Table of contents")
631 \fromproperty
632 \verbatim-file
633 \with-url
634
635 \on-the-fly 
636 \override
637
638
639 \null
640 \hspace
641
642 \lower
643 \raise 
644 \translate 
645 \translate-scaled
646 \rotate
647 \transparent
648 \whiteout
649
650 @end ignore
651
652
653 @node Graphic notation inside markup
654 @subsubsection Graphic notation inside markup
655 Graphics around text:
656 \box
657 \circle
658
659 \bracket
660 \hbracket
661
662 "Standalone" graphics:
663
664 \arrow-head
665 \draw-line
666 \draw-circle
667 \filled-box
668 \triangle
669 \strut
670
671 \with-color
672
673
674 Advanced graphics:
675 \stencil
676
677 \postscript
678 \epsfile
679
680 \with-dimensions
681
682 @node Music notation inside markup
683 @subsubsection Music notation inside markup
684
685 Notes can be printed in markup mode blah blah:
686
687 \note   
688 \note-by-number
689
690 Accidental symbols can be obtained easily:
691
692 \doubleflat
693 \sesquiflat
694 \flat
695 \semiflat
696 \natural
697 \semisharp
698 \sharp
699 \sesquisharp
700 \doublesharp
701
702 Some other notation objects blah blah
703
704 \beam
705 \finger
706 \dynamic
707 \tied-lyric
708 \markalphabet
709 \markletter
710 @c TODO: add \text here? -vv
711
712 Any musical symbol can be printed
713
714 \musicglyph
715 @c TODO: add \lookup here? -vv
716
717
718 The markup mode has support for fret diagrams:
719
720 \fret-diagram 
721 \fret-diagram-terse
722 \fret-diagram-verbose
723
724 An entire @code{\score} block can even be nested in a @code{\markup}
725 block.  In such a case, the @code{\score} must contain a @code{\layout} block.
726
727
728 \score
729
730
731 @lilypond[quote,verbatim,ragged-right]
732 \relative {
733   c4 d^\markup {
734     \score {
735       \relative { c4 d e f }
736       \layout { }
737     }
738   }
739   e f
740 }
741 @end lilypond
742
743 @seealso
744
745 Snippets:
746 @rlsr{Text}.
747
748 @node Multi-page markup
749 @subsubsection Multi-page markup
750
751 Whereas @code{\markup} is used to enter a non-breakable block of
752 text, @code{\markuplines} can be used at top-level to enter lines
753 of text that can spread over multiple pages:
754
755 @verbatim
756 \markuplines {
757   \justified-lines {
758     A very long text of justified lines.
759     ...
760   }
761   \justified-lines {
762     An other very long paragraph.
763     ...
764   }
765   ...
766 }
767 @end verbatim
768
769 @code{\markuplines} accepts a list of markup, that is either the
770 result of a markup list command, or a list of markups or of markup
771 lists.  The built-in markup list commands are described in
772 @ref{Text markup list commands}.
773
774 @seealso
775
776 This manual: @ref{Text markup list commands}, @ref{New
777 markup list command definition}.
778
779 Snippets:
780 @rlsr{Text}.
781
782 @predefined
783
784 @funindex \markuplines
785 @code{\markuplines}
786
787
788 @node Fonts
789 @subsection Fonts
790
791 @menu
792 * Entire document fonts::       
793 * Single entry fonts::          
794 @end menu
795
796 @node Entire document fonts
797 @subsubsection Entire document fonts
798
799 It is also possible to change the default font family for the
800 entire document.  This is done by calling the
801 @code{make-pango-font-tree} from within the @code{\paper} block.
802 The function takes names for the font families to use for roman,
803 sans serif and monospaced text.  For example,
804
805 @cindex font families, setting
806 @cindex Pango
807
808
809 @lilypond[verbatim]
810 \paper  {
811   myStaffSize = #20
812
813   #(define fonts
814     (make-pango-font-tree "Times New Roman"
815                           "Nimbus Sans"
816                           "Luxi Mono"
817                            (/ myStaffSize 20)))
818 }
819
820 {
821   c'^\markup { roman: foo \sans bla \typewriter bar }
822 }
823 @end lilypond
824
825 @c we don't do Helvetica / Courier, since GS incorrectly loads
826 @c Apple TTF fonts
827
828
829 @node Single entry fonts
830 @subsubsection Single entry fonts
831
832 @cindex font selection
833 @cindex font magnification
834 @funindex font-interface
835
836 By setting the object properties described below, you can select a
837 font from the preconfigured font families.  LilyPond has default
838 support for the feta music fonts.  Text fonts are selected through
839 Pango/FontConfig.  The serif font defaults to New Century
840 Schoolbook, the sans and typewriter to whatever the Pango
841 installation defaults to.
842
843
844 @itemize
845 @item @code{font-encoding}
846 is a symbol that sets layout of the glyphs.  This should only be
847 set to select different types of non-text fonts, e.g.
848
849 @code{fetaBraces} for piano staff braces, @code{fetaMusic} the
850 standard music font, including ancient glyphs, @code{fetaDynamic}
851 for dynamic signs and @code{fetaNumber} for the number font.
852
853 @item @code{font-family}
854 is a symbol indicating the general class of the typeface.
855 Supported are @code{roman} (Computer Modern), @code{sans}, and
856 @code{typewriter}.
857
858 @item @code{font-shape}
859 is a symbol indicating the shape of the font.  There are typically
860 several font shapes available for each font family.  Choices are
861 @code{italic}, @code{caps}, and @code{upright}.
862
863 @item @code{font-series}
864 is a symbol indicating the series of the font.  There are
865 typically several font series for each font family and shape.
866 Choices are @code{medium} and @code{bold}.
867
868 @end itemize
869
870 Fonts selected in the way sketched above come from a predefined
871 style sheet.  If you want to use a font from outside the style
872 sheet, then set the @code{font-name} property,
873
874 @lilypond[fragment,verbatim]
875 {
876   \override Staff.TimeSignature #'font-name = #"Charter"
877   \override Staff.TimeSignature #'font-size = #2
878   \time 3/4
879   c'1_\markup {
880     \override #'(font-name . "Vera Bold")
881       { This text is in Vera Bold }
882   }
883 }
884 @end lilypond
885
886 @noindent
887 Any font can be used, as long as it is available to
888 Pango/FontConfig.  To get a full list of all available fonts, run
889 the command
890
891 @example
892 lilypond -dshow-available-fonts blabla
893 @end example
894
895 (the last argument of the command can be anything, but has to be
896 present).
897
898
899 The size of the font may be set with the @code{font-size}
900 property.  The resulting size is taken relative to the
901 @code{text-font-size} as defined in the @code{\paper} block.
902
903 @cindex font size
904 @cindex font magnification
905
906
907
908
909 @seealso
910
911 Snippets:
912 @rlsr{Text}.
913
914