At 13:31 17.04.05, David Kastrup wrote: >Donald Arseneau <[log in to unmask]> writes: > > > Uwe Lück <[log in to unmask]> writes: > > > >> After a \newtoks\output, > > > > And, for the output routine, I think that itself is the mistake! I > > opine that for \output one should "bite the bullet" and do > > \output=\expandafter{\expandafter\mymacro\the\output} > > > >The problem is that you sometimes need to call the old behavior, and >sometimes not. In particular, if you have inserted a special penalty >yourself, then you will deal with it yourself, not passing anything on >and not actually calling the original output routine. Another point: For calling the old output routine only if it is appropriate, something like \edef\previous@output{\the\output} \output{...\previous@output...} could be a compromise. Yet as I understand Stephan Boettcher's (the former maintainer's) lineno.sty documentation, the purpose seemed to have been to "come earlier" than the output routine that multicol.sty (and longtable.sty etc.?) defines through \output{...} -- even when it is loaded after lineno.sty. Indeed, multicol.sty would give an error message when it would see a special penalty from lineno. The same applies to revtex.cls + longtable.sty. And longtable would give an error message with two of lineno's special penalties (these admittedly were my choices, perhaps I could have avoided the conflict). -- This could be repaired by a few additional code lines in multicol and longtable, so the \output trick is mainly a tribute to the littleness of hope that Standard LaTeX Packages would care about "contrib" packages. And as soon multicol or longtable would use the \output trick themselves, lineno could only work together with them if loaded earlier (another bit of evidence that the \output trick mainly is to ensure compatibility with some Standard LaTeX packages). -- Uwe Lueck.