Urs Liska <address@hidden> writes:
Am 14.06.2018 um 13:32 schrieb David Kastrup:
From the Engraver tutorial in the Contributor's Guide (Acknowledging grobs):
Acknowledge functions are called in the order engravers are
‘\consist’-ed (the only exception is if you set ‘must-be-last’ to ‘#t’).
There will always be a call to ‘process-acknowledged ()’ whenever
grobs have been created, and _reading_ stuff from grobs should be
delayed until then since other acknowledgers might _write_ stuff into a
grob even after your acknowledger has been called. So the basic
workflow is to use the various acknowledgers to _record_ the grobs you
are interested in and _write_ stuff into them (or do read/write stuff
that more or less is accumulative and/or really unrelated to other
engravers), and then use the ‘process-acknowledged ()’ hook for
processing (including _reading_) the grobs you had recorded.
You can create new grobs in ‘process-acknowledged ()’. That will
lead to a new cycle of ‘acknowledger ()’ calls followed by a new cycle
of ‘process-acknowledged ()’ calls.
Note that tweaks are applied by the acknowledger in the Tweak_engraver.
OK, this seems to be the culprit. Do I get this right that the tweaks
are applied to a grob only *after* my grob acknowledger sees the grob?
Then it is relevant that ...
I repeat my advice to read the Engraver tutorial. Really. In this
case, the central paragraph I quoted is very, very relevant.
... I did read that but it didn't help me. Nowhere did *I* write into
grobs or even created new ones, so I couldn't actually know these
paragraphs are relevant to my case.
Come again?
There will always be a call to ‘process-acknowledged ()’ whenever
grobs have been created, and _reading_ stuff from grobs should be
delayed until then
You are reading stuff from grobs, so this should be delayed to the
process-acknowledged stage. It says you should do this for _reading_.
Not for creating grobs or writing into grobs. For _reading_.
This is just another point for the case I'm often making that much of
our documentation on that level is too complicated insofar as you're
only getting to the point of understanding it when you don't really
need it anymore.
I'll readily admit that Scheme engravers are underdocumented. But the
engraver tutorial here, once you get pointed to it, is very clear about
the order of things and what to do when.
Can you point to anything that could be clearer here?