Thanks to everyone who responded. Here is a short synopsis of the problem as
well as my solution.
The problem is simply that a "\mark{}" within a "\vtop" (or \vbox) does not
propagate out to the main list. Thus, it is not possible to use a "mark"
directly to find out what footnotes (for example) are on a page, if a footnote
is within such a box. In my particular application, most of the text is within
rigidly defined boxes.
The problem is further exacerbated by the fact that the page-breaking algorithm
sometimes chooses to put a paragraph on the following page rather than on the
page you thought it would be on. That is to say, the "\output" routine may be
invoked after you have seen a paragraph (e.g. with footnotes), but that
paragraph may be stuck on the following page. This implies that a simply
"keeping track" of footnotes between invocations of "\output" is not sufficient
to properly track footnotes.
"\mark"s are the perfect solution, if they show up! It turns out to be
possible to do things my way and still use marks:
Before "committing" my vbox with footnotes to the main list, I first "vsplit" a
copy of it:
\setbox0\vsplit\textbox to 100in
The really large dimension is simply to ensure that all the text in the box I'm
committing is in the "split" part.
Then, code like:
\if\isinteger{\splitfirstmark}
\mark{\number\splitfirstmark}
\fi
\if\isinteger{\splitbotmark}
\mark{\number\splitbotmark}
\fi
is used to "propagate" the first and last marks on the "split" box. This
ensures that the information I stashed away in my footnote macro will be
visible in the "\output" routine.
Similar code is used when one of my vtops is vsplit, but that's just
fine-tuning.
I chose to do something wasteful, but which works very well so far: I keep
every footnote in an "\hbox", in an array of boxes allocated using
"\globboxvector". As long as I don't exceed the number allocated at one go,
there's no problem.
In my page layout, I figure out how much space is left by making a "footnote
paragraph" containing all the footnotes pertaining to the page, and getting its
dimensions. On "\output", I also get rid of the "\hboxes" (this also prevents
inadvertantly duplicating a footnote).
Hope this is helpful to someone besides me, it sure was interesting figuring
this out...
Best regards,
Ron
--
Sending me something private?
Use my GPG public key: AD29415D
--------------------------------------------------
Subscriptions, Archive, and List information, etc.:
http://tug.org/mailman/listinfo/xetex