]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/text.itely
Merge branch 'lilypond/translation'
[lilypond.git] / Documentation / user / text.itely
index 6e8cfc80a67ffb0cb14ea50009123ff012e2c284..e7e054c0f2d22b878c50ceed0508feb3d2d6d3f9 100644 (file)
@@ -9,35 +9,20 @@
 @node Text
 @section Text
 
+@lilypondfile[quote]{text-headword.ly}
+
 This section explains how to include text (with various
 formatting) in your scores.
 
 @cindex Text, other languages
-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}.
-
-@lilypond[fragment,ragged-right,staffsize=16,quote]
-c'4^\markup { bla \bold bla }
-@end lilypond
-
-@lilypond[fragment,ragged-right,staffsize=16,quote]
-c'4^\markup { bla \bold bla }
-@end lilypond
-
-@lilypond[fragment,ragged-right,staffsize=16,quote]
-c'4^\markup { bla \bold bla }
-@end lilypond
-
-@lilypond[fragment,ragged-right,staffsize=16,quote]
-c'4^\markup { bla \bold bla }
-@end lilypond
+@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::                
 * Text markup::                 
-* Special text concerns::       
 @end menu
 
 
@@ -52,7 +37,7 @@ c'4^\markup { bla \bold bla }
 @end menu
 
 @node Overview of text entry
-@unnumberedsubsubsec Overview of text entry
+@subsubsection Overview of text entry
 
 There are four ways to add text to scores:
 
@@ -93,52 +78,70 @@ c4\mark "foo" c c c
 
 @end itemize
 
+@seealso
+
+Snippets: @lsrdir{Text,Text}
+
 
 
 @node Text scripts
-@unnumberedsubsubsec Text scripts
+@subsubsection Text scripts
 
 @cindex Text scripts
 @cindex text items, non-empty
 @cindex non-empty texts
 
-It is possible to place arbitrary strings of text or @ref{Text
-markup}, above or below notes by using a string @code{c^"text"}.
-By default, these indications do not influence the note spacing,
-but by using the command @code{\fatText}, the widths will be taken
-into account
+It is possible to add arbitrary text indications with
+@var{note}@code{-"}@var{text}@code{"}.
+Such indications can also be manually placed
+above or below the staff, using the
+simple syntax described in @ref{Controlling direction and
+placement}.
 
 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-c4^"longtext" \fatText c4_"longlongtext" c4
+d8^"pizz." e f g a4-"scherz." f
 @end lilypond
 
-@noindent
-To prevent text from influencing spacing, use @code{\emptyText}.
+In LilyPond, such text strings are called @command{markup}
+objects.  This syntax is actually a shorthand; more complex text
+formatting may be added to a note by explicitly using the
+@code{\markup} command, as described in @ref{Text markup}.
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+d8^\markup { \italic pizz. } e f g 
+a4_\markup { \tiny scherz. \bold molto } f
+@end lilypond
 
-More complex formatting may also be added to a note by using the
-markup command,
+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[fragment,ragged-right,verbatim,quote]
-c'4^\markup { bla \bold bla }
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+d8^"pizz." e f g \textLengthOn a4_"scherzando" f
 @end lilypond
 
-The @code{\markup} is described in more detail in @ref{Text
-markup}.
+@predefined
 
+@funindex \textLengthOn
+@code{\textLengthOn},
+@funindex \textLengthOff
+@code{\textLengthOff}.
 
-@refcommands
 
-@funindex \fatText
-@code{\fatText},
-@funindex \emptyText
-@code{\emptyText}.
+@seealso
 
+Notation Reference: @ref{Text markup}.
 
-@commonprop
+Snippets: @lsrdir{Text,Text}
+
+Internals Reference: @internalsref{TextScript}.
+
+@knownissues
 
 Checking to make sure that text scripts and lyrics are within the
 margins is a relatively large computational task.  To speed up
-processing, lilypond does not perform such calculations by
+processing, LilyPond does not perform such calculations by
 default; to enable it, use
 
 @example
@@ -146,41 +149,39 @@ default; to enable it, use
 @end example
 
 
-@seealso
-
-In this manual: @ref{Text markup}.
-
-Internals Reference: @internalsref{TextScript}.
-
-
 @node Text spanners
-@unnumberedsubsubsec Text spanners
+@subsubsection Text spanners
 
 @cindex Text spanners
 
+@c TODO: merge these explanations with the ones below in 
+@c "Text and Line spanners" -vv
+
 Some performance indications, e.g., @i{rallentando} or
 @i{accelerando}, are written as text and are extended over many
-measures with dotted lines.  Such texts are created using text
-spanners; attach @code{\startTextSpan} and @code{\stopTextSpan} to
-the first and last notes of the spanner.
+measures with dotted lines; you can create such text spanners
+from one note to another by using the following syntax:
 
-The string to be printed, as well as the style, is set through
-object properties
+@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
+\override TextSpanner #'bound-details #'left #'text = "rit." 
+b1\startTextSpan 
+e,\stopTextSpan
+@end lilypond
 
-@lilypond[quote,ragged-right,fragment,relative=1,verbatim]
-c1
-\textSpannerDown
-\override TextSpanner #'bound-details #'left #'text =
-  \markup { \upright "rall" } 
-c2\startTextSpan b c\stopTextSpan a
-\break
-\textSpannerUp
+@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:
+
+@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
 \override TextSpanner #'bound-details #'left #'text =
-  \markup { \italic "rit" } 
-c2\startTextSpan b c\stopTextSpan a
+  \markup { \upright "rit." } 
+b1\startTextSpan c
+e,\stopTextSpan
 @end lilypond
 
-@refcommands
+@predefined
 
 @funindex textSpannerUp
 @code{\textSpannerUp},
@@ -189,23 +190,19 @@ c2\startTextSpan b c\stopTextSpan a
 @funindex textSpannerNeutral
 @code{\textSpannerNeutral}.
 
-
-@commonprop
-
-To print a solid line, use
-
-@example
-\override TextSpanner #'dash-fraction = #'()
-@end example
+The line style, as well as the text string, can be defined as an
+object property. This syntax is described in @ref{Line styles}.
 
 
 @seealso
 
+Snippets: @lsrdir{Text,Text}
+
 Internals Reference: @internalsref{TextSpanner}.
 
 
 @node Text marks
-@unnumberedsubsubsec Text marks
+@subsubsection Text marks
 
 @cindex coda on bar line
 @cindex segno on bar line
@@ -213,10 +210,16 @@ Internals Reference: @internalsref{TextSpanner}.
 @cindex bar lines, symbols on
 @funindex \mark
 
-The @code{\mark} command is primarily used for @ref{Rehearsal
-marks}, but it can also be used to put signs like coda, segno, and
-fermata on a bar line.  Use @code{\markup} to access the
-appropriate symbol (symbols are listed in @ref{The Feta font}).
+Various text elements can be added to a score using
+the syntax described in @ref{Rehearsal marks}:
+
+@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
+c4\mark "dolce" c c c
+@end lilypond
+
+This syntax makes possible to put any text on a bar line, but also
+signs like coda, segno, or fermata, by specifying  the appropriate
+symbol name.  These symbols are listed in @ref{The Feta font}.
 
 @lilypond[fragment,quote,ragged-right,verbatim,relative=2]
 c1 \mark \markup { \musicglyph #"scripts.ufermata" }
@@ -224,22 +227,22 @@ c1
 @end lilypond
 
 @noindent
-@code{\mark} is only typeset above the top stave of the score.  If
-you specify the @code{\mark} command at a bar line, the resulting
-mark is placed above the bar line.  If you specify it in the
-middle of a bar, the resulting mark is positioned between notes.
-If it is specified before the beginning of a score line, it is
-placed before the first note of the line.  Finally, if the mark
-occurs at a line break, the mark will be printed at the beginning
-of the next line.
+Such objects are only typeset above the top staff of the score; they
+can be placed above the bar line or between notes, depending on whether
+you specify it at the end or the middle of a bar. When specified at the
+beginning of a score or at a line break, the mark 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 "dolce" c1
+c\mark "assai" \break
+c c
+@end lilypond
 
-@c  IMO this is a bug; hopefully it'll be fixed soon, so I can
-@c  delete this sentence.   -gp
-If there is no next line, then the mark will not be printed at
-all.
 
+@snippets
 
-@commonprop
+@c TODO: to be LSR-ized stuff -vv
 
 To print the mark at the end of the current line, use
 
@@ -259,69 +262,70 @@ c1 c c c4 c c c
 \mark "D.S. al Fine "
 @end lilypond
 
-Text marks may be aligned with notation objects other than bar
-lines,
+If specified, text marks may be aligned with notation objects
+other than bar lines.  These objects include @code{ambitus},
+@code{breathing-sign}, @code{clef}, @code{custos},
+@code{staff-bar}, @code{left-edge}, @code{key-cancellation},
+@code{key-signature}, and @code{time-signature}.
 
-@lilypond[fragment,quote,ragged-right,verbatim,relative=2]
-\relative {
-  c1
-  \key cis \major
-  \clef alto
-  \override Score.RehearsalMark #'break-align-symbols = #'(key-signature)
-  \mark "on key"
-  cis
-  \key ces \major
+
+In such cases, text marks will be horizontally centered
+above the object. However this can be changed, as demonstrated
+on the second line of this example (in a score with multiple staves,
+this setting should be done for all the staves).
+
+
+@lilypond[fragment,quote,ragged-right,verbatim,relative=1]
+  e1
+  
+  % the RehearsalMark will be centered above the Clef
   \override Score.RehearsalMark #'break-align-symbols = #'(clef)
+  \key a \major
   \clef treble
-  \mark "on clef"
-  ces
+  \mark "↓"
+  e
+  
+  % the RehearsalMark will be centered above the TimeSignature
   \override Score.RehearsalMark #'break-align-symbols = #'(time-signature)
-  \key d \minor
-  \clef tenor
+  \key a \major
+  \clef treble
   \time 3/4
-  \mark "on time"
-  c
-}
-@end lilypond
-
-Possible symbols for the @code{break-align-symbols} list are
-@code{ambitus}, @code{breathing-sign}, @code{clef}, @code{custos},
-@code{staff-bar}, @code{left-edge}, @code{key-cancellation},
-@code{key-signature}, and @code{time-signature}.
-
-The text marks will, by default, be aligned with the middle of the
-notation object, but this can be changed by overriding the
-@code{break-align-anchor-alignment} and @code{break-align-anchor}
-properties for the appropriate grob.
-
-@lilypond[fragment,quote,ragged-right,verbatim]
-{
+  \mark "↓"
+  e2.
+  
+  % the RehearsalMark will be centered above the KeySignature
   \override Score.RehearsalMark #'break-align-symbols = #'(key-signature)
-  c1
-  \key cis \major
+  \key a \major
+  \clef treble
+  \time 4/4
+  \mark "↓"
+  e1
 
+  \break
+  e
+  
   % the RehearsalMark will be aligned with the left edge of the KeySignature
-  \once \override Staff.KeySignature #'break-align-anchor-alignment = #LEFT
-  \mark \default
-  cis1
-  \key ces \major
-
+  \once \override Score.KeySignature #'break-align-anchor-alignment = #LEFT
+  \mark "↓"
+  \key a \major
+  e
+  
   % the RehearsalMark will be aligned with the right edge of the KeySignature
-  \once \override Staff.KeySignature #'break-align-anchor-alignment = #RIGHT
-  \mark \default
-  ces1
-  \key cis \major
-
+  \once \override Score.KeySignature #'break-align-anchor-alignment = #RIGHT
+  \key a \major
+  \mark "↓"
+  e
+  
   % the RehearsalMark will be aligned with the left edge of the KeySignature
-  % and then shifted right by 2 units.
-  \once \override Staff.KeySignature #'break-align-anchor = #2
-  \mark \default
-  ces1
-}
+  % and then shifted right by 1 unit.
+  \once \override Score.KeySignature #'break-align-anchor = #1
+  \key a \major
+  \mark "↓"
+  e1
 @end lilypond
 
 Although text marks are normally only printed above the topmost
-staff, you may alter this to print them on every staff,
+staff, you may alter this to print them on every staff:
 
 @lilypond[quote,ragged-right,verbatim,relative=2]
 {
@@ -344,9 +348,17 @@ staff, you may alter this to print them on every staff,
 
 @seealso
 
+Snippets: @lsrdir{Text,Text}
+
 Internals Reference: @internalsref{RehearsalMark}.
 
+@knownissues
+@c  IMO this is a bug; hopefully it'll be fixed soon, so I can
+@c  delete this sentence.   -gp
 
+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
+all.
 
 @node Text markup
 @subsection Text markup
@@ -359,15 +371,20 @@ Internals Reference: @internalsref{RehearsalMark}.
 @end menu
 
 @node Text markup introduction
-@unnumberedsubsubsec Text markup introduction
+@subsubsection Text markup introduction
 
 @cindex markup
 @cindex text markup
 @cindex markup text
 @cindex typeset text
 
-Use @code{\markup} to typeset text.  Commands are entered with the
-backslash @code{\}.  To enter @code{\} and @code{#}, use double
+A @code{\markup} block is used to typeset text with an extensible syntax,
+called @q{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.
 
 @lilypond[quote,verbatim,fragment,relative=1]
@@ -378,11 +395,11 @@ c1_\markup { "\special {weird} #characters" }
 @end lilypond
 
 @noindent
-See @ref{Overview of text markup commands}, for a list of all
-commands.
+An exhaustive list of @code{\markup}-specific commands can be found in
+@ref{Text markup commands}.
 
-@code{\markup} is primarily used for @internalsref{TextScript}s,
-but it can also be used anywhere text is called in lilypond
+@code{\markup} blocks can be used anywhere text is called,
+and not only for @internalsref{TextScript}s objects.
 
 @lilypond[quote,verbatim]
 \header{ title = \markup{ \bold { foo \italic { bar! } } } }
@@ -404,8 +421,10 @@ but it can also be used anywhere text is called in lilypond
 }
 @end lilypond
 
-A @code{\markup} command can also be placed on its own, away from
-any @code{\score} block, see @ref{Multiple scores in a book}.
+A @code{\markup} block can also be printed on its own at the top-level
+of the input file, away from
+any @code{\score} block. This syntax is described in
+@ref{Multiple scores in a book}.
 
 @lilypond[quote,ragged-right,verbatim]
 \markup{ Here is some text. }
@@ -413,15 +432,15 @@ any @code{\score} block, see @ref{Multiple scores in a book}.
 
 @cindex font switching
 
-The markup in the example demonstrates font switching commands.
-The command @code{\bold} and @code{\italic} apply to the first
-following word only; to apply a command to more than one word,
-enclose the words with braces,
+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.,
 
@@ -429,11 +448,10 @@ For clarity, you can also do this for single arguments, e.g.,
 \markup @{ is \italic @{ anyone @} home @}
 @end example
 
-In markup mode you can compose expressions, similar to
+The markup mode can be used to compose expressions, similar to
 mathematical expressions, XML documents, and music expressions.
-You can stack expressions grouped vertically with the command
-@code{\column}.  Similarly, @code{\center-align} aligns texts by
-their center lines:
+Such expressions can be vertically stacked, horizontally centered, 
+or aligned in different ways:
 
 @lilypond[quote,verbatim,fragment,relative=1]
 c1^\markup { \column { a bbbb \line { c d } } }
@@ -441,18 +459,14 @@ c1^\markup { \center-align { a bbbb c } }
 c1^\markup { \line { a b c } }
 @end lilypond
 
-Lists with no previous command are not kept distinct.  The
-expression
-
-@example
-\center-align @{ @{ a b @} @{ c d @} @}
-@end example
-
-@noindent
+Lists with no previous command are not kept distinct.  In
+the following example, the two @code{\markup} expressions
+are equivalent:
 
-is equivalent to
+@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
 
@@ -462,7 +476,7 @@ To keep lists of words distinct, please use quotes @code{"} or
 the @code{\line} command
 
 @lilypond[quote,verbatim,fragment,relative=1]
-\fatText
+\textLengthOn
 c4^\markup{ \center-align { on three lines } }
 c4^\markup{ \center-align { "all one line" } }
 c4^\markup{ \center-align { { on three lines } } }
@@ -490,7 +504,7 @@ markup, you need to use the #'padding property or create an
 #0}).
 
 @lilypond[quote,verbatim,fragment,relative=1]
-\fatText
+\textLengthOn
 c'4^\markup{ \raise #5 "not raised" }
 \once \override TextScript #'padding = #3
 c'4^\markup{ raised }
@@ -500,19 +514,21 @@ c'4^\markup{ \hspace #0 \raise #1.5 raised }
 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{Overview of text markup commands}, for more details.
+@ref{Text markup commands}, for more details.
 
 
 @seealso
 
-This manual: @ref{Overview of text markup commands}.
+This manual: @ref{Text markup commands}.
+
+Snippets: @lsrdir{Text,Text}
 
 Internals Reference: @internalsref{TextScript}.
 
 Init files: @file{scm/@/new@/-markup@/.scm}.
 
 
-@refbugs
+@knownissues
 
 Kerning or generation of ligatures is only done when the @TeX{}
 backend is used.  In this case, LilyPond does not account for them
@@ -522,7 +538,7 @@ Syntax errors for markup mode are confusing.
 
 
 @node Nested scores
-@unnumberedsubsubsec Nested scores
+@subsubsection Nested scores
 
 It is possible to nest music inside markups, by adding a
 @code{\score} block to a markup expression.  Such a score must
@@ -540,8 +556,12 @@ contain a @code{\layout} block.
 }
 @end lilypond
 
+@seealso
+
+Snippets: @lsrdir{Text,Text}
+
 @node Page wrapping text
-@unnumberedsubsubsec Page wrapping text
+@subsubsection Page wrapping text
 
 Whereas @code{\markup} is used to enter a non-breakable block of
 text, @code{\markuplines} can be used at top-level to enter lines
@@ -564,20 +584,22 @@ of text that can spread over multiple pages:
 @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
-@ref{Overview of text markup list commands}.
+@ref{Text markup list commands}.
 
 @seealso
 
-This manual: @ref{Overview of text markup list commands}, @ref{New
+This manual: @ref{Text markup list commands}, @ref{New
 markup list command definition}.
 
-@refcommands
+Snippets: @lsrdir{Text,Text}
+
+@predefined
 
 @funindex \markuplines
 @code{\markuplines}
 
 @node Font selection
-@unnumberedsubsubsec Font selection
+@subsubsection Font selection
 
 @cindex font selection
 @cindex font magnification
@@ -687,223 +709,6 @@ sans serif and monospaced text.  For example,
 
 @seealso
 
-Examples: @lsr{text,font@/-family@/-override.ly}.
-
-
-@node Special text concerns
-@subsection Special text concerns
-
-
-
-@menu
-* New dynamic marks::           
-* Text and line spanners::      
-@end menu
-
-@node New dynamic marks
-@unnumberedsubsubsec New dynamic marks
-
-It is possible to print new dynamic marks or text that should be
-aligned with dynamics.  Use @code{make-dynamic-script} to create
-these marks.  Note that the dynamic font only contains the
-characters @code{f,m,p,r,s} and @code{z}.
-
-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{Overview of text markup commands}, for more details.
-
-@cindex make-dynamic-script
-
-@lilypond[quote,verbatim,ragged-right]
-sfzp = #(make-dynamic-script "sfzp")
-\relative c' {
-  c4 c c\sfzp c
-}
-@end lilypond
-
-@cindex Dynamics, editorial
-@cindex Dynamics, parenthesis
-
-It is also possible to print dynamics in round parenthesis or
-square brackets.  These are often used for adding editorial
-dynamics.
-
-@lilypond[quote,verbatim,ragged-right]
-rndf = \markup{ \center-align {\line { \bold{\italic (}
-  \dynamic f \bold{\italic )} }} }
-boxf = \markup{ \bracket { \dynamic f } }
-{ c'1_\rndf c'1_\boxf }
-@end lilypond
-
-
-@node Text and line spanners
-@unnumberedsubsubsec Text and line spanners
-
-Some performance indications, e.g., @i{rallentando} and
-@i{accelerando} and @i{trills} are written as text and are
-extended over many measures with lines, sometimes dotted or wavy.
-
-These all use the same routines as the glissando for drawing the
-texts and the lines, and tuning their behavior is therefore also
-done in the same way.  It is done with a spanner, and the routine
-responsible for drawing the spanners is
-@code{ly:line-interface::print}.  This routine determines the
-exact location of the two @i{span points} and draws a line in
-between, in the style requested.
-
-Here is an example of the different line styles available, and how
-to tune them.
-
-@lilypond[relative=2,ragged-right,verbatim,fragment]
-d2 \glissando d'2
-\once \override Glissando #'dash-fraction = #0.5
-d,2 \glissando d'2
-\override Glissando #'style = #'dotted-line
-d,2 \glissando d'2
-\override Glissando #'style = #'zigzag
-d,2 \glissando d'2
-\override Glissando #'style = #'trill
-d,2 \glissando d'2
-@end lilypond
-
-The information that determines the end-points is computed
-on-the-fly for every graphic object, but it is possible to
-override these. 
-
-@lilypond[relative=2,ragged-right,verbatim,fragment]
-e2 \glissando f
-\once \override Glissando #'bound-details #'right #'Y = #-2
-e2 \glissando f
-@end lilypond
-
-The @code{Glissando} object, like any other using the
-@code{ly:line-interface::print} routine, carries a nested
-association list.  In the above statement, the value for @code{Y}
-is set to @code{-2} for the association list corresponding to the
-right end point.  Of course, it is also possible to adjust the
-left side with @code{left} instead of @code{right}.
-
-If @code{Y} is not set, the value is computed from the vertical
-position of right attachment point of the spanner. 
-
-In case of a line break, the values for the span-points are
-extended with contents of the @code{left-broken} and
-@code{right-broken} sublists, for example
-
-@lilypond[relative=2,ragged-right,verbatim,fragment]
-\override Glissando #'breakable = ##T 
-\override Glissando #'bound-details #'right-broken #'Y = #-3
-c1 \glissando \break
-f1
-@end lilypond
-
-The following properties can be used for the
-
-@table @code
-@item Y
-This sets the Y-coordinate of the end point, in staff space.  By
-default, it is the center of the bound object, so for a glissando
-it points to the vertical center of the note head.
-
-For horizontal spanners, such as text spanner and trill spanners,
-it is hardcoded to 0.
-
-@item attach-dir
-This determines where the line starts and ends in X-direction,
-relative to the bound object.  So, a value of @code{-1} (or
-@code{LEFT}) makes the line start/end at the left side of the note
-head it is attached to.
-
-@item X
-This is the absolute coordinate of the end point.  It is usually
-computed on the fly, and there is little use in overriding it. 
-
-@item stencil
-Line spanners may have symbols at the beginning or end, which is
-contained in this sub-property.  This is for internal use, it is
-recommended to use @code{text}.
-
-@item text
-This is a markup that is evaluated to yield stencil.  It is used
-to put @i{cresc.} and @i{tr} on horizontal spanners.
-
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
-\override TextSpanner #'bound-details #'left #'text
-   = \markup { \small \bold Slower }
-c2\startTextSpan b c a\stopTextSpan
-@end lilypond
-
-@item stencil-align-dir-y
-@item stencil-offset
-Without setting this, the stencil is simply put there at the
-end-point, as defined by the @code{X} and @code{Y} sub properties.
-Setting either @code{stencil-align-dir-y} or @code{stencil-offset}
-will move the symbol at the edge relative to the end point of the
-line
-
-@lilypond[relative=1,fragment,verbatim]
-\override TextSpanner #'bound-details
-  #'left #'stencil-align-dir-y = #DOWN
-\override TextSpanner #'bound-details
-  #'right #'stencil-align-dir-y = #UP
-
-\override TextSpanner #'bound-details
-  #'left #'text = #"gggg"
-\override TextSpanner #'bound-details
-  #'right #'text = #"hhhh"
-c4^\startTextSpan c c c \stopTextSpan
-@end lilypond
-
-@item arrow
-Setting this sub property to @code{#t} produce an arrowhead at the
-end of the line.
-
-@item padding
-This sub property controls the space between the specified
-end-point of the line and the actual end.  Without padding, a
-glissando would start and end in the center of each note head.
-
-@end table
-
-TODO: add this somewhere
-
-@verbatim
-\new Staff {
-  \override TextSpanner #'bound-details #'left-broken #'text = ##f
-   \override TextSpanner #'bound-details #'left #'text = \markup {
-"start" }
-   c'1 \startTextSpan \break
-   c'1
-   c'1 \stopTextSpan
-}
-@end verbatim
-
-
-The music function \endSpanners terminates spanners and hairpins
-after exactly one note.
-
-@lilypond[verbatim,quote,raged-right,relative=2,fragment]
-\endSpanners
-c2 \startTextSpan c2
-c2 \< c2
-@end lilypond
-
-When using \endSpanners it is not necessary to close
-\startTextSpan with \stopTextSpan, nor is it necessary to close
-hairpins with \!.
-
-
-
-@seealso
-
-Internals Reference: @internalsref{TextSpanner},
-@internalsref{Glissando}, @internalsref{VoiceFollower},
-@internalsref{TrillSpanner},
-@internalsref{line-spanner-interface}.
-
-Examples: @lsr{expressive,line-styles.ly},
-@lsr{expressive,line-arrows.ly}
-
+Snippets: @lsrdir{Text,Text}