+De forma predeterminada, el texto producido mediante marcado no ocupa
+ningún espacio horizontal en cuanto se refiere a la disposición de la
+música. La instrucción @code{\textLengthOn} invierte este
+comportamiento, ocasionando que las notas resulten tan espaciadas como
+sea necesario para acomodar el texto:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+\textLengthOn % Cause notes to space out to accommodate text
+c2^"Text1"
+c^"Text2"
+c^"Text3"
+c^"Text4"
+@end lilypond
+
+La instrucción para volver al comportamiento predeterminado es
+@code{\textLengthOff}. Recuerde que @code{\once} funciona solamente
+con @code{\override}, @code{\set}, @code{\revert} o @code{unset}, así
+que no se puede usar con @code{\textLengthOn}.
+
+@cindex marcado, texto de, permitir las colisiones en
+
+El texto de marcado también evita las notas que se proyectan por
+encima del pentagrama. Si esto no es lo que deseamos, el
+desplazamiento automático hacia arriba se puede desactivar mediante el
+establecimiento de la prioridad a @code{#f}. He aquí un ejemplo que
+muestra cómo el texto de marcado interactúa con tales notas.
+
+@cindex TextScript, ejemplo de sobreescritura
+@cindex outside-staff-priority, propiedad, ejemplo
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+% This markup is short enough to fit without collision
+c2^"Tex"
+c''2
+R1
+% This is too long to fit, so it is displaced upwards
+c,,2^"Text"
+c''2
+R1
+% Turn off collision avoidance
+\once \override TextScript #'outside-staff-priority = ##f
+c,,2^"Long Text "
+c''2
+R1
+% Turn off collision avoidance
+\once \override TextScript #'outside-staff-priority = ##f
+\textLengthOn % and turn on textLengthOn
+c,,2^"Long Text " % Spaces at end are honored
+c''2
+@end lilypond
+
+
+@subheading Dynamics
+
+@cindex trucar la colocación de los matices
+@cindex dinámica, trucar la colocación de las indicaciones de
+@cindex matices, trucar la colocación
+
+Las indicaciones de matiz dinámico normalmente se colocarán por debajo
+del pentagrama, pero se pueden posicionar por encima con la
+instrucción @code{dynamicUp}. Se situarán verticalmente respecto a la
+nota a la que van adosadas, y flotarán por debajo (o por encima) de
+todos los objetos dentro-del-pentagrama tales como ligaduras de fraseo
+y números de compás. Esto puede ofrecer resultados bastante
+aceptables, como muestra este ejemplo:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+\clef "bass"
+\key aes \major
+\time 9/8
+\dynamicUp
+bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
+ees,2.~\)\mf ees4 r8 |
+@end lilypond
+
+Sin embargo, si las notas y sus indicaciones dinámicas adosadas están
+muy cerca, la colocación automática evitará las colisiones desplazando
+las marcas dinámicas posteriores más lejos, aunque este puede no ser
+el lugar óptimo, como muestra el siguiente ejemplo más bien
+artificial:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+\dynamicUp
+a4\f b\mf c\mp b\p
+@end lilypond
+
+@noindent
+Si se presentara una situación similar en música @q{real}, podría ser
+preferible espaciar las notas un poco más entre sí, de forma que todas
+las marcas dinámicas puedan caber a la misma distancia vertical desde
+el pentagrama. Hemos sido capaces de hacer esto para el texto de
+marcado utilizando la instrucción @code{\textLengthOn}, pero no existe
+una instrucción equivalente para las indicaciones de matiz dinámico.
+Por tanto, tendremos que averiguar cómo hacerlo utilizando
+instrucciones @code{\override}.
+
+@subheading Grob sizing
+
+@cindex grob, cambio de tamaño de un
+@cindex escala de los grobs
+
+En primer lugar debemos aprender cómo se especifica el tamaño de los
+grobs. Todos los grobs tienen un punto de referencia definido dentro
+de ellos que se usa para colocarlos respecto a su objeto padre.
+Entonces, este punto del grob se posiciona a una distancia horizontal,
+@code{X-offset}, y una distancia vertical, @code{Y-offset}, a partir
+de su padre. La dimensión horizontal del objeto viene dada por una
+pareja de números, @code{X-extent}, que dice dónde están los límites
+izquierdo y derecho respecto del punto de referencia. La amplitud
+vertical se define de forma similar mediante una pareja de números,
+@code{Y-extent}. Éstas son propiedades de todos los grobs que
+contemplan el @code{grob-interface}.
+
+@cindex @code{extra-spacing-width}
+
+De forma predeterminada, los objetos fuera-del-pentagrama reciben una
+anchura cero, de manera que pueden solaparse en la dirección
+horizontal. Esto se hace mediante el truco de añadir una cantidad
+infinita a la dimensión más a la izquierda y menos infinito a la
+dimensión más a la derecha estableciendo el valor de
+@code{extra-spacing-width} a @code{'(+inf.0 . -inf.0)}. Así, para
+asegurar que no se superponen en la dirección horizontal tendremos que
+sobreescribir este valor de @code{extra-spacing-width} a @code{'(0
+. 0)} de forma que el verdadero ancho se presente. Esta es la
+instrucción que lo hace para las indicaciones dinámicas:
+
+@example
+\override DynamicText #'extra-spacing-width = #'(0 . 0)
+@end example
+
+@noindent
+Veamos si funciona en nuestro ejemplo anterior:
+
+@cindex DynamicText, ejemplo de sobreescritura
+@cindex extra-spacing-width, propiedad, ejemplo
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+\dynamicUp
+\override DynamicText #'extra-spacing-width = #'(0 . 0)
+a4\f b\mf c\mp b\p
+@end lilypond
+
+@noindent
+Bueno, ciertamente ha hecho que las marcas dinámicas ya no estén
+desplazadas, pero aún quedan dos problemas. Las marcas tendrían que
+separarse un poco más entre sí, y sería mejor si todas estuvieran a la
+misma distancia del pentagrama. Podemos resolver el primer problema
+fácilmente. En vez de hacer cero la anchura
+@code{extra-spacing-width}, podemos añadirle algo más. Las unidades
+son el espacio entre dos líneas de pentagrama, así que al mover el
+límite izquierdo media unidad a la izquierda y el límite derecho media
+unidad hacia la derecha, deberíamos conseguirlo:
+
+@cindex DynamicText, ejemplo de sobreescritura
+@cindex extra-spacing-width, propiedad, ejemplo
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+\dynamicUp
+% Extend width by 1 staff space
+\override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
+a4\f b\mf c\mp b\p
+@end lilypond
+
+@noindent
+Esto tiene un mejor aspecto, pero quizá habríamos preferido que las
+indicaciones de dinámica estuvieran alineadas sobre la misma línea de
+base en lugar de ir hacia arriba y hacia abajo con las notas. La
+propiedad que lo hace es @code{staff-padding} (relleno de pentagrama)
+que se estudia en la sección siguiente.
+
+
+@node Collisions of objects
+@section Collisions of objects
+
+@menu
+* Moving objects::
+* Fixing overlapping notation::
+* Real music example::
+@end menu
+
+@node Moving objects
+@subsection Moving objects
+
+@cindex mover objetos superpuestos
+@cindex mover objetos que colisionan
+@cindex moving grobs que colisionan
+@cindex objetos que colisionan, mover
+@cindex grobs, mover, que colisionan
+
+Aunque pueda sorprenderle, LilyPond no es perfecto. Ciertos elementos
+de notación se pueden superponer, lo que es una lástima, pero en
+realidad es bastante poco frecuente. Normalmente la necesidad de
+mover objetos es por claridad o razones estéticas: el aspecto es mejor
+con un poco más o un poco menos de espacio de separación.
+
+Existen tres enfoques principales que llevan a la resolución de
+superposiciones en la notación. Se deben considerar en el siguiente
+orden:
+
+@enumerate
+@item
+La @strong{dirección} de uno de los objetos que se superponen se puede
+cambiar usando las instrucciones predefinidas que están relacionadas
+arriba para los objetos dentro-del-pentagrama (véase @ref{Within-staff
+objects}). Se pueden recolocar fácilmente las plicas, ligaduras de
+expresión y de unión, barras de corchea, indicaciones dinámicas, texto
+y grupos de valoración especial de esta forma. La limitación es que
+sólo tiene la posibilidad de elegir entre dos posiciones, y podría ser
+que ninguna de ellas sea la adecuada.
+
+@item
+Las @strong{propiedades del objeto}, que LilyPond usa cuando está
+colocando los objetos de presentación, se pueden modificar usando la
+instrucción de sobreescritura @code{\override}. Las ventadas de hacer
+cambios a este tipo de propiedad son: a) que algún otro objeto se
+moverá automáticamente si es necesario, para dejarle sitio, y b) una
+única sobreescritura se puede aplicar a todas las instancias del mismo
+tipo de objeto. Entre tales propiedades se encuentran:
+
+@itemize
+
+@item
+@code{direction} (dirección)
+
+Ya se ha estudiado con cierto detalle: véase @ref{Within-staff
+objects}.
+
+@item
+@code{padding} (relleno), @code{left-padding} (relleno por la
+izquierda), @code{right-padding} (relleno por la derecha),
+@code{staff-padding} (relleno de pentagrama)
+
+@cindex relleno
+@cindex left-padding, propiedad
+@cindex padding, propiedad
+@cindex right-padding, propiedad
+@cindex staff-padding, propiedad
+
+Según un objeto se está colocando, el valor de su propiedad de relleno
+@code{padding} especifica el espacio intermedio que se debe dejar
+entre él mismo y el límite más próximo del objeto contra el que se
+está colocando. Observe que es el valor de @code{padding} del objeto
+@strong{que se está colocando} el que se usa; el valor de
+@code{padding} del objeto que ya está colocado se ignora. Los
+espacios intermedios especificados mediante @code{padding} se pueden
+aplicar a todos los objetos que contemplan el interface
+@code{side-position-interface}.
+
+En lugar de con @code{padding}, la colocación de los grupos de
+alteraciones se controla con @code{left-padding} y
+@code{right-padding}. Estas propiedades se encontrarán en el objeto
+@code{AccidentalPlacement} que, observe, vive dentro del contexto de
+@strong{staff}. Durante el proceso tipográfico, las cabezas de las
+notas se componen tipográficamente en primer lugar, y después las
+alteraciones, si existen, se añaden a la izquierda de las cabezas
+utilizando la propiedad de relleno por la derecha @code{right-padding}
+para determinar la separación entre la alteración y la cabeza. así
+pues, sólo la propiedad de relleno por la derecha @code{right-padding}
+del objeto @code{AccidentalPlacement} tiene efecto sobre la colocación
+de las alteraciones.
+
+La propiedad @code{staff-padding} está estrechamente relacionada con
+la propiedad @code{padding}: @code{padding} controla la separación
+mínima entre cualquier objeto que contemple el interface
+@code{side-position-interface} y el objeto más cercano (generalmente
+la nota o las líneas del pentagrama); @code{staff-padding} se aplica
+sólo a los objetos que siempre se sitúan fuera del pentagrama:
+controla la separación mínima entre dicho objeto y el pentagrama.
+Observe que @code{staff-padding} no tiene ningún efecto sobre objetos
+que se posicionan respecto a la nota en vez de hacerlo respecto al
+pentagrama, incluso aunque puede ser sobreescrito sin error por tales
+objetos: simplemente se ignora.
+
+Para descubrir qué propiedad de relleno se necesita para el objeto que
+quiere recolocar, debe volver al manual de RFI y buscar las
+propiedades del objeto. Tenga cuidado porque las propiedades de
+relleno podrían no estar en el objeto más obvio, así que busque en los
+objetos que puedan tener alguna relación con él.
+
+Todos los valores de relleno se miden en espacios del pentagrama.
+Para la mayor parte de los objetos el valor se establece de forma
+predeterminada en aproximadamente 1.0 o menos (varía con cada objeto).
+Se puede sobreescribir si se necesita una separación intermedia mayor
+(o menor).
+
+@item
+@code{self-alignment-X} (Auto-alineamiento en el eje X)
+
+@cindex self-alignment-X, propiedad
+
+Esta propiedad se puede usar para alinear el objeto a la izquierda, a
+la derecha, o centrarlo con respecto al punto de referencia del objeto
+«padre». Se puede usar con todos los objetos que contemplan el
+interface
+@code{self-alignment-interface}. En general son objetos que contienen
+texto. Los valores son @code{LEFT}, @code{RIGHT} o @code{CENTER}. De
+forma alternativa se puede especificar un valor numérico entre
+@code{-1} y @code{+1}, donde @code{-1} es alineado por la izquierda,
+@code{+1} es alineado por la derecha, y los números intermedios mueven
+el texto progresivamente desde alineado por la izquierda hasta alineado
+por la derecha. Se pueden especificar valores numéricos mayores de
+@code{1} para mover el texto incluso más lejos hacia la izquierda, o
+menos de @code{-1} para alejarlo más hacia la derecha. Un cambio en
+@code{1} en el valor corresponde a un movimiento de la mitad de la
+longitud total del propio texto.
+
+@item
+@code{extra-spacing-width} (anchura de separación adicional)
+
+@cindex extra-spacing-width, propiedad
+
+Esta propiedad está disponible para todos los objetos que contemplan
+el interface @code{item-interface}. Toma dos números, el primero se
+suma al límite izquierdo y el segundo se suma al límite derecho. Los
+números negativos desplazan el límite a la izquierda y los positivos a
+la derecha, por lo que para ensanchar un objeto el primer número debe
+ser negativo y el segundo positivo. Observe que no todos los objetos
+ostentan los dos números. Por ejemplo, el objeto @code{Accidental}
+(alteración) sólo toma nota del primer número (el borde izquierdo).
+
+@item
+@code{staff-position} (posición de pentagrama)
+
+@cindex staff-position, propiedad
+
+@code{staff-position} es una propiedad del interface
+@code{staff-symbol-referencer-interface}, que está contemplado por los
+objetos que se colocan con relación al pentagrama. Especifica la
+posición vertical del objeto con relación a la tercera línea del
+pentagrama en medios espacios de pentagrama. Es útil en la
+resolución de colisiones entre objetos de presentación como silencios
+multi-compás, ligaduras de unión y notas en distintas voces.
+
+@item
+@code{force-hshift} (forzar desplazamiento horizontal)
+
+@cindex force-hshift, propiedad
+
+Las notas muy juntas de un acorde, o aquellas que ocurren al mismo
+tiempo en voces distintas, se disponen en dos (y ocasionalmente más)
+columnas para evitar la superposición de las cabezas. Éstas reciben
+el nombre de columnas de notas, y se crea un objeto llamado
+@code{NoteColumn} para disponer las notas en dicha columna.
+
+La propiedad @code{force-hshift} es una propiedad de una
+@code{NoteColumn} (realmente lo es del interface
+@code{note-column-interface}). Modificarlo permite mover una columna
+de notas en unidades adecuadas a una columna de notas, por ejemplo la
+anchura de la cabeza de la nota de la primera voz. Se debe usar en
+situaciones complejas donde las instrucciones @code{\shiftOn} normales
+(véase @ref{Explicitly instantiating voices}) no resuelven el
+conflicto entre las notas. Es preferible a la propiedad
+@code{extra-offset} para este propósito porque no hay necesidad de
+averiguar la distancia en espacios de pentagrama, y mover las notas
+dentro o fuera de una @code{NoteColumn} afecta a otras acciones como a
+la fusión entre cabezas de nota.
+
+@end itemize
+
+@item
+Finalmente, cuando todo lo demás falla, los objetos se pueden
+reposicionar manualmente con relación a la tercera línea del
+pentagrama verticalmente, o desplazándolas una cierta distancia a una
+nueva posición. Las desventajas son que los valores correctos para el
+reposicionamiento se deben adivinar, a menudo por ensayo y error, para
+cada objeto individual y, puesto que el movimiento se hace después de
+que LilyPond ha colocado todos los demás objetos es usuario es
+responsable de evitar cualquier colisión que pudiera producirse. Pero
+la dificultar principal con este enfoque es que los valores de
+reposicionado podrían tener que ser vueltos a calcular si la música se
+modifica más tarde. Las propiedades que se pueden usar para este tipo
+de posicionamiento manual son:
+
+@table @code
+@item extra-offset (desplazamiento adicional)
+
+@cindex extra-offset, propiedad
+
+Esta propiedad se aplica a cualquier objeto de presentación que
+contemple el @code{grob-interface}. Toma una pareja de números que
+especifican el desplazamiento adicional en las direcciones horizontal
+y vertical. Los números negativos mueven el objeto a la izquierda o
+hacia abajo. Las unidades son espacios de pentagrama. El
+desplazamiento adicional se hace después de que la composición
+tipográfica de los objetos ha terminado, así que un objeto puede ser
+reposicionado a cualquier lugar sin afectar a ninguna otra cosa.
+
+@item positions (posiciones)
+
+@cindex positions, propiedad
+
+Ésta es de la mayor utilidad para ajustar manualmente la inclinación y
+la altura de las barras de corchea, ligaduras de expresión y corchetes
+de grupos de valoración especial. Toma una pareja de números que dan
+la posición de los extremos izquierdo y derecho de la barra, ligadura,
+etc. con relación a la tercera línea del pentagrama. Las unidades son
+espacios de pentagrama. Observe, sin embargo, que las ligaduras de
+expresión y de fraseo no se pueden reposicionar en cantidades
+arbitrariamente grandes. LilyPond en primer lugar genera una lista de
+posiciones posibles para la ligadura y de forma predeterminada
+encuentra la ligadura que tiene @qq{mejor aspecto}. Si la propiedad
+@code{positions} se ha sobreescrito, la ligadura que está más cerca de
+las posiciones que se han solicitado, se selecciona de la lista.
+@end table
+
+@end enumerate
+
+Un objeto en particular podría no tener todas estas propiedades. Es
+necesario ir al manual RFI para buscar qué propiedades se encuentran
+disponibles para el objeto en cuestión.
+
+
+Aquí presentamos una lista de los objetos que es más probable que
+estén implicados en colisiones, con el nombre del objeto que habría
+que buscar en el RFI para descubrir qué propiedades se deben usar para
+moverlos.
+
+@multitable @columnfractions .5 .5
+@headitem Tipo de objeto @tab Nombre del objeto
+@item Articulaciones @tab @code{Script}
+@item Barras @tab @code{Beam}
+@item Dinámica (verticalmente) @tab @code{DynamicLineSpanner}
+@item Dinámica (horizontalmente) @tab @code{DynamicText}
+@item Digitaciones @tab @code{Fingering}
+@item Llamadas de ensayo y textuales @tab @code{RehearsalMark}
+@item Ligaduras de expresión @tab @code{Slur}
+@item Texto, por ejemplo @code{^"texto"} @tab @code{TextScript}
+@item Ligaduras de unión @tab @code{Tie}
+@item Grupos de valoración especial @tab @code{TupletBracket}
+@end multitable
+
+
+@node Fixing overlapping notation
+@subsection Fixing overlapping notation
+
+Veamos ahora cómo pueden ser de ayuda las propiedades que hemos visto
+en la sección anterior, para resolver problemas de notación que se
+superpone.
+
+@subheading padding property
+
+@cindex relleno
+@cindex arreglar notación que se superpone
+@cindex superpuesta, notación
+
+La propiedad @code{padding} se puede ajustar para aumentar (o
+disminuir) la distancia entre símbolos impresos encima o debajo de las
+notas.
+
+@cindex Script, ejemplo de sobreescritura
+@cindex padding, propiedad, ejemplo
+
+@lilypond[quote,fragment,relative=1,verbatim]
+c2\fermata
+\override Script #'padding = #3
+b2\fermata
+@end lilypond
+
+@cindex MetronomeMark, ejemplo de sobreescritura
+@cindex padding, propiedad, ejemplo
+
+@lilypond[quote,fragment,relative=1,verbatim]
+% This will not work, see below:
+\override MetronomeMark #'padding = #3
+\tempo 4=120
+c1
+% This works:
+\override Score.MetronomeMark #'padding = #3
+\tempo 4=80
+d1
+@end lilypond
+
+Observe en el segundo ejemplo la gran importancia que tiene saber qué
+contexto maneja un determinado objeto. Puesto que el objeto
+@code{MetronomeMark} se maneja dentro del contexto @code{Score}, los
+cambios de propiedades en el contexto @code{Voice} pasarán
+inadvertidos. Para ver más detalles, consulte @ruser{Modifying
+properties}.
+
+Si la propiedad de relleno @code{padding} de un objeto se incrementa
+cuando dicho objeto se encuentra en una pila de objetos que se están
+colocando de acuerdo a su prioridad @code{outside-staff-priority},
+entonces ese objeto se moverá, y también todos los que están por fuera
+de él.
+
+
+@subheading left-padding and right-padding
+
+@cindex left-padding, propiedad
+@cindex right-padding, propiedad
+
+La propiedad @code{right-padding} afecta al espaciado entre la
+alteración y la nota a que se aplica. Normalmente no es necesaria,
+pero el ejemplo siguiente muestra una situación en la que sí se
+necesita. Suponga que queremos presentar un acorde que contiene un Si
+natural y un Si bemol. Para evitar la ambigüedad querríamos preceder
+las notas con un becuadro y un bemol. Aquí vienen varios intentos de
+hacerlo así:
+
+@cindex Accidental, ejemplo de sobreescritura
+@cindex text, propiedad, ejemplo
+@cindex stencil, propiedad, ejemplo
+@cindex AccidentalPlacement, ejemplo de sobreescritura
+@cindex right-padding, propiedad, ejemplo
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+<b bes>
+<b! bes>
+<b? bes>
+@end lilypond
+
+Ninguno de ellos funciona y el segundo además presenta una fea
+colisión entre las dos alteraciones.
+
+Una forma de conseguirlo es sobreescribir el sello de la alteración
+con un elemento de marcado que contenga los símbolos de becuadro y
+bemol en el orden que nos gustaría que estuvieran, así:
+
+@lilypond[quote,ragged-right,verbatim]
+naturalplusflat = \markup { \natural \flat }
+\relative c'' {
+ \once \override Accidental
+ #'stencil = #ly:text-interface::print
+ \once \override Accidental #'text = #naturalplusflat
+ \once \override Score.AccidentalPlacement #'right-padding = #1.5
+ <b bes>
+}
+@end lilypond
+
+@noindent
+Esto utiliza necesariamente una sobreescritura para el sello de la
+alteración que no se estudiará hasta más adelante. El tipo de sello
+debe ser un procedimiento, aquí modificado para que imprima el
+contenido de la propiedad @code{text} del objeto @code{Accidental},
+que a su vez está establecido como un signo de becuadro seguido de un
+bemol. Entonces el conjunto se puede separar de la cabeza de la nota
+sobreescribiendo @code{right-padding}.
+
+@noindent
+
+@subheading staff-padding property
+
+@cindex alineación de objetos sobre la línea base
+@cindex objetos, alineación sobre la línea base
+
+@code{staff-padding} se puede usar para alinear objetos como matices
+dinámicos a lo largo de una línea de base a una altura fija sobre el
+pentagrama, en lugar de hacerlo a una altura que dependa de la
+posición de la nota a la que están adosados. No es una propiedad de
+@code{DynamicText} sino de @code{DynamicLineSpanner}. Esto es así
+porque la línea de base debe aplicarse por igual a @strong{todas} las
+dinámicas, entre ellas las que se han creado como objetos de
+extensión. Así que ésta es la forma de alinear las indicaciones de
+matiz en el ejemplo de la sección anterior:
+
+@cindex DynamicText, ejemplo de sobreescritura
+@cindex extra-spacing-width, propiedad, ejemplo
+@cindex DynamicLineSpanner, ejemplo de sobreescritura
+@cindex staff-padding, propiedad, ejemplo
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+\dynamicUp
+% Extend width by 1 unit
+\override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
+% Align dynamics to a base line 2 units above staff
+\override DynamicLineSpanner #'staff-padding = #2
+a4\f b\mf c\mp b\p
+@end lilypond
+
+
+@subheading self-alignment-X property
+
+El ejemplo siguiente muestra cómo esto puede resolver la colisión
+entre un objeto de digitación de cuerda y la plica de una nota
+mediante el alineamiento del límite derecho con el punto de referencia
+de la nota «padre»:
+
+@cindex StringNumber, ejemplo de sobreescritura
+@cindex self-alignment-X, propiedad, ejemplo
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=3]
+\voiceOne
+< a \2 >
+\once \override StringNumber #'self-alignment-X = #RIGHT
+< a \2 >
+@end lilypond
+
+@subheading staff-position property
+
+@cindex objeto, colisión dentro del pentagrama
+
+Los silencios multi-compás en una voz pueden chocar con las notas en
+otra voz. Puesto que estos silencios se tipografían centrados entre
+las barras de compás se necesitaría bastante esfuerzo para que
+LilyPond averiguara qué otras notas podrían chocar con él, ya que
+actualmente todo el manejo de colisiones entre notas y silencios se
+hace solamente para notas y silencios que ocurren al mismo tiempo. He
+aquí un ejemplo de colisión de este tipo:
+
+@lilypond[quote,verbatim,fragment,ragged-right, relative=1]
+<< {c c c c} \\ {R1} >>
+@end lilypond
+
+La mejor solución aquí es mover el silencio multi-compás hacia abajo,
+pues el silencio está en la voz dos. El ajuste predeterminado para
+@code{\voiceTwo} (es decir, en la segunda voz de una construcción
+@code{<<@{...@} \\ @{...@}>>}) es que @code{staff-position} tenga el
+valor -4 para MultiMeasureRest, así que tenemos que bajarlo, digamos,
+cuatro semi-espacios de pentagrama, al valor @code{-8}.
+
+@cindex MultiMeasureRest, ejemplo de sobreescritura
+@cindex staff-position, propiedad, ejemplo
+
+@lilypond[quote,verbatim,fragment,ragged-right, relative=1]
+<<
+ {c c c c}
+\\
+ \override MultiMeasureRest #'staff-position = #-8
+ {R1}
+>>
+@end lilypond
+
+Esto es mejor que utilizar, por ejemplo, @code{extra-offset}, porque
+la línea adicional por encima del silencio se inserta automáticamente.
+
+@subheading extra-offset property
+
+@cindex posicionar objetos
+@cindex posicionar grobs
+@cindex objetos, posicionar
+@cindex grobs, posicionar
+
+La propiedad @code{extra-offset} da un completo control sobre el
+posicionamiento de un objeto tanto vertical como horizontalmente.
+
+En el ejemplo siguiente, la segunda digitación se desplaza ligeramente
+a la izquierda, y 1.8 espacios de pentagrama hacia abajo:
+
+@cindex Fingering, ejemplo de sobreescritura
+@cindex extra-offset, propiedad, ejemplo
+
+@lilypond[quote,fragment,relative=1,verbatim]
+\stemUp
+f-5
+\once \override Fingering
+ #'extra-offset = #'(-0.3 . -1.8)
+f-5
+@end lilypond
+
+
+@subheading positions property
+
+@cindex controlar manualmente grupos especiales, ligaduras y barras
+@cindex manual, control, de grupos especiales, ligaduras y barras
+@cindex grupos especiales, barras de, control manual
+@cindex ligaduras de expresión, control manual
+@cindex ligaduras de fraseo, control manual
+@cindex barras de corchea, control manual
+
+La propiedad @code{positions} permite controlar manualmente la
+posición e inclinación de los tresillos, ligaduras de expresión y de
+fraseo, y barras de corchea. He aquí un ejemplo que tiene una fea
+ligadura de fraseo debido a que intenta evitar la ligadura de
+expresión que está sobre la acciaccatura.
+
+@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
+r4 \acciaccatura e8\( d8 c ~c d c d\)
+@end lilypond
+
+@noindent
+Simplemente podemos mover la ligadura de fraseo por encima de las
+notas, y de hecho ésta será la solución preferida:
+
+@cindex PhrasingSlur, ejemplo de sobreescritura
+@cindex positions, propiedad, ejemplo
+
+@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
+r4
+\phrasingSlurUp
+\acciaccatura e8\( d8 c ~c d c d\)
+@end lilypond
+
+@noindent
+Pero si por algún motivo no pudiéramos hacerlo, la otra alternativa
+sería mover el extremo izquierdo de la ligadura de fraseo un poco
+hacia abajo usando la propiedad @code{positions}. Esto también
+resuelve la forma algo indecente de la ligadura.
+
+@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
+r4
+\once \override PhrasingSlur #'positions = #'(-4 . -3)
+\acciaccatura
+e8\( d8 c ~c d c d\)
+@end lilypond
+
+Presentamos un ejemplo más extraído del comienzo del pentagrama de la
+mano izquierda del preludio de Chopin Op 28 No. 2. vemos que la barra
+choca con las notas superiores:
+
+@lilypond[quote,verbatim,fragment,ragged-right]
+{
+\clef "bass"
+<< {b,8 ais, b, g,} \\ {e, g e, g} >>
+<< {b,8 ais, b, g,} \\ {e, g e, g} >>
+}
+@end lilypond
+
+@noindent
+Esto se puede resolver manualmente elevando los dos extremos de la
+barra desde su posición a dos espacios de pentagrama sobre la línea
+central hasta, digamos, 3 espacios:
+
+@cindex Beam, ejemplo de sobreescritura
+@cindex positions, propiedad, ejemplo
+
+@lilypond[quote,verbatim,fragment,ragged-right]
+{
+ \clef "bass"
+ <<
+ \override Beam #'positions = #'(3 . 3)
+ {b,8 ais, b, g,}
+ \\
+ {e, g e, g}
+ >>
+ << {b,8 ais, b, g,} \\ {e, g e, g} >>
+}
+@end lilypond
+
+@noindent
+Observe que la sobreescritura sigue aplicándose en la primera voz del
+segundo bloque de corcheas, pero no a ninguna de las barras de la
+segunda voz.
+
+@subheading force-hshift property
+
+@c FIXME: formatting stuff (ie not important right now IMO)
+@c @a nchor Chopin finally corrected TODOgp
+
+Ahora podremos ver cómo aplicar las correcciones finales al ejemplo de
+Chopin que presentamos al final de @ref{I'm hearing Voices}, que
+dejamos con este aspecto:
+
+@lilypond[quote,verbatim,fragment,ragged-right]
+\new Staff \relative c'' {
+ \key aes \major
+ <<
+ { c2 aes4. bes8 } \\
+ { aes2 f4 fes } \\
+ { \voiceFour
+ <ees c>2
+ des2
+ }
+ >> |
+ <c ees aes c>1 |
+}
+@end lilypond
+
+@noindent
+Las dos notas inferiores del primer acorde (es decir, las que están en
+al tercera voz) no deberían separarse de la columna de notas de las dos
+notas agudas. Para corregir esto, establecemos el valor de
+@code{force-hshift} (que es una propiedad de @code{NoteColumn}) de
+esas notas a cero. La nota más grave del segundo acorde se sitúa
+mejor justo a la derecha de las más agudas. Lo conseguimos
+estableciendo el valor de @code{force-hshift} de esta nota a 0.5, o
+sea, la anchura de media cabeza de nota a la derecha de la columna de
+las notas agudas.
+
+Presentamos a continuación el resultado final:
+
+@cindex NoteColumn, ejemplo de sobreescritura
+@cindex force-hshift, propiedad, ejemplo
+
+@lilypond[quote,verbatim,fragment,ragged-right]
+\new Staff \relative c'' {
+ \key aes \major
+ <<
+ { c2 aes4. bes8 } \\
+ { aes2 f4 fes } \\
+ { \voiceFour
+ \once \override NoteColumn #'force-hshift = #0 <ees c>2
+ \once \override NoteColumn #'force-hshift = #0.5 des2
+ }
+ >> |
+ <c ees aes c>1 |
+}
+@end lilypond
+
+
+@node Real music example
+@subsection Real music example
+
+Finalizaremos esta sección sobre los trucos mostrando los pasos que se
+deben tomar para tratar con un ejemplo complicado que necesita varios
+trucos para producir el resultado deseado. El ejemplo se ha escogido
+deliberadamente para ilustrar el uso de la Referencia de la Notación
+para resolver problemas de notación poco comunes. No es
+representativo de un proceso de grabado más usual, por lo que ¡le
+recomendamos que no deje que estas dificultades le desanimen!
+¡Afortunadamente, las dificultades como éstas no son muy comunes!
+
+El ejemplo está extraído de la Primera Balada de Chopin, Op. 23,
+compases 6 al 9, la transición entre el Lento inicial y el Moderato.
+Presentamos en primer lugar el aspecto que queremos que tenga el
+resultado, pero para evitar complicar demasiado el ejemplo hemos
+quitado las indicaciones dinámicas, las digitaciones y el pedal.
+
+@c The following should appear as music without code
+@lilypond[quote,ragged-right]
+rhMusic = \relative c'' {
+ r2
+ c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ bes2.^\markup {\bold "Moderato"} r8
+ <<
+ {c,8[ d fis bes a] | }
+ \\
+ % Reposition the c2 to the right of the merged note
+ {c,8~ \once \override NoteColumn #'force-hshift = #1.0
+ % Move the c2 out of the main note column so the merge will work
+ \shiftOnn c2}
+ \\
+ % Stem on the d2 must be down to permit merging
+ {s8 \stemDown \once \override Stem #'transparent = ##t d2}
+ \\
+ {s4 fis4.}
+ >>
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\)
+}
+
+lhMusic = \relative c' {
+ r2 <c g ees>2( |
+ <d g, d>1)\arpeggio |
+ r2. d,,4 r4 r |
+ r4
+}
+
+\score {
+ \new PianoStaff <<
+ \new Staff = "RH" <<
+ \key g \minor
+ \rhMusic
+ >>
+ \new Staff = "LH" <<
+ \key g \minor
+ \clef "bass"
+ \lhMusic
+ >>
+ >>
+}
+@end lilypond
+
+Observamos en primer lugar que la parte de la mano derecha del tercer
+compás requiere cuatro voces. Son las cinco corcheas unidas por una
+barra, la nota Do ligada, el Re blanca que se funde con el Re corchea,
+y el Fa sostenido negra con puntillo, que también está fundida con la
+corchea de su misma altura. Todo lo demás está en una sola voz, así
+que lo más fácil es introducir estas cuatro voces temporalmente en el
+momento en que se necesiten. Si ha olvidado cómo hacerlo, lea
+@ref{I'm hearing Voices}. Vamos a comenzar introduciendo las notas
+como dos variables y disponiendo la estructura de pentagramas en un
+bloque score, y veremos qué produce LilyPond de forma predeterminada:
+
+@lilypond[quote,verbatim,ragged-right]
+rhMusic = \relative c'' {
+ r2 c4. g8 |
+ bes1~ |
+ \time 6/4
+ bes2. r8
+ % Start polyphonic section of four voices
+ <<
+ {c,8 d fis bes a | }
+ \\
+ {c,8~ c2 | }
+ \\
+ {s8 d2 | }
+ \\
+ {s4 fis4. | }
+ >>
+ g2.
+}
+
+lhMusic = \relative c' {
+ r2 <c g ees>2 |
+ <d g, d>1 |
+ r2. d,,4 r4 r |
+ r4
+}
+
+\score {
+ \new PianoStaff <<
+ \new Staff = "RH" <<
+ \key g \minor
+ \rhMusic
+ >>
+ \new Staff = "LH" <<
+ \key g \minor
+ \clef "bass"
+ \lhMusic
+ >>
+ >>
+}
+@end lilypond
+
+Todas las notas son correctas, pero el aspecto está lejos de ser
+satisfactorio. La ligadura de unión choca con el cambio de compás, el
+barrado del tercer compás es incorrecto, las notas no se funden
+correctamente, y faltan algunos elementos de notación. En primer
+lugar trataremos con lo más fácil. Podemos corregir el barrado de las
+corcheas insertando una barra manualmente, y podemos añadir fácilmente
+la ligadura de expresión de la mano izquierda y la ligadura de fraseo
+de la mano derecha, pues todo ello se estudió en el Tutorial. Al
+hacerlo así obtenemos:
+
+@lilypond[quote,verbatim,ragged-right]
+rhMusic = \relative c'' {
+ r2 c4.\( g8 |
+ bes1~ |
+ \time 6/4
+ bes2. r8
+ % Start polyphonic section of four voices
+ <<
+ {c,8[ d fis bes a] | }
+ \\
+ {c,8~ c2 | }
+ \\
+ {s8 d2 | }
+ \\
+ {s4 fis4. | }
+ >>
+ g2.\)
+}
+
+lhMusic = \relative c' {
+ r2 <c g ees>2( |
+ <d g, d>1) |
+ r2. d,,4 r4 r |
+ r4
+}
+
+\score {
+ \new PianoStaff <<
+ \new Staff = "RH" <<
+ \key g \minor
+ \rhMusic
+ >>
+ \new Staff = "LH" <<
+ \key g \minor
+ \clef "bass"
+ \lhMusic
+ >>
+ >>
+}
+@end lilypond
+
+El primer compás ahora es correcto. El segundo compás contiene un
+arpegio y acaba en una doble barra. ¿Cómo los hacemos, pues no han
+sido mencionados en este Manual de Aprendizaje? Aquí es donde tenemos
+que volver e la Referencia de la Notación. Buscando la palabra
+@q{arpegio} y @q{línea divisoria} en el índice nos muestra rápidamente
+que un arpegio se hace añadiendo @code{\arpeggio} a un acorde, y la
+doble barra se produce por medio de la instrucción @code{\bar "||"}.
+Esto podemos hacerlo fácilmente. A continuación tenemos que corregir
+la colisión entre la ligadura de unión y la indicación de compás.
+Esto se hace mejor moviendo la ligadura hacia arriba. Estudiamos cómo
+mover objetos anteriormente en @ref{Moving objects}, donde dice que
+los objetos que están situados de forma relativa al pentagrama se
+pueden mover sobreescribiendo su propiedad @code{staff-position}, que
+se especifica en unidades de medio espacio de pentagrama respecto de
+la línea central del pentagrama. Así pues, la sobreescritura
+siguiente colocada justo antes de la primera nota ligada subirá la
+ligadura 3.5 medios espacios de pentagrama por encima de la línea
+central:
+
+@code{\once \override Tie #'staff-position = #3.5}
+
+Con esto se completa el compás dos, dando como resultado:
+
+@lilypond[quote,verbatim,ragged-right]
+rhMusic = \relative c'' {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2. r8
+ % Start polyphonic section of four voices
+ <<
+ {c,8[ d fis bes a] | }
+ \\
+ {c,8~ c2 | }
+ \\
+ {s8 d2 | }
+ \\
+ {s4 fis4. | }
+ >>
+ g2.\)
+}
+
+lhMusic = \relative c' {
+ r2 <c g ees>2( |
+ <d g, d>1)\arpeggio |
+ r2. d,,4 r4 r |
+ r4
+}
+
+\score {
+ \new PianoStaff <<
+ \new Staff = "RH" <<
+ \key g \minor
+ \rhMusic
+ >>
+ \new Staff = "LH" <<
+ \key g \minor
+ \clef "bass"
+ \lhMusic
+ >>
+ >>
+}
+@end lilypond
+
+Vayamos ahora al tercer compás y comienzo de la sección Moderato. El
+tutorial nos enseñó cómo escribir texto en negrita mediante la
+instrucción @code{\markup}, por lo que añadir @q{Moderato} en negrita
+es fácil. Pero ahora ¿cómo fundimos notas que están en distintas
+voces? Aquí es donde debemos volver a buscar ayuda en el manual de
+Referencia de la notación. Al buscar la palabra @qq{merge} (mezcla) en
+el índice de la Referencia de la notación llegamos rápidamente a las
+instrucciones para mezclar notas con distinta cabeza y con o sin
+puntillo, en @ruser{Collision resolution}. En nuestro ejemplo tenemos
+que fusionar ambos tipos de nota en el transcurso de la sección
+polifónica del compás 3; por tanto, en virtud de la información que
+aparece en la Referencia de la Notación, escribimos
+
+@example
+\mergeDifferentlyHeadedOn
+\mergeDifferentlyDottedOn
+@end example
+
+@noindent
+al principio de la sección, y
+
+@example
+\mergeDifferentlyHeadedOff
+\mergeDifferentlyDottedOff
+@end example
+
+@noindent
+al final, dando como resultado:
+
+@lilypond[quote,verbatim,ragged-right]
+rhMusic = \relative c'' {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2.^\markup {\bold "Moderato"} r8
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ % Start polyphonic section of four voices
+ <<
+ {c,8[ d fis bes a] | }
+ \\
+ {c,8~ c2 | }
+ \\
+ {s8 d2 | }
+ \\
+ {s4 fis4. | }
+ >>
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\)
+}
+
+lhMusic = \relative c' {
+ r2 <c g ees>2( |
+ <d g, d>1)\arpeggio |
+ r2. d,,4 r4 r |
+ r4
+}
+
+\score {
+ \new PianoStaff <<
+ \new Staff = "RH" <<
+ \key g \minor
+ \rhMusic
+ >>
+ \new Staff = "LH" <<
+ \key g \minor
+ \clef "bass"
+ \lhMusic
+ >>
+ >>
+}
+@end lilypond
+
+Estas sobreescrituras han fundido los dos Fa sostenido, pero no los
+dos Re. ¿Por qué no? La respuesta está en la misma sección de la
+Referencia de la Notación: las notas que se fusionan deben tener las
+plicas en direcciones opuestas y dos notas no se pueden fusionar bien
+si hay una tercera nota en la misma columna. Aquí los dos Re tienen
+las plicas hacia arriba y hay una tercera nota: el Do. Sabemos cómo
+cambiar la dirección de la plica usando @code{\stemDown}, y la
+Referencia de la Notación también explica cómo mover el Do: aplicar un
+desplazamiento usando una de las instrucciones @code{\shift}. Pero
+¿cuál? El Do está en la voz dos que tiene desactivado el
+desplazamiento, y los dos Re están en las voces uno y tres, que tienen
+el desplazamiento desactivado y activado, respectivamente. Por ello
+tenemos que desplazar el Do un nivel más todavía, usando
+@code{\shiftOnn} para evitar que interfiera con los dos Re. Al
+aplicar estos cambios obtenemos:
+
+@cindex Tie, ejemplo de sobreescritura
+@cindex staff-position, propiedad, ejemplo
+
+@lilypond[quote,verbatim,ragged-right]
+rhMusic = \relative c'' {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2.^\markup {\bold "Moderato"} r8
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ % Start polyphonic section of four voices
+ <<
+ {c,8[ d fis bes a] | }
+ \\
+ % Move the c2 out of the main note column so the merge will work
+ {c,8~ \shiftOnn c2 | }
+ \\
+ % Stem on the d2 must be down to permit merging
+ {s8 \stemDown d2 | }
+ \\
+ {s4 fis4. | }
+ >>
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\)
+}
+
+lhMusic = \relative c' {
+ r2 <c g ees>2( |
+ <d g, d>1)\arpeggio |
+ r2. d,,4 r4 r |
+ r4
+}
+
+\score {
+ \new PianoStaff <<
+ \new Staff = "RH" <<
+ \key g \minor
+ \rhMusic
+ >>
+ \new Staff = "LH" <<
+ \key g \minor
+ \clef "bass"
+ \lhMusic
+ >>
+ >>
+}
+@end lilypond
+
+Ya casi está. Solamente quedan dos problemas: la plica hacia abajo
+sobre el Re fusionado no tendría que estar ahí, y el Do estaría mejor
+colocado a la derecha de los Re. Sabemos cómo hacer las dos cosas a
+partir de trucos anteriores: hacemos la plica transparente, y movemos
+el Do con la propiedad @code{force-hshift}. Aquí tenemos el resultado
+final:
+
+@cindex NoteColumn, ejemplo de sobreescritura
+@cindex force-hshift, propiedad, ejemplo
+@cindex Stem, ejemplo de sobreescritura
+@cindex transparent, propiedad, ejemplo
+
+@lilypond[quote,verbatim,ragged-right]
+rhMusic = \relative c'' {
+ r2
+ c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2.^\markup {\bold "Moderato"} r8
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ <<
+ {c,8[ d fis bes a] | }
+ \\
+ % Reposition the c2 to the right of the merged note
+ {c,8~ \once \override NoteColumn #'force-hshift = #1.0
+ % Move the c2 out of the main note column so the merge will work
+ \shiftOnn c2}
+ \\
+ % Stem on the d2 must be down to permit merging
+ {s8 \stemDown \once \override Stem #'transparent = ##t d2}
+ \\
+ {s4 fis4.}
+ >>
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\)
+}
+
+lhMusic = \relative c' {
+ r2 <c g ees>2( |
+ <d g, d>1)\arpeggio |
+ r2. d,,4 r4 r |
+ r4
+}
+
+\score {
+ \new PianoStaff <<
+ \new Staff = "RH" <<
+ \key g \minor
+ \rhMusic
+ >>
+ \new Staff = "LH" <<
+ \key g \minor
+ \clef "bass"
+ \lhMusic
+ >>
+ >>
+}
+@end lilypond
+
+
+@node Further tweaking
+@section Further tweaking
+
+@menu
+* Other uses for tweaks::
+* Using variables for tweaks::
+* Other sources of information::
+* Avoiding tweaks with slower processing::
+* Advanced tweaks with Scheme::
+@end menu
+
+@node Other uses for tweaks
+@subsection Other uses for tweaks
+
+@cindex transparent, uso de la propiedad
+@cindex objetos, hace invisibles
+@cindex eliminar objetos
+@cindex objetos, eliminar
+@cindex objetos, ocultar
+@cindex ocultar objetos
+@cindex invisibles, objetos
+@cindex objetos invisibles
+@cindex ligar notas entre voces distintas
+
+@subheading Tying notes across voices
+
+El ejemplo siguiente muestra cómo conectar notas que están en
+distintas voces utilizando ligaduras de unión. Normalmente sólo se
+pueden conectar mediante ligaduras de unión dos notas que estén en la
+misma voz. Usando dos voces, con las notas ligadas en una de ellas:
+
+@lilypond[quote,fragment,relative=2]
+<< { b8~ b8\noBeam }
+\\ { b[ g8] }
+>>
+@end lilypond
+
+@noindent
+y borrando la primera plica hacia arriba en esa voz, da la impresión
+de que la ligadura se cruza entre las voces:
+
+@cindex Stem, ejemplo de sobreescritura
+@cindex transparent, propiedad, ejemplo
+
+@lilypond[quote,fragment,relative=2,verbatim]
+<<
+ {
+ \once \override Stem #'transparent = ##t
+ b8~ b8\noBeam
+ }
+\\
+ { b[ g8] }
+>>
+@end lilypond
+
+Para estar seguros de que la plica que acabamos de borrar no aprieta
+demasiado a la ligadura, podemos alargar la plica estableciendo su
+valor de longitud @code{length} a @code{8},
+
+@lilypond[quote,fragment,relative=2,verbatim]
+<<
+ {
+ \once \override Stem #'transparent = ##t
+ \once \override Stem #'length = #8
+ b8~ b8\noBeam
+ }
+\\
+ { b[ g8] }
+>>
+@end lilypond
+
+@subheading Simulating a fermata in MIDI
+
+@cindex sello, uso de la propiedad
+@cindex fermata, realización en MIDI
+
+Para los objetos fuera-del-pentagrama, normalmente es mejor
+sobreescribir la propiedad @code{stencil} («sello») del objeto que su
+propiedad @code{transparent} cuando desee quitarlos de la salida
+impresa. Mediante el establecimiento de la propiedad @code{stencil}
+de un objeto al valor @code{#f} podemos quitar el objeto por completo
+de la salida impresa. Esto significa que no tiene efecto sobre la
+colocación de otros objetos que pudieran colocarse en relación a él.
+
+Por ejemplo, si quisiéramos cambiar la indicación metronómica con el
+propósito de simular un calderón en la salida MIDI, seguramente no
+querríamos que la indicación metronómica apareciese en la salida
+impresa, y no querríamos influir sobre la separación entre los dos
+sistemas ni sobre la colocación de las anotaciones adyacentes sobre el
+pentagrama. Por lo tanto, establecer su propiedad @code{stencil} al
+valor @code{#f} sería la mejor manera. Mostramos aquí el efecto de
+los dos métodos:
+
+@cindex MetronomeMark, ejemplo de sobreescritura
+@cindex transparent, propiedad, ejemplo
+
+@lilypond[quote,verbatim,ragged-right]
+\score {
+ \relative c'' {
+ % Visible tempo marking
+ \tempo 4=120
+ a4 a a
+ \once \override Score.MetronomeMark #'transparent = ##t
+ % Invisible tempo marking to lengthen fermata in MIDI
+ \tempo 4=80
+ a\fermata
+ % New tempo for next section
+ \tempo 4=100
+ a a a a
+ }
+ \layout { }
+ \midi { }
+}
+@end lilypond
+
+@cindex MetronomeMark, ejemplo de sobreescritura
+@cindex stencil, propiedad, ejemplo
+
+@lilypond[quote,verbatim,ragged-right]
+\score {
+ \relative c'' {
+ % Visible tempo marking
+ \tempo 4=120
+ a4 a a
+ \once \override Score.MetronomeMark #'stencil = ##f
+ % Invisible tempo marking to lengthen fermata in MIDI
+ \tempo 4=80
+ a\fermata
+ % New tempo for next section
+ \tempo 4=100
+ a a a a
+ }
+ \layout { }
+ \midi { }
+}
+@end lilypond
+
+@noindent
+Ambos métodos quitan de la salida impresa la indicación metronómica
+que alarga el calderón, y los dos afectan al tempo del MIDI tal y como
+queríamos, pero la indicación metronómica transparente de la primera
+línea fuerza una colocación muy alta de la indicación de tempo que
+sigue, meintras que la segunda (con el sello suprimido) no lo hace.
+
+@node Using variables for tweaks
+@subsection Using variables for tweaks
+
+@cindex variables, uso de, para trucos
+@cindex usar variables para hacer trucos
+@cindex trucos, usar variables para hacer
+
+Las instrucciones de sobreescritura son con frecuencia largas y
+tediosas de escribir, y se tienen que escribir de forma absolutamente
+correcta. Si las mismas sobreescrituras se van a utilizar muchas
+veces, podría merecer la pena definir variables para guardarlas.
+Suponga que queremos realzar ciertas palabras de la letra de una
+canción imprimiéndolas en cursiva y negrita. Las instrucciones
+@code{\italic} y @code{\bold} sólo funcionan dentro de la letra de las
+canciones si están incluidas dentro de un @code{\markup}, lo que las
+hace tediosas de escribir. ¿Podríamos, como alternativa, utilizar las
+instrucciones @code{\override} y @code{\revert}?
+
+@example
+@code{\override Lyrics . LyricText #'font-shape = #'italic}
+@code{\override Lyrics . LyricText #'font-series = #'bold}
+
+@code{\revert Lyrics . LyricText #'font-shape}
+@code{\revert Lyrics . LyricText #'font-series}
+@end example
+
+Estas instrucciones también serían extremadamente tediosas de escribir
+si hubiera muchas palabras que quisiéramos subrayar. Entonces, en vez
+de esto las definimos como dos variables, y las usamos de la siguiente
+forma, aunque normalmente quizá elegiríamos unos nombres de variable
+más cortos para que fueran más rápidos de teclear:
+
+@cindex LyricText, ejemplo de sobreescritura
+@cindex font-shape, propiedad, ejemplo
+@cindex font-series, propiedad, ejemplo
+
+@lilypond[quote,verbatim]
+emphasize = {
+ \override Lyrics . LyricText #'font-shape = #'italic
+ \override Lyrics . LyricText #'font-series = #'bold
+}
+normal = {
+ \revert Lyrics . LyricText #'font-shape
+ \revert Lyrics . LyricText #'font-series
+}
+
+global = { \time 4/4 \partial 4 \key c \major}
+SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a a g }
+AltoMusic = \relative c' { c4 | c4. c8 e4 e | f f e }
+TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
+BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
+VerseOne = \lyrics { E -- | ter -- nal \emphasize Fa -- ther, \normal | strong to save, }
+VerseTwo = \lyricmode { O | \emphasize Christ, \normal whose voice the | wa -- ters heard, }
+VerseThree = \lyricmode { O | \emphasize Ho -- ly Spi -- rit, \normal | who didst brood }
+VerseFour = \lyricmode { O | \emphasize Tri -- ni -- ty \normal of | love and pow'r }
+
+\score {
+ \new ChoirStaff <<
+ \new Staff <<
+ \clef "treble"
+ \new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
+ \new Voice = "Alto" { \voiceTwo \AltoMusic }
+ \new Lyrics \lyricsto "Soprano" { \VerseOne }
+ \new Lyrics \lyricsto "Soprano" { \VerseTwo }
+ \new Lyrics \lyricsto "Soprano" { \VerseThree }
+ \new Lyrics \lyricsto "Soprano" { \VerseFour }
+ >>
+ \new Staff <<
+ \clef "bass"
+ \new Voice = "Tenor" { \voiceOne \TenorMusic }
+ \new Voice = "Bass" { \voiceTwo \BassMusic }
+ >>
+ >>
+}
+@end lilypond
+
+
+@node Other sources of information
+@subsection Other sources of information
+
+La documentación del manual de Referencia de Funcionamiento Interno
+contiene montañas de información sobre LilyPond, pero se puede obtener
+más información aún leyendo los archivos internos de LilyPond. Para
+echarles un vistazo, en primer lugar debe buscar la carpeta
+correspondiente a su sistema. La ubicación de esta carpeta depende
+(a) de si consiguió el programa LilyPond descargando un binario
+precompilado desde el sitio web lilypond.org o si lo instaló mediante
+un gestor de paquetes (es decir, distribuido con Linux, o instalado
+bajo fink o cygwin) o fue compilado a partir de la fuente, y (b) de
+qué sistema operativo está utilizando:
+
+
+@strong{Descargado de lilypond.org}
+
+@itemize @bullet
+@item Linux
+
+Diríjase a
+@file{@var{CARPETA_DE_INSTALACIÓN}/lilypond/usr/share/lilypond/current/}
+
+@item MacOS X
+
+Diríjase a
+@file{@var{CARPETA_DE_INSTALACIÓN}/LilyPond.app/Contents/Resources/share/lilypond/current/}
+bien haciendo @code{cd} hacia este directorio desde el Terminal, o
+bien manteniendo pulsada la tecla de Control y haciendo click sobre la
+aplicación de LilyPond, y allí eligiendo @q{Mostrar el contenido del
+paquete}.
+
+@item Windows
+
+Mediante el Explorador de Windows, diríjase a
+@file{@var{CARPETA_DE_INSTALACIÓN}/LilyPond/usr/share/lilypond/current/}
+
+@end itemize
+
+@strong{Instalado mediante un gestor de paquetes o compilado a partir de la fuente}
+
+Diríjase a
+@file{@var{PREFIJO}/share/lilypond/@var{X.Y.Z}/}, donde @var{PREFIJO}
+se encuentra determinado por su administrador de paquetes o guión
+@code{configure}, y @var{X.Y.Z} es el número de la versión de
+LilyPond.
+
+@smallspace
+
+Dentro de esta carpeta, las dos subcarpetas interesantes son
+
+@itemize
+@item @file{ly/} - contiene archivos en formato LilyPond
+@item @file{scm/} - contiene archivos en formato Scheme
+@end itemize
+
+Vamos a comenzar observando algunos archivos que están en @file{ly/}.
+Abra @file{ly/property-init.ly} con un editor de textos. El mismo que
+usaría normalmente para los archivos @code{.ly} servirá perfectamente.
+Este archivo contiene las definiciones de todas las instrucciones
+estándar predefinidas de LilyPond, como por ejemplo @code{\stemUp} y
+@code{\slurDotted}. Podrá ver que no son nada más que definiciones de
+variables que contienen una o varias instrucciones @code{\override}.
+Por ejemplo, @code{/tieDotted} está definido de tal forma que su valor
+es:
+
+@example
+tieDotted = @{
+ \override Tie #'dash-period = #0.75
+ \override Tie #'dash-fraction = #0.1
+@}
+@end example
+
+Si no le gustan los valores predeterminados, estas instrucciones
+predefinidas se pueden redefinir con facilidad como cualquier otra
+variable, al principio de su archivo de código de entrada.
+
+Los siguientes son los archivos más útiles que se encuentran en
+@file{ly/}:
+
+@multitable @columnfractions .4 .6
+@headitem Archivo
+ @tab Contenido
+@item @file{ly/engraver-init.ly}
+ @tab Definiciones de Contextos de grabadores
+@item @file{ly/paper-defaults-init.ly}
+ @tab especificaciones de valores predeterminados relacionados con el papel
+@item @file{ly/performer-init.ly}
+ @tab Definiciones de Contextos de interpretación
+@item @file{ly/property-init.ly}
+ @tab Definiciones de todas las instrucciones predefinidas que son comunes
+@item @file{ly/spanner-init.ly}
+ @tab Definiciones de las instrucciones predefinidas relacionadas con los objetos de extensión
+@end multitable
+
+Otros ajustes (como las definiciones de las instrucciones de marcado)
+se almacenan como archivos @code{.scm} (de Scheme). El lenguaje de
+programación Scheme se utiliza para proporcionar un interfaz
+programable en el funcionamiento interno de LilyPond. Cualquier
+explicación adicional sobre estos archivos se encuentra por el momento
+fuera del ámbito de este manual, porque se requieren conocimientos del
+lenguaje Scheme. Se advierte a los usuarios que se necesita una
+importante cantidad de conocimientos técnicos o de tiempo para
+comprender el lenguaje Scheme y estos archivos (véase @ref{Scheme
+tutorial}).
+
+Si ya tiene estos conocimientos, los archivos de Scheme que pueden
+interesarle son:
+
+@multitable @columnfractions .4 .6
+@headitem Archivo
+ @tab Contenido
+@item @file{scm/auto-beam.scm}
+ @tab Valores predeterminados de sub-barrado
+@item @file{scm/define-grobs.scm}
+ @tab valores predeterminados de las propiedades de grobs
+@item @file{scm/define-markup-commands.scm}
+ @tab Especificar todas las instrucciones de marcado
+@item @file{scm/midi.scm}
+ @tab Ajustes predeterminados para la salida MIDI
+@item @file{scm/output-lib.scm}
+ @tab Ajustes que afectan al aspecto de los trastes, colores, alteraciones, lineas divisorias, etc.
+@item @file{scm/parser-clef.scm}
+ @tab Definiciones de las claves contempladas
+@item @file{scm/script.scm}
+ @tab Ajustes predeterminados para las articulaciones
+@end multitable
+
+
+
+@node Avoiding tweaks with slower processing
+@subsection Avoiding tweaks with slower processing
+
+LilyPond puede llevar a cabo comprobaciones adicionales al tiempo que
+procesa los archivos. Estas instrucciones consumen tiempo, pero el
+resultado puede necesitar menos trucos manuales para obtener un
+resultado aceptable. Si una inscripción de texto o parte de la letra
+se sale de los márgenes, estas comprobaciones comprimirán dicha línea
+en la medida justa como para que encaje dentro de los márgenes.
+
+Para que sean efectivos bajo cualquier circunstancia, estas
+comprobaciones deben habilitarse colocando las instrucciones de
+sobreescritura dentro del bloque @code{\with} dentro de un Score, y no
+en línea con la música, de la forma siguiente:
+
+
+@example
+\new Score \with @{
+ % asegura que las marcas de texto y letras de las canciones se encuentran dentro de los márgenes de la página
+ \override PaperColumn #'keep-inside-line = ##t
+ \override NonMusicalPaperColumn #'keep-inside-line = ##t
+@} @{
+ ..
+@}
+@end example
+
+@node Advanced tweaks with Scheme
+@subsection Advanced tweaks with Scheme
+
+Aunque es posible hacer muchas cosas con las instrucciones
+@code{\override} y @code{\tweak} , tenemos una forma incluso más
+poderosa de modificar el funcionamiento de LilyPond, a través de un
+interface programable hacia las operaciones internas de LilyPond. Se
+puede incorporar código escrito en el lenguaje de programación Scheme,
+directamente en el mecanismo de funcionamiento de LilyPond. Por
+supuesto, para hacer esto se necesitan al menos unos conocimientos
+básicos de programación en Scheme, y damos una introducción en el
+@ref{Scheme tutorial}.
+
+Como ejemplo que ilustra una de las muchas posibilidades, en lugar de
+dar a una propiedad un valor constante, se puede establecer al
+resultado de un procedimiento de Scheme que se invoca cada vez que
+LilyPond accede a esta propiedad. La propiedad se puede establecer
+dinámicamente a un valor determinado por el procedimiento en el
+momento en que se invoca. En este ejemplo damos a las cabezas de las
+notas un color que depende de su posición dentro del pentagrama.
+
+@cindex x11-color function, ejemplo de utilización
+@cindex NoteHead, ejemplo de sobreescritura
+@cindex color, propiedad, establecer a procedimiento de Scheme
+
+@lilypond[quote,verbatim,ragged-right]
+#(define (color-notehead grob)
+ "Color the notehead according to its position on the staff."
+ (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7)))
+ (case mod-position
+ ;; Return rainbow colors
+ ((1) (x11-color 'red )) ; for C
+ ((2) (x11-color 'orange )) ; for D
+ ((3) (x11-color 'yellow )) ; for E
+ ((4) (x11-color 'green )) ; for F
+ ((5) (x11-color 'blue )) ; for G
+ ((6) (x11-color 'purple )) ; for A
+ ((0) (x11-color 'violet )) ; for B
+ )
+ )
+)
+
+\relative c' {
+ % Arrange to obtain color from color-notehead procedure
+ \override NoteHead #'color = #color-notehead
+ c2 c' |
+ b4 g8 a b4 c |
+ c,2 a' |
+ g1 |
+}
+\addlyrics {
+ Some -- where o -- ver the Rain -- bow, way up high,
+}
+@end lilypond