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