+No se puede usar la instrucción @code{\tweak} para modificar los
+puntos de control de una sola de varias ligaduras de unión dentro
+de un acorde, aparte de la primera que se encuentre en el código
+de entrada.
+
+
+@node set frente a override
+@subsection @code{\set} frente a @code{\override}
+@translationof set versus override
+
+@c TODO Should't a bunch of that be explained earlier?
+
+@funindex \set
+@funindex \override
+
+Tanto la instrucción @code{\set} como @code{\override} manipulan
+propiedades asociadas a contextos. En ambos casos las propiedades
+siguen una@emph{jerarquía de contextos}: las propiedades que no se
+establecen dentro del contexto aún presentan los valores del
+contexto de su padre respectivo.
+
+El valor y la duración en el tiempo de una propiedad de contexto
+son dinámicos y están disponibles solamente cuando la música se
+está interpretando o @q{iterando}. En el momento de la creación
+del contexto, se inicializan las propiedades a partir de las
+definiciones correspondientes (así como otras posibles
+modificaciones) de dicho contexto. Cualquier cambio posterior se
+obtiene a través de instrucciones de establecimiento de
+propiedades dentro de la propia música.
+
+Las definiciones de grob (objetos gráficos) son una clase
+@emph{especial} de propiedades de contexto, pues su estructura y
+uso son distintos de las propiedades de contexto ordinarias. A
+diferencia de las propiedades de los contextos normales, las
+definiciones de grob se subdividen en @emph{propiedades de grob}.
+
+Además, en contraste con las propiedades de contexto normales, las
+definiciones de grob tienen su propio conjunto de @q{utilidades de
+mantenimiento} de las propiedades individuales y, en su caso,
+sub-propiedades. Esto supone que es posible definir las distintas
+partes dentro de diferentes contextos y aún tener la definición
+completa del grob en el momento de su creación, montada a partir
+de todas las piezas proporcionadas por el contexto actual y su
+ancestro o ancestros, conjuntamente.
+
+Un grob u objeto gráfico se crea normalmente por parte de un
+grabador en el momento de la interpretación de una expresión
+musical y recibe sus propiedades iniciales de la definición de
+grob en curso del contexto del grabador. El grabador (u otras
+partes del @q{backend} de LilyPond) pueden después modificar (o
+añadirse a) las propiedades iniciales del grob; sin embargo, ello
+no afecta a la definición de grob del contexto.
+
+Lo que LilyPond conoce como @q{propiedades de grob} en el contexto
+del trucaje a nivel de usuario son en realidad las propiedades de
+la definición de grob de un contexto.
+
+Se accede a las definiciones de grob con un conjunto de
+instrucciones diferente. Se manipulan usando @code{\override} y
+@code{\revert} y tienen un nombre que empieza con una letra
+mayúscula (como @samp{NoteHead}) mientras que las propiedades de
+contexto ordinarias se manipulan utilizando @code{\set} y
+@code{\unset} y se nombran empezando en letra minúscula.
+
+@cindex tweak, relación con @code{\override}
+@funindex \tweak
+@funindex \overrideProperty
+
+Las instrucciones @code{\tweak} y @code{\overrideProperty} cambian
+las propiedades de grob pasando por encima de las propiedades de
+contexto completamente. En su lugar, atrapan a los grobs tan
+pronto se crean, y establecen propiedades sobre ellos directamente
+con @code{\tweak} cuando se originan a partir de un evento musical
+o, en el caso de @code{\overrideProperty}, para una sobreescritura
+específica.
+
+@node La instrucción offset
+@subsection La instrucción @code{\offset}
+@translationof The offset command
+
+@funindex \offset
+@cindex desplazamiento
+@cindex valores predeterminados, desplazar
+
+Aunque es posible fijar propiedades de grob a valores nuevos con
+las instrucciones @code{\override}, @code{\tweak} y
+@code{\overrideProperty}, muchas veces conviene más modificar
+dichas propiedades en una cantidad relativa al valor
+predeterminado. La instrucción @code{\offset} se encuentra
+disponible para este fin.
+
+La sintaxis de @code{\offset} es
+
+@example
+[-]\offset @var{propiedad} @var{incrementos} @var{elemento}
+@end example
+
+La instrucción funciona añadiendo el contenido de
+@var{incrementos} al ajuste predeterminado de la @var{propiedad}
+del grob indicado por @var{elemento}.
+
+Dependiendo de la formulación de la instrucción, @code{\offset}
+puede actuar como un @code{\tweak} (trucaje) o como un
+@code{\override} (sobreescritura). Las variaciones en su uso se
+explicarán después de haber examinado las propiedades de grob que
+se pueden usar con @code{\offset}.
+
+@subsubsubheading{Propiedades que admiten el desplazamiento}
+
+Muchas, pero no todas, las propiedades de grob admiten la
+aplicación de un desplazamiento. Si @var{propiedad} no se puede
+desplazar, el objeto permanece sin cambios y se emite una
+advertencia. En estos casos se deben usar en su lugar
+@code{\override} o @code{\tweak} para modificar el objeto.
+
+Se puede trabajar por ensayo y error y dejar que las advertencias
+nos sirvan de guía para saber lo que puede o no puede ser
+desplazado. Sin embargo, es posible un enfoque más sistemático.
+
+Los criterios siguientes determinan si una propiedad se puede
+modificar con @code{\offset}:
+
+@itemize
+
+@item
+La propiedad tiene un @q{ajuste predeterminado} en la descripción
+del grob. Tales propiedades aparecen listadas para cada grob en
+@rinternals{All layout objects} (y también están en
+@file{scm/define-grobs.scm}).
+
+@item
+La propiedad admite un valor numérico. Entre los valores
+numéricos se encuentran @code{number}, una lista de
+@code{number}s, @code{number-pair}, y @code{number-pair-list}.
+Las páginas de @rinternals{All layout objects} contienen una lista
+de los tipos de datos característicos de cada propiedad. No
+importa si el ajuste predeterminado es una función.
+
+@item
+La propiedad no puede ser una @q{subpropiedad} (una propiedad que
+reside dentro de otra propiedad).
+
+@item
+Las propiedades establecidas a valores infinitos no se pueden
+desplazar. No hay ninguna forma sensata de incrementar los valores
+infinitos positivos o negativos.
+@end itemize
+
+Los ejemplos siguientes tratan diversas propiedades de grob frente
+a los criterios que se han expuesto.
+
+@itemize
+
+@item Propiedades que se pueden desplazar
+
+@table @asis
+
+@item @code{Hairpin.height}
+
+Esta propiedad no es una subpropiedad, y está en la lista que
+aparece en @rinternals{Hairpin}. En cuanto a su valor, admite
+@q{dimension, in staff space} (dimensión, en espacios de
+pentagrama) fijado a @code{0.6666} (que claramente es un
+@code{number} no infinito).
+
+@item @code{Arpeggio.positions}
+
+En la lista de la página que describe @rinternals{Arpeggio}
+aparece una propiedad @code{positions} que admite una @q{pareja de
+números}. Su valor predeterminado es
+@code{ly:arpeggio::positions}, que es un @q{callback} que se
+evalúa durante la fase de tipografiado para dar como resultado una
+pareja de números para cualguier objeto @code{Arpeggio} dado.
+
+@end table
+
+@item Propiedades que no admiten el desplazamiento
+
+@table @asis
+
+@item @code{Hairpin.color}
+
+No hay un listado para @code{color} en @rinternals{Hairpin}.
+
+@item @code{Hairpin.circled-tip}
+
+La lista de @code{Hairpin.circled-tip} en la página de
+@rinternals{Hairpin} muestra que admite un valor @code{boolean}.
+Los valores booleanos so no numéricos.
+
+@item @code{Stem.details.lengths}
+
+Aunque está listado en @rinternals{Stem} y su valor por omisión es
+una lista de @code{number}s, es una @q{subpropiedad}. Por el
+momento no se contemplan las @q{propiedades anidadas}.
+
+@end table
+
+@end itemize
+
+@subsubsubheading{@bs{}offset como sobreescritura}
+
+Si @var{elemento} es un nombre de grob como @code{Arpeggio} o
+@code{Staff.OttavaBracket}, el resultado es un @code{\override} o
+sobreescritura de el tipo de grob especificado.
+
+@example
+\offset @var{propiedad} @var{incremento} [@var{contexto}.]@var{NombreDeGrob}
+@end example
+
+Observe que el guión precedente @emph{nunca} se utiliza con la
+forma @q{override}, de igual manera que nunca se usa con la propia
+instrucción @code{\override}.
+
+El ejemplo siguiente usa la forma @q{override}, de sobreescritura,
+para alargar los arpegios predeterminados que aparecen en el
+primer compás para que cubran todo el tamaño de los acordes. Los
+arpegios se amplían en medio espacio de pentagrama hacia arriba y
+hacia abajo. También se muestra la misma operación efectuada
+sobre el primer acorde con una sobreescritura normal de la
+propiedad the @code{positions}. Este método no es en absoluto
+expresivo de la acción de @q{ampliar en medio espacio de
+pentagrama}, porque los extremos se tienen que especificar
+mediante coordenadas absolutas, no relativas. Además, se
+necesitarían sobreescrituras individuales para los otros acordes,
+ya que varían en tamaño y posición.
+
+@lilypond[quote,verbatim]
+arpeggioMusic = {
+ <c' e' g'>\arpeggio <a' c'' e''>\arpeggio
+ <d' f' a' c''>\arpeggio <c' e' g' b' d'' f'' a''>\arpeggio
+}
+
+{
+ \arpeggioMusic
+ \bar "||"
+ \offset positions #'(-0.5 . 0.5) Arpeggio
+ \arpeggioMusic
+ \bar "||"
+ \once \override Arpeggio.positions = #'(-3.5 . -0.5)
+ <c' e' g'>1\arpeggio
+ \bar "||"
+}
+@end lilypond
+
+En su uso como @q{override}, @code{\offset} se puede hacer
+preceder por @code{\once} o por @code{\temporary} y revertirse
+mediante @code{\revert} con la @var{propiedad}. Esto se sigue a
+partir del hecho de que @code{\offset} en realidad crea un
+@code{\override} para la @var{propiedad}.
+
+@lilypond[quote,verbatim]
+music = { c'8\< d' e' f'\! }
+
+{
+ \music
+ \offset height 1 Hairpin
+ \music
+ \music
+ \revert Hairpin.height
+ \music
+ \bar "||"
+ \once \offset height 1 Hairpin
+ \music \music
+ \bar "||"
+ \override Hairpin.height = 0.2
+ \music
+ \temporary \offset height 2 Hairpin
+ \music
+ \music
+ \revert Hairpin.height
+ \music
+ \bar "||"
+}
+@end lilypond
+
+Así como @code{\override}, la forma @q{override} de @code{\offset}
+se puede usar con @code{\undo} y con @code{\single}.
+
+@lilypond[quote,verbatim]
+longStem = \offset length 6 Stem
+
+{
+ \longStem c'4 c''' c' c''
+ \bar "||"
+ \undo \longStem c'4 c''' c' c''
+ \bar "||"
+ \single \longStem c'4 c''' c' c''
+ \bar "||"
+}
+@end lilypond
+
+@subsubsubheading{@bs{}offset como trucaje}
+
+Si @var{elemento} es una expresión musical como @code{(} o
+@code{\arpeggio}, el resultado es la misma expresión musical con
+un trucaje aplicado.
+
+@example
+[-]\offset [@var{NombreDeGrob}.]@var{propiedad} @var{incrementos} @var{expresión-musical}
+@end example
+
+La sintaxis de @code{\offset} en forma de @q{tweak} es análoga a
+la propia instrucción @code{\tweak}, tanto en orden como en cuanto
+a la presencia o ausencia del guión inicial.
+
+El ejemplo siguiente usa la forma @q{tweak} para ajustar la
+posición vertical del objeto @code{BreathingSign}. Compárelo con
+la instrucción @code{\tweak} normal que también aparece. La
+sintaxis es equivalente; sin embargo, la salida de @code{\tweak}
+es menos intuitiva, ya que @code{BreathingSign.Y-offset} se
+calcula a partir de la tercera línea del pentagrama. No es
+necesario saber cómo se calcula @code{Y-offset}, al usar
+@code{\offset}.
+
+@lilypond[quote,verbatim]
+{
+ c''4
+ \breathe
+ c''4
+ \offset Y-offset 2 \breathe
+ c''2
+ \tweak Y-offset 3 \breathe
+}
+@end lilypond