]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/text.itely
8796e0a1885e1cd1fb89581761a0a4b322e98f10
[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{Controlling 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{Controlling direction and placement}.
99
100 Snippets: @lsrdir{Text,Text}
101
102 Internals Reference: @internalsref{TextScript}.
103
104 @knownissues
105
106 Checking to make sure that text scripts and lyrics are within the
107 margins is a relatively large computational task.  To speed up
108 processing, LilyPond does not perform such calculations by
109 default; to enable it, use
110
111 @example
112 \override Score.PaperColumn #'keep-inside-line = ##t
113 @end example
114
115
116 @node Text spanners
117 @subsubsection Text spanners
118
119 @cindex Text spanners
120
121 Some performance indications, e.g., @i{rallentando} or
122 @i{accelerando}, are written as text and are extended over many
123 measures with dotted lines.
124
125 Such objects, called @q{spanners}, may be created
126 from one note to another by 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:
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: @lsrdir{Text,Text}
164
165 Internals Reference: @internalsref{TextSpanner}.
166
167
168 @node Text marks
169 @subsubsection Text marks
170
171 @cindex coda on bar line
172 @cindex segno on bar line
173 @cindex fermata on bar line
174 @cindex bar lines, symbols on
175 @funindex \mark
176
177 Various text elements can be added to a score using
178 the syntax described in @ref{Rehearsal marks}:
179
180 @lilypond[verbatim,quote,ragged-right,fragment,relative=2]
181 c4\mark "dolce" c c c
182 @end lilypond
183
184 This syntax makes possible to put any text on a bar line;
185 more complex text formatting may be added using a @code{\markup}
186 block, as described in @ref{Formatting text}.  This can be used to print
187 signs like coda, segno or fermata, by specifying the appropriate
188 symbol name:
189
190 @lilypond[fragment,quote,ragged-right,verbatim,relative=2]
191 c1 \mark \markup { \musicglyph #"scripts.ufermata" }
192 c1
193 @end lilypond
194
195 @noindent
196 Such objects are only typeset above the top staff of the score; they
197 can be placed above the bar line or between notes, depending on whether
198 you specify it at the end or the middle of a bar. When specified at the
199 beginning of a score or at a line break, the mark will be printed at
200 the beginning of the line (the next line, in case of a line break).
201
202 @lilypond[fragment,quote,ragged-right,verbatim,relative=2]
203 \mark "dolce" c1
204 c\mark "assai" \break
205 c c
206 @end lilypond
207
208
209 @snippets
210
211 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
212 {printing-marks-at-the-end-of-a-line-or-a-score.ly}
213
214 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
215 {aligning-marks-with-various-notation-objects.ly}
216
217 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
218 {printing-marks-on-every-staff.ly}
219
220 @seealso
221
222 Notation Reference: @ref{Rehearsal marks},
223 @ref{Formatting text}, @ref{The Feta font}.
224
225 Snippets: @lsrdir{Text,Text}
226
227 Internals Reference: @internalsref{RehearsalMark}.
228
229 @knownissues
230 @c  IMO this is a bug; hopefully it'll be fixed soon, so I can
231 @c  delete this sentence.   -gp
232 @c  A workaround is suggested in the first @snippets item -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.  This syntax is called a @q{top-level
249 expression}, and is described in @code{File structure}.
250
251 @c TODO: turn this into a @lilypond example
252
253 @example
254 \markup @{
255   @var{..}
256 @}
257 @end example
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 @example
267 \score @{
268   @var{..}
269 @}
270 \markup @{
271   @var{..}
272 @}
273 \score @{
274   @var{..}
275 @}
276 @end example
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-pages markup}.
283
284 @ignore
285 @snippets
286
287 TODO: add convenient snippets, e.g.
288 "Inserting large plain text sections"
289 (this requires the LSR to be updated) -vv
290 @end ignore
291
292 @seealso
293
294 Notation Reference: @code{Formatting text},
295 @code{File structure}, 
296 @ref{Multiple scores in a book},
297 @ref{Multi-pages markup}.
298
299 Snippets: @lsrdir{Text,Text}.
300
301 Internals Reference: @internalsref{TextScript}.
302
303 @predefined
304
305 @funindex \markup
306 @code{\markup},
307 @funindex \markuplines
308 @code{\markuplines}
309
310
311 @node Formatting text
312 @subsection Formatting text
313
314 This section presents basic and advanced text formatting,
315 using the @code{\markup} mode specific syntax.
316
317 @menu
318 * Text markup introduction::    
319 * Common markup commands::      
320 * Text alignment::              
321 * Graphic notation inside markup::  
322 * Music notation inside markup::  
323 * Multi-pages markup::          
324 @end menu
325
326 @node Text markup introduction
327 @subsubsection Text markup introduction
328
329 @cindex markup
330 @cindex text markup
331 @cindex markup text
332 @cindex typeset text
333
334 A @code{\markup} block is used to typeset text with an extensible syntax,
335 called @q{markup mode}.
336 Specific commands can be entered in this mode, using the
337 backslash @code{\} character.
338 @c TODO: move the following sentence (and add an example?) -vv
339 To @emph{print} such characters as
340 @code{\} and @code{#} in the output, use double
341 quotation marks.
342
343 @lilypond[quote,verbatim,fragment,relative=1]
344 c1^\markup { hello }
345 c1_\markup { hi there }
346 c1^\markup { hi \bold there, is \italic {anyone home?} }
347 c1_\markup { "\special {weird} #characters" }
348 @end lilypond
349
350 @noindent
351 An exhaustive list of @code{\markup}-specific commands can be found in
352 @ref{Text markup commands}.
353
354
355 @lilypond[quote,verbatim]
356 \header{ title = \markup{ \bold { foo \italic { bar! } } } }
357 \score{
358   \relative c'' {
359     \override Score.RehearsalMark
360       #'break-visibility = #begin-of-line-invisible
361     \override Score.RehearsalMark #'self-alignment-X = #right
362
363     \set Staff.instrumentName = \markup{ \column{ Alto solo } }
364     c2^\markup{ don't be \flat }
365     \override TextSpanner #'bound-details #'left #'text = \markup{\italic rit }
366     b2\startTextSpan
367     a2\mark \markup{ \large \bold Fine }
368     r2\stopTextSpan
369     \bar "||"
370   }
371   \addlyrics { bar, foo \markup{ \italic bar! } }
372 }
373 @end lilypond
374
375
376
377 @cindex font switching
378
379 Some font switching commands are demonstrated here. Such commands
380 apply only to the first following word; several words may be affected
381 by enclosing them in braces.
382
383 @example
384 \markup @{ \bold @{ hi there @} @}
385 @end example
386
387 @c TODO: remove the following line and example? -vv
388 @noindent
389 For clarity, you can also do this for single arguments, e.g.,
390
391 @example
392 \markup @{ is \italic @{ anyone @} home @}
393 @end example
394
395 The markup mode can be used to compose expressions, similar to
396 mathematical expressions, XML documents, and music expressions.
397 Such expressions can be vertically stacked, horizontally centered, 
398 or aligned in different ways:
399
400 @lilypond[quote,verbatim,fragment,relative=1]
401 c1^\markup { \column { a bbbb \line { c d } } }
402 c1^\markup { \center-align { a bbbb c } }
403 c1^\markup { \line { a b c } }
404 @end lilypond
405
406 Lists with no previous command are not kept distinct.  In
407 the following example, the two @code{\markup} expressions
408 are equivalent:
409
410 @c TODO: merge these two examples in a @lilypond example -vv
411
412 @example
413 \center-align @{ @{ a b @} @{ c d @} @}
414 \center-align @{ a b c d @}
415 @end example
416
417 @noindent
418
419 To keep lists of words distinct, please use quotes @code{"} or
420 the @code{\line} command
421
422 @lilypond[quote,verbatim,fragment,relative=1]
423 \textLengthOn
424 c4^\markup{ \center-align { on three lines } }
425 c4^\markup{ \center-align { "all one line" } }
426 c4^\markup{ \center-align { { on three lines } } }
427 c4^\markup{ \center-align { \line { on one line } } }
428 @end lilypond
429
430 Markups can be stored in variables and these variables may be
431 attached to notes, like
432
433 @example
434 allegro = \markup @{ \bold \large @{ Allegro @} @}
435  @{ a^\allegro b c d @}
436 @end example
437
438 Some objects have alignment procedures of their own, which cancel
439 out any effects of alignments applied to their markup arguments as
440 a whole.  For example, the @internalsref{RehearsalMark} is
441 horizontally centered, so using @code{\mark \markup @{ \left-align
442 .. @}} has no effect.
443
444 In addition, vertical placement is performed after creating the
445 text markup object.  If you wish to move an entire piece of
446 markup, you need to use the #'padding property or create an
447 @q{anchor} point inside the markup (generally with @code{\hspace
448 #0}).
449
450 @lilypond[quote,verbatim,fragment,relative=1]
451 \textLengthOn
452 c'4^\markup{ \raise #5 "not raised" }
453 \once \override TextScript #'padding = #3
454 c'4^\markup{ raised }
455 c'4^\markup{ \hspace #0 \raise #1.5 raised }
456 @end lilypond
457
458 Some situations (such as dynamic marks) have preset font-related
459 properties.  If you are creating text in such situations, it is
460 advisable to cancel those properties with @code{normal-text}.  See
461 @ref{Text markup commands}, for more details.
462
463 @ignore
464 TODO: here are some commands that could be described here.
465 I'm putting them in bulk, prior to working on this section. -vv
466
467 \simple
468
469 \char
470 \fraction
471
472 \combine
473 \concat
474 \put-adjacent
475
476
477 \page-ref (see also "Table of contents")
478 \fromproperty
479 \verbatim-file
480 \with-url
481
482 \on-the-fly 
483 \override
484
485
486 \null
487 \hspace
488
489 \lower
490 \raise 
491 \translate 
492 \translate-scaled
493 \rotate
494 \transparent
495 \whiteout
496
497 @end ignore
498
499 @seealso
500
501 This manual: @ref{Text markup commands}.
502
503 Snippets: @lsrdir{Text,Text}
504
505 Internals Reference: @internalsref{TextScript}.
506
507 Init files: @file{scm/@/new@/-markup@/.scm}.
508
509
510 @knownissues
511
512 Kerning or generation of ligatures is only done when the @TeX{}
513 backend is used.  In this case, LilyPond does not account for them
514 so texts will be spaced slightly too wide.
515
516 Syntax errors for markup mode are confusing.
517
518 @node Common markup commands
519 @subsubsection Common markup commands
520
521 Some basic formatting can be used blah blah
522
523 \italic 
524 \upright
525 \bold 
526 \medium 
527 \underline
528         
529
530 @c TODO: what's the difference between the following commands? -vv
531 \smallCaps      
532 \caps 
533 \fontCaps
534
535
536 Some alternate font families can easily be selected:
537
538 \sans
539 \typewriter
540 \roman
541 \number (only for numbers, such as fingerings and time signatures)
542 @c TODO: add \slashed-digit here? -vv
543
544 The size can be blah blah blah
545
546 \fontsize
547
548 Some predefined font sizes can be used blah blah
549
550 \teeny
551 \tiny
552 \small  
553 \normalsize
554 \large
555 \huge
556
557 Some shorcuts allow to change the font size relatively to its previous value 
558
559 \smaller
560 \bigger
561 \larger
562
563 \magnify
564
565 Text may be printed as subscript or superscript:
566
567 \sub 
568 \super
569
570 To obtain subscripts or superscripts in a normal text size, use
571 \normal-size-sub
572 \normal-size-super
573
574 All these settings (except the size) can be reverted to the default font:
575
576 \normal-text 
577
578
579 @node Text alignment
580 @subsubsection Text alignment
581
582 Alignment basics:
583 \left-align
584 \center-align
585 \right-align
586
587 Horizontal alignment:
588 \hcenter
589 \general-align
590 \halign 
591
592
593 Vertical alignment: 
594 \vcenter
595 \column 
596 \dir-column 
597
598 Building a "large" markup:
599
600 \line
601
602 \fill-line
603
604 \hcenter-in
605         
606 \pad-around
607 \pad-markup
608 \pad-to-box
609 \pad-x
610         
611 Alignment inside a "large" markup:
612
613 \justify-field 
614 \justify
615 \justify-string
616
617 \wordwrap-field
618 \wordwrap
619 \wordwrap-string
620
621 @node Graphic notation inside markup
622 @subsubsection Graphic notation inside markup
623 Graphics around text:
624 \box
625 \circle
626
627 \bracket
628 \hbracket
629
630 "Standalone" graphics:
631
632 \arrow-head
633 \draw-line
634 \draw-circle
635 \filled-box
636 \triangle
637 \strut
638
639 \with-color
640
641
642 Advanced graphics:
643 \stencil
644
645 \postscript
646 \epsfile
647
648 \with-dimensions
649
650 @node Music notation inside markup
651 @subsubsection Music notation inside markup
652
653 Notes can be printed in markup mode blah blah:
654
655 \note   
656 \note-by-number
657
658 Accidental symbols can be obtained easily:
659
660 \doubleflat
661 \sesquiflat
662 \flat
663 \semiflat
664 \natural
665 \semisharp
666 \sharp
667 \sesquisharp
668 \doublesharp
669
670 Some other notation objects blah blah
671
672 \beam
673 \finger
674 \dynamic
675 \tied-lyric
676 \markalphabet
677 \markletter
678 @c TODO: add \text here? -vv
679
680 Any musical symbol can be printed
681
682 \musicglyph
683 @c TODO: add \lookup here? -vv
684
685
686 The markup mode has support for fret diagrams:
687
688 \fret-diagram 
689 \fret-diagram-terse
690 \fret-diagram-verbose
691
692 An entire @code{\score} block can even be nested in a @code{\markup}
693 block.  In such a case, the @code{\score} must contain a @code{\layout} block.
694
695
696 \score
697
698
699 @lilypond[quote,verbatim,ragged-right]
700 \relative {
701   c4 d^\markup {
702     \score {
703       \relative { c4 d e f }
704       \layout { }
705     }
706   }
707   e f
708 }
709 @end lilypond
710
711 @seealso
712
713 Snippets: @lsrdir{Text,Text}
714
715 @node Multi-pages markup
716 @subsubsection Multi-pages markup
717
718 Whereas @code{\markup} is used to enter a non-breakable block of
719 text, @code{\markuplines} can be used at top-level to enter lines
720 of text that can spread over multiple pages:
721
722 @verbatim
723 \markuplines {
724   \justified-lines {
725     A very long text of justified lines.
726     ...
727   }
728   \justified-lines {
729     An other very long paragraph.
730     ...
731   }
732   ...
733 }
734 @end verbatim
735
736 @code{\markuplines} accepts a list of markup, that is either the
737 result of a markup list command, or a list of markups or of markup
738 lists.  The built-in markup list commands are described in
739 @ref{Text markup list commands}.
740
741 @seealso
742
743 This manual: @ref{Text markup list commands}, @ref{New
744 markup list command definition}.
745
746 Snippets: @lsrdir{Text,Text}
747
748 @predefined
749
750 @funindex \markuplines
751 @code{\markuplines}
752
753
754
755 @c TODO: move the following subsubsec into NR3 -vv
756 @c maybe.  -gp
757 @node Fonts
758 @subsection Fonts
759
760 @menu
761 * Entire document fonts::       
762 * Single entry fonts::          
763 @end menu
764
765 @node Entire document fonts
766 @subsubsection Entire document fonts
767
768 It is also possible to change the default font family for the
769 entire document.  This is done by calling the
770 @code{make-pango-font-tree} from within the @code{\paper} block.
771 The function takes names for the font families to use for roman,
772 sans serif and monospaced text.  For example,
773
774 @cindex font families, setting
775 @cindex Pango
776
777
778 @lilypond[verbatim]
779 \paper  {
780   myStaffSize = #20
781
782   #(define fonts
783     (make-pango-font-tree "Times New Roman"
784                           "Nimbus Sans"
785                           "Luxi Mono"
786                            (/ myStaffSize 20)))
787 }
788
789 {
790   c'^\markup { roman: foo \sans bla \typewriter bar }
791 }
792 @end lilypond
793
794 @c we don't do Helvetica / Courier, since GS incorrectly loads
795 @c Apple TTF fonts
796
797
798 @node Single entry fonts
799 @subsubsection Single entry fonts
800
801 @cindex font selection
802 @cindex font magnification
803 @funindex font-interface
804
805 By setting the object properties described below, you can select a
806 font from the preconfigured font families.  LilyPond has default
807 support for the feta music fonts.  Text fonts are selected through
808 Pango/FontConfig.  The serif font defaults to New Century
809 Schoolbook, the sans and typewriter to whatever the Pango
810 installation defaults to.
811
812
813 @itemize
814 @item @code{font-encoding}
815 is a symbol that sets layout of the glyphs.  This should only be
816 set to select different types of non-text fonts, e.g.
817
818 @code{fetaBraces} for piano staff braces, @code{fetaMusic} the
819 standard music font, including ancient glyphs, @code{fetaDynamic}
820 for dynamic signs and @code{fetaNumber} for the number font.
821
822 @item @code{font-family}
823 is a symbol indicating the general class of the typeface.
824 Supported are @code{roman} (Computer Modern), @code{sans}, and
825 @code{typewriter}.
826
827 @item @code{font-shape}
828 is a symbol indicating the shape of the font.  There are typically
829 several font shapes available for each font family.  Choices are
830 @code{italic}, @code{caps}, and @code{upright}.
831
832 @item @code{font-series}
833 is a symbol indicating the series of the font.  There are
834 typically several font series for each font family and shape.
835 Choices are @code{medium} and @code{bold}.
836
837 @end itemize
838
839 Fonts selected in the way sketched above come from a predefined
840 style sheet.  If you want to use a font from outside the style
841 sheet, then set the @code{font-name} property,
842
843 @lilypond[fragment,verbatim]
844 {
845   \override Staff.TimeSignature #'font-name = #"Charter"
846   \override Staff.TimeSignature #'font-size = #2
847   \time 3/4
848   c'1_\markup {
849     \override #'(font-name . "Vera Bold")
850       { This text is in Vera Bold }
851   }
852 }
853 @end lilypond
854
855 @noindent
856 Any font can be used, as long as it is available to
857 Pango/FontConfig.  To get a full list of all available fonts, run
858 the command
859
860 @example
861 lilypond -dshow-available-fonts blabla
862 @end example
863
864 (the last argument of the command can be anything, but has to be
865 present).
866
867
868 The size of the font may be set with the @code{font-size}
869 property.  The resulting size is taken relative to the
870 @code{text-font-size} as defined in the @code{\paper} block.
871
872 @cindex font size
873 @cindex font magnification
874
875
876
877
878 @seealso
879
880 Snippets: @lsrdir{Text,Text}
881
882