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
Referencia de la notación:
Uso del break-alignable-interface
.
Manual de extensión: 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:
side-axis | direction | |
---|---|---|
propiedad | propiedad | colocación |
0 | -1 | izquierda |
0 | 1 | derecha |
1 | -1 | debajo |
1 | 1 | 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
y 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
y 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 dela 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
.
Cada tipo de objeto tiene su propio punto de referencia predeterminado, con el que se alinean las marcas de ensayo:
% The rehearsal mark will be aligned to the right edge of the Clef \override Score.RehearsalMark.break-align-symbols = #'(clef) \key a \major \clef treble \mark "↓" e'1 % The rehearsal mark will be aligned to the left edge of the Time Signature \override Score.RehearsalMark.break-align-symbols = #'(time-signature) \key a \major \clef treble \time 3/4 \mark "↓" e'2. % 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 e'1 \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 aligned to the right edge of the Key Signature \override Score.RehearsalMark.break-align-symbols = #'(key-signature clef) \key a \major \clef treble \mark "↓" e'1 % The rehearsal mark will be aligned to the right edge of 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 aligned with the right edge of the Key Signature \override Score.RehearsalMark.break-align-symbols = #'(key-signature) \key a \major \clef treble \time 4/4 \mark "↓" e'1 % The RehearsalMark will be centered above the Key Signature \once \override Score.KeySignature.break-align-anchor-alignment = #CENTER \mark "↓" \key a \major e'1 % The RehearsalMark will be aligned with the left edge of the Key Signature \once \override Score.KeySignature.break-align-anchor-alignment = #LEFT \key a \major \mark "↓" e'1
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 "↓" e'1 % 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 "↓" e'1