5.5.1 Alineación de objetos
Los objetos gráficos que soportan el interface
self-alignment-interface
y/o el side-position-interface
se pueden alinear contra un objeto colocado previamente, de diversas
maneras. Para ver una lista de estos objetos, consulte
self-alignment-interface y
side-position-interface.
Todos los objetos gráficos tienen un punto de referencia, una extensión horizontal y una extensión vertical. La extensión horizontal es una pareja de números que dan los desplazamientos a partir del punto de referencia de los bordes izquierdo y derecho, siendo negativos los desplazamientos hacia la izquierda. La extensión vertical es una pareja de números que dan el desplazamiento a partir del punto de referencia hasta los bordes inferior y superior, siendo negativos los desplazamientos hacia abajo.
La posición de un objeto sobre el pentagrama viene dada por los
valores de las propiedades X-offset
e Y-offset
. El
valor de X-offset
da el desplazamiento desde la coordenada X
del punto de referencia del objeto padre, y el valor de
Y-offset
da el desplazamiento a partir de la línea central del
pentagrama. Los valores de X-offset
y Y-offset
se
pueden establecer directamente o se puede dejar que se calculen por
parte de procedimientos para conseguir una alineación con el objeto
padre.
Nota: Muchos objetos tienen consideraciones de posicionamiento
especiales que hacen que se ignore o se modifique cualquier ajuste
realizado a X-offset
o a Y-offset
, a pesar de que el
objeto contemple el interface self-alignment-interface
. La
sobreescritura de las propiedades X-offset
ó Y-offset
a
un valor fijo hace que se descarte la respectiva propiedad
self-alignment
.
Por ejemplo, una alteración accidental se puede reposicionar
verticalmente estableciendo Y-offset
pero los cambios a
X-offset
no tienen ningún efecto.
Las letras de ensayo se pueden alinear con objetos divisibles como
líneas divisorias, claves, armaduras e indicaciones de compás. Hay
propiedades especiales que se encuentran en
break-aligned-interface
para el posicionamiento de las letras
de ensayo sobre dichos objetos.
Véase también
Uso del break-alignable-interface
,
Funciones de callback.
Establecer directamente X-offset y Y-offset | ||
Uso del side-position-interface | ||
Uso del self-alignment-interface | ||
Uso del break-alignable-interface |
Establecer directamente X-offset
y Y-offset
Se pueden dar valores numéricos a las propiedades X-offset
y
Y-offset
de muchos objetos. El ejemplo siguiente muestra tres
notas con una digitación en su posición predeterminada y con los
valores X-offset
y Y-offset
modificados.
a-3 a -\tweak #'X-offset #0 -\tweak #'Y-offset #0 -3 a -\tweak #'X-offset #-1 -\tweak #'Y-offset #1 -3
Uso del side-position-interface
Un objeto que contempla el side-position-interface
se puede
colocar junto a su objeto padre de forma que los bordes especificados
de los dos objetos se toquen. El objeto se puede situar encima,
debajo, a la derecha o a la izquierda del objeto padre. El padre no
se puede especificar; viene determinado por el orden de los elementos
en el flujo de entrada. Casi todos los objetos tienen la cabeza de la
nota asociada como padre.
Los valores de las propiedades side-axis
y direction
determinan dónde colocar el objeto, como sigue:
| | |
---|---|---|
propiedad | propiedad | colocación |
| | izquierda |
| | derecha |
| | debajo |
| | encima |
Si side-axis
es 0
, X-offset
se debe establecer al
procedimiento ly:side-position-interface::x-aligned-side
. Este
procedimiento devuelve el calor correcto de X-offset
para
situar el objeto al lado izquierdo o derecho del padre de acuerdo con
el valor de direction
.
Si side-axis
es 1
, Y-offset
se debe establecer al
procedimiento ly:side-position-interface::y-aligned-side
. Este
procedimiento devuelve el valor correcto de Y-offset
para
situar el objeto encima o debajo del padre de acuerdo con el valor de
direction
.
Uso del self-alignment-interface
Auto-alineación horizontal de los objetos
La alineación horizontal de un objeto que contempla el interface
self-alignment-interface
está controlada por el valor de la
propiedad self-alignment-X
, siempre y cuando la propiedad
X-offset
de este objeto esté establecida a
ly:self-alignment-interface::x-aligned-on-self
. Se le puede
dar a self-alignment-X
cualquier valor real, en unidades de la
mitad de la extensión X total del objeto. Los valores negativos
mueven el objeto a la derecha, los positivos hacia la izquierda. Un
valor de 0
centra el objeto sobre el punto de referencia de su
padre, un valor de -1
alinea el borde izquierdo del objeto
sobre el punto de referencia de su padre, y un valor de 1
alinea el borde derecho del objeto sobre el punto de referencia de su
padre. Se pueden usar los símbolos LEFT
, CENTER
y
RIGHT
en sustitución de los valores -1, 0, 1
,
respectivamente.
Normalmente se usaría la instrucción \override
para modificar
el valor de self-alignment-X
, pero se puede usar la instrucción
\tweak
para alinear varias anotaciones por separado sobre una
sola nota:
a' -\tweak #'self-alignment-X #-1 ^"left-aligned" -\tweak #'self-alignment-X #0 ^"center-aligned" -\tweak #'self-alignment-X #RIGHT ^"right-aligned" -\tweak #'self-alignment-X #-2.5 ^"aligned further to the right"
Auto-alineación vertical de los objetos
Los objetos se pueden alinear verticalmente en una forma análoga a la
alineación horizontal si la propiedad Y-offset
está establecida
a ly:self-alignment-interface::y-aligned-on-self
. Sin embargo,
a menudo se encuentran implicados otros mecanismos en la alineación
vertical: el valor de Y-offset
es tan sólo una variable que se
tiene en cuenta. Esto puede hacer que ajustar el valor de ciertos
objetos sea una tarea dificultosa. Las unidades son sólo la mitad de
las dimensiones verticales del objeto, que suele ser bastante pequeño,
por lo que pueden requerirse números bastante grandes. Un valor de
-1
alinea el borde inferior del objeto con el punto de
referencia del objeto padre, un valor de 0
alinea el centro del
objeto con el punto de referencia del padre, y un valor de 1
alinea el borde superior del objeto con el punto de referencia del
padre. Se pueden usar los símbolos DOWN
, CENTER
,
UP
en sustitución de -1, 0, 1
respectivamente.
Auto-alineación de objetos en las dos direcciones
Estableciendo tanto X-offset
como Y-offset
, se puede
alinear un objeto en las dos direcciones simultáneamente.
El ejemplo siguiente muestra cómo ajustar una digitación de forma que se acerque a la cabeza de la nota.
a -\tweak #'self-alignment-X #0.5 % move horizontally left -\tweak #'Y-offset #ly:self-alignment-interface::y-aligned-on-self -\tweak #'self-alignment-Y #-1 % move vertically up -3 % third finger
Uso del break-alignable-interface
Las letras de ensayo se pueden alinear con objetos de notación
distintos a las barras de compás. Estos objetos son ambitus
,
breathing-sign
, clef
, custos
, staff-bar
,
left-edge
, key-cancellation
, key-signature
y
time-signature
.
De forma predeterminada, las letras de ensayo y los números de compás se centran horizontalmente sobre el objeto:
% The rehearsal mark will be centered above the Clef \override Score.RehearsalMark #'break-align-symbols = #'(clef) \key a \major \clef treble \mark "↓" e1 % The rehearsal mark will be centered above the Time Signature \override Score.RehearsalMark #'break-align-symbols = #'(time-signature) \key a \major \clef treble \time 3/4 \mark "↓" e2. % The rehearsal mark will be centered above the Breath Mark \override Score.RehearsalMark #'break-align-symbols = #'(breathing-sign) \key a \major \clef treble \time 4/4 e1 \breathe \mark "↓"
Se puede especificar una lista de posibles objetos para la alineación.
Si algunos de los objetos son invisibles en ese punto debido al valor
de break-visibility
o a valores de visibilidad explícitos para
las armaduras y las claves, la letra de ensayo o número de compás se
alinean con el primer objeto de la lista que sea visible. Si ningún
objeto de la lista es visible, el objeto se alinea con la línea
divisoria. Si la línea divisoria es invisible, el objeto se alinea
con el punto en el que se encontraría la línea divisoria.
% The rehearsal mark will be centered above the Key Signature \override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef) \key a \major \clef treble \mark "↓" e1 % The rehearsal mark will be centered above the Clef \set Staff.explicitKeySignatureVisibility = #all-invisible \override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef) \key a \major \clef bass \mark "↓" gis,,1 % The rehearsal mark will be centered above the Bar Line \set Staff.explicitKeySignatureVisibility = #all-invisible \set Staff.explicitClefVisibility = #all-invisible \override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef) \key a \major \clef treble \mark "↓" e''1
La alineación de la letra de ensayo con relación al objeto de notación se puede cambiar, como se ve en el ejemplo siguiente. En una partitura con varios pentagramas, este ajuste se debe hacer para todos los pentagramas.
% The RehearsalMark will be centered above the Key Signature \override Score.RehearsalMark #'break-align-symbols = #'(key-signature) \key a \major \clef treble \time 4/4 \mark "↓" e1 % The RehearsalMark will be aligned with the left edge of the Key Signature \once \override Score.KeySignature #'break-align-anchor-alignment = #LEFT \mark "↓" \key a \major e1 % The RehearsalMark will be aligned with the right edge of the Key Signature \once \override Score.KeySignature #'break-align-anchor-alignment = #RIGHT \key a \major \mark "↓" e1
La letra de ensayo también se puede desplazar al borde derecho o izquierdo en una medida arbitraria. Las unidades son espacios de pentagrama:
% The RehearsalMark will be aligned with the left edge of the Key Signature % and then shifted right by 3.5 staff-spaces \override Score.RehearsalMark #'break-align-symbols = #'(key-signature) \once \override Score.KeySignature #'break-align-anchor = #3.5 \key a \major \mark "↓" e1 % The RehearsalMark will be aligned with the left edge of the Key Signature % and then shifted left by 2 staff-spaces \once \override Score.KeySignature #'break-align-anchor = #-2 \key a \major \mark "↓" e1