+Ciertas indicaciones de ejecución, p.ej., @i{rallentando},
+@i{accelerando} y los @i{trinos} se escriben como texto y se extienden
+sobre muchos compases mediante líneas, a veces punteadas u onduladas.
+
+Todos ellos usan las mismas rutinas que el glissando para dibujar los textos y las líneas,
+y por ello el ajuste fino de su comportamiento se hace de la
+misma manera. Se hace con un spanner (un objeto de extensión), y la rutina responsable
+de dibujar los objetos de extensión es @code{ly:line-interface::print}. Esta
+rutina determina la colocación exacta de los dos @i{extremos del
+objeto de extensión} y dibuja una línea entre ellos, en el estilo solicitado.
+
+He aquí un ejemplo de los distintos estilos de línea disponibles, y cómo
+aplicarles ajustes finos.
+
+@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
+
+La información que determina los puntos extremos se calcula al vuelo
+para cada objeto gráfico, pero es posible sobreescribirlos.
+
+@lilypond[relative=2,ragged-right,verbatim,fragment]
+e2 \glissando f
+\once \override Glissando #'bound-details #'right #'Y = #-2
+e2 \glissando f
+@end lilypond
+
+El objeto @code{Glissando}, como cualquier otro que use la rutina
+@code{ly:line-interface::print}, conlleva una lista asociativa
+anidada. En la instrucción anterior, el valor de @code{Y}
+se establece a @code{-2} para la lista asociativa correspondiente al extremo final de la
+derecha. Por supuesto, también es posible ajustar el extremo de la izquierda con
+@code{left} en vez de @code{right}.
+
+Si no se establece el valor de @code{Y}, se calcula a partir de la posición
+vertical del punto de anclaje derecho del objeto de extensión.
+
+En el caso de un salto de línea, los valores de los puntos extremos se extienden
+con los contenidos de las sublistas @code{left-broken} y @code{right-broken},
+por ejemplo
+
+@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
+
+Las siguientes propiedades se pueden usar para el ajuste fino de los objetos de extensión:
+
+@table @code
+@item Y
+Establece la coordenada Y del punto extremo, en espacios de pentagrama. Por
+omisión, es el centro del objeto con que enlaza. Así, para un glissando
+apuntaría al centro vertical de la cabeza de la nota.
+
+Para objetos de extensión horizontales, como el de texto y los trinos, tiene el valor
+fijo de cero.
+
+@item attach-dir
+Determina el lugar donde la línea comienza y acaba en la dirección X,
+relativo al objeto al que se enlaza. Así, un valor de @code{-1} (o
+@code{LEFT}) hace que la línea comience o acabe en el lado izquierdo de la cabeza de la nota
+a la que el objeto se encuentra adjuntado.
+
+@item X
+Es la coordenada absoluta del extremo final. Normalmente
+se calcula al vuelo y no tiene mucho sentido sobreescribirlo.
+
+@item stencil
+Los objetos extensores de línea pueden tener símbolos al principio o al final, que se encuentra contenido
+dentro de esta subpropiedad. Es para uso interno y se recomienda
+usar @code{text}.
+
+@item text
+Es un elemento de marcado que se evalúa para generar la propiedad stencil anterior. Se usa
+para poner @i{cresc.} y @i{tr} sobre los objetos de extensión horizontales.
+
+@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
+Sin un valor establecido para esto, el stencil se coloca simplemente sobre el extremo del final,
+tal y como se encuentra definido por las subpropiedades @code{X} e @code{Y}.
+La asignación de un valor para @code{stencil-align-dir-y} o para @code{stencil-offset}
+desplaza el símbolo del extremo de forma relativa al extremo de la línea
+
+@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 (flecha)
+El establecimiento de esta subpropiedad al valor de @code{#t} produce una cabeza de flecha al final de la
+línea.
+
+@item padding (relleno)
+Esta subpropiedad controla el espacio entre el punto extremo de la línea especificado
+y el extremo real. Sin relleno, un glissando empezaría
+y acabaría en el centro de las cabezas de las notas.
+
+@end table
+
+@seealso
+
+Referencia del programa: @internalsref{TextSpanner},
+@internalsref{Glissando}, @internalsref{VoiceFollower},
+@internalsref{TrillSpanner}, @internalsref{line-spanner-interface}.
+
+Ejemplos: @lsr{expressive,line-styles.ly}, @lsr{expressive,line-arrows.ly}
+