> I have found a problem with pagination in MM. In > the following example, the bottom margin is dif- > ferent for the first page (which ends with a > filled line of text) and the second page (which > ends with a non-filled line of a footnote). [snip]
My guess is that it's a bug in m.tmac. If you look at macro p...@footer, you'll see that it spaces to |\\n[pg*foot-trap]u+1v before printing the footnotes, one line *below* the point where they "should" have been printed. So why is that "+1v" there? Well, the biggest problem with troff's traps is that they get sprung *after* a line has been printed reaching or exceeding the trap position. There's no way to say that a particular margin should *not* be printed into, i.e., to spring the trap *before* a line overstepping the boundary would be output. But if you're working with high-res devices with different font sizes and line spacings, it's likely that you don't reach the trap position exactly, but possibly exceed it by up to almost a full baselineskip (or more, if that last line includes extra vertical space). Perhaps that "+1v" is there to avoid overprinting the last line with the footnotes. My usual solution in these cases is to set the trap position at margin-1v+1u, slightly below the second-to-last line (and hope that the line that then springs the trap doesn't have extra vertical space or uses a different vertical spacing). [However, I just tried this with groff -Tascii, and noticed that a trap at position 481 units was sprung by a line output to position 480 units. Werner, is this intended?] Anyhow, the upshot of all this is that if you're only working with character-cell devices with fixed baseline spacing, just remove the "+1v" and all should be fine. If you're also using high-res devices, you'll probably need to rethink mm's setting of trap positions. (I'll leave that to those who actually use mm.)