I have again been trying to build up a sensible files-and-variables structure for more complex scores (e.g. orchestral pieces with several movements), and I seem once again to have run into the limitation that 'book' and 'bookpart' have no scope for variables. So I thought I would try Jan-Peter's parserDefine function, but I am still getting a problem. I cannot fathom whether I have used the function incorrectly, or whether what I am trying to do is outside of its functionality. I have pared my file down virtually to a minimum to demonstrate the problem. This is what I now have: %%%%% \version "2.19.48" \language "english" parserDefine = #(define-scheme-function (vkey val)(symbol? scheme?) (ly:parser-define! vkey val)) printFluteA = \new Staff \relative c'' { b1 | c \bar "|." | } printMvtOne = \new StaffGroup << \printFluteA >> \parserDefine printScoreMusic \bookpart { \score { \printMvtOne } } %printScore = \book { \bookOutputName "../ExperimentScore" \printScoreMusic } %%%%% When I compile this, the \printScoreMusic line produces a syntax error: unexpected BOOK_IDENTIFIER The funny thing is, that if I comment out the preceding \bookOutputName line, there is no error and the file compiles as one would expect. Can anyone shed light on this behaviour, and see a solution? David On Tue, 2016-11-08 at 07:44 +0100, Jan-Peter Voigt wrote: > Hello, > > here is a demo of the code: > > %%% snip > \version "2.19.49" > > % the 2.18 version would just use parser and layout in the signature > and > the additional parser-argument in the ly:parser-define! call > parserDefine = > #(define-scheme-function (vkey val)(symbol? scheme?) > (ly:parser-define! vkey val)) > > %%%% Demo > > \parserDefine music \relative c'' { c b bes a } > > { \music } > %%% /snip > > HTH > Jan-Peter > > Am 08.11.2016 um 07:06 schrieb Jan-Peter Voigt: > > > > Hello, > > > > in these situations I use a little scheme-function like this: > > > > parserDefine = > > #(define-scheme-function (key val)(symbol? scheme?) > > (ly:parser-define! key val)) > > > > !!!(I will correct this later, when I am on real computer ....) > > > > This scheme-function works on every level defining a variable into > > the > > current parser. > > > > HTH > > Jan-Peter > > > > Am 7. November 2016 23:55:00 MEZ, schrieb Simon Albrecht > > <simon.albre...@mail.de>: > > > > On 07.11.2016 17:56, David Kastrup wrote: > > > > David Sumbler <da...@aeolia.co.uk> writes: > > > > I had the following lines in the main file of my > > current > > Lilypond project: \book { \bookOutputName > > "../firstCello" > > partName = "Cello 1" \include "frontcover.ily" > > \bookpart { > > %music... The file "frontcover.ily" contains a > > \bookpart > > block which prints a front cover with title, composer > > etc. > > - these are defined elsewhere. But it needs one more > > variable, viz. 'partName'. I discovered that Lilypond > > will > > not accept a variable definition in Lilypond format in > > the > > position I have put it: at the top level of a \book > > block. > > Nor will it accept it in a \bookpart block. But at a > > higher or a lower level, it will. This seems a bit > > weird > > (to say the least), in view of the fact that by > > replacing > > the line partName = "Cello 1" with the Scheme form > > #(define partName "Cello 1") everything works as > > intended. > > Is there any useful reason why a variable cannot be > > defined in Lilypond format in these contexts? > > > > Because they would not be local to these contexts? > > > > > > In other words, to make this work, books and bookparts would > > need their > > own namespaces, am I right? What would be the drawbacks of > > that? I > > daresay it would be pretty intuitive to use, and I’ve also > > found myself > > wanting that feature in the past, mainly to simplify \include > > structures. > > > > Best, Simon > > > > --------------------------------------------------------------- > > --------- > > > > lilypond-user mailing list > > lilypond-user@gnu.org > > https://lists.gnu.org/mailman/listinfo/lilypond-user > > > > -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 > > Mail > > gesendet. > > > > _______________________________________________ > > lilypond-user mailing list > > lilypond-user@gnu.org > > https://lists.gnu.org/mailman/listinfo/lilypond-user >
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user