5.1.7 Ordre de disposició dels contextos

Els contextos es disposen en un sistema normalment des de dalt cap a baix a l’ordre en el qual es troben al fitxer d’entrada. Quan els contextos es nien uns a dins dels altres, el context exterior inclou els contextos niuats tal i com s’especifica al fitxer d’entrada, sempre i quan els contextos interiors estiguin inclosos a la llista “accepts” del context extern. Els contextos niuats que no estiguin inclosos a la llista “accepts” del context extern es recol·loquen a sota del context extern en lloc de niuar-se dins d’ell.

La llista “accepts” d’un context es pot canviar amb les ordres \accepts (accepta) o \denies (denega). \accepts afegeix un context a la llista “accepts” i \denies elimina un context de la llista.

Per exemple, un grup de pentagrames amb un claudàtor no es troba normalment a l’interior d’un pentagrama amb clau que tingui connectats les línies divisòries, i un GrandStaff per a piano no accepta un StaffGroup dins d’ell, de forma predeterminada.

\score {
  \new GrandStaff <<
    \new StaffGroup <<
      \new Staff { c'1 }
      \new Staff { d'1 }
    >>
    \new Staff { \set Staff.instrumentName = bottom f'1 }
  >>
}

[image of music]

Malgrat això, usant l’ordre \accepts, es pot afegir un StaffGroup al context GrandStaff:

\score {
  \new GrandStaff <<
    \new StaffGroup <<
      \new Staff { c'1 }
      \new Staff { d'1 }
    >>
    \new Staff { \set Staff.instrumentName = bottom f'1 }
  >>
  \layout {
    \context {
      \GrandStaff
      \accepts StaffGroup
    }
  }
}

[image of music]

\denies s’usa principalment quan un context nou s’està basant en un altre, però els niuats requerits difereixen. Per exemple, el context VaticanaStaff està basat en el context Staff, però amb el context VaticanaVoice substituït pel context Voice a la llista “accepts”.

Observeu que discretament es crea un context de forma implícita si es troba una ordre on no hi ha un context apropiat per contenir-lo.

Dins d’una definició de context, el tipus d’un subcontext que es va crear implícitament s’especifica usant \defaultchild (fill predeterminat). Alguns esdeveniments musicals requereixen un context ‘Bottom’ (inferior): qua es troba aquest esdeveniment, es creen subcontextos de forma recursiva fins que s’assoleix un context que no té establert el ‘defaultchild’.

La creació implícita de contextos pot donar lloc a inesperats pentagrames nous o inesperades partitures noves. La utilització de \new per crear contextos explícitament evita aquests problemes.

En ocasions cal que un context existeixi dins un breu interval de temps, sent un bon exemple el context de pentagrama d’un ossia. Això s’aconsegueix normalment mitjançant la introducció de la definició del context en el lloc apropiat en paral·lel amb la secció corresponent de la música principal. De forma predeterminada, el context temporal es col·loca a sota de tots els contextos existents. Per tornar-lo a posicionar per sobre del context que tingui el nom “principal”, s’hauria de definir d’aquesta forma:

\new Staff \with { alignAboveContext = "principal" }

Es presenta una situació semblant quan es posiciona un context temporal de lletra d’una cançó dins d’una disposició de diversos pentagrames tal com ChoirStaff, per exemple, quan s’afegeix una segona estrofa a una secció que es repeteix. De forma predeterminada, el context temporal de lletra es col·loca a sota dels pentagrames inferiors. Mitjançant la definició del context temporal de lletra amb alignBelowContext es pot posicionar correctament a sota del context de lletra amb nom que conté el text de la primera estrofa.

En diversos llocs poden veure’s exemples que mostren aquesta recol·locació de contextos temporals: vegeu Niuat d’expressions musicals, Modificació de pentagrames separats i Tècniques específiques per a les lletres.

Vegeu també

Manual d’aprenentatge: Niuat d’expressions musicals.

Referència de la notació: Modificació de pentagrames separats, Tècniques específiques per a les lletres.

Manual d’utilització del programa: Apareix un pentagrama de més.

Fitxers instal·lats: ly/engraver-init.ly.


Referència de la notació del GNU LilyPond v2.25.22 (development-branch).