version that you are working on. See TRANSLATION for details.
@end ignore
-@c \version "2.11.57"
+@c \version "2.11.61"
@node Text
@section Text
Some text elements that are not dealt with here are discussed in other
specific sections: @ref{Vocal music}, @ref{Titles and headers}.
-
-@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
* Writing text::
* Formatting text::
* Fonts::
@end menu
+@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}.}
@node Writing text
@subsection Writing text
@cindex non-empty texts
@cindex quoted text
-Simple @q{quoted text} indications may be added
+Simple @qq{quoted text} indications may be added
to a score, as demonstrated in the following example.
-Such indications can be manually placed
+Such indications may be manually placed
above or below the staff, using the
syntax described in @ref{Direction and
placement}.
@seealso
-Notation Reference: @ref{Formatting text},
+Notation Reference:
+@ref{Formatting text},
@ref{Direction and placement}.
Snippets:
@rlsr{Text}.
-Internals Reference: @rinternals{TextScript}.
+Internals Reference:
+@rinternals{TextScript}.
@knownissues
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
+Such objects, called @qq{spanners}, may be created
from one note to another using the following syntax:
@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
@seealso
-Notation Reference: @ref{Line styles}.
+Notation Reference:
+@ref{Line styles},
+@ref{Dynamics}.
Snippets:
@rlsr{Text}.
-Internals Reference: @rinternals{TextSpanner}.
+Internals Reference:
+@rinternals{TextSpanner}.
@node Text marks
@cindex bar lines, symbols on
@funindex \mark
-Various text elements can be added to a score using
+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
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:
+block, as described in @ref{Formatting text}:
-@lilypond[fragment,quote,ragged-right,verbatim,relative=2]
-c1
+@lilypond[fragment,quote,ragged-right,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[fragment,quote,ragged-right,verbatim,relative=1]
+<f bes>2 <d aes'>
\mark \markup { \musicglyph #"scripts.ufermata" }
-c1
+<e g>1
@end lilypond
@noindent
@seealso
-Notation Reference: @ref{Rehearsal marks},
-@ref{Formatting text}, @ref{The Feta font}.
+Notation Reference:
+@ref{Rehearsal marks},
+@ref{Formatting text},
+@ref{Music notation inside markup},
+@ref{The Feta font}.
Snippets:
@rlsr{Text}.
-Internals Reference: @rinternals{RehearsalMark}.
+Internals Reference:
+@rinternals{RehearsalMark}.
@knownissues
@c To be removed when Issue 69 in the tracker gets fixed. -vv
@end lilypond
Using a specific syntax, text blocks can be spread
-over multiple pages, making possible to print
+over multiple pages, making it possible to print
text documents or books (and therefore to
use LilyPond as a word processor). This syntax is described in
@ref{Multi-page markup}.
@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
+Unlike simple @qq{quoted text} indications, @code{\markup} blocks
may contain nested expressions or specific commands,
entered using the backslash @code{\} character.
Such commands only affect the first following expression.
@end lilypond
The way markup expressions are defined affects
-how these expressions will stacked, centered and aligned
+how these expressions will be stacked, centered and aligned
when using the commands explained in @ref{Text alignment}.
@lilypond[quote,verbatim,fragment,relative=1]
@end lilypond
-Markups can be stored in variables. These variables may be
+Markups can be stored in variables. Such variables may be
directly attached to notes:
@lilypond[quote,verbatim]
@seealso
-This manual: @ref{Text markup commands}.
+Notation Reference:
+@ref{Text markup commands}.
Snippets:
@rlsr{Text}.
-Internals Reference: @rinternals{TextScript}.
+Internals Reference:
+@rinternals{TextScript}.
-Init files: @file{scm/@/new@/-markup@/.scm}.
+Installed files:
+@file{scm/@/markup@/.scm}.
@knownissues
@code{\large},
@code{\huge}.
-@c TODO: add @seealso
+@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}.
@node Text alignment
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 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
@funindex \halign
-The horizontal alignment may be fine-tuned
+Horizontal alignment may be fine-tuned
using a numeric value:
@lilypond[quote,verbatim,fragment,relative=1]
@funindex \raise
@funindex \lower
-Vertical alignment is a bit more complex. As stated above,
+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
@lilypond[quote,verbatim,fragment,relative=1]
d2^\markup {
Acte I
- \raise #2 { Scène 1 } }
+ \raise #2 { Scène 1 }
+}
a'
g_\markup {
\null
- \lower #4 \bold { Très modéré } }
+ \lower #4 \bold { Très modéré }
+}
a
d,^\markup {
- \raise #4 \italic { Une forêt. } }
+ \raise #4 \italic { Une forêt. }
+}
a'4 a g2 a
@end lilypond
@lilypond[quote,verbatim,fragment,relative=1]
d2^\markup {
Acte I
- \translate #'(-1 . 2) "Scène 1" }
+ \translate #'(-1 . 2) "Scène 1"
+}
a'
g_\markup {
\null
- \general-align #Y #3.2 \bold "Très modéré" }
+ \general-align #Y #3.2 \bold "Très modéré"
+}
a
d,^\markup {
\null
- \translate-scaled #'(-1 . 2) \teeny "Une forêt." }
+ \translate-scaled #'(-1 . 2) \teeny "Une forêt."
+}
a'4 a g2 a
@end lilypond
An exhaustive list of text alignment commands
can be found in @ref{Align}.
-@c TODO: add @seealso
+@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
@subsubsection Graphic notation inside markup
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.
+using native PostScript code. In such a case, it
+may be useful to explicitely specify the size of the
+drawing, as demonstrated below:
@lilypond[quote,verbatim,fragment,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
An exhaustive list of graphics-specific commands
can be found in @ref{Graphic}.
-@c TODO: add @seealso (and link with NR Editorial)
+@seealso
+Notation Reference:
+@ref{Graphic},
+@ref{Editorial annotations}.
-@node Music notation inside markup
-@subsubsection Music notation inside markup
+Snippets:
+@rlsr{Text}.
-Notes can be printed in markup mode blah blah:
+Internals Reference: @rinternals{TextScript}.
-\note
-\note-by-number
+Installed files:
+@file{scm/@/define@/-markup@/-commands@/.scm},
+@file{scm/@/stencil@/.scm}.
-Accidental symbols can be obtained easily:
+@node Music notation inside markup
+@subsubsection Music notation inside markup
-\doubleflat
-\sesquiflat
-\flat
-\semiflat
-\natural
-\semisharp
-\sharp
-\sesquisharp
-\doublesharp
+Various musical notation elements may be added
+to a score, inside a markup object.
-Some other notation objects blah blah
+Notes and accidentals can be entered using specific
+commands:
-\beam
-\finger
-\dynamic
-\tied-lyric
-\markalphabet
-\markletter
-@c TODO: add \text here? -vv
+@lilypond[quote,verbatim,fragment,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
-Any musical symbol can be printed
+Other notation objects may also be printed
+in markup mode:
-\musicglyph
+@lilypond[quote,verbatim,fragment,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,fragment,relative=2]
+c2
+c'^\markup { \musicglyph #"eight" }
+c,4
+c,8._\markup { \musicglyph #"clefs.G_change" }
+c16
+c2^\markup { \musicglyph #"timesig.neomensural94" }
+@end lilypond
@c TODO: add \lookup here? -vv
+@noindent
+Another way of printing non-text glyphs is described
+in @ref{Fonts explained}.
-The markup mode has support for fret diagrams:
-
-\fret-diagram
-\fret-diagram-terse
-\fret-diagram-verbose
+The markup mode also supports diagrams for specific
+instruments:
-An entire @code{\score} block can even be nested in a @code{\markup}
-block. In such a case, the @code{\score} must contain a @code{\layout} block.
+@lilypond[quote,verbatim,fragment,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.accDiscant"
+ \combine
+ \raise #0.5 \musicglyph #"accordion.accDot"
+ \raise #1.5 \musicglyph #"accordion.accDot"
+}
+@end lilypond
+@c The accordion diagram is actually taken from a snippet.
-\score
+@noindent
+Such diagrams are documented in @ref{Instrument Specific Markup}.
+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,ragged-right]
-\relative {
- c4 d^\markup {
- \score {
- \relative { c4 d e f }
- \layout { }
- }
+@lilypond[quote,verbatim,fragment,relative=1]
+c4 d^\markup {
+ \score {
+ \relative { c4 d e f }
+ \layout { }
}
- e f
}
+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
@subsubsection Multi-page markup
-Whereas @code{\markup} is used to enter a non-breakable block of
-text, @code{\markuplines} can be used at top-level to enter lines
-of text that can spread over multiple pages:
+Although standard markup objects are not breakable, a
+specific syntax allows to enter lines of text that can
+spread over multiple pages:
-@verbatim
+@lilypond[quote,verbatim]
\markuplines {
\justified-lines {
A very long text of justified lines.
...
}
- \justified-lines {
+ \wordwrap-lines {
An other very long paragraph.
...
}
...
}
-@end verbatim
+@end lilypond
-@code{\markuplines} accepts a list of markup, that is either the
-result of a markup list command, or a list of markups or of markup
-lists. The built-in markup list commands are described in
+This specific 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
-
-This manual: @ref{Text markup list commands}, @ref{New
-markup list command definition}.
+Notation Reference:
+@ref{Text markup list commands},
+@ref{New markup list command definition}.
Snippets:
@rlsr{Text}.
-@predefined
+Internals Reference: @rinternals{TextScript}.
+
+Installed files:
+@file{scm/@/define@/-markup@/-commands@/.scm}.
+@predefined
@funindex \markuplines
@code{\markuplines}
@node Fonts
@subsection Fonts
+This section presents the way fonts are handled,
+and how they may be changed in scores.
+
@menu
-* Entire document fonts::
-* Single entry fonts::
+* Fonts explained::
+* Single entry fonts::
+* Entire document fonts::
@end menu
-@node Entire document fonts
-@subsubsection Entire document fonts
+@node Fonts explained
+@subsubsection Fonts explained
-It is also possible to change the default font family for the
-entire document. This is done by calling the
-@code{make-pango-font-tree} from within the @code{\paper} block.
-The function takes names for the font families to use for roman,
-sans serif and monospaced text. For example,
-
-@cindex font families, setting
@cindex Pango
+@cindex fonts, explained
+@funindex font-interface
-
-@lilypond[verbatim]
-\paper {
- myStaffSize = #20
-
- #(define fonts
- (make-pango-font-tree "Times New Roman"
- "Nimbus Sans"
- "Luxi Mono"
- (/ myStaffSize 20)))
-}
-
-{
- c'^\markup { roman: foo \sans bla \typewriter bar }
+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 to directly use various
+LilyPond @code{feta} non-text fonts in markup mode:
+
+@lilypond[quote,verbatim,fragment,relative=2]
+a1^\markup {
+ \vcenter {
+ \override #'(font-encoding . fetaBraces)
+ \lookup #"brace120"
+ \override #'(font-encoding . fetaNumber)
+ \column { 1 3 }
+ \override #'(font-encoding . fetaDynamic)
+ sf
+ \override #'(font-encoding . fetaMusic)
+ \lookup #"noteheads.s0petrucci"
+ }
}
@end lilypond
-@c we don't do Helvetica / Courier, since GS incorrectly loads
-@c Apple TTF fonts
-
-
-@node Single entry fonts
-@subsubsection Single entry fonts
-
-@cindex font selection
-@cindex font magnification
-@funindex font-interface
+@noindent
+A simpler, but more limited syntax is also described in
+@ref{Music notation inside markup}.
+
+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:
+
+@lilypond[quote,verbatim,fragment,relative=2]
+ \override Score.RehearsalMark #'font-family = #'typewriter
+ \mark \markup "Ouverture"
+ \key d \major
+ \override Voice.TextScript #'font-shape = #'italic
+ \override Voice.TextScript #'font-series = #'bold
+ d''2.^\markup "Allegro"
+ r4
+@end lilypond
-By setting the object properties described below, you can select a
-font from the preconfigured font families. LilyPond has default
-support for the feta music fonts. Text fonts are selected through
-Pango/FontConfig. The serif font defaults to New Century
-Schoolbook, the sans and typewriter to whatever the Pango
-installation defaults to.
+@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
-@itemize
-@item @code{font-encoding}
-is a symbol that sets layout of the glyphs. This should only be
-set to select different types of non-text fonts, e.g.
+@ignore
+@c FIXME: This needs an example -vv
-@code{fetaBraces} for piano staff braces, @code{fetaMusic} the
-standard music font, including ancient glyphs, @code{fetaDynamic}
-for dynamic signs and @code{fetaNumber} for the number font.
+The size of the font may be set with the @code{font-size}
+property. The resulting size is taken relative to the
+@code{text-font-size} as defined in the @code{\paper} block.
+@end ignore
-@item @code{font-family}
-is a symbol indicating the general class of the typeface.
-Supported are @code{roman} (Computer Modern), @code{sans}, and
-@code{typewriter}.
+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}.
-@item @code{font-shape}
-is a symbol indicating the shape of the font. There are typically
-several font shapes available for each font family. Choices are
-@code{italic}, @code{caps}, and @code{upright}.
+@seealso
+Notation Reference:
+@ref{The Feta font},
+@ref{Music notation inside markup},
+@ref{Selecting font and font size},
+@ref{Font}.
-@item @code{font-series}
-is a symbol indicating the series of the font. There are
-typically several font series for each font family and shape.
-Choices are @code{medium} and @code{bold}.
+@node Single entry fonts
+@subsubsection Single entry fonts
-@end itemize
+Any font that is installed on the operating system and recognized
+by FontConfig may be used in a score, using the following syntax:
-Fonts selected in the way sketched above come from a predefined
-style sheet. If you want to use a font from outside the style
-sheet, then set the @code{font-name} property,
+@lilypond[quote,verbatim,fragment,relative=1]
+\override Staff.TimeSignature #'font-name = #"Charter"
+\override Staff.TimeSignature #'font-size = #2
+\time 3/4
-@lilypond[fragment,verbatim]
-{
- \override Staff.TimeSignature #'font-name = #"Charter"
- \override Staff.TimeSignature #'font-size = #2
- \time 3/4
- c'1_\markup {
- \override #'(font-name . "Vera Bold")
- { This text is in Vera Bold }
- }
+c1_\markup {
+ \override #'(font-name . "Vera Bold")
+ { Vera Bold }
}
@end lilypond
-@noindent
-Any font can be used, as long as it is available to
-Pango/FontConfig. To get a full list of all available fonts, run
-the command
+@funindex show-available-fonts
+
+The following command displays a list of all available fonts
+on the operating system:
@example
-lilypond -dshow-available-fonts blabla
+lilypond -dshow-available-fonts x
@end example
-(the last argument of the command can be anything, but has to be
-present).
+@noindent
+The last argument of the command can be anything, but has to be
+present.
+@seealso
+Notation Reference:
+@ref{Fonts explained},
+@ref{Entire document fonts}.
-The size of the font may be set with the @code{font-size}
-property. The resulting size is taken relative to the
-@code{text-font-size} as defined in the @code{\paper} block.
+Snippets:
+@rlsr{Text}.
-@cindex font size
-@cindex font magnification
+Installed files:
+@file{lily/@/font@/-config@/-scheme@/.cc}.
+@node Entire document fonts
+@subsubsection Entire document fonts
+It is possible to change the default font families for the
+entire document. In such a case, the following syntax has
+to be used, by providing three font families that will be
+respectively used as @emph{roman}, @emph{sans} and @emph{typewriter}
+fonts, as explained in @ref{Fonts explained}.
-@seealso
+@cindex font families, setting
+@funindex make-pango-font-tree
-Snippets:
-@rlsr{Text}.
+@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}.