Dear Urs,

Thanks so much for your advice. I tried both methods you suggest and
neither one worked, but this did ...

Originally I had:
\include "../Notes/flute.ily"
\include "part-init.ily"

I reversed the order of these two lines and now it works perfectly.
\include "part-init.ily"
\include "../Notes/flute.ily"

It is still producing an inp file for every single part though.

Craig


On Tue Feb 03 2015 at 10:54:36 AM Craig Dabelstein <
craig.dabelst...@gmail.com> wrote:

> Dear Urs,
>
> Thanks so much for your advice. I tried both methods you suggest and
> neither one worked, but this did ...
>
> Originally I had
>
>
> \include "part-init.ily"
> \include "../Notes/flute.ily"
>
> On Tue Feb 03 2015 at 9:51:03 AM Urs Liska <u...@openlilylib.org> wrote:
>
>>  Hi Craig,
>>
>> it's like I expected (and not related to \anntoate):
>>
>>
>> Am 03.02.2015 um 00:00 schrieb Craig Dabelstein:
>>
>> Hi Urs,
>>
>>
>>
>> Here is a zip of the complete project. There are 2 issues:
>>
>>  [1] If I put "part-init.ily" and "score-init.ily" in the top-most
>> folder (the same folder as "main-init.ily"), lilypond returns an error --
>> "cannot find "main-init-ily".
>>
>>
>> There are two ways how LilyPond treats include paths, relative and
>> non-relative.
>> By default LilyPond looks for \include files
>> - in a path relative to the location of the *compiled* file
>> - in a path relative to the include path (you'll get that from the error
>> message)
>>
>> Therefore: When you have
>>   \include "../score-init.ily "
>> and in that file you write
>>   \include "main-init.ily"
>> LilyPond will look for that file in the directory of the compiled file
>> and not in that of score-init.ily.
>>
>> There are two solutions to your problem:
>>
>> a)
>> exchange the second include for
>> \include "../main-init.ily"
>> b)
>> enter
>> #(ly:set-option 'relative-includes #t)
>> at the beginning of score-init.ily.
>> This will make LilyPond look in paths relative to the file where \include
>> is used.
>>
>> I suggest solution b) because that is usually more versatile for complex
>> include cascades.
>> (BTW I thought this was default behaviour by now ???)
>>
>>
>>
>>
>>  [2] With the "annotate" file included in the "main-init.ily" file, the
>> score engraves perfectly (and produces the inp file), but the parts won't
>> engrave at all and return errors as they can't find the "annotate" file.
>>
>>
>> This is a follow-up of the first issue, if main-init.ily isn't found then
>> (of course) the annotate include in that file isn't done too.
>> So this should now be solved automatically.
>>
>> Hope it works now.
>>
>> Best
>>
>> Urs
>>
>>
>>
>>  Many thanks,
>>
>>  Craig
>>
>>
>>
>>
>> On Tue Feb 03 2015 at 4:37:44 AM Urs Liska <u...@openlilylib.org> wrote:
>>
>>> Am 31.01.2015 um 18:23 schrieb Urs Liska:
>>> >
>>> >
>>> > Am 31. Januar 2015 18:14:23 MEZ, schrieb Craig Dabelstein <
>>> craig.dabelst...@gmail.com>:
>>> >> Urs,
>>> >>
>>> >> Another question ... Is there a reason why "main.init.ily",
>>> >> "part-init.ily"
>>> >> and "score-init.ily" can't be in the same folder?
>>> >>
>>> >> If I put "part" and "score" in a sub folder they can locate "main" in
>>> >> the
>>> >> folder above, however, if I put them all in the same folder I get
>>> >> "cannot
>>> >> find file main-init.ily" errors. Strange!
>>> >>
>>> >> Craig
>>> >>
>>>
>>> Sorry, forgot about this.
>>> Could you please send me your _exact_ directory structure?. Including
>>> being completely accurate about dots and hyphens?
>>>
>>> Urs
>>>
>>> >>
>>> >
>>> > I may look into it in a few hours.
>>> > Maybe a case for a tutorial ...
>>> >
>>> >> On Sun Feb 01 2015 at 3:11:35 AM Craig Dabelstein <
>>> >> craig.dabelst...@gmail.com> wrote:
>>> >>
>>> >>> Hi Urs,
>>> >>>
>>> >>> I followed your advice re: file structure -- "main-init.ily" has
>>> >> annotate,
>>> >>> and "part.init.ily" and "score-init.ily" include "main.init.ily".
>>> >>>
>>> >>> When engraving the score it all works perfectly, but when engraving a
>>> >>> part, it gives errors because it can't find "annotate".
>>> >>>
>>> >>> Any ideas?
>>> >>>
>>> >>> Craig
>>> >>>
>>> >>>
>>> >>> On Sat Jan 31 2015 at 4:58:58 PM Urs Liska <u...@openlilylib.org>
>>> >> wrote:
>>> >>>
>>> >>>>
>>> >>>>
>>> >>>> Am 31. Januar 2015 03:05:24 MEZ, schrieb Craig Dabelstein <
>>> >>>> craig.dabelst...@gmail.com>:
>>> >>>>> Thanks Urs,
>>> >>>>>
>>> >>>>> And you put the "\include annotate" code in the main-init.ily file?
>>> >>>>>
>>> >>>>
>>> >>>> Yes, and any similar code like the include of global-defs.ily etc.
>>> >> too.
>>> >>>>
>>> >>>> Urs
>>> >>>>
>>> >>>>> Craig
>>> >>>>>
>>> >>>>>
>>> >>>>> On Sat Jan 31 2015 at 8:05:57 AM Urs Liska <u...@openlilylib.org>
>>> >> wrote:
>>> >>>>>
>>> >>>>>>   Hi Craig,
>>> >>>>>>
>>> >>>>>>   Am 30.01.2015 um 17:59 schrieb Craig Dabelstein:
>>> >>>>>>
>>> >>>>>> Urs,
>>> >>>>>>
>>> >>>>>> Here is a zip of the complete project.
>>> >>>>>>
>>> >>>>>>
>>> >>>>>> Thank you, this was indeed instructive (and a nice score BTW).
>>> >>>>>>
>>> >>>>>> There is an issue with your set-up which I had immediately
>>> >> noticed
>>> >>>>> and
>>> >>>>>> wanted to tell you about, even before I realized you had a
>>> >> problem
>>> >>>>> with the
>>> >>>>>> annotations. I thought this would be only a matter of clean
>>> >> coding
>>> >>>>> but
>>> >>>>>> somehow this triggered your issue.
>>> >>>>>>
>>> >>>>>> Each annotation is generated multiple times - once for each time
>>> >> you
>>> >>>>>> included annotate.ily.
>>> >>>>>> So you should only include it once, which is what I would have
>>> >>>>> recommended
>>> >>>>>> anyway.
>>> >>>>>>
>>> >>>>>> Usually I have a set-up along these lines:
>>> >>>>>>
>>> >>>>>> One main-init.ily file with global definitions and includes that
>>> >>>>> apply for
>>> >>>>>> any file in the project.
>>> >>>>>>
>>> >>>>>> Two files like score-init.ily and part-init.ily.
>>> >>>>>> These include main-init.ily and add specific settings to score or
>>> >>>>> part
>>> >>>>>> compilation
>>> >>>>>>
>>> >>>>>> The score file includes score-init.ily and each part file
>>> >> includes
>>> >>>>>> part-init.ily
>>> >>>>>>
>>> >>>>>> This way everything is only included once, and can also be
>>> >> modified
>>> >>>>> in one
>>> >>>>>> single place.
>>> >>>>>>
>>> >>>>>> ###
>>> >>>>>> However, this is only a case of sloppy coding and shouldn't have
>>> >> such
>>> >>>>>> consequences, so I'll have to sort it out on "my" side.
>>> >>>>>>
>>> >>>>>> It seems each time you include annotate.ily you create a new
>>> >> instance
>>> >>>>> of
>>> >>>>>> the engraver.
>>> >>>>>> I had thought that re-including a file would simply be
>>> >> re-defining
>>> >>>>>> everything and be a waste of resources. But obviously when you do
>>> >>>>> \consist
>>> >>>>>> something multiply in a context it is actually doubled.
>>> >>>>>> So I assume the function definitions (and the engraver) are
>>> >> redefined
>>> >>>>> so
>>> >>>>>> later includes simply overwrite the earlier ones. But as the
>>> >> engraver
>>> >>>>> is
>>> >>>>>> consisted in the Staff context multiple times it is also executed
>>> >>>>> multiple
>>> >>>>>> times.
>>> >>>>>>
>>> >>>>>> If you carefully inspect the console output you will notice that
>>> >> the
>>> >>>>>> output file is rewritten multiple times too.
>>> >>>>>> Interestingly the engraver uses a global annotations list, so in
>>> >> a
>>> >>>>> first
>>> >>>>>> run annotations are appended to this list and in a second run
>>> >> they
>>> >>>>> are
>>> >>>>>> finally written out. (This is done to have a list that can be
>>> >> sorted
>>> >>>>> before
>>> >>>>>> outputting).
>>> >>>>>> This seems to result in all instances of the engraver adding
>>> >> their
>>> >>>>> copy of
>>> >>>>>> an annotation to the list so not only the output file is
>>> >> generated N
>>> >>>>> times
>>> >>>>>> but each annotation is produced N times.
>>> >>>>>>
>>> >>>>>> As said above the result is a harsh indicator of improper project
>>> >>>>>> structure but the module should be able to handle that
>>> >> gracefully. I
>>> >>>>> will
>>> >>>>>> think about if I just suppress multiple includes or if I find a
>>> >>>>> better way
>>> >>>>>> to structure the code in the first place.
>>> >>>>>>
>>> >>>>>> Thanks for reporting
>>> >>>>>> Best
>>> >>>>>>
>>> >>>>>> Urs
>>> >>>>>>
>>> >>>>>>
>>> >>>>>>
>>> >>>>>>
>>> >>>>>>
>>> >>>>>> On Fri Jan 30 2015 at 11:26:57 PM Urs Liska <u...@openlilylib.org>
>>> >>>>> wrote:
>>> >>>>>>
>>> >>>>>>>
>>> >>>>>>> Am 30.01.2015 um 08:16 schrieb Urs Liska:
>>> >>>>>>>
>>> >>>>>>>
>>> >>>>>>> Am 30.01.2015 um 08:13 schrieb Philippe Massart:
>>> >>>>>>>
>>> >>>>>>>   Probably not. I assume that hash hasn't been properly filtered.
>>> >>>>> Could you please post the generated .inp and maybe also the
>>> >> LilyPond
>>> >>>>> file?
>>> >>>>>>>
>>> >>>>>>> Urs
>>> >>>>>>>
>>> >>>>>>>
>>> >>>>>>>   These are based on the sample file included :
>>> >>>>>>>
>>> >>>>>>>
>>> >>>>>>> Ah, OK.
>>> >>>>>>> I see the offending LaTeX code, but I'll have to look into the
>>> >>>>> reason why
>>> >>>>>>> this is generated.
>>> >>>>>>> The #f in the first line of the .inp file is the result of
>>> >> exporting
>>> >>>>>>> something that evaluates to false.
>>> >>>>>>>
>>> >>>>>>> Urs
>>> >>>>>>>
>>> >>>>>>>
>>> >>>>>>>   It turns out that custom annotation types were not properly
>>> >>>>> handled.
>>> >>>>>>> \annotate looks up the LaTeX value in an alist dictionary, and
>>> >> for
>>> >>>>> custom
>>> >>>>>>> annotations this simply returned "#f".
>>> >>>>>>>
>>> >>>>>>> Pushed a fix, should work now.
>>> >>>>>>> Thanks for the report.
>>> >>>>>>>
>>> >>>>>>> Best
>>> >>>>>>>
>>> >>>>>>> Urs
>>> >>>>>>>   _______________________________________________
>>> >>>>>>> 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
>>> >
>>>
>>>
>>> --
>>> Urs Liska
>>> www.openlilylib.org
>>>
>>> _______________________________________________
>>> 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
>>
>
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to