4.4.2 Posicionament explícit dels pentagrames i els sistemes
Una forma d’entendre els mecanismes de l’espaiat vertical flexible que s’han explicat més a dalt es com una col·lecció d’ajustaments que controlen la quantitat de farciment vertical entre els pentagrames i els sistemes.
És possible enfrontar-se a l’espaiat vertical d’una forma diferent utilitzant
NonMusicalPaperColumn.line-break-system-details
.
Mentre que els mecanismes de l’espaiat vertical flexible
especifiquen farciment vertical,
NonMusicalPaperColumn.line-break-system-details
pot
especificar posicions verticals exactes sobre la pàgina.
NonMusicalPaperColumn.line-break-system-details
accepta una
llista associativa de quatre ajustament diferents:
-
X-offset
(desplaçament en X) -
Y-offset
(desplaçament en Y) -
extra-offset
(desplaçament addicional) -
alignment-distances
(distancies d’alineació)
Les sobreescriptures dels objectes gràfics, entre elles las de
NonMusicalPaperColumn
que apareixen més avall, poden
ocórrer en tres llocs diferents dins d’un fitxer d’entrada:
- directament en mig de las notes
- en un bloc
\context
- en el bloc
\with
Quan sobreescrivim NonMusicalPaperColumn
, usem l’ordre
\override
usual en els blocs \context
i en el bloc
\with
. Per una altra part, quan sobreescrivim
NonMusicalPaperColumn
en mig de les notes, hem d’usar
l’ordre especial \overrideProperty
. A continuació es poden
trobar algunes sobreescriptures de
NonMusicalPaperColumn
d’exemple amb l’ordre especial
especial \overrideProperty
:
\overrideProperty NonMusicalPaperColumn.line-break-system-details #'((X-offset . 20)) \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 40)) \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((X-offset . 20) (Y-offset . 40)) \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((alignment-distances . (15))) \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((X-offset . 20) (Y-offset . 40) (alignment-distances . (15)))
Per entendre com funciona cada un dels diferents ajustament, comencem observant un exemple que no inclou absolutament cap sobreescriptura.
\header { tagline = ##f } \paper { left-margin = 0\mm } \book { \score { << \new Staff << \new Voice { s1*5 \break s1*5 \break s1*5 \break } \new Voice { \repeat unfold 15 { c'4 c' c' c' } } >> \new Staff { \repeat unfold 15 { d'4 d' d' d' } } >> } }
Aquesta partitura manté aïllada tant la informació dels salts de línia com els de pàgina d’una veu dedicada a això. Aquesta tècnica de crear una veu de salts ajuda a mantenir separada de l’escriptura de notes conforme l’exemple es torna més complicat. Consulteu Salts.
Utilitzant ordres \break
explícites, la música es
divideix en línies de cinc compassos cada una. L’espaiat vertical
prové dels ajustos predeterminats del LilyPond però el punt
d’origen vertical de cada sistema es fixa explícitament usant el
parell Y-offset
a l’atribut
line-break-system-details
del grob (objecte gràfic)
NonMusicalPaperColumn
:
\header { tagline = ##f } \paper { left-margin = 0\mm } \book { \score { << \new Staff << \new Voice { \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 0)) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 40)) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 60)) s1*5 \break } \new Voice { \repeat unfold 15 { c'4 c' c' c' } } >> \new Staff { \repeat unfold 15 { d'4 d' d' d' } } >> } }
Observeu que line-break-system-details
pren una llista
associativa d’una quantitat de valors potencialment elevada, però
aquí sols establim un valor. Observeu també que aquí la propietat
Y-offset
determina la posició vertical exacta sobre la
pàgina en la qual es traçarà cadascú dels nous sistemes.
En contrast amb la localització absoluta que es pot fer usant
Y-offset
y X-offset
, es possible una localització
relativa amb la propietat extra-offset
de
line-break-system-details
. La col·locació és relativa a la
disposició predeterminada o al posicionament absolut creat
mitjançant l’establiment dels valors de X-offset
i de
Y-offset
. La propietat extra-offset
accepta una
parella de nombres (un pair
) que consisteix en
desplaçaments al llarg dels eixos X i Y.
\header { tagline = ##f } \paper { left-margin = 0\mm } \book { \score { << \new Staff << \new Voice { s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((extra-offset . (0 . 10))) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((extra-offset . (0 . 10))) s1*5 \break } \new Voice { \repeat unfold 15 { c'4 c' c' c' } } >> \new Staff { \repeat unfold 15 { d'4 d' d' d' } } >> } }
Ara que hem establert explícitament el punt d’origen vertical de
cada sistema, podem també establir manualment les distàncies
verticals entre els pentagrames dins de cada sistema. Ho fem
usant la subpropietat alignment-distances
de
line-break-system-details
.
\header { tagline = ##f } \paper { left-margin = 0\mm } \book { \score { << \new Staff << \new Voice { \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 20) (alignment-distances . (10))) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 60) (alignment-distances . (15))) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 85) (alignment-distances . (20))) s1*5 \break } \new Voice { \repeat unfold 15 { c'4 c' c' c' } } >> \new Staff { \repeat unfold 15 { d'4 d' d' d' } } >> } }
Observeu que aquí assignem dos valors diferents a l’atribut
line-break-system-details
del grob
NonMusicalPaperColumn
. Tot i que l’atribut alist de
line-break-system-details
accepta molts paràmetres
d’espaiat addicionals (entre ells, per exemple, un parell
X-offset
corresponent), sols hem d’establir el desplaçament
Y-offset
y els parells alignment-distances
per
controlar el punt d’origen vertical de cada sistema i pentagrama.
Finalment, observeu que alignment-distances
especifica el
posicionament vertical dels pentagrames però no dels grups de pentagrames.
\header { tagline = ##f } \paper { left-margin = 0\mm } \book { \score { << \new Staff << \new Voice { \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 0) (alignment-distances . (30 10))) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 60) (alignment-distances . (10 10))) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 100) (alignment-distances . (10 30))) s1*5 \break } \new Voice { \repeat unfold 15 { c'4 c' c' c' } } >> \new StaffGroup << \new Staff { \repeat unfold 15 { d'4 d' d' d' } } \new Staff { \repeat unfold 15 { e'4 e' e' e' } } >> >> } }
Alguns punts a tenir en compte:
- En usar
alignment-distances
, la lletra i d’altres línies que no són pautes no compten com un pentagrama. - Les unitats dels nombres que es passen a
X-offset
,Y-offset
,extra-offset
ialignment-distances
s’interpreten com múltiples de la distància entre línies de pentagrama adjacents. Els valors positius mouen als pentagrames i a la lletra cap amunt, els valors negatius mouen els pentagrames i la lletra cap avall. - A causa que els ajustaments
NonMusicalPaperColumn.line-break-system-details
donats aquí permeten el posicionament de pentagrames i sistemes en qualsevol lloc de la pàgina, és possible violar els marges o els límits del paper, o fins i tot imprimir pentagrames o sistemes uns a sobre dels altres. Això s’evitaria passant als diferents ajustaments uns valors raonables.
Vegeu també
Fragments de codi: Spacing.