lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Deeply nested staff groups


From: Reinhold Kainhofer
Subject: Re: Deeply nested staff groups
Date: Sun, 28 Oct 2007 23:27:36 +0100
User-agent: KMail/1.9.6

Am Sonntag, 28. Oktober 2007 schrieb Rune Zedeler:
> Reinhold Kainhofer skrev:
> > Hi,
> > I understand that for nested StaffGroups, one needs to use
> > InnerStaffGroup for the inner groups, however, this seems to add only one
> > more possible level to the hierarchy. Attached is an example where the
> > innermost InnerStaffGroup is not shown in the correct hierarchy, but
> > rather after the enclosing InnerStaffGroup. What am I doing wrong?
>
> You cannot stuff contexts into contexts of the same types because this
> would lead to some cyclic dependencies.

Hmm, it seems that my musicxml2ly development is really pushing the edges of 
lilypond quite frequently.... 
MusicXML files can have arbitrarily nested (actually overlapping, but that's 
not supported by lilypond anyway) part groups. See e.g. 
http://reinhold.kainhofer.com/temp/Musicxml2ly_SampleFiles/collated-files.html
In the 08b-StaffGroups-Finale.ly file, the [[Oboe, English Horn], Clarinet] 
should also be a StaffGroup... 

From a user's POV, even requiring InnerStaffGroup instead of StaffGroup is not 
obvious. After all, as a user, I simply want to group together some staves. 
Why does the depth matter (of course, internally it does, but I'm not taking 
about internals)?

This shows once more that lilypond is rather a programming language, which 
offers a powerful interface to the deep-level layout machine. You can do a 
lot, but these things require manual intervention by the user and cannot 
easily be automated (i.e. created by a program). You realize that when you 
are working on such a converter....

Cheers,
Reinhold

> To get three layers of staff groups you need to add a new Context,
> InnerInnerStaffGroup:
>
> \layout {
>    \context {
>      \InnerStaffGroup
>      \name InnerInnerStaffGroup
>    }
>    \context {
>      \InnerStaffGroup
>      \accepts InnerInnerStaffGroup
>    }
> }
>
> After that, you can use InnerInnerStaffGroup instead of the innermost
> innerstaffgroup.




-- 
------------------------------------------------------------------
Reinhold Kainhofer, Vienna University of Technology, Austria
email: address@hidden, http://reinhold.kainhofer.com/
 * Financial and Actuarial Mathematics, TU Wien, http://www.fam.tuwien.ac.at/
 * K Desktop Environment, http://www.kde.org, KOrganizer maintainer
 * Chorvereinigung "Jung-Wien", http://www.jung-wien.at/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]