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