Thanks Urs, And you put the "\include annotate" code in the main-init.ily file?
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