]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/notation/text.itely
resolve merge
[lilypond.git] / Documentation / notation / text.itely
diff --git a/Documentation/notation/text.itely b/Documentation/notation/text.itely
new file mode 100644 (file)
index 0000000..d9ee4c5
--- /dev/null
@@ -0,0 +1,1549 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  For details, see the Contributors'
+    Guide, node Updating translation committishes..
+@end ignore
+
+@c \version "2.14.0"
+
+@node Text
+@section Text
+
+@lilypondfile[quote]{text-headword.ly}
+
+This section explains how to include text (with various
+formatting) in music scores.
+
+@noindent
+Some text elements that are not dealt with here are discussed in other
+specific sections: @ref{Vocal music}, @ref{Titles and headers}.
+
+@menu
+* Writing text::
+* Formatting text::
+* Fonts::
+@end menu
+
+@node Writing text
+@subsection Writing text
+
+This section introduces different ways of adding text to a score.
+
+@cindex Text, other languages
+@warning{To write accented and special text (such as characters
+from other languages), simply insert the characters directly into
+the LilyPond file.  The file must be saved as UTF-8.  For more
+information, see @ref{Text encoding}.}
+
+@menu
+* Text scripts::
+* Text spanners::
+* Text marks::
+* Separate text::
+@end menu
+
+
+@node Text scripts
+@unnumberedsubsubsec Text scripts
+
+@cindex Text scripts
+@cindex text items, non-empty
+@cindex non-empty texts
+@cindex quoted text
+
+Simple @qq{quoted text} indications may be added to a score, as
+demonstrated in the following example.  Such indications may be
+manually placed above or below the staff, using the syntax described
+in @ref{Direction and placement}.
+
+@lilypond[quote,verbatim,relative=2]
+a8^"pizz." g f e a4-"scherz." f
+@end lilypond
+
+This syntax is actually a shorthand; more complex text formatting may be
+added to a note by explicitly using a @code{\markup} block, as described
+in @ref{Formatting text}.
+
+@lilypond[quote,verbatim,relative=2]
+a8^\markup { \italic pizz. } g f e
+a4_\markup { \tiny scherz. \bold molto } f
+@end lilypond
+
+By default, text indications do not influence the note spacing. However,
+their widths can be taken into account: in the following example, the
+first text string does not affect spacing, whereas the second one does.
+
+@lilypond[quote,verbatim,relative=2]
+a8^"pizz." g f e
+\textLengthOn
+a4_"scherzando" f
+@end lilypond
+
+In addition to text scripts, articulations can be attached to notes.
+For more information, see @ref{Articulations and ornamentations}.
+
+For more information about the relative ordering of text scripts and
+articulations, see @rlearning{Placement of objects}.
+
+@funindex \textLengthOn
+@funindex textLengthOn
+@funindex \textLengthOff
+@funindex textLengthOff
+
+@predefined
+@code{\textLengthOn},
+@code{\textLengthOff}.
+@endpredefined
+
+
+@seealso
+Learning Manual:
+@rlearning{Placement of objects}.
+
+Notation Reference:
+@ref{Formatting text},
+@ref{Direction and placement},
+@ref{Articulations and ornamentations}.
+
+Snippets:
+@rlsr{Text}.
+
+Internals Reference:
+@rinternals{TextScript}.
+
+
+@cindex text outside margin
+@cindex margin, text running over
+@cindex text, keeping inside margin
+@cindex lyrics, keeping inside margin
+
+
+@knownissues
+Checking to make sure that text scripts and lyrics are within the
+margins requires additonal calculations. In cases where slightly faster
+performance is desired, use
+
+@example
+\override Score.PaperColumn #'keep-inside-line = ##f
+@end example
+
+
+@node Text spanners
+@unnumberedsubsubsec Text spanners
+
+@cindex text spanners
+
+Some performance indications, e.g., @notation{rallentando} or
+@notation{accelerando}, are written as text and are extended over
+multiple notes with dotted lines.  Such objects, called
+@qq{spanners}, may be created from one note to another using the
+following syntax:
+
+@lilypond[verbatim,quote,relative=2]
+\override TextSpanner #'(bound-details left text) = "rit."
+b1\startTextSpan
+e,\stopTextSpan
+@end lilypond
+
+@cindex text spanners, formatting
+@cindex formatting text spanners
+
+@noindent
+The string to be printed is set through object properties.  By default
+it is printed in italic characters, but different formatting can be
+obtained using @code{\markup} blocks, as described in
+@ref{Formatting text}.
+
+@lilypond[quote,relative=2,verbatim]
+\override TextSpanner #'(bound-details left text) =
+  \markup { \upright "rit." }
+b1\startTextSpan c
+e,\stopTextSpan
+@end lilypond
+
+The line style, as well as the text string, can be defined as an
+object property.  This syntax is described in @ref{Line styles}.
+
+@funindex \textSpannerUp
+@funindex textSpannerUp
+@funindex \textSpannerDown
+@funindex textSpannerDown
+@funindex \textSpannerNeutral
+@funindex textSpannerNeutral
+
+
+@predefined
+@code{\textSpannerUp},
+@code{\textSpannerDown},
+@code{\textSpannerNeutral}.
+@endpredefined
+
+@knownissues
+LilyPond is only able to handle one text spanner per voice.
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{dynamics-text-spanner-postfix.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{dynamics-custom-text-spanner-postfix.ly}
+
+@seealso
+Notation Reference:
+@ref{Line styles},
+@ref{Dynamics},
+@ref{Formatting text}.
+
+Snippets:
+@rlsr{Text},
+@rlsr{Expressive marks}.
+
+Internals Reference:
+@rinternals{TextSpanner}.
+
+
+@node Text marks
+@unnumberedsubsubsec Text marks
+
+
+@cindex text marks
+@cindex marks, text
+@cindex text on bar line
+@cindex coda on bar line
+@cindex segno on bar line
+@cindex fermata on bar line
+@cindex bar lines, symbols on
+
+@funindex \mark
+@funindex mark
+@funindex \markup
+@funindex markup
+
+Various text elements may be added to a score using the syntax described
+in @ref{Rehearsal marks}:
+
+@c \mark needs to be placed on a separate line (it's not
+@c attached to an object like \markup is). -vv
+
+@lilypond[verbatim,quote,relative=2]
+c4
+\mark "Allegro"
+c c c
+@end lilypond
+
+This syntax makes it possible to put any text on a bar line;
+more complex text formatting may be added using a @code{\markup}
+block, as described in @ref{Formatting text}:
+
+@lilypond[quote,verbatim,relative=1]
+<c e>1
+\mark \markup { \italic { colla parte } }
+<d f>2 <e g>
+<c f aes>1
+@end lilypond
+
+@noindent
+This syntax also allows to print special signs, like coda, segno
+or fermata, by specifying the appropriate symbol name as explained in
+@ref{Music notation inside markup}:
+
+@lilypond[quote,verbatim,relative=2]
+<bes f>2 <aes d>
+\mark \markup { \musicglyph #"scripts.ufermata" }
+<e g>1
+@end lilypond
+
+@noindent
+Such objects are only typeset above the top staff of the score;
+depending on whether they are specified at the end or the middle of a
+bar, they can be placed above the bar line or between notes.  When
+specified at a line break, the mark will be printed at the beginning of
+the next line.
+
+@lilypond[quote,verbatim,relative=2]
+\mark "Allegro"
+c1 c
+\mark "assai" \break
+c  c
+@end lilypond
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{printing-marks-at-the-end-of-a-line.ly}
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{aligning-marks-with-various-notation-objects.ly}
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{printing-marks-on-every-staff.ly}
+
+
+@seealso
+Notation Reference:
+@ref{Rehearsal marks},
+@ref{Formatting text},
+@ref{Music notation inside markup},
+@ref{The Feta font}.
+
+Snippets:
+@rlsr{Text}.
+
+Internals Reference:
+@rinternals{MarkEvent},
+@rinternals{Mark_engraver},
+@rinternals{RehearsalMark}.
+
+
+@node Separate text
+@unnumberedsubsubsec Separate text
+
+@cindex separate text
+@cindex text, separate
+@cindex standalone text
+@cindex top-level text
+@cindex text, top-level
+@cindex text, standalone
+
+@funindex \markup
+@funindex markup
+
+A @code{\markup} block can exist by itself, outside of any
+@code{\score} block, as a @qq{top-level expression}.  This syntax
+is described in @ref{File structure}.
+
+@lilypond[verbatim,quote]
+\markup {
+  Tomorrow, and tomorrow, and tomorrow...
+}
+@end lilypond
+
+@noindent
+This allows printing text separately from the music, which is
+particularly useful when the input file contains several music pieces,
+as described in @ref{Multiple scores in a book}.
+
+@lilypond[quote,verbatim]
+\score {
+  c'1
+}
+\markup {
+  Tomorrow, and tomorrow, and tomorrow...
+}
+\score {
+  c'1
+}
+@end lilypond
+
+Separate text blocks can be spread over multiple pages,
+making it possible to print text documents or books entirely
+within LilyPond.  This feature, and the specific syntax it
+requires, are described in @ref{Multi-page markup}.
+
+
+@funindex \markup
+@funindex markup
+@funindex \markuplines
+@funindex markuplines
+
+@predefined
+@code{\markup},
+@code{\markuplines}.
+@endpredefined
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{stand-alone-two-column-markup.ly}
+
+
+@seealso
+Notation Reference:
+@ref{Formatting text},
+@ref{File structure},
+@ref{Multiple scores in a book},
+@ref{Multi-page markup}.
+
+Snippets:
+@rlsr{Text}.
+
+Internals Reference:
+@rinternals{TextScript}.
+
+
+@node Formatting text
+@subsection Formatting text
+
+This section presents basic and advanced text formatting,
+using the @code{\markup} mode specific syntax.
+
+@menu
+* Text markup introduction::
+* Selecting font and font size::
+* Text alignment::
+* Graphic notation inside markup::
+* Music notation inside markup::
+* Multi-page markup::
+@end menu
+
+@node Text markup introduction
+@unnumberedsubsubsec Text markup introduction
+
+@cindex markup
+@cindex text markup
+@cindex markup text
+@cindex typeset text
+
+@funindex \markup
+@funindex markup
+
+A @code{\markup} block is used to typeset text with an extensible
+syntax called @qq{markup mode}.
+
+@cindex markup expressions
+@cindex expressions, markup
+@cindex markup syntax
+@cindex syntax, markup
+
+The markup syntax is similar to LilyPond's usual syntax: a
+@code{\markup} expression is enclosed in curly braces
+@code{@{@dots{} @}}.  A single word is regarded as a minimal expression,
+and therefore does not need to be enclosed with braces.
+
+Unlike simple @qq{quoted text} indications, @code{\markup} blocks may
+contain nested expressions or markup commands, entered using the
+backslash @code{\} character.  Such commands only affect the first
+following expression.
+
+@lilypond[quote,verbatim,relative=2]
+a1-\markup intenso
+a2^\markup { poco \italic più forte  }
+c e1
+d2_\markup { \italic "string. assai" }
+e
+b1^\markup { \bold { molto \italic  agitato } }
+c
+@end lilypond
+
+@cindex special characters in markup mode
+@cindex markup mode, special characters
+@cindex reserved characters, printing
+@cindex printing reserved characters
+@cindex printing special characters
+@cindex quoted text in markup mode
+@cindex markup mode, quoted text
+
+A @code{\markup} block may also contain quoted text strings.  Such
+strings are treated as minimal text expressions, and therefore any
+markup command or special character (such as @code{\} and @code{#})
+will be printed verbatim without affecting the formatting of the text.
+Double quotation marks themselves may be printed by preceding them
+with backslashes.
+
+@lilypond[quote,verbatim,relative=2]
+a1^"\italic markup..."
+a_\markup { \italic "... prints \"italic\" letters!" }
+a a
+@end lilypond
+
+To be treated as a distinct expression, a list of words needs to be
+enclosed with double quotes or preceded by a command.  The way markup
+expressions are defined affects how these expressions will be stacked,
+centered and aligned; in the following example, the second
+@code{\markup} expression is treated the same as the first one:
+
+@lilypond[quote,verbatim,relative=2]
+c1^\markup { \center-column { a bbb c } }
+c1^\markup { \center-column { a { bbb c } } }
+c1^\markup { \center-column { a \line { bbb c } } }
+c1^\markup { \center-column { a "bbb c" } }
+@end lilypond
+
+Markups can be stored in variables.  Such variables may be
+directly attached to notes:
+
+@lilypond[quote,verbatim]
+allegro = \markup { \bold \large Allegro }
+
+{
+  d''8.^\allegro
+  d'16 d'4 r2
+}
+@end lilypond
+
+
+@noindent
+An exhaustive list of @code{\markup}-specific commands can be found in
+@ref{Text markup commands}.
+
+
+@seealso
+Notation Reference:
+@ref{Text markup commands}.
+
+Snippets:
+@rlsr{Text}.
+
+Installed Files:
+@file{scm/markup.scm}.
+
+
+@knownissues
+Syntax errors for markup mode can be confusing.
+
+
+@node Selecting font and font size
+@unnumberedsubsubsec Selecting font and font size
+
+@cindex font switching
+@cindex changing fonts
+@cindex switching fonts
+
+@funindex \italic
+@funindex italic
+@funindex \bold
+@funindex bold
+@funindex \underline
+@funindex underline
+
+Basic font switching is supported in markup mode:
+
+@lilypond[quote,verbatim,relative=2]
+d1^\markup {
+  \bold { Più mosso }
+  \italic { non troppo \underline Vivo }
+}
+r2 r4 r8
+d,_\markup { \italic quasi \smallCaps Tromba }
+f1 d2 r
+@end lilypond
+
+@cindex font size
+@cindex text size
+
+@funindex \fontsize
+@funindex fontsize
+@funindex \smaller
+@funindex smaller
+@funindex \larger
+@funindex larger
+@funindex \magnify
+@funindex magnify
+
+The size of the characters can also be altered in different ways:
+@itemize
+@item
+the font size can be set to predefined standard sizes,
+
+@item
+the font size can be set to an absolute value,
+
+@item
+the font size can also be changed relatively to its previous value.
+@end itemize
+
+@noindent
+The following example demonstrates these three methods:
+
+@lilypond[quote,verbatim,relative=1]
+f1_\markup {
+  \tiny espressivo
+  \large e
+  \normalsize intenso
+}
+a^\markup {
+  \fontsize #5 Sinfonia
+  \fontsize #2 da
+  \fontsize #3 camera
+}
+bes^\markup { (con
+  \larger grande
+  \smaller emozione
+  \magnify #0.6 { e sentimento } )
+}
+d c2 r8 c bes a g1
+@end lilypond
+
+@cindex subscript
+@cindex superscript
+
+@funindex \super
+@funindex super
+@funindex \sub
+@funindex sub
+
+Text may be printed as subscript or superscript.  By default these are
+printed in a smaller size, but a normal size can be used as well:
+
+@lilypond[quote,verbatim]
+\markup {
+  \column {
+    \line { 1 \super st movement }
+    \line { 1 \normal-size-super st movement
+      \sub { (part two) }  }
+  }
+}
+@end lilypond
+
+@cindex font families
+
+The markup mode provides an easy way to select alternate font
+families.  The default serif font, of roman type, is automatically
+selected unless specified otherwise; on the last line of the following
+example, there is no difference between the first and the second word.
+
+@lilypond[quote,verbatim]
+\markup {
+  \column {
+    \line { Act \number 1 }
+    \line { \sans { Scene I. } }
+    \line { \typewriter { Verona. An open place. } }
+    \line { Enter \roman Valentine and Proteus. }
+  }
+}
+@end lilypond
+
+@noindent
+Some of these font families, used for specific items such as numbers
+or dynamics, do not provide all characters, as mentioned in
+@ref{New dynamic marks} and @ref{Manual repeat marks}.
+
+@c \concat is actually documented in Align (it is not
+@c a font-switching command).  But we need it here. -vv
+
+When used inside a word, some font-switching or formatting commands
+may produce an unwanted blank space.  This can easily be solved by
+concatenating the text elements together:
+
+@lilypond[quote,verbatim]
+\markup {
+  \column {
+    \line {
+      \concat { 1 \super st }
+      movement
+    }
+    \line {
+      \concat { \dynamic p , }
+      \italic { con dolce espressione }
+    }
+  }
+}
+@end lilypond
+
+An exhaustive list of font switching commands and custom font usage
+commands can be found in @ref{Font}.
+
+Defining custom font sets is also possible, as explained in
+@ref{Fonts}.
+
+@funindex \teeny
+@funindex teeny
+@funindex \tiny
+@funindex tiny
+@funindex \small
+@funindex small
+@funindex \normalsize
+@funindex normalsize
+@funindex \large
+@funindex large
+@funindex \huge
+@funindex huge
+@funindex \smaller
+@funindex smaller
+@funindex \larger
+@funindex larger
+
+
+@predefined
+@code{\teeny},
+@code{\tiny},
+@code{\small},
+@code{\normalsize},
+@code{\large},
+@code{\huge},
+@code{\smaller},
+@code{\larger}.
+@endpredefined
+
+
+@seealso
+Notation Reference:
+@ref{Font},
+@ref{New dynamic marks},
+@ref{Manual repeat marks},
+@ref{Fonts}.
+
+Snippets:
+@rlsr{Text}.
+
+Internals Reference:
+@rinternals{TextScript}.
+
+Installed Files:
+@file{scm/define-markup-commands.scm}.
+
+@knownissues
+Using the font sizing commands @code{\teeny}, @code{\tiny},
+@code{\small}, @code{\normalsize}, @code{\large}, and
+@code{\huge} will lead to inconsistent line spacing compared to
+using @code{\fontsize}.
+
+
+@node Text alignment
+@unnumberedsubsubsec Text alignment
+
+@cindex text, aligning
+@cindex aligning text
+@cindex aligning markup text
+@cindex aligning markups
+@cindex markups, aligning
+@cindex markup text, aligning
+
+This subsection discusses how to place text in markup mode.  Markup
+objects can also be moved as a whole, using the syntax described in
+@rlearning{Moving objects}.
+
+@c Padding commands should be mentioned on this page, but
+@c most of these require \box to be more clearly illustrated. -vv
+
+@cindex text, horizontal alignment
+@cindex horizontal text alignment
+
+@funindex \left-align
+@funindex left-align
+@funindex \center-align
+@funindex center-align
+@funindex \right-align
+@funindex right-align
+
+Markup objects may be aligned in different ways.  By default, a text
+indication is aligned on its left edge: in the following example,
+there is no difference between the first and the second markup.
+
+@lilypond[quote,verbatim,relative=2]
+d1-\markup { poco }
+f
+d-\markup { \left-align poco }
+f
+d-\markup { \center-align { poco } }
+f
+d-\markup { \right-align poco }
+@end lilypond
+
+@funindex \halign
+@funindex halign
+
+Horizontal alignment may be fine-tuned using a numeric value:
+
+@lilypond[quote,verbatim,relative=2]
+a1-\markup { \halign #-1 poco }
+e'
+a,-\markup { \halign #0 poco }
+e'
+a,-\markup { \halign #0.5 poco }
+e'
+a,-\markup { \halign #2 poco }
+@end lilypond
+
+@noindent
+Some objects may have alignment procedures of their own, and therefore
+are not affected by these commands.  It is possible to move such
+markup objects as a whole, as shown for instance in
+@ref{Text marks}.
+
+@cindex text, vertical alignment
+@cindex vertical text alignment
+
+@funindex \raise
+@funindex raise
+@funindex \lower
+@funindex lower
+@funindex \null
+@funindex null
+
+@c QUERY Should the function of ``\null'' be clarified? rp
+
+Vertical alignment is a bit more complex.  As stated above, markup
+objects can be moved as a whole; however, it is also possible to move
+specific elements inside a markup block.  In this case, the element to
+be moved needs to be preceded with an @emph{anchor point}, that can be
+another markup element or an invisible object.  The following example
+demonstrates these two possibilities; the last markup in this example
+has no anchor point, and therefore is not moved.
+
+@lilypond[quote,verbatim,relative=1]
+d2^\markup {
+  Acte I
+  \raise #2 { Scène 1 }
+}
+a'
+g_\markup {
+  \null
+  \lower #4 \bold { Très modéré }
+}
+a
+d,^\markup {
+  \raise #4 \italic { Une forêt. }
+}
+a'4 a g2 a
+@end lilypond
+
+@funindex \general-align
+@funindex general-align
+@funindex \translate
+@funindex translate
+@funindex \translate-scaled
+@funindex translate-scaled
+
+Some commands can affect both the horizontal and vertical alignment of
+text objects in markup mode.  Any object affected by these commands
+must be preceded with an anchor point:
+
+@lilypond[quote,verbatim,relative=1]
+d2^\markup {
+  Acte I
+  \translate #'(-1 . 2) "Scène 1"
+}
+a'
+g_\markup {
+  \null
+  \general-align #Y #3.2 \bold "Très modéré"
+}
+a
+d,^\markup {
+  \null
+  \translate-scaled #'(-1 . 2) \teeny "Une forêt."
+}
+a'4 a g2 a
+@end lilypond
+
+@cindex multi-line markup
+@cindex markup, multi-line
+@cindex multi-line text
+@cindex text, multi-line
+@cindex text in columns
+@cindex columns, text
+
+@funindex \column
+@funindex column
+@funindex \center-column
+@funindex center-column
+
+A markup object may include several lines of text.  In the following
+example, each element or expression is placed on its own line, either
+left-aligned or centered:
+
+@lilypond[quote,verbatim]
+\markup {
+  \column {
+    a
+    "b c"
+    \line { d e f }
+  }
+  \hspace #10
+  \center-column {
+    a
+    "b c"
+    \line { d e f }
+  }
+}
+@end lilypond
+
+@cindex centering text on the page
+@cindex text, centering on the page
+@cindex markup, centering on the page
+
+@funindex \fill-line
+@funindex fill-line
+
+Similarly, a list of elements or expressions may be spread to fill the
+entire horizontal line width (if there is only one element, it will be
+centered on the page).  These expressions can, in turn, include
+multi-line text or any other markup expression:
+
+@lilypond[quote,verbatim]
+\markup {
+  \fill-line {
+    \line { William S. Gilbert }
+    \center-column {
+      \huge \smallCaps "The Mikado"
+      or
+      \smallCaps "The Town of Titipu"
+    }
+    \line { Sir Arthur Sullivan }
+  }
+}
+\markup {
+  \fill-line { 1885 }
+}
+@end lilypond
+
+@cindex wordwrapped text
+@cindex justified text
+@cindex text, justified
+@cindex text, wordwrapped
+@cindex markup text, wordwrapped
+@cindex markup text, justified
+
+@funindex \wordwrap
+@funindex wordwrap
+@funindex \justify
+@funindex justify
+
+Long text indications can also be automatically wrapped accordingly to
+the given line width.  These will be either left-aligned or justified,
+as shown in the following example.
+
+@lilypond[quote,verbatim]
+\markup {
+  \column {
+    \line  \smallCaps { La vida breve }
+    \line \bold { Acto I }
+    \wordwrap \italic {
+      (La escena representa el corral de una casa de
+      gitanos en el Albaicín de Granada.  Al fondo una
+      puerta por la que se ve el negro interior de
+      una Fragua, iluminado por los rojos resplandores
+      del fuego.)
+    }
+    \hspace #0
+
+    \line \bold { Acto II }
+    \override #'(line-width . 50)
+    \justify \italic {
+      (Calle de Granada.  Fachada de la casa de Carmela
+      y su hermano Manuel con grandes ventanas abiertas
+      a través de las que se ve el patio
+      donde se celebra una alegre fiesta)
+    }
+  }
+}
+@end lilypond
+
+@cindex text alignment commands
+@cindex markup text alignment commands
+@cindex alignment, text, commands
+
+An exhaustive list of text alignment commands can be found in
+@ref{Align}.
+
+
+@seealso
+Learning Manual:
+@rlearning{Moving objects}.
+
+Notation Reference:
+@ref{Align},
+@ref{Text marks}.
+
+Snippets:
+@rlsr{Text}.
+
+Internals Reference:
+@rinternals{TextScript}.
+
+Installed Files:
+@file{scm/define-markup-commands.scm}.
+
+
+@node Graphic notation inside markup
+@unnumberedsubsubsec Graphic notation inside markup
+
+@cindex graphics, embedding
+@cindex drawing graphic objects
+@cindex graphic objects, drawing
+@cindex embedding graphic objects
+@cindex graphic objects, embedding
+
+Various graphic objects may be added to a score, using markup
+commands.
+
+@cindex decorating text
+@cindex framing text
+@cindex text, framing
+@cindex text, decorating
+@cindex markup text, decorating
+@cindex markup text, framing
+
+@funindex \box
+@funindex box
+@funindex \circle
+@funindex circle
+@funindex \rounded-box
+@funindex rounded-box
+@funindex \bracket
+@funindex bracket
+@funindex \hbracket
+@funindex hbracket
+
+Some markup commands allow decoration of text elements with graphics,
+as demonstrated in the following example.
+
+@lilypond[quote,verbatim]
+\markup \fill-line {
+  \center-column {
+    \circle Jack
+    \box "in the box"
+    \null
+    \line {
+      Erik Satie
+      \hspace #3
+      \bracket "1866 - 1925"
+    }
+    \null
+    \rounded-box \bold Prelude
+  }
+}
+@end lilypond
+
+@cindex padding around text
+@cindex text padding
+@cindex markup text padding
+
+@funindex \pad-markup
+@funindex pad-markup
+@funindex \pad-x
+@funindex pad-x
+@funindex \pad-to-box
+@funindex pad-to-box
+@funindex \pad-around
+@funindex pad-around
+
+Some commands may require an increase in the padding around the text;
+this is achieved with some markup commands exhaustively described in
+@ref{Align}.
+
+@lilypond[quote,verbatim]
+\markup \fill-line {
+  \center-column {
+    \box "Charles Ives (1874 - 1954)"
+    \null
+    \box \pad-markup #2 "THE UNANSWERED QUESTION"
+    \box \pad-x #8 "A Cosmic Landscape"
+    \null
+  }
+}
+\markup \column {
+  \line {
+    \hspace #10
+    \box \pad-to-box #'(-5 . 20) #'(0 . 5)
+      \bold "Largo to Presto"
+  }
+  \pad-around #3
+      "String quartet keeps very even time,
+Flute quartet keeps very uneven time."
+}
+@end lilypond
+
+@cindex graphic notation
+@cindex symbols, non-musical
+@cindex non-musical symbols
+@cindex notation, graphic
+
+@funindex \combine
+@funindex combine
+@funindex \draw-circle
+@funindex draw-circle
+@funindex \filled-box
+@funindex filled-box
+@funindex \triangle
+@funindex triangle
+@funindex \draw-line
+@funindex draw-line
+@funindex \arrow-head
+@funindex arrow-head
+
+Other graphic elements or symbols may be printed without requiring any
+text.  As with any markup expression, such objects can be combined.
+
+@lilypond[quote,verbatim]
+\markup {
+  \combine
+    \draw-circle #4 #0.4 ##f
+    \filled-box #'(-4 . 4) #'(-0.5 . 0.5) #1
+  \hspace #5
+
+  \center-column {
+    \triangle ##t
+    \combine
+      \draw-line #'(0 . 4)
+      \arrow-head #Y #DOWN ##f
+  }
+}
+@end lilypond
+
+@cindex embedded graphics
+@cindex images, embedding
+@cindex graphics, embedding
+@cindex postscript
+
+@funindex \epsfile
+@funindex epsfile
+@funindex \postscript
+@funindex postscript
+
+Advanced graphic features include the ability to include external
+image files converted to the Encapsulated PostScript format
+(@emph{eps}), or to directly embed graphics into the input file, using
+native PostScript code.  In such a case, it may be useful to
+explicitly specify the size of the drawing, as demonstrated below:
+
+@lilypond[quote,verbatim,relative=1]
+c1^\markup {
+  \combine
+    \epsfile #X #10 #"./context-example.eps"
+    \with-dimensions #'(0 . 6) #'(0 . 10)
+    \postscript #"
+      -2 3 translate
+      2.7 2 scale
+      newpath
+      2 -1 moveto
+      4 -2 4 1 1 arct
+      4 2 3 3 1 arct
+      0 4 0 3 1 arct
+      0 0 1 -1 1 arct
+      closepath
+      stroke"
+  }
+c
+@end lilypond
+
+An exhaustive list of graphics-specific commands can be found in
+@ref{Graphic}.
+
+
+@seealso
+Notation Reference:
+@ref{Graphic},
+@ref{Editorial annotations},
+@ref{Align}.
+
+Snippets:
+@rlsr{Text}.
+
+Internals Reference:
+@rinternals{TextScript}.
+
+Installed Files:
+@file{scm/define-markup-commands.scm},
+@file{scm/stencil.scm}.
+
+
+@node Music notation inside markup
+@unnumberedsubsubsec Music notation inside markup
+
+@cindex notation inside markup
+@cindex music inside markup
+@cindex markup, music notation inside
+
+Various musical notation elements may be added to a score, inside a
+markup object.
+
+Notes and accidentals can be entered using markup commands:
+
+@lilypond[quote,verbatim,relative=2]
+a2 a^\markup {
+  \note #"4" #1
+  =
+  \note-by-number #1 #1 #1.5
+}
+b1_\markup {
+  \natural \semiflat \flat
+  \sesquiflat \doubleflat
+}
+\glissando
+a1_\markup {
+  \natural \semisharp \sharp
+  \sesquisharp \doublesharp
+}
+\glissando b
+@end lilypond
+
+Other notation objects may also be printed
+in markup mode:
+
+@lilypond[quote,verbatim,relative=1]
+g1 bes
+ees-\markup {
+  \finger 4
+  \tied-lyric #"~"
+  \finger 1
+}
+fis_\markup { \dynamic rf }
+bes^\markup {
+  \beam #8 #0.1 #0.5
+}
+cis
+d-\markup {
+  \markalphabet #8
+  \markletter #8
+}
+@end lilypond
+
+More generally, any available musical symbol may be included
+separately in a markup object, as demonstrated below; an exhaustive
+list of these symbols and their names can be found in
+@ref{The Feta font}.
+
+@lilypond[quote,verbatim,relative=2]
+c2
+c'^\markup { \musicglyph #"eight" }
+c,4
+c,8._\markup { \musicglyph #"clefs.G_change" }
+c16
+c2^\markup { \musicglyph #"timesig.neomensural94" }
+@end lilypond
+
+Another way of printing non-text glyphs is described in
+@ref{Fonts explained}.  This is useful for printing braces of various
+sizes.
+
+The markup mode also supports diagrams for specific
+instruments:
+
+@lilypond[quote,verbatim,relative=2]
+c1^\markup {
+  \fret-diagram-terse #"x;x;o;2;3;2;"
+}
+c^\markup {
+  \harp-pedal #"^-v|--ov^"
+}
+c
+c^\markup {
+  \combine
+    \musicglyph #"accordion.discant"
+    \combine
+      \raise #0.5 \musicglyph #"accordion.dot"
+      \raise #1.5 \musicglyph #"accordion.dot"
+}
+@end lilypond
+
+@c The accordion diagram is actually taken from a snippet.
+
+@noindent
+Such diagrams are documented in @ref{Instrument Specific Markup}.
+
+@cindex score inside markup
+@cindex markup, score inside
+
+A whole score can even be nested inside a markup object.  In such a
+case, the nested @code{\score} block must contain a @code{\layout}
+block, as demonstrated here:
+
+@lilypond[quote,verbatim,relative=1]
+c4 d^\markup {
+  \score {
+    \relative c' { c4 d e f }
+    \layout { }
+  }
+}
+e f |
+c d e f
+@end lilypond
+
+An exhaustive list of music notation related commands can be found in
+@ref{Music}.
+
+
+@seealso
+Notation Reference:
+@ref{Music},
+@ref{The Feta font},
+@ref{Fonts explained}.
+
+Snippets:
+@rlsr{Text}.
+
+Internals Reference:
+@rinternals{TextScript}.
+
+Installed Files:
+@file{scm/define-markup-commands.scm},
+@file{scm/fret-diagrams.scm},
+@file{scm/harp-pedals.scm}.
+
+
+@node Multi-page markup
+@unnumberedsubsubsec Multi-page markup
+
+@cindex multi-page markup
+@cindex markup, multi-page
+@cindex markup text, multi-page
+@cindex text spread over multiple pages
+
+@funindex \markuplines
+@funindex markuplines
+@funindex \justified-lines
+@funindex justified-lines
+@funindex \wordwrap-lines
+@funindex wordwrap-lines
+
+Although standard markup objects are not breakable, a specific syntax
+makes it possible to enter lines of text that can spread over multiple
+pages:
+
+@lilypond[quote,verbatim]
+\markuplines {
+  \justified-lines {
+    A very long text of justified lines.
+    ...
+  }
+  \wordwrap-lines {
+    Another very long paragraph.
+    ...
+  }
+  ...
+}
+@end lilypond
+
+This syntax accepts a list of markups, that can be
+@itemize
+@item
+the result of a markup list command,
+@item
+a list of markups,
+@item
+a list of markup lists.
+@end itemize
+
+An exhaustive list of markup list commands can be found in
+@ref{Text markup list commands}.
+
+
+@seealso
+Notation Reference:
+@ref{Text markup list commands},
+
+Snippets:
+@rlsr{Text}.
+
+Extending:
+@rextend{New markup list command definition}.
+
+Internals Reference:
+@rinternals{TextScript}.
+
+Installed Files:
+@file{scm/define-markup-commands.scm}.
+
+
+@funindex \markuplines
+@funindex markuplines
+
+@predefined
+@code{\markuplines}.
+@endpredefined
+
+
+@node Fonts
+@subsection Fonts
+
+This section presents the way fonts are handled, and how they may be
+changed in scores.
+
+@menu
+* Fonts explained::
+* Single entry fonts::
+* Entire document fonts::
+@end menu
+
+@node Fonts explained
+@unnumberedsubsubsec Fonts explained
+
+@cindex Pango
+@cindex fonts, explained
+@cindex braces, various sizes
+@cindex fonts, non-text in markup
+@cindex non-text fonts in markup
+
+@funindex font-interface
+
+Fonts are handled through several libraries.  FontConfig is used to
+detect available fonts on the system; the selected fonts are rendered
+using Pango.
+
+Music notation fonts can be described as a set of specific glyphs,
+ordered in several families.  The following syntax allows various
+LilyPond @code{feta} non-text fonts to be used directly in markup
+mode:
+
+@lilypond[quote,verbatim,relative=2]
+a1^\markup {
+  \vcenter {
+    \override #'(font-encoding . fetaBraces)
+    \lookup #"brace120"
+    \override #'(font-encoding . fetaText)
+    \column { 1 3 sf }
+    \override #'(font-encoding . fetaMusic)
+    \lookup #"noteheads.s0petrucci"
+  }
+}
+@end lilypond
+
+@noindent
+However, all these glyphs except the braces of various sizes contained
+in @code{fetaBraces} are available using the simpler syntax described
+in @ref{Music notation inside markup}.
+
+When using the glyphs contained in @code{fetaBraces}, the size of the
+brace is specified by the numerical part of the glyph name, in
+arbitrary units.  Any integer from @code{0} to @code{575} inclusive
+may be specified, @code{0} giving the smallest brace.  The optimum
+value must be determined by trial and error.  These glyphs are all
+left braces; right braces may be obtained by rotation, see
+@ref{Rotating objects}.
+
+Three families of text fonts are made available: the @emph{roman}
+(serif) font, that defaults to New Century Schoolbook, the
+@emph{sans} font and the monospaced @emph{typewriter} font -- these
+last two families are determined by the Pango installation.
+
+Each family may include different shapes and series.  The following
+example demonstrates the ability to select alternate families, shapes,
+series and sizes.  The value supplied to @code{font-size} is the
+required change from the default size.
+
+@lilypond[quote,verbatim,relative=2]
+\override Score.RehearsalMark #'font-family = #'typewriter
+\mark \markup "Ouverture"
+\override Voice.TextScript #'font-shape = #'italic
+\override Voice.TextScript #'font-series = #'bold
+d2.^\markup "Allegro"
+\override Voice.TextScript #'font-size = #-3
+c4^smaller
+@end lilypond
+
+@noindent
+A similar syntax may be used in markup mode; however in this case it
+is preferable to use the simpler syntax explained in
+@ref{Selecting font and font size}:
+
+@lilypond[quote,verbatim]
+\markup {
+  \column {
+    \line {
+      \override #'(font-shape . italic)
+      \override #'(font-size . 4)
+      Idomeneo,
+    }
+    \line {
+      \override #'(font-family . typewriter)
+      {
+        \override #'(font-series . bold)
+        re
+        di
+      }
+      \override #'(font-family . sans)
+      Creta
+    }
+  }
+}
+@end lilypond
+
+Although it is easy to switch between preconfigured fonts, it is also
+possible to use other fonts, as explained in the following sections:
+@ref{Single entry fonts} and @ref{Entire document fonts}.
+
+
+@seealso
+Notation Reference:
+@ref{The Feta font},
+@ref{Music notation inside markup},
+@ref{Rotating objects},
+@ref{Selecting font and font size},
+@ref{Font}.
+
+
+@node Single entry fonts
+@unnumberedsubsubsec Single entry fonts
+
+Any font that is installed on the operating system and recognized by
+FontConfig may be used in a score, using the following syntax:
+
+@lilypond[quote,verbatim,relative=2]
+\override Staff.TimeSignature #'font-name = #"Bitstream Charter"
+\override Staff.TimeSignature #'font-size = #2
+\time 3/4
+
+a1_\markup {
+  \override #'(font-name . "Vera Bold")
+    { Vera Bold }
+}
+@end lilypond
+
+@cindex fonts, finding available
+@cindex finding available fonts
+@cindex listing available fonts
+@cindex available fonts, listing
+
+@funindex show-available-fonts
+
+The following command displays a list of all available fonts on the
+operating system:
+
+@example
+lilypond -dshow-available-fonts x
+@end example
+
+
+@seealso
+Notation Reference:
+@ref{Fonts explained},
+@ref{Entire document fonts}.
+
+Snippets:
+@rlsr{Text}.
+
+@c A source file gets never installed...
+@c Installed Files:
+@c @file{lily/font-config-scheme.cc}.
+
+
+@node Entire document fonts
+@unnumberedsubsubsec Entire document fonts
+
+It is possible to change the fonts to be used as the default fonts in
+the @emph{roman}, @emph{sans} and @emph{typewriter} font families by
+specifying them, in that order, as shown in the example below.  For an
+explanation of fonts, see @ref{Fonts explained}.
+
+@cindex font families, setting
+@cindex fonts, changing for entire document
+
+@funindex make-pango-font-tree
+
+@lilypond[verbatim,quote]
+\paper  {
+  myStaffSize = #20
+  #(define fonts
+    (make-pango-font-tree "Times New Roman"
+                          "Nimbus Sans"
+                          "Luxi Mono"
+                           (/ myStaffSize 20)))
+}
+
+\relative c'{
+  c1-\markup {
+    roman,
+    \sans sans,
+    \typewriter typewriter. }
+}
+@end lilypond
+
+@c we don't do Helvetica / Courier, since GS incorrectly loads
+@c Apple TTF fonts
+
+
+@seealso
+Notation Reference:
+@ref{Fonts explained},
+@ref{Single entry fonts},
+@ref{Selecting font and font size},
+@ref{Font}.
+