X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Ftext.itely;h=db7f770ebbea91b10cfd63e3dd0f702388aba102;hb=792707d36cdbdc084ae0fc13e023976a1b4ceb4a;hp=40830f2050dabe35be85189f29e3b720b74b4be7;hpb=75c18d4bd3e5a5c38fc63433ada48310ab48c934;p=lilypond.git diff --git a/Documentation/user/text.itely b/Documentation/user/text.itely index 40830f2050..db7f770ebb 100644 --- a/Documentation/user/text.itely +++ b/Documentation/user/text.itely @@ -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 @@ -53,20 +53,20 @@ This section introduces different ways of adding text to a score. @cindex Text scripts @cindex text items, non-empty @cindex non-empty texts +@cindex quoted text -It is possible to add arbitrary text indications +Simple @q{quoted text} indications may be added to a score, as demonstrated in the following example. -Such indications can also be manually placed +Such indications can be manually placed above or below the staff, using the -simple syntax described in @ref{Controlling direction and +syntax described in @ref{Direction and placement}. @lilypond[quote,fragment,ragged-right,verbatim,relative=1] d8^"pizz." e f g a4-"scherz." f @end lilypond -In LilyPond, such text strings are called @command{markup} -objects. This syntax is actually a shorthand; more complex text +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}. @@ -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 @@ -95,7 +97,7 @@ d8^"pizz." e f g \textLengthOn a4_"scherzando" f @seealso Notation Reference: @ref{Formatting text}, -@ref{Controlling direction and placement}. +@ref{Direction and placement}. Snippets: @rlsr{Text}. @@ -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 @@ -229,9 +238,7 @@ Snippets: Internals Reference: @rinternals{RehearsalMark}. @knownissues -@c IMO this is a bug; hopefully it'll be fixed soon, so I can -@c delete this sentence. -gp -@c A workaround is suggested in the first @snippets item -vv +@c To be removed when Issue 69 in the tracker gets fixed. -vv If a mark is entered at the end of the last bar of the score (where there is no next line), then the mark will not be printed at @@ -257,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 @@ -277,13 +284,12 @@ 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 -@funindex \markup @code{\markup}, @funindex \markuplines @code{\markuplines} @@ -315,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:: @@ -329,6 +335,7 @@ using the @code{\markup} mode specific syntax. @cindex text markup @cindex markup text @cindex typeset text +@funindex \markup A @code{\markup} block is used to typeset text with an extensible specific syntax called @qq{markup mode}. @@ -338,20 +345,16 @@ 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{} @}}. - -In markup mode, specific commands are entered using the backslash -@code{\} character. Such commands only affect the first following -expression. +@dots{} @}}. A single word is regarded as a minimal expression, +and therefore does not need to be enclosed with braces. -Markup expressions may also be enclosed in double quotes -@code{"..."}. Such expressions are treated as text strings -and may not contain nested expressions or commands. -Therefore, braces are generally prefered to double quotes; -the following example demonstrates both syntaxes. +Unlike simple @q{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. @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" } @@ -364,18 +367,19 @@ c @cindex markup mode, special characters @cindex reserved characters, printing @cindex printing special characters +@cindex quoted text in markup mode -Special characters such as @code{\} and @code{#} -can be printed in the output simply using double -quotes. Double quotation marks are only printed -in the output when preceded by 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 @@ -389,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 previous 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 } } @@ -432,217 +436,503 @@ Init files: @file{scm/@/new@/-markup@/.scm}. @knownissues -@c FIXME: this is totally deprecated, isn't it? -vv -Kerning or generation of ligatures is only done when the @TeX{} -backend is used. In this case, LilyPond does not account for them -so texts will be spaced slightly too wide. - -@c is the following sentence really relevant? -vv -Syntax errors for markup mode are confusing. - +Syntax errors for markup mode can be confusing. -@node Common markup commands -@subsubsection Common markup commands -Some basic formatting can be used blah blah +@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 in markup mode: -@ignore -TODO: here are some commands that could be described here. -I'm putting them in bulk, prior to working on this section. -vv +@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 -\simple +@cindex font size +@cindex text size +@funindex \fontsize +@funindex \smaller +@funindex \larger +@funindex \bigger +@funindex \magnify + +The size of the characters can also be altered in different ways: +@itemize +@item +the font size can be defined to an absolute value, -\char -\fraction +@item +predefined commands allow to easily select standard sizes, -\combine -\concat -\put-adjacent +@item +the font size can also be changed relatively to its previous value. +@end itemize +@noindent +The following example demonstrates these three methods: -\page-ref (see also "Table of contents") -\fromproperty -\verbatim-file -\with-url +@lilypond[quote,verbatim,relative=2] +{ + f1^\markup { \fontsize #5 Sinfonia } + a,_\markup { + \tiny espressivo + \large e + \normalsize intenso + } + bes^\markup { (con + \larger grande + \smaller emozione + \magnify #0.6 { e sentimento } ) + } + d c2 r8 c bes a g1 +} +@end lilypond -\on-the-fly -\override +@cindex subscript +@cindex superscript +@funindex \super +@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: -\null -\hspace +@lilypond[quote,verbatim] +\markup { + \column { + \line { 1 \super st movement } + \line { 1 \normal-size-super st movement + \sub { (part two) } } + } +} +@end lilypond -\lower -\raise -\translate -\translate-scaled -\rotate -\transparent -\whiteout - -@end ignore +@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 -@cindex font switching +@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}. -Some font switching commands are demonstrated here. +@c \concat is actually documented in Align (it is not +@c a font-switching command). But we need it here. -vv -\italic -\upright -\bold -\medium -\underline - +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: -@c TODO: what's the difference between the following commands? -vv -\smallCaps -\caps -\fontCaps +@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}. -Some alternate font families can easily be selected: +Defining custom font sets is also possible, as explained in +@ref{Fonts}. -\sans -\typewriter -\roman -\number (only for numbers, such as fingerings and time signatures) -@c TODO: add \slashed-digit here? -vv +@predefined -The size can be blah blah blah +@funindex \teeny +@funindex \tiny +@funindex \small +@funindex \normalsize +@funindex \large +@funindex \huge +@code{\teeny}, +@code{\tiny}, +@code{\small}, +@code{\normalsize}, +@code{\large}, +@code{\huge}. -\fontsize +@c TODO: add @seealso -Some predefined font sizes can be used blah blah -\teeny -\tiny -\small -\normalsize -\large -\huge +@node Text alignment +@subsubsection Text alignment -Some shorcuts allow to change the font size relatively to its previous value +@cindex text, aligning +@cindex aligning text -\smaller -\bigger -\larger +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}. -\magnify +@c The padding commands should be mentioned on this page, but +@c most of these require \box to be more clearly illustrated. -vv -Text may be printed as subscript or superscript: +@cindex text, horizontal alignment +@cindex horizontal text alignment +@funindex \left-align +@funindex \hcenter +@funindex \right-align -\sub -\super +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. -To obtain subscripts or superscripts in a normal text size, use -\normal-size-sub -\normal-size-super +@lilypond[quote,verbatim,fragment,relative=1] +a1-\markup { poco } +e' +a,-\markup { \left-align poco } +e' +a,-\markup { \hcenter { poco } } +e' +a,-\markup { \right-align poco } +@end lilypond -All these settings (except the size) can be reverted to the default font: +@funindex \halign -\normal-text +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 -@node Text alignment -@subsubsection Text alignment +@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. +@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 -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. +@funindex \general-align +@funindex \translate +@funindex \translate-scaled -In addition, vertical placement is performed after creating the -text markup object. If you wish to move an entire piece of -markup, you need to use the #'padding property or create an -@q{anchor} point inside the markup (generally with @code{\hspace -#0}). +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,fragment,relative=1] -\textLengthOn -c'4^\markup{ \raise #5 "not raised" } -\once \override TextScript #'padding = #3 -c'4^\markup{ raised } -c'4^\markup{ \hspace #0 \raise #1.5 raised } +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 -Some situations (such as dynamic marks) have preset font-related -properties. If you are creating text in such situations, it is -advisable to cancel those properties with @code{normal-text}. See -@ref{Text markup commands}, for more details. +@funindex \column +@funindex \center-align +@cindex multi-line markup +@cindex multi-line text +@cindex columns, text -Alignment basics: -\left-align -\center-align -\right-align +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: -Horizontal alignment: -\hcenter -\general-align -\halign +@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 +@cindex centering text on the page -Vertical alignment: -\vcenter -\column -\dir-column +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-align { + \huge \smallCaps "The Mikado" + or + \smallCaps "The Town of Titipu" + } + \line { Sir Arthur Sullivan } + } +} +\markup { + \fill-line { 1885 } +} +@end lilypond -Building a "large" markup: +@funindex \wordwrap +@funindex \justify -\line +@cindex wordwrapped text +@cindex justified text -\fill-line +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. -\hcenter-in - -\pad-around -\pad-markup -\pad-to-box -\pad-x - -Alignment inside a "large" markup: +@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 -\justify-field -\justify -\justify-string +An exhaustive list of text alignment commands +can be found in @ref{Align}. -\wordwrap-field -\wordwrap -\wordwrap-string +@c TODO: add @seealso @node Graphic notation inside markup @subsubsection Graphic notation inside markup -Graphics around text: -\box -\circle -\bracket -\hbracket +@cindex graphics, embedding +@cindex drawing graphic objects + +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 + +Some markup commands allow to decorate text elements +with graphics, as demonstrated in the following example. + +@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 + +@funindex \combine +@funindex \draw-circle +@funindex \filled-box +@funindex \triangle +@funindex \draw-line +@funindex \arrow-head + +@cindex graphic notation +@cindex symbols, non-musical + +Other graphic elements or symbols may be printed +without requiring any text. As with any markup +expression, such objects can be combined together: -"Standalone" graphics: +@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 -\arrow-head -\draw-line -\draw-circle -\filled-box -\triangle -\strut +@funindex \epsfile +@funindex \postscript -\with-color +@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. -Advanced graphics: -\stencil +@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 @@ -750,9 +1040,6 @@ Snippets: @code{\markuplines} - -@c TODO: move the following subsubsec into NR3 -vv -@c maybe. -gp @node Fonts @subsection Fonts