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

Reply via email to