]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/text.itely
Cadenza changes to rhythms.itely
[lilypond.git] / Documentation / user / text.itely
index 6730c5f547ff9142aeec2874a106619e95de6b98..db7f770ebbea91b10cfd63e3dd0f702388aba102 100644 (file)
@@ -6,7 +6,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.11.38"
+@c \version "2.11.51"
 
 @node Text
 @section Text
@@ -59,7 +59,7 @@ Simple @q{quoted text} indications may be added
 to a score, as demonstrated in the following example.
 Such indications can be manually placed
 above or below the staff, using the
-simple syntax described in @ref{Direction and
+syntax described in @ref{Direction and
 placement}.
 
 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
@@ -81,7 +81,9 @@ in the following example, the first text string does not affect
 spacing, whereas the second one does.
 
 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-d8^"pizz." e f g \textLengthOn a4_"scherzando" f
+d8^"pizz." e f g
+\textLengthOn
+a4_"scherzando" f
 @end lilypond
 
 @predefined
@@ -119,9 +121,9 @@ default; to enable it, use
 
 @cindex Text spanners
 
-Some performance indications, e.g., @i{rallentando} or
-@i{accelerando}, are written as text and are extended over many
-measures with dotted lines.
+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 @q{spanners}, may be created
 from one note to another using the following syntax:
 
@@ -178,18 +180,24 @@ Internals Reference: @rinternals{TextSpanner}.
 Various text elements can 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,ragged-right,fragment,relative=2]
-c4\mark "Allegro" c c c
+c4
+\mark "Allegro"
+c c c
 @end lilypond
 
-This syntax makes possible to put any text on a bar line;
+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}.  This can be used to print
 signs like coda, segno or fermata, by specifying the appropriate
 symbol name:
 
 @lilypond[fragment,quote,ragged-right,verbatim,relative=2]
-c1 \mark \markup { \musicglyph #"scripts.ufermata" }
+c1
+\mark \markup { \musicglyph #"scripts.ufermata" }
 c1
 @end lilypond
 
@@ -201,9 +209,10 @@ beginning of a score or at a line break, marks will be printed at
 the beginning of the line (the next line, in case of a line break).
 
 @lilypond[fragment,quote,ragged-right,verbatim,relative=2]
-\mark "Allegro" c1
-c\mark "assai" \break
-c c
+\mark "Allegro"
+c1 c
+\mark "assai" \break
+c  c
 @end lilypond
 
 
@@ -255,7 +264,7 @@ expression}.  This syntax is described in @ref{File structure}.
 @end lilypond
 
 @noindent
-This allows to print text separately
+This allows printing text separately
 from the music, which is particularly 
 useful when the input file contains
 several music pieces, as described in
@@ -275,8 +284,8 @@ several music pieces, as described in
 
 Using a specific syntax, text blocks can be spread
 over multiple pages, making possible to print
-text documents or books -- and therefore to
-use LilyPond as a word processor.  This syntax is described in
+text documents or books (and therefore to
+use LilyPond as a word processor).  This syntax is described in
 @ref{Multi-page markup}.
 
 @predefined
@@ -312,7 +321,7 @@ using the @code{\markup} mode specific syntax.
 
 @menu
 * Text markup introduction::    
-* Common markup commands::      
+* Selecting font and font size::      
 * Text alignment::              
 * Graphic notation inside markup::  
 * Music notation inside markup::  
@@ -336,7 +345,8 @@ specific syntax called @qq{markup mode}.
 
 The markup syntax is similar to LilyPond's usual syntax: a
 @code{\markup} expression is enclosed in curly braces @code{@{
-@dots{} @}}.
+@dots{} @}}.  A single word is regarded as a minimal expression,
+and therefore does not need to be enclosed with braces.
 
 Unlike simple @q{quoted text} indications, @code{\markup} blocks
 may contain nested expressions or specific commands,
@@ -344,7 +354,7 @@ entered using the backslash @code{\} character.
 Such commands only affect the first following expression.
 
 @lilypond[quote,verbatim,fragment,relative=1]
-e1-\markup "intenso"
+e1-\markup intenso
 a2^\markup { poco \italic più forte  }
 c e1
 d2_\markup { \italic "string. assai" }
@@ -359,17 +369,17 @@ c
 @cindex printing special characters
 @cindex quoted text in markup mode
 
-A @code{\markup} block may also contain quoted text, which
-can be useful to print special characters (such as @code{\} and @code{#}).
-Quoted text even allows to print double quotation marks, by preceding
-them with backslashes:
+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.  This syntax even allows to print
+double quotation marks, by preceding them with backslashes
 
 @lilypond[quote,verbatim,fragment,relative=1]
-\clef bass
-a^\markup "##\ LEPORELLO \##"
-a_\markup "Bravi! \"Cosa rara\"!"
-r a8 d
-cis a r4 r2
+d1^"\italic markup..."
+d_\markup \italic "... prints \"italic\" letters!"
+d d
 @end lilypond
 
 The way markup expressions are defined affects 
@@ -383,9 +393,9 @@ c1^\markup { \line { a b c } }
 @end lilypond
 
 Lists of words that are not enclosed with double quotes
-or preceded by a command are not kept distinct.  In
-the following example, the first two @code{\markup} expressions
-are equivalent:
+or preceded by a command are not treated as a distinct
+expression.  In the following example, the first two
+@code{\markup} expressions are equivalent:
 
 @lilypond[quote,verbatim,fragment,relative=1]
 c1^\markup { \center-align { a bbb c } }
@@ -426,27 +436,25 @@ Init files: @file{scm/@/new@/-markup@/.scm}.
 
 @knownissues
 
-Syntax errors for markup mode are confusing.
+Syntax errors for markup mode can be confusing.
 
 
-@node Common markup commands
-@subsubsection Common markup commands
-
-Markup text may be formatted using simple commands.
+@node Selecting font and font size
+@subsubsection Selecting font and font size
 
 @cindex font switching
 @funindex \italic
 @funindex \bold
 @funindex \underline
 
-Basic font switching is supported:
+Basic font switching is supported in markup mode:
 
 @lilypond[quote,verbatim,relative=2]
 {
   d1^\markup { 
-      \bold { Più mosso } 
-      \italic { non troppo \underline Vivo } 
-    }
+    \bold { Più mosso } 
+    \italic { non troppo \underline Vivo } 
+  }
   r2 r4 r8
   d,_\markup { \italic quasi \smallCaps Tromba }
   f1 d2 r
@@ -456,10 +464,9 @@ Basic font switching is supported:
 @cindex font size
 @cindex text size
 @funindex \fontsize
-@funindex \small
-@funindex \large
 @funindex \smaller
 @funindex \larger
+@funindex \bigger
 @funindex \magnify
 
 The size of the characters can also be altered in different ways:
@@ -471,7 +478,7 @@ the font size can be defined to an absolute value,
 predefined commands allow to easily select standard sizes,
 
 @item
-other commands allow to change the size relatively to its previous value.
+the font size can also be changed relatively to its previous value.
 @end itemize
 
 @noindent
@@ -481,15 +488,15 @@ The following example demonstrates these three methods:
 {
   f1^\markup { \fontsize #5 Sinfonia } 
   a,_\markup { 
-         \tiny espressivo
-         \large e
-         \normalsize intenso 
-         }
+    \tiny espressivo
+    \large e
+    \normalsize intenso 
+  }
   bes^\markup { (con 
-         \larger grande 
-         \smaller emozione 
-         \magnify #0.6 { e sentimento } )
-         }
+    \larger grande 
+    \smaller emozione 
+    \magnify #0.6 { e sentimento } )
+  }
   d c2 r8 c bes a g1
 }
 @end lilypond
@@ -512,10 +519,13 @@ these are printed in a smaller size, but a normal size can be used as well:
 }
 @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 word and the following words.
+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 {
@@ -523,7 +533,7 @@ there is no difference between the first word and the following words.
     \line { Act \number 1 }
     \line { \sans { Scene I. } }
     \line { \typewriter { Verona. An open place. } }
-    \line { \roman Enter Valentine and Proteus. }
+    \line { Enter \roman Valentine and Proteus. }
   }
 }
 @end lilypond
@@ -534,159 +544,395 @@ 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, font-size
+and font-families related commands can be found in @ref{Font}.
 
 Defining custom font sets is also possible, as explained in
 @ref{Fonts}.
 
-An exhaustive list of font-switching, font-size and font-families related
-commands can be found in @ref{Font}.
-
-@c TODO: add @seealso
+@predefined
 
-@knownissues
-When used inside a word, some of these commands may produce an unwanted
-blank space.  This can easily be solved by concatenating the text
-elements together, using a specific command
-described in @ref{Text alignment}.
+@funindex \teeny
+@funindex \tiny
+@funindex \small
+@funindex \normalsize
+@funindex \large
+@funindex \huge
+@code{\teeny},
+@code{\tiny},
+@code{\small},
+@code{\normalsize},
+@code{\large},
+@code{\huge}.
 
+@c TODO: add @seealso
 
 
 @node Text alignment
 @subsubsection Text alignment
 
-@warning{This subsection discusses how to place text in markup mode,
-inside a @code{\markup} block.  However, markup objects can also
-be moved as a whole using the syntax described in
-@rlearning{Moving objects}.}
+@cindex text, aligning
+@cindex aligning text
+
+This subsection discusses how to place text in markup mode,
+inside a @code{\markup} block.  Markup objects can also
+be moved as a whole, using the syntax described in
+@rlearning{Moving objects}.
+
+@c The 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 \hcenter
+@funindex \right-align
 
-Markup objects can be aligned in different ways.  By default,
+Markup objects may be aligned in different ways.  By default,
 a text indication is aligned on its left edge: in the following
-example, there's no difference between the first and the second
-markup.
+example, there is no difference
+between the first and the second markup.
 
 @lilypond[quote,verbatim,fragment,relative=1]
 a1-\markup { poco }
 e'
 a,-\markup { \left-align poco }
 e'
-a,-\markup { \center-align { poco } }
+a,-\markup { \hcenter { poco } }
 e'
 a,-\markup { \right-align poco }
 @end lilypond
 
-@c FIXME: \center-align actually doesn't belong here
-@c \center-align vs \column
-@c \center-align vs \hcenter
+@funindex \halign
 
-Horizontal alignment:
-\hcenter
-\general-align
-\halign 
+The horizontal alignment may be fine-tuned
+using a numeric value:
 
+@lilypond[quote,verbatim,fragment,relative=1]
+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
 
-\null
-\hspace
+@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 \lower
+
+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.
 
-\lower
-\raise 
-\translate 
-\translate-scaled
-\rotate
-\transparent
-\whiteout
+@lilypond[quote,verbatim,fragment,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
 
-Vertical alignment: 
-\vcenter
-\column 
-\dir-column 
+@funindex \general-align
+@funindex \translate
+@funindex \translate-scaled
 
-Building a "large" markup:
+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:
 
-\line
+@lilypond[quote,verbatim,fragment,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
 
-\fill-line
+@funindex \column
+@funindex \center-align
 
-\hcenter-in
-       
-\pad-around
-\pad-markup
-\pad-to-box
-\pad-x
-       
-Alignment inside a "large" markup:
+@cindex multi-line markup
+@cindex multi-line text
+@cindex columns, text
 
-\justify-field 
-\justify
-\justify-string
+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:
 
-\wordwrap-field
-\wordwrap
-\wordwrap-string
+@lilypond[quote,verbatim]
+\markup {
+  \column {
+    a
+    "b c"
+    \line { d e f }
+  }
+  \hspace #10
+  \center-align {
+    a
+    "b c"
+    \line { d e f }
+  }
+}
+@end lilypond
 
+@funindex \fill-line
 
-@ignore
-TODO: here are some commands that could be described here.
-I'm putting them in bulk, prior to working on this section. -vv
+@cindex centering text on the page
 
-\simple
+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:
 
-\char
-\fraction
+@lilypond[quote,verbatim]
+\markup {
+  \fill-line {
+    \line { William S. Gilbert }
+    \center-align {
+      \huge \smallCaps "The Mikado"
+      or
+      \smallCaps "The Town of Titipu"
+    }
+    \line { Sir Arthur Sullivan }
+  }
+}
+\markup {
+  \fill-line { 1885 } 
+}
+@end lilypond
 
-\combine
-\concat
-\put-adjacent
+@funindex \wordwrap
+@funindex \justify
 
+@cindex wordwrapped text
+@cindex justified text
 
-\page-ref (see also "Table of contents")
-\fromproperty
-\verbatim-file
-\with-url
+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.
 
-\on-the-fly 
-\override
+@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 vé 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
 
+An exhaustive list of text alignment commands
+can be found in @ref{Align}.
 
+@c TODO: add @seealso
 
-@end ignore
+@node Graphic notation inside markup
+@subsubsection Graphic notation inside markup
 
+@cindex graphics, embedding
+@cindex drawing graphic objects
 
-Some objects have alignment procedures of their own, which cancel
-out any effects of alignments applied to their markup arguments as
-a whole.  For example, the @rinternals{RehearsalMark} is
-horizontally centered, so using @code{\mark \markup @{ \left-align
-.. @}} has no effect.
+Various graphic objects may be added to a score,
+using specific markup commands.
 
+@funindex \box
+@funindex \circle
+@funindex \rounded-box
+@funindex \bracket
+@funindex \hbracket
 
+@cindex decorating text
+@cindex framing text
 
-@node Graphic notation inside markup
-@subsubsection Graphic notation inside markup
-Graphics around text:
-\box
-\circle
+Some markup commands allow to decorate text elements
+with graphics, as demonstrated in the following example.
 
-\bracket
-\hbracket
+@lilypond[quote,verbatim]
+\markup \fill-line {
+  \center-align {
+    \circle Jack
+    \box "in the box"
+    \null
+    \line {
+      Erik Satie
+      \hspace #3
+      \bracket "1866 - 1925"
+    }
+    \null
+    \rounded-box \bold Prelude
+  }
+}
+@end lilypond
+
+@funindex \pad-markup
+@funindex \pad-x
+@funindex \pad-to-box
+@funindex \pad-around
+
+@cindex padding around text
+@cindex text padding
+
+Some commands may require to increase the padding around
+the text: this is achieved with some specific commands
+exhaustively described in @ref{Align}.
+
+@lilypond[quote,verbatim]
+\markup \fill-line {
+  \center-align {
+    \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
 
-"Standalone" graphics:
+@funindex \combine
+@funindex \draw-circle
+@funindex \filled-box
+@funindex \triangle
+@funindex \draw-line
+@funindex \arrow-head
 
-\arrow-head
-\draw-line
-\draw-circle
-\filled-box
-\triangle
-\strut
+@cindex graphic notation
+@cindex symbols, non-musical
 
-\with-color
+Other graphic elements or symbols may be printed
+without requiring any text.  As with any markup
+expression, such objects can be combined together:
 
+@lilypond[quote,verbatim]
+\markup {
+  \combine
+    \draw-circle #4 #0.4 ##f
+    \filled-box #'(-4 . 4) #'(-0.5 . 0.5) #1
+  \hspace #5
+
+  \center-align {
+    \triangle ##t
+    \combine
+      \draw-line #'(0 . 4)
+      \arrow-head #Y #DOWN ##f
+  }
+}
+@end lilypond
+
+@funindex \epsfile
+@funindex \postscript
 
-Advanced graphics:
-\stencil
+@cindex embedded graphics
+@cindex images, embedding
+@cindex graphics, embedding
+@cindex 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.
+
+@lilypond[quote,verbatim,fragment,relative=1]
+c1^\markup {
+  \combine
+    \epsfile #X #10 #"./context-example.eps"
+    \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
 
-\postscript
-\epsfile
+An exhaustive list of graphics-specific commands
+can be found in @ref{Graphic}.
 
-\with-dimensions
+@c TODO: add @seealso (and link with NR Editorial)
 
 @node Music notation inside markup
 @subsubsection Music notation inside markup