Thu, 16 Sep 1999 18:09:47 +0100
<[log in to unmask]
> (message from Mark
Steinberger on Thu, 16 Sep 1999 12:58:35 -0400)
> I've been using the raw \specials in my own macro packages, so I'd
> be interested in the details of the potential fixes.
Basically one has to ensure that in any vertical list things are only
added once. So rather than some macro adding a space, some macro adding
a special, then a second macro not seeing the 1st space because it can't
look past the special, you instead have to trap all such commands that
make vertical skips, penalties, marks specials etc and instead store the
information in a private datatype that you construct.
then when you next come to horizontal material you look at all the
space, penalties and \specials you have collected, decide what penalty
and space you want to emit and output them in a suitable order along
with any specials writes and marks collected.
Doing this without breaking everything else is more than an evening's
Of course if consistent output (even if bad) is better than inconsistent
output you can take the simpler option used by the color package
monochrome option. this turns off specials but makes them into a non
immediate \write, which has the same effect on vertical space as a
special. So you can proof the document in a non colour context, and not
get a surprise when you suddenly turn on colour support.
There is some discssion of this in grfguide.tex and color.dtx.