Werner LEMBERG <w...@gnu.org> writes: >>> why are variable assignments not allowed in \bookpart? [...] >> >> Well, as far as I can see, assignments are also not allowed in >> books. > > Hmm... > >> And the reason mostly would be that books and bookparts don't have >> scope of their own (apart from book's \paper block). So even if it >> were allowed, it would end up just the same as a global assignment >> outside of the book/bookpart. > > OK. Even if \book and \bookpart don't provide `real' grouping (in the > lilypond sense), they contain data between `{' and `}' – let's call > this visual grouping. I consider it quite natural to put stuff into > `\bookmark { ... } ' to indicate that it belongs together. > >> Do you have a particular use case in mind? > > Yes. I have the following structure for a collection of piano pieces > > file-a.ly: left = ... > right = ... > > file-b.ly: left = ... > right = ... > ... > > and I would like to organize it as follows. > > \bookpart { > \include "file-a.ly" > \score { ... } > } > > \bookpart { > \include "file-b.ly" > \score { ... } > } > > ... > > Right now, I have to do this: > > \include "file-a.ly" > \bookpart { > \score { ... } > } > > \include "file-b.ly" > \bookpart { > \score { ... } > }
Well, yes. The former arrangement suggests a locality that is not there. Here is an example (where I use the Scheme equivalent of assignment): \book { \bookpart { #(define notecolor blue) \score { { \override NoteHead.color = #(lambda (grob) notecolor) c1 } } } \bookpart { #(define notecolor red) \score { { \override NoteHead.color = #(lambda (grob) notecolor) c1 } } } } Now wouldn't you expect, assuming assignment were allowed where #(define...) is not being used, that the bookparts would show different colors for the noteheads? Instead both of them have red noteheads because both use the same global variable `notecolor' and reference it when \book starts iterating the already assembled bookparts. So as long as everything refers to global variables _and_ bookparts are not iterated when they are encountered but only after the complete music expressions in a book have been collected, we are just asking for trouble by allowing assignment in places where the actual execution happens at a different time than the assignments would. -- David Kastrup _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel