]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/text.itely
partial update of text, fixes doc build
[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
57 It is possible to add arbitrary text indications
58 to a score, as demonstrated in the following example.
59 Such indications can also be manually placed
60 above or below the staff, using the
61 simple syntax described in @ref{Direction and
62 placement}.
63
64 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
65 d8^"pizz." e f g a4-"scherz." f
66 @end lilypond
67
68 In LilyPond, such text strings are called @command{markup}
69 objects.  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  IMO this is a bug; hopefully it'll be fixed soon, so I can
233 @c  delete this sentence.   -gp
234 @c  A workaround is suggested in the first @snippets item -vv
235
236 If a mark is entered at the end of the last bar of the score (where
237 there is no next line), then the mark will not be printed at
238 all.
239
240 @node Separate text
241 @subsubsection Separate text
242
243 @cindex separate text
244 @cindex standalone text
245 @cindex top-level text
246 @cindex text, standalone
247 @funindex \markup
248
249 A @code{\markup} block can exist by itself, outside of any
250 any @code{\score} block, as a @qq{top-level
251 expression}.  This syntax is described in @ref{File structure}.
252
253 @lilypond[verbatim,quote]
254 \markup {
255   Tomorrow, and tomorrow, and tomorrow...
256 }
257 @end lilypond
258
259 @noindent
260 This allows to print text separately
261 from the music, which is particularly 
262 useful when the input file contains
263 several music pieces, as described in
264 @ref{Multiple scores in a book}.
265
266 @lilypond[quote,ragged-right,verbatim]
267 \score {
268   c'1
269 }
270 \markup {
271   Tomorrow, and tomorrow, and tomorrow...
272 }
273 \score {
274   c'1
275 }
276 @end lilypond
277
278 Using a specific syntax, text blocks can be spread
279 over multiple pages, making possible to print
280 text documents or books -- and therefore to
281 use LilyPond as a word processor.  This syntax is described in
282 @ref{Multi-page markup}.
283
284 @predefined
285
286 @funindex \markup
287 @code{\markup},
288 @funindex \markuplines
289 @code{\markuplines}
290
291 @ignore
292 @snippets
293
294 TODO: add convenient snippets in input/new -vv
295 @end ignore
296
297 @seealso
298
299 Notation Reference: @ref{Formatting text},
300 @ref{File structure}, 
301 @ref{Multiple scores in a book},
302 @ref{Multi-page markup}.
303
304 Snippets:
305 @rlsr{Text}.
306
307 Internals Reference: @rinternals{TextScript}.
308
309
310 @node Formatting text
311 @subsection Formatting text
312
313 This section presents basic and advanced text formatting,
314 using the @code{\markup} mode specific syntax.
315
316 @menu
317 * Text markup introduction::    
318 * Common markup commands::      
319 * Text alignment::              
320 * Graphic notation inside markup::  
321 * Music notation inside markup::  
322 * Multi-page markup::          
323 @end menu
324
325 @node Text markup introduction
326 @subsubsection Text markup introduction
327
328 @cindex markup
329 @cindex text markup
330 @cindex markup text
331 @cindex typeset text
332
333 A @code{\markup} block is used to typeset text with an extensible
334 specific syntax called @qq{markup mode}.
335
336 @cindex markup expressions
337 @cindex markup syntax
338
339 The markup syntax is similar to LilyPond's usual syntax: a
340 @code{\markup} expression is enclosed in curly braces @code{@{
341 @dots{} @}}.
342
343 In markup mode, specific commands are entered using the backslash
344 @code{\} character.  Such commands only affect the first following
345 expression.
346
347 Markup expressions may also be enclosed in double quotes
348 @code{"..."}. Such expressions are treated as text strings
349 and may not contain nested expressions or commands.
350 Therefore, braces are generally prefered to double quotes;
351 the following example demonstrates both syntaxes.
352
353 @lilypond[quote,verbatim,fragment,relative=1]
354 e1-\markup "intenso"
355 a2^\markup { poco \italic più forte  }
356 c e1
357 d2_\markup { \italic "string. assai" }
358
359 b1^\markup { \bold { molto \italic  agitato } }
360 c
361 @end lilypond
362
363 @cindex special characters in markup mode
364 @cindex markup mode, special characters
365 @cindex reserved characters, printing
366 @cindex printing special characters
367
368 Special characters such as @code{\} and @code{#}
369 can be printed in the output simply using double
370 quotes.  Double quotation marks are only printed
371 in the output when preceded by backslashes:
372
373 @lilypond[quote,verbatim,fragment,relative=1]
374 \clef bass
375 a^\markup "##\ LEPORELLO \##"
376 a_\markup "Bravi! \"Cosa rara\"!"
377 r a8 d
378 cis a r4 r2
379 @end lilypond
380
381 The way markup expressions are defined affects 
382 how these expressions will stacked, centered and aligned
383 when using the commands explained in @ref{Text alignment}.
384
385 @lilypond[quote,verbatim,fragment,relative=1]
386 c1^\markup { \column { a bbbb \line { c d } } }
387 c1^\markup { \center-align { a bbbb c } }
388 c1^\markup { \line { a b c } }
389 @end lilypond
390
391 Lists of words that are not enclosed with double quotes
392 or preceded by a previous command are not kept distinct.  In
393 the following example, the first two @code{\markup} expressions
394 are equivalent:
395
396 @lilypond[quote,verbatim,fragment,relative=1]
397 c1^\markup { \center-align { a bbb c } }
398 c1^\markup { \center-align { a { bbb c } } }
399 c1^\markup { \center-align { a \line { bbb c } } }
400 @end lilypond
401
402
403 Markups can be stored in variables.  These variables may be
404 directly attached to notes:
405
406 @lilypond[quote,verbatim]
407 allegro = \markup { \bold \large Allegro }
408
409 {
410   d''8.^\allegro
411   d'16 d'4 r2
412 }
413 @end lilypond
414
415
416 @noindent
417 An exhaustive list of @code{\markup}-specific commands can be found in
418 @ref{Text markup commands}.
419
420
421 @seealso
422
423 This manual: @ref{Text markup commands}.
424
425 Snippets:
426 @rlsr{Text}.
427
428 Internals Reference: @rinternals{TextScript}.
429
430 Init files: @file{scm/@/new@/-markup@/.scm}.
431
432
433 @knownissues
434
435 @c FIXME: this is totally deprecated, isn't it? -vv
436 Kerning or generation of ligatures is only done when the @TeX{}
437 backend is used.  In this case, LilyPond does not account for them
438 so texts will be spaced slightly too wide.
439
440 @c is the following sentence really relevant? -vv
441 Syntax errors for markup mode are confusing.
442
443
444 @node Common markup commands
445 @subsubsection Common markup commands
446
447 Some basic formatting can be used blah blah
448
449
450
451 @ignore
452 TODO: here are some commands that could be described here.
453 I'm putting them in bulk, prior to working on this section. -vv
454
455 \simple
456
457 \char
458 \fraction
459
460 \combine
461 \concat
462 \put-adjacent
463
464
465 \page-ref (see also "Table of contents")
466 \fromproperty
467 \verbatim-file
468 \with-url
469
470 \on-the-fly 
471 \override
472
473
474 \null
475 \hspace
476
477 \lower
478 \raise 
479 \translate 
480 \translate-scaled
481 \rotate
482 \transparent
483 \whiteout
484
485 @end ignore
486
487
488
489 @cindex font switching
490
491 Some font switching commands are demonstrated here.
492
493 \italic 
494 \upright
495 \bold 
496 \medium 
497 \underline
498         
499
500 @c TODO: what's the difference between the following commands? -vv
501 \smallCaps      
502 \caps 
503 \fontCaps
504
505
506 Some alternate font families can easily be selected:
507
508 \sans
509 \typewriter
510 \roman
511 \number (only for numbers, such as fingerings and time signatures)
512 @c TODO: add \slashed-digit here? -vv
513
514 The size can be blah blah blah
515
516 \fontsize
517
518 Some predefined font sizes can be used blah blah
519
520 \teeny
521 \tiny
522 \small  
523 \normalsize
524 \large
525 \huge
526
527 Some shorcuts allow to change the font size relatively to its previous value 
528
529 \smaller
530 \bigger
531 \larger
532
533 \magnify
534
535 Text may be printed as subscript or superscript:
536
537 \sub 
538 \super
539
540 To obtain subscripts or superscripts in a normal text size, use
541 \normal-size-sub
542 \normal-size-super
543
544 All these settings (except the size) can be reverted to the default font:
545
546 \normal-text 
547
548
549 @node Text alignment
550 @subsubsection Text alignment
551
552
553 Some objects have alignment procedures of their own, which cancel
554 out any effects of alignments applied to their markup arguments as
555 a whole.  For example, the @rinternals{RehearsalMark} is
556 horizontally centered, so using @code{\mark \markup @{ \left-align
557 .. @}} has no effect.
558
559 In addition, vertical placement is performed after creating the
560 text markup object.  If you wish to move an entire piece of
561 markup, you need to use the #'padding property or create an
562 @q{anchor} point inside the markup (generally with @code{\hspace
563 #0}).
564
565 @lilypond[quote,verbatim,fragment,relative=1]
566 \textLengthOn
567 c'4^\markup{ \raise #5 "not raised" }
568 \once \override TextScript #'padding = #3
569 c'4^\markup{ raised }
570 c'4^\markup{ \hspace #0 \raise #1.5 raised }
571 @end lilypond
572
573 Some situations (such as dynamic marks) have preset font-related
574 properties.  If you are creating text in such situations, it is
575 advisable to cancel those properties with @code{normal-text}.  See
576 @ref{Text markup commands}, for more details.
577
578
579 Alignment basics:
580 \left-align
581 \center-align
582 \right-align
583
584 Horizontal alignment:
585 \hcenter
586 \general-align
587 \halign 
588
589
590 Vertical alignment: 
591 \vcenter
592 \column 
593 \dir-column 
594
595 Building a "large" markup:
596
597 \line
598
599 \fill-line
600
601 \hcenter-in
602         
603 \pad-around
604 \pad-markup
605 \pad-to-box
606 \pad-x
607         
608 Alignment inside a "large" markup:
609
610 \justify-field 
611 \justify
612 \justify-string
613
614 \wordwrap-field
615 \wordwrap
616 \wordwrap-string
617
618 @node Graphic notation inside markup
619 @subsubsection Graphic notation inside markup
620 Graphics around text:
621 \box
622 \circle
623
624 \bracket
625 \hbracket
626
627 "Standalone" graphics:
628
629 \arrow-head
630 \draw-line
631 \draw-circle
632 \filled-box
633 \triangle
634 \strut
635
636 \with-color
637
638
639 Advanced graphics:
640 \stencil
641
642 \postscript
643 \epsfile
644
645 \with-dimensions
646
647 @node Music notation inside markup
648 @subsubsection Music notation inside markup
649
650 Notes can be printed in markup mode blah blah:
651
652 \note   
653 \note-by-number
654
655 Accidental symbols can be obtained easily:
656
657 \doubleflat
658 \sesquiflat
659 \flat
660 \semiflat
661 \natural
662 \semisharp
663 \sharp
664 \sesquisharp
665 \doublesharp
666
667 Some other notation objects blah blah
668
669 \beam
670 \finger
671 \dynamic
672 \tied-lyric
673 \markalphabet
674 \markletter
675 @c TODO: add \text here? -vv
676
677 Any musical symbol can be printed
678
679 \musicglyph
680 @c TODO: add \lookup here? -vv
681
682
683 The markup mode has support for fret diagrams:
684
685 \fret-diagram 
686 \fret-diagram-terse
687 \fret-diagram-verbose
688
689 An entire @code{\score} block can even be nested in a @code{\markup}
690 block.  In such a case, the @code{\score} must contain a @code{\layout} block.
691
692
693 \score
694
695
696 @lilypond[quote,verbatim,ragged-right]
697 \relative {
698   c4 d^\markup {
699     \score {
700       \relative { c4 d e f }
701       \layout { }
702     }
703   }
704   e f
705 }
706 @end lilypond
707
708 @seealso
709
710 Snippets:
711 @rlsr{Text}.
712
713 @node Multi-page markup
714 @subsubsection Multi-page markup
715
716 Whereas @code{\markup} is used to enter a non-breakable block of
717 text, @code{\markuplines} can be used at top-level to enter lines
718 of text that can spread over multiple pages:
719
720 @verbatim
721 \markuplines {
722   \justified-lines {
723     A very long text of justified lines.
724     ...
725   }
726   \justified-lines {
727     An other very long paragraph.
728     ...
729   }
730   ...
731 }
732 @end verbatim
733
734 @code{\markuplines} accepts a list of markup, that is either the
735 result of a markup list command, or a list of markups or of markup
736 lists.  The built-in markup list commands are described in
737 @ref{Text markup list commands}.
738
739 @seealso
740
741 This manual: @ref{Text markup list commands}, @ref{New
742 markup list command definition}.
743
744 Snippets:
745 @rlsr{Text}.
746
747 @predefined
748
749 @funindex \markuplines
750 @code{\markuplines}
751
752
753
754 @c TODO: move the following subsubsec into NR3 -vv
755 @c maybe.  -gp
756 @node Fonts
757 @subsection Fonts
758
759 @menu
760 * Entire document fonts::       
761 * Single entry fonts::          
762 @end menu
763
764 @node Entire document fonts
765 @subsubsection Entire document fonts
766
767 It is also possible to change the default font family for the
768 entire document.  This is done by calling the
769 @code{make-pango-font-tree} from within the @code{\paper} block.
770 The function takes names for the font families to use for roman,
771 sans serif and monospaced text.  For example,
772
773 @cindex font families, setting
774 @cindex Pango
775
776
777 @lilypond[verbatim]
778 \paper  {
779   myStaffSize = #20
780
781   #(define fonts
782     (make-pango-font-tree "Times New Roman"
783                           "Nimbus Sans"
784                           "Luxi Mono"
785                            (/ myStaffSize 20)))
786 }
787
788 {
789   c'^\markup { roman: foo \sans bla \typewriter bar }
790 }
791 @end lilypond
792
793 @c we don't do Helvetica / Courier, since GS incorrectly loads
794 @c Apple TTF fonts
795
796
797 @node Single entry fonts
798 @subsubsection Single entry fonts
799
800 @cindex font selection
801 @cindex font magnification
802 @funindex font-interface
803
804 By setting the object properties described below, you can select a
805 font from the preconfigured font families.  LilyPond has default
806 support for the feta music fonts.  Text fonts are selected through
807 Pango/FontConfig.  The serif font defaults to New Century
808 Schoolbook, the sans and typewriter to whatever the Pango
809 installation defaults to.
810
811
812 @itemize
813 @item @code{font-encoding}
814 is a symbol that sets layout of the glyphs.  This should only be
815 set to select different types of non-text fonts, e.g.
816
817 @code{fetaBraces} for piano staff braces, @code{fetaMusic} the
818 standard music font, including ancient glyphs, @code{fetaDynamic}
819 for dynamic signs and @code{fetaNumber} for the number font.
820
821 @item @code{font-family}
822 is a symbol indicating the general class of the typeface.
823 Supported are @code{roman} (Computer Modern), @code{sans}, and
824 @code{typewriter}.
825
826 @item @code{font-shape}
827 is a symbol indicating the shape of the font.  There are typically
828 several font shapes available for each font family.  Choices are
829 @code{italic}, @code{caps}, and @code{upright}.
830
831 @item @code{font-series}
832 is a symbol indicating the series of the font.  There are
833 typically several font series for each font family and shape.
834 Choices are @code{medium} and @code{bold}.
835
836 @end itemize
837
838 Fonts selected in the way sketched above come from a predefined
839 style sheet.  If you want to use a font from outside the style
840 sheet, then set the @code{font-name} property,
841
842 @lilypond[fragment,verbatim]
843 {
844   \override Staff.TimeSignature #'font-name = #"Charter"
845   \override Staff.TimeSignature #'font-size = #2
846   \time 3/4
847   c'1_\markup {
848     \override #'(font-name . "Vera Bold")
849       { This text is in Vera Bold }
850   }
851 }
852 @end lilypond
853
854 @noindent
855 Any font can be used, as long as it is available to
856 Pango/FontConfig.  To get a full list of all available fonts, run
857 the command
858
859 @example
860 lilypond -dshow-available-fonts blabla
861 @end example
862
863 (the last argument of the command can be anything, but has to be
864 present).
865
866
867 The size of the font may be set with the @code{font-size}
868 property.  The resulting size is taken relative to the
869 @code{text-font-size} as defined in the @code{\paper} block.
870
871 @cindex font size
872 @cindex font magnification
873
874
875
876
877 @seealso
878
879 Snippets:
880 @rlsr{Text}.
881
882