LATEX-L Archives

Mailing list for the LaTeX3 project

LATEX-L@LISTSERV.UNI-HEIDELBERG.DE

Options: Use Forum View

Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Uwe Lück <[log in to unmask]>
Reply To:
Mailing list for the LaTeX3 project <[log in to unmask]>
Date:
Fri, 1 Apr 2005 19:32:58 +0200
Content-Type:
multipart/mixed
Parts/Attachments:
text/plain (315 bytes) , noreins.sty (4 kB)
A package file with a proposal for dealing with the \@reinserts
problem that has occupied the LaTeX-L list this week is attached.
It contains further informations. I plan to place future versions
and demonstration .tex's in a CTAN directory
     /macros/latex/contrib/noreinserts/
-- or what do you suggest? -- Uwe Lueck.

%% noreins.sty -- experimental fix of bug
%% latex/3370, 3541, 3719.
%% (C) 2005 Uwe Lueck http://contact-ednotes.sty.de.vu
%% Adapted from lineno.sty, due to Stephan I. Boettcher
%% and Frank Mittelbach.
\def\filedate{2005/04/01} \def\fileversion{v0.1}
%% RIGHTS: LaTeX Project Public License (LPPL) v1.3a
%% -- author-maintained.
%%
%% * FIRST BRIEF INTRODUCTION: *
%
%% PURPOSE/WARNING:
% Experts know well that \@reinserts in LaTeX's \@specialoutput
% -- which handles floats (figures, tables) and \marginpar's --
% may cause wrong order of footnote splits or output of
% footnotes on unnecessarily late pages. Just disabling
% \@reinserts or dropping it, as David Kastrup recommends in
% latex/3541, has other disadvantages. TeX3 was equipped with
% \holdinginserts to deal with problems of this kind. Yet LaTeX
% has still not made use of it, since it seems that this would
% still require redisigning LaTeX's output routine entirely.
% Here is an experimental, simple fix (!?). It replaces the
% problem by another one, yet the new one might show up more
% rarely or might easier be dealt with by non-expert users -- I
% would like to know.
%
%% USAGE:
% Just load the package. It doesn't define any user commands.
%
%% MISSING:
% Demonstration files showing problems must be added. One
% problem with the problem is that it seems to show up only
% accidentally during working, but disappears when you try to
% make a demonstration file. Even although I think that I can,
% in a somewhat abstract way, name the conditions under which
% the problem shows up, I find it difficult to "reliably"
% demonstrate it. E.g., when I try to tie two lines together, a
% surprising \penalty0 comes from the float mechanism and makes
% it impossible. The "reliable" demonstration files that I could
% make so far use lineno.sty and so are little useful for a
% general discussion of \@reinserts and \holdinginserts. -- And
% it would be good to have a review of discussions of the matter
% here or in one nearby file. And a digest for non-experts would
% be good.
%
%% MORE INFORMATIONS:
% In the recent days, there was an intense discussion of the
% matter on the LaTeX-L e-mail list.
%
%% WELCOME:
% Suggestions on nearly everything, especially implementation,
% different algorithms, different names; demonstration files;
% where, how, whether present these experiments.
%
%% ACKNOWLEDGEMENT / PRESENT IMPLEMENTATION:
% This is a variant of how lineno.sty, say v3.02ff., has used
% \holdinginserts, due to Stephan I. Boettcher and Frank
% Mittelbach. Particular purposes: As compared with the proposal
% in latex/3719, the implementation is intended to work
% relatively independently of other changes of the output
% routine, maybe due to different LaTeX versions or due to
% packages like longtable. It is even intended that it doesn't
% conflict with uses of \holdinginserts by other packages or a
% future LaTeX version, but it is not clear to me how probably
% this works. -- The problem that the implementation introduces
% is that the float mechanism measures the \footins box to
% decide about placement of floats, while with \holdinginserts>0
% the \footins box is "spuriously" empty. -- One further
% difference to the proposal in latex/3719 is that
% \holdinginserts is not decreased for \clearpage here. -- A
% problem discussed on LaTeX-L is whether/how
% \penalty\outputpenalty should be used. The present proposal is
% just what lineno.sty has done when I found it. -- \@reinserts
% is neither defined away nor circumvented, it will just find
% that there is nothing to reinsert.
%
\ProvidesPackage{noreins}[\filedate\space\fileversion\space
                          do without \string\@reinserts]
% \let\@reinserts\relax % TODO!? another package might use it.
\chardef\@vl=45 % Latin `vl' is written `ul' in critical editions.
\global\holdinginserts\@vl % But how cooperate ...!?
% (cf. lineno.sty)
\let\@UAR@output\output % Universally Avoiding \@reinserts.
\newtoks\output
\output\expandafter{\the\@UAR@output}
\newif\if@UAR@goodoutput % lineno.sty has used \[log in to unmask]
\@UAR@output{%
  \@UAR@goodoutputtrue
  \ifnum\holdinginserts=\@vl
    \ifnum\outputpenalty>-\@Mii
      \@UAR@goodoutputfalse
    \else
      \ifnum\outputpenalty<-\@Miv % \@Miii breaks.
        \@UAR@goodoutputfalse
      \fi
    \fi
  \fi
  \if@UAR@goodoutput
    \the\output
    \ifnum\holdinginserts-\@vl
      \global\holdinginserts\vl
    \fi
  \else
    \unvbox\@cclv
    \global\holdinginserts-\@vl
    \ifnum\outputpenalty=\@M \else
      \penalty\outputpenalty
    \fi
  \fi
}
\endinput



ATOM RSS1 RSS2