# [texhax] macro for numbering footnotes on each page

Pierre MacKay pierre.mackay at comcast.net
Sun May 30 00:44:26 CEST 2010

On 05/29/2010 02:33 AM, Adam Fenn wrote:
>
>
>> Well ... I notice that \@@footnote is \let within
>> a \begingroup ... \endgroup nest; maybe try a \global
>> prefix on the \let and see if that helps,
>>
> With \global it runs without an error and produces footnotes
> but they do not start from one on each new page (they just run consecutively as normal).
>
>
Since I do not do Latex for anything but business invoices, I cannot be
positive of this, but surely the footnote mechanism has a global counter
that increments before or after each footnote. \show<footnotemacro>
might reveal this. Assuming it does (it really has to) the problem
reduces to a need to reset this counter globally just after each call to
your \output macro---you must have one somewhere.

As long as your footnotes are short enough to avoid breaking over into
the next page, this may be all you need. If there is a possibility of
breaking, the task is more complex, because you may have to monitor what
part of any long footnote is on what page.

Page breaking is asynchronous, and it is sometimes necessary to insert a
"pseudoparagraph" to get the regular page breaking mechanism to fire up
when */you/* want it to, and not when an arbitrarily long paragraph says
it ought to happen. That requires inspecting the penultimate version of
your text and inserting a paragraph break with a 0pt \parfillskip
followed by a \noindent before the rest of the long original paragraph.
I think I do this about ten times in each journal issue I set.
Occasionally I have to put an \eject before the \noindent.

\def\pseudopar{\parfillskip=0pt\par\parfillskip=0pt plus 1fil} % make
sure you restore the normal \parfillskip

Pseudopar is only necessary when the counter appears to have been reset
on the wrong footnote.

You can also inspect the penultimate printout for obvious cases of
misnumbered footnotes and, just preceding the note, force the
footnotenumber counter to restart (using a global) \count<whatever>=1
(or zero, depending on whether the footnote counter increments before or
after the footnote is committed to temporary storage).

You may find that you don't have to do this often. I have been surprised
by how effective it is to use the "pseudoparagraph" macro to trick the
output macro into setting things correctly.

Pierre MacKay
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://tug.org/pipermail/texhax/attachments/20100529/f3ec5c9f/attachment-0001.html>