X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Ftext.itely;h=6730c5f547ff9142aeec2874a106619e95de6b98;hb=87bcfd325a61d9efb40f44fa7ac5a48e93d7b4af;hp=3c2c2a4d20aa1a17a2b445ff5466ca705328c94d;hpb=2fc3988838b744a41e4a86436cb0b335480466b7;p=lilypond.git diff --git a/Documentation/user/text.itely b/Documentation/user/text.itely index 3c2c2a4d20..6730c5f547 100644 --- a/Documentation/user/text.itely +++ b/Documentation/user/text.itely @@ -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 +simple 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}. @@ -95,7 +95,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}. @@ -209,13 +209,13 @@ c c @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] {printing-marks-at-the-end-of-a-line-or-a-score.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] {aligning-marks-with-various-notation-objects.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] {printing-marks-on-every-staff.ly} @seealso @@ -229,9 +229,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 @@ -250,7 +248,7 @@ A @code{\markup} block can exist by itself, outside of any any @code{\score} block, as a @qq{top-level expression}. This syntax is described in @ref{File structure}. -@lilypond[quote,ragged-right,verbatim] +@lilypond[verbatim,quote] \markup { Tomorrow, and tomorrow, and tomorrow... } @@ -283,7 +281,6 @@ use LilyPond as a word processor. This syntax is described in @predefined -@funindex \markup @code{\markup}, @funindex \markuplines @code{\markuplines} @@ -329,72 +326,55 @@ 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 syntax, -called @qq{markup mode}. -Specific commands can be entered in this mode, using the -backslash @code{\} character. -@c TODO: move the following sentence (and add an example?) -vv -To @emph{print} such characters as -@code{\} and @code{#} in the output, use double -quotation marks. +A @code{\markup} block is used to typeset text with an extensible +specific syntax called @qq{markup mode}. -@lilypond[quote,verbatim,fragment,relative=1] -c1^\markup { hello } -c1_\markup { hi there } -c1^\markup { hi \bold there, is \italic {anyone home?} } -c1_\markup { "\special {weird} #characters" } -@end lilypond +@cindex markup expressions +@cindex markup syntax -@noindent -An exhaustive list of @code{\markup}-specific commands can be found in -@ref{Text markup commands}. +The markup syntax is similar to LilyPond's usual syntax: a +@code{\markup} expression is enclosed in curly braces @code{@{ +@dots{} @}}. +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] -\header{ title = \markup{ \bold { foo \italic { bar! } } } } -\score{ - \relative c'' { - \override Score.RehearsalMark - #'break-visibility = #begin-of-line-invisible - \override Score.RehearsalMark #'self-alignment-X = #right - - \set Staff.instrumentName = \markup{ \column{ Alto solo } } - c2^\markup{ don't be \flat } - \override TextSpanner #'bound-details #'left #'text = \markup{\italic rit } - b2\startTextSpan - a2\mark \markup{ \large \bold Fine } - r2\stopTextSpan - \bar "||" - } - \addlyrics { bar, foo \markup{ \italic bar! } } -} +@lilypond[quote,verbatim,fragment,relative=1] +e1-\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 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: -@cindex font switching - -Some font switching commands are demonstrated here. Such commands -apply only to the first following word; several words may be affected -by enclosing them in braces. - -@example -\markup @{ \bold @{ hi there @} @} -@end example - -@c TODO: remove the following line and example? -vv -@noindent -For clarity, you can also do this for single arguments, e.g., - -@example -\markup @{ is \italic @{ anyone @} home @} -@end example +@lilypond[quote,verbatim,fragment,relative=1] +\clef bass +a^\markup "##\ LEPORELLO \##" +a_\markup "Bravi! \"Cosa rara\"!" +r a8 d +cis a r4 r2 +@end lilypond -The markup mode can be used to compose expressions, similar to -mathematical expressions, XML documents, and music expressions. -Such expressions can be vertically stacked, horizontally centered, -or aligned in different ways: +The way markup expressions are defined affects +how these expressions will stacked, centered and aligned +when using the commands explained in @ref{Text alignment}. @lilypond[quote,verbatim,fragment,relative=1] c1^\markup { \column { a bbbb \line { c d } } } @@ -402,98 +382,35 @@ c1^\markup { \center-align { a bbbb c } } c1^\markup { \line { a b c } } @end lilypond -Lists with no previous command are not kept distinct. In -the following example, the two @code{\markup} expressions +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: -@c TODO: merge these two examples in a @lilypond example -vv - -@example -\center-align @{ @{ a b @} @{ c d @} @} -\center-align @{ a b c d @} -@end example - -@noindent - -To keep lists of words distinct, please use quotes @code{"} or -the @code{\line} command - @lilypond[quote,verbatim,fragment,relative=1] -\textLengthOn -c4^\markup{ \center-align { on three lines } } -c4^\markup{ \center-align { "all one line" } } -c4^\markup{ \center-align { { on three lines } } } -c4^\markup{ \center-align { \line { on one line } } } +c1^\markup { \center-align { a bbb c } } +c1^\markup { \center-align { a { bbb c } } } +c1^\markup { \center-align { a \line { bbb c } } } @end lilypond -Markups can be stored in variables and these variables may be -attached to notes, like -@example -allegro = \markup @{ \bold \large @{ Allegro @} @} - @{ a^\allegro b c d @} -@end example - -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. +Markups can be stored in variables. These variables may be +directly attached to notes: -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}). +@lilypond[quote,verbatim] +allegro = \markup { \bold \large Allegro } -@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 } +{ + d''8.^\allegro + d'16 d'4 r2 +} @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. - -@ignore -TODO: here are some commands that could be described here. -I'm putting them in bulk, prior to working on this section. -vv - -\simple - -\char -\fraction - -\combine -\concat -\put-adjacent - - -\page-ref (see also "Table of contents") -\fromproperty -\verbatim-file -\with-url -\on-the-fly -\override - - -\null -\hspace - -\lower -\raise -\translate -\translate-scaled -\rotate -\transparent -\whiteout +@noindent +An exhaustive list of @code{\markup}-specific commands can be found in +@ref{Text markup commands}. -@end ignore @seealso @@ -509,80 +426,157 @@ Init files: @file{scm/@/new@/-markup@/.scm}. @knownissues -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. - Syntax errors for markup mode are confusing. + @node Common markup commands @subsubsection Common markup commands -Some basic formatting can be used blah blah +Markup text may be formatted using simple commands. -\italic -\upright -\bold -\medium -\underline - +@cindex font switching +@funindex \italic +@funindex \bold +@funindex \underline -@c TODO: what's the difference between the following commands? -vv -\smallCaps -\caps -\fontCaps +Basic font switching is supported: +@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 -Some alternate font families can easily be selected: +@cindex font size +@cindex text size +@funindex \fontsize +@funindex \small +@funindex \large +@funindex \smaller +@funindex \larger +@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, -\sans -\typewriter -\roman -\number (only for numbers, such as fingerings and time signatures) -@c TODO: add \slashed-digit here? -vv +@item +predefined commands allow to easily select standard sizes, -The size can be blah blah blah +@item +other commands allow to change the size relatively to its previous value. +@end itemize -\fontsize +@noindent +The following example demonstrates these three methods: -Some predefined font sizes can be used blah blah +@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 -\teeny -\tiny -\small -\normalsize -\large -\huge +@cindex subscript +@cindex superscript +@funindex \super +@funindex \sub -Some shorcuts allow to change the font size relatively to its previous value +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: -\smaller -\bigger -\larger +@lilypond[quote,verbatim] +\markup { + \column { + \line { 1 \super st movement } + \line { 1 \normal-size-super st movement + \sub { (part two) } } + } +} +@end lilypond -\magnify +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. + +@lilypond[quote,verbatim] +\markup { + \column { + \line { Act \number 1 } + \line { \sans { Scene I. } } + \line { \typewriter { Verona. An open place. } } + \line { \roman Enter 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}. -Text may be printed as subscript or superscript: -\sub -\super +Defining custom font sets is also possible, as explained in +@ref{Fonts}. -To obtain subscripts or superscripts in a normal text size, use -\normal-size-sub -\normal-size-super +An exhaustive list of font-switching, font-size and font-families related +commands can be found in @ref{Font}. -All these settings (except the size) can be reverted to the default font: +@c TODO: add @seealso + +@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}. -\normal-text @node Text alignment @subsubsection Text alignment -Alignment basics: -\left-align -\center-align -\right-align +@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}.} + +Markup objects can 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. + +@lilypond[quote,verbatim,fragment,relative=1] +a1-\markup { poco } +e' +a,-\markup { \left-align poco } +e' +a,-\markup { \center-align { 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 Horizontal alignment: \hcenter @@ -590,6 +584,17 @@ Horizontal alignment: \halign +\null +\hspace + +\lower +\raise +\translate +\translate-scaled +\rotate +\transparent +\whiteout + Vertical alignment: \vcenter \column @@ -618,6 +623,42 @@ Alignment inside a "large" markup: \wordwrap \wordwrap-string + +@ignore +TODO: here are some commands that could be described here. +I'm putting them in bulk, prior to working on this section. -vv + +\simple + +\char +\fraction + +\combine +\concat +\put-adjacent + + +\page-ref (see also "Table of contents") +\fromproperty +\verbatim-file +\with-url + +\on-the-fly +\override + + + +@end ignore + + +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. + + + @node Graphic notation inside markup @subsubsection Graphic notation inside markup Graphics around text: @@ -753,9 +794,6 @@ Snippets: @code{\markuplines} - -@c TODO: move the following subsubsec into NR3 -vv -@c maybe. -gp @node Fonts @subsection Fonts