summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r--Master/texmf-dist/source/latex3/xor/xmarks.dtx956
-rw-r--r--Master/texmf-dist/source/latex3/xor/xo-alloc.dtx125
-rw-r--r--Master/texmf-dist/source/latex3/xor/xo-capt.dtx306
-rw-r--r--Master/texmf-dist/source/latex3/xor/xo-final.dtx1094
-rw-r--r--Master/texmf-dist/source/latex3/xor/xo-float.dtx950
-rw-r--r--Master/texmf-dist/source/latex3/xor/xo-flow-chart.dtx153
-rw-r--r--Master/texmf-dist/source/latex3/xor/xo-grid.dtx345
-rw-r--r--Master/texmf-dist/source/latex3/xor/xo-here.dtx454
-rw-r--r--Master/texmf-dist/source/latex3/xor/xo-new.dtx701
-rw-r--r--Master/texmf-dist/source/latex3/xor/xo-or.dtx5188
-rw-r--r--Master/texmf-dist/source/latex3/xor/xo-page.dtx694
-rw-r--r--Master/texmf-dist/source/latex3/xor/xo-place.dtx1537
-rw-r--r--Master/texmf-dist/source/latex3/xor/xo-trace.dtx140
-rw-r--r--Master/texmf-dist/source/latex3/xor/xo.ins40
-rw-r--r--Master/texmf-dist/source/latex3/xor/xoprogress.ins40
-rw-r--r--Master/texmf-dist/source/latex3/xor/xotrace.ins40
-rw-r--r--Master/texmf-dist/source/latex3/xor/xoutput.drv144
-rw-r--r--Master/texmf-dist/source/latex3/xor/xoutput.dtx78
18 files changed, 0 insertions, 12985 deletions
diff --git a/Master/texmf-dist/source/latex3/xor/xmarks.dtx b/Master/texmf-dist/source/latex3/xor/xmarks.dtx
deleted file mode 100644
index c8286827ec0..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xmarks.dtx
+++ /dev/null
@@ -1,956 +0,0 @@
-% \iffalse
-%%
-%% (C) Copyright 1999 Frank Mittelbach
-%% All rights reserved.
-%%
-%% Not for general distribution. In its present form it is not allowed
-%% to put this package onto CD or an archive without consulting the
-%% the authors.
-%%
-% \begin{macrocode}
-\def\next#1: #2.dtx,v #3 #4 #5 #6 #7$#8{
-%<*dtx>
- \ProvidesFile{#2.dtx}
-%</dtx>
-%<package>\ProvidesPackage{#2}
-%<driver>\ProvidesFile{#2.drv}
- [#4 #3 #8 (#6)]}
-\next$Id: xmarks.dtx,v 1.6 2000/06/13 20:47:23 latex3 Exp $
- {multiple marks}
-% \end{macrocode}
-%
-%<*driver>
- \documentclass{ltxdoc}
-%
- \begin{document}
- \DocInput{xmarks.dtx}
- \end{document}
-%</driver>
-%
-% \fi
-%
-%
-% \GetFileInfo{xmarks.dtx}
-%
-% \title{The \textsf{xmarks} package\thanks{This file
-% has version number \fileversion, last
-% revised \filedate.}}
-% \author{FMi}
-% \date{\filedate}
-%
-% \maketitle
-%
-% \tableofcontents
-%
-%
-%
-% \section{Mark algorithm}
-%
-% To allow for completely independent marks we use the following
-% procedure:
-% \begin{itemize}
-% \item
-% For every mark of type \meta{type} we have a queue that holds every mark
-% info found in memory. Every info is associated with a unique number,
-% i.e., we simply count them. The queue always holds at least one item
-% which is the previous mark info, i.e., the last mark for that type on
-% the previous page.
-%
-% \item
-% We use \TeX's internal mark mechanism only to record the associated
-% numbers for marks for every type on the current page.
-%
-% \item
-% For every \meta{type} we record the info-number that belongs to the last
-% mark of the previous page.
-%
-% \item
-% By looking at \TeX's internal |\botmark| we can determine the
-% info-number of the last mark for every \meta{type} that is on the current
-% page.
-%
-% \item
-% The difference between this number and the info-number from the last
-% page gives us the number of marks for every \meta{type} on the current page.
-%
-% \item
-% That way we are able to decide how to extract items from the queue so
-% that first, last, and previous mark for every type can be accessed.
-% \begin{itemize}
-% \item
-% If the difference is zero, no new marks have been added on the
-% current page, therefore the only item on the corresponding mark type
-% queue holds the info that should be previous, first, and last mark of
-% this type for the current page.
-% \item
-% If the difference is one, then the first item in the queue represents
-% the info that should become the previous mark (it will be popped off)
-% and the second item (which will be kept, since it will become the
-% previous mark for the next page) should become first and last mark for
-% the current page.
-% \item
-% Otherwise we had at least two marks for this type on the current page.
-% Therefore, the first item in the queue will become previous mark (popped
-% off), the second will become first mark (popped off), then we pop off
-% all but the last item in the queue, which will become last mark, by only
-% looking at it.
-% \end{itemize}
-% In other words every queue should hold only one item after this part of
-% the algorithm has acted.
-% After this is done we save the info-numbers given by |\botmark|
-% as the info-numbers of the last page, so that they are available next time.
-%
-% \item
-% Putting a mark into the galley therefore means to put its info to the
-% right of the corresponding queue, increment the current info-number for
-% \meta{type} by one and putting a \TeX{} mark into the galley holding the
-% current info-numbers for all \meta{types}.
-%
-% \end{itemize}
-%
-%
-% \subsection{Restrictions}
-%
-% One restriction in using this algorithm without further refinements
-% is that for every \meta{type} there will be an upper limit of marks allowed
-% within one document. This upper limit is given by |\maxdimen| which is
-% probably high enough to ignore it, but it could be improved by resetting
-% the info numbers whenever all marks have found their way onto the
-% current page.
-%
-% Another restriction is that one better not changes from linearily
-% processing the data for the main galley, or, if one modifies that
-% processing one needs to carefully adjust the data structures for the
-% marks as well. The problem being that the individual marks within a
-% preprocessed galley will stay there forever (and thus can be parsed
-% several times), the external data structures, e.g., the plists and
-% the sequences however need manual corrections in that case.
-%
-% \subsection{Implementation}
-%
-% The original implementation was done on a portable PC in a train
-% sometime in 1992/93 and is just a straight implementation of the
-% above algorithm using plists to hold the current and the last
-% info-numbers. The whole stuff could be done much better by analysing
-% the algorithm combining common parts (a lot of thing have be done
-% twice, etc.) and recoding the rest in a better way.
-%
-% The implementation below is more or less a straight adaption
-% of that code, so it still needs a rewrite one day. It is based on
-% modules implementing ``queues'', ``property lists'', and ``quarks''
-% most of which have been published as experimental code with a
-% slightly different surface syntax, i.e., as \texttt{l3seq.sty},
-% \texttt{l3prop.sty}, and \texttt{l3quark.sty}.
-%
-% New stuff:
-% \begin{macrocode}
-\RequirePackage{ldcsetup}
-\IgnoreWhiteSpace
-% \end{macrocode}
-%
-% \begin{macrocode}
-\long\def\@firstofthree#1#2#3{#1}
-\long\def\@secondofthree#1#2#3{#2}
-\long\def\@thirdofthree#1#2#3{#3}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def \tlp@to@str@N {\expandafter \tlp@to@str@aux \meaning}
-\def \tlp@to@str@aux #1>{}
-\def \tlp@to@str@c #1 {\expandafter \tlp@to@str@N \csname#1\endcsname}
-% \end{macrocode}
-%
-%
-%
-%
-%
-% \subsection{Commands for manipulating queues}
-%
-% \begin{macro}{\trace@queue}
-% \begin{macro}{\trace@queue@internal}
-% \begin{macro}{\tracingqueues}
-% \begin{macrocode}
-%<*trace>
-\def\trace@queue#1{\ifnum \tracingqueues > \z@
- \typeout{Queues:~ #1~ \on@line}\fi}
-\def\trace@queue@internal#1{\ifnum\tracingqueues>\@ne
- \typeout{Queues:~ #1~ \on@line}\fi}
-\newcount\tracingqueues
-%</trace>
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\queue@new@c}
-% \begin{macrocode}
-\def\queue@new@c#1{\@namedef{#1}{}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\queue@gadd@Nn}
-% \begin{macrocode}
-\def\queue@gadd@Nn#1#2{\expandafter\gdef\expandafter#1\expandafter
- {#1\queue@elt#2\queue@eelt}
-%<*trace>
- \trace@queue@internal{add~ `#2'~ to~ queue~ \string#1}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\queue@gadd@cn}
-% \begin{macrocode}
-\def\queue@gadd@cn#1{\expandafter\queue@gadd@Nn\csname#1\endcsname}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\queue@top@NN}
-% \begin{macrocode}
-\def\queue@top@NN#1#2{
- \queue@empty@err@N#1
- \expandafter\queue@top@split@w#1\q@stop{\def#2}
-%<*trace>
- \trace@queue@internal{top~ of~ queue~\string#1:~`\tlp@to@str@N#2'}
-%</trace>
-}
-% \end{macro}
-%
-% \begin{macro}{\queue@top@split@w}
-\def\queue@top@split@w\queue@elt#1\queue@eelt#2\q@stop#3{#3{#1}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\queue@top@cN}
-% \begin{macrocode}
-\def\queue@top@cN#1{\expandafter\queue@top@NN\csname#1\endcsname}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\queue@pop@aux@nnNN}
-% \begin{macro}{\queue@pop@aux@w}
-% \begin{macrocode}
-\def \queue@pop@aux@nnNN #1#2#3{
- \queue@empty@err@N #3
- \expandafter\queue@pop@aux@w #3\q@stop #1#2#3}
-\def \queue@pop@aux@w \queue@elt#1\queue@eelt
- #2\q@stop #3#4#5#6{#3#5{#2}#4#6{#1}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\queue@gpop@NN}
-% \begin{macrocode}
-\def \queue@gpop@NN #1#2{\queue@pop@aux@nnNN \gdef \def #1 #2
-%<*trace>
- \trace@queue@internal{pop~ of~ queue~\string#1:~`\tlp@to@str@N #2'}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\queue@gpop@cN}
-% \begin{macrocode}
-\def \queue@gpop@cN #1{\expandafter\queue@gpop@NN\csname#1\endcsname}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\queue@empty@err@N}
-% \begin{macrocode}
-\def\queue@empty@err@N #1{\ifx#1\@empty \ERROR \fi}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-%
-%
-%
-% \subsection {Quarks}
-%
-% A quark is a control sequence that expands into itself@ |\def|
-% |\foo{\foo}|. Quarks provide a cheap way of generating distinct
-% constants. Also, they permit the following ingenious trick: when
-% you pick up a token in a temporary, and you want to know whether you
-% have picked up a particular quark, all you have to do is compare the
-% temporary to the quark using |\ifx|.
-%
-% \begin{macro}{\quark@new@N}
-% Allocate a new quark.
-% \begin{macrocode}
-\def \quark@new@N #1{\def #1{#1}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\q@stop}
-% \begin{macro}{\q@no@value}
-% \begin{macro}{\q@nil}
-% |\q@stop| is often used as a marker in parameter text,
-% |\q@no@value| is the canonical missing value, and |\q@nil|
-% represents a nil pointer in some data structures.
-% \begin{macrocode}
-\quark@new@N \q@stop
-\quark@new@N \q@no@value
-\quark@new@N \q@nil
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\q@error}
-% \begin{macro}{\q@mark}
-% We need two additional quarks. |\q@error| delimits the end of
-% the computation for purposes of error recovery. |\q@mark| is
-% used in parameter text when we need a scanning boundary that is
-% distinct from |\q@stop|.
-% \begin{macrocode}
-\quark@new@N\q@error
-\quark@new@N\q@mark
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\quark@if@no@value@NTF}
-% \begin{macro}{\quark@if@no@value@NF}
-% \begin{macro}{\quark@if@no@value@nTF}
-% \begin{macro}{\quark@if@no@value@nT}
-% \begin{macro}{\quark@if@no@value@nF}
-% Here we test if we found a special quark as the first argument.
-% The argument might contain an arbitrary list of tokens, therefore
-% we have to wrap it up in a token list pointer.
-% \begin{macrocode}
-\def \quark@if@no@value@NTF #1{
-% \end{macrocode}
-% We better start with |\q@no@value| as the first argument since
-% the whole thing may otherwise loop if |#1| is wrongly given
-% a string like |aabc| instead of a single token.\footnote{It may
-% still loop in special circumstances however!}
-% \begin{macrocode}
- \ifx\q@no@value#1
- \expandafter\@firstoftwo
- \else \expandafter\@secondoftwo \fi}
-% \end{macrocode}
-% It would be possible to speed up the following commands by
-% providing individual implementations similar to the one above.
-% Should perhaps be done if they are used often!
-% \begin{macrocode}
-\def \quark@if@no@value@NF #1{\quark@if@no@value@NTF {#1}\@empty}
-\def \quark@if@no@value@nTF #1{\gdef \@gtempa {#1}
- \quark@if@no@value@NTF\@gtempa}
-\def \quark@if@no@value@nF #1{\quark@if@no@value@nTF {#1}\@empty}
-\def \quark@if@no@value@nT #1#2{\quark@if@no@value@nTF {#1}
- {#2}\@empty}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\quark@if@nil@NTF}
-% A function to check for the presence of |\q@nil|.
-% \begin{macrocode}
-\def\quark@if@nil@NTF#1{
- \ifx#1\q@nil
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo\fi}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \subsection{Commands for manipulating property lists}
-%
-%
-% \begin{macro}{\prop@new@N}
-% \begin{macrocode}
-\def \prop@new@N #1{\def #1{}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\prop@put@NNn}
-% \begin{macro}{\prop@gput@NNn}
-% \begin{macro}{\prop@gput@NNo}
-% \begin{macro}{\prop@gput@cco}
-% \begin{macro}{\prop@gput@ccn}
-% \begin{macrocode}
-\long\def \prop@put@NNn #1#2{\prop@split@aux@NNn
- #1#2{\prop@put@aux@w {\def #1}#2}}
-\long\def \prop@gput@NNn #1#2{\prop@split@aux@NNn
- #1#2{\prop@put@aux@w {\gdef #1}#2}}
-% missing commands for galley stuff...
-\def \prop@gput@NNo #1#2#3{
- \expandafter\prop@gput@NNn \expandafter #1 \expandafter
- #2 \expandafter { #3 } }
-\def \prop@gput@cco #1#2#3{
- \expandafter\prop@gput@NNn \csname #1\expandafter\endcsname
- \csname #2\expandafter\endcsname
- \expandafter { #3 } }
-\def \prop@gput@ccn #1#2{
- \expandafter\prop@gput@NNn \csname #1\expandafter\endcsname
- \csname #2\endcsname
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\prop@put@aux@w}
-% \begin{macrocode}
-\long\def \prop@put@aux@w #1#2#3#4#5#6{
- \quark@if@no@value@nTF {#4}
- {#1{#2{#6}#3}}
- {\def\tmp@w ##1#2\q@no@value {#1{#3#2{#6}##1}}
- \tmp@w #5}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\prop@split@aux@NNn}
-% \begin{macrocode}
-\long\def \prop@split@aux@NNn #1#2#3{
- \def\tmp@w ##1#2##2##3\q@stop {#3{##1}{##2}{##3}}
-% ^ ^ needed!
- \expandafter\tmp@w #1#2\q@no@value \q@stop}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\prop@get@NNN}
-% \begin{macrocode}
-\long\def \prop@get@NNN #1#2{\prop@split@aux@NNn
- #1#2\prop@get@aux@w}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\prop@get@aux@w}
-% \begin{macrocode}
-\long\def \prop@get@aux@w #1#2#3#4{\def#4{#2}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\prop@map@funct@Nn}
-% \begin{macrocode}
-\let \prop@map@funct@Nn \@gobbletwo
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\prop@map@NN}
-% \begin{macrocode}
-\def \prop@map@NN #1#2{
- \let \prop@map@funct@Nn #2
- \expandafter\prop@map@aux@w #1\q@stop \q@stop}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\prop@map@aux@w}
-% \begin{macrocode}
-\def \prop@map@aux@w #1#2{
- \ifx #1\q@stop \else
- \prop@map@funct@Nn #1{#2}
- \expandafter\prop@map@aux@w
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\prop@map@cN}
-% \begin{macrocode}
-\def \prop@map@cN #1{
- \expandafter \prop@map@NN \csname #1\endcsname }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-%
-% \subsection{Commands for manipulating marks}
-%
-%
-%
-% \begin{macro}{\trace@mark}
-% \begin{macro}{\trace@mark@internal}
-% \begin{macro}{\tracingmarks}
-% Tracing is done when |\tracingmarks| is positive.
-% \begin{macrocode}
-%<*trace>
-\def\trace@mark#1{\ifnum \tracingmarks > \z@
- \typeout{Marks:~ #1~ \on@line}\fi}
-\def\trace@mark@internal#1{\ifnum\tracingmarks>\@ne
- \typeout{Marks:~ #1}\fi}
-\newcount\tracingmarks
-%</trace>
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\mark@new}
-% Defines a new mark label and retrieval token list pointer.
-% \begin{macrocode}
-\def\mark@new#1{
-%<*trace>
- \trace@mark
- {new~mark:~\string#1}
-%</trace>
-% \end{macrocode}
-% We make sure that the argument is still free and allocate the
-% corresponding queue. To avoid problems with the use of such tlp's
-% when they are used before the first |\mark@update@structure| we initialize
-% them in a way that |\mark@previous| and the like will accept them even
-% then.
-% \begin{macrocode}
- \newcommand* #1 {{}{}{}}
- \queue@new@c{\string#1@seq}
-% \end{macrocode}
-% The last info-number for this type will be set to |1| This value
-% is actually arbitrary and we could use |-\maxdimen+1| to get the
-% range doubled.
-% \begin{macrocode}
- \prop@gput@NNn\mark@last@plist#1{1}
-% \end{macrocode}
-% More important is that the starting value for the current
-% info-number is one less then the one used above.
-% \begin{macrocode}
- \prop@gput@NNn\mark@curr@plist#1{0}
-% \end{macrocode}
-% We now put the very first mark of this type in. This mark will be
-% empty. This will initialize the queue (now holding the empty previous
-% mark) increment the current info number, so that last and current are
-% now equal and also puts a \TeX{} mark into the galley will the
-% additional type present.
-% \begin{macrocode}
- \mark@put@Nn#1{}%
-% \end{macrocode}
-% \begin{macrocode}
- \expandafter\g@addto@macro\expandafter\mark@save@state\expandafter{%
- \expandafter\global\expandafter\let
- \csname saved\string#1@seq\expandafter\endcsname
- \csname\string#1@seq\endcsname}
- \expandafter\g@addto@macro\expandafter\mark@restore@state@internal\expandafter{%
- \expandafter\global\expandafter\let
- \csname\string#1@seq\expandafter\endcsname
- \csname saved\string#1@seq\endcsname}
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\mark@save@state}
-% \begin{macro}{\mark@restore@state@internal}
-% Save and restore the current state of the mark data
-% structure. The commands will be extended by |\mark@new|. They are
-% needed if part of the main galley is being reused or several
-% times parsed.
-% \begin{macrocode}
-\def\mark@save@state{%
- \global\let\saved@mark@curr@plist\mark@curr@plist
- \global\let\saved@mark@last@plist\mark@last@plist}
-\def\mark@restore@state@internal{%
- \global\let\mark@curr@plist\saved@mark@curr@plist
- \global\let\mark@last@plist\saved@mark@last@plist}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\mark@restore@state}
-% |\mark@restore@state| will restore the state of the mark
-% mechanism to the one saved by |\mark@save@state|. It has to be
-% called inside an output routine and as it needs an output routine
-% of its own to restore the |\mark| status of the bottom mark (so
-% that \TeX{} correctly updates the mark registers in case it
-% doesn't find a mark in box 255) it has an argument which is
-% executed inside that output routine to regain control.
-%
-% The code in the argument has to set |\output| to a new output
-% routine! If not you are in trouble.
-%
-% \begin{macrocode}
-\def\mark@restore@state#1{%
-%<*trace>
- \@tracepush{mark@restore@state}
-%</trace>
-% \end{macrocode}
-% We first restore the external data structures by calling
-% |\mark@restore@sate@internal|. Then we have to ensure that \TeX's
-% idea of what the current |\botmark| is, corresponds to what it
-% was when we saved the state. Back then it was the contents of
-% |\mark@last@plist| so we are now adding an empty box and then
-% mark with is contents
-% onto the MVL followed by a penalty that ensures we trigger the
-% output routine and then specify a tiny little output routine
-% whose sole purpose is to get that mark processed.
-% \begin{macrocode}
- \mark@restore@state@internal
- \hbox{}%
-% \end{macrocode}
-% We have to protect |\mark@last@plist| from expanding too far
-% inside the |\mark| so we first put it into a token register
-% before applying |\mark|.
-% \begin{macrocode}
- \@temptokena\expandafter{\mark@last@plist}%
-%<*trace>
- \trace@mark@internal{restoring~ botmark~ \the\@temptokena}%
-%</trace>
- \mark
- {\the\@temptokena}
- \penalty-20203\relax
-% \end{macrocode}
-% We are not setting |\vsize| assuming its positive. So the moment
-% we return from the current output routine (we are hopefully in
-% right now) we should very very soon find the above penalty and
-% then trigger the output routine we are about to define now.
-%
-% In that output routine we have a quick test for the
-% |\outputpenalty| just to ensure that we really grabbed what we
-% are supposed to grab. Then we throw away the contents of box 255
-% since all we wanted todo is to get |\botmark| set back to the
-% value of our mark above. Finally we execute whatever got passed
-% along as argument one to regain control. Since current |\output|
-% has a rather funny definition the code in that argument better
-% change that back to something that does a little bit more
-% typesetting.
-% \begin{macrocode}
- \global\output{%
-%<*trace>
- \@tracepush{mark@restore@state@or}
-%</trace>
- \ifnum-20203=\outputpenalty\else \ERROR \fi
- \global\setbox\@cclv\box\voidb@x
- #1%
-%<*trace>
- \@tracepop{mark@restore@state@or}
-%</trace>
- }%
-%<*trace>
- \@tracepop{mark@restore@state}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\mark@put@Nn}
-% To put a mark into the current horizontal or vertical \TeX{} list
-% we first update |\mark@curr@plist| and then put its value into the
-% mark without any further expansion. (The code could be
-% optimized!)
-% \begin{macrocode}
-%<-trace>\def\mark@put@Nn#1{% % wtest hack }
-%<*trace>
-\def\mark@put@Nn#1#2{
- \def\l@tmpa@tlp{#2}
- \trace@mark
- {set~\string#1~<-~\tlp@to@str@N\l@tmpa@tlp}
-%</trace>
-% \end{macrocode}
-% First we have to update the current info number for this type. The
-% code is a bit complicated because we have to get the number from the
-% the plist update it and then put it back. If we would keep the numbers
-% differently this could be improved, probably at the cost of more macro
-% names.
-% \begin{macrocode}
- \@temptokena\expandafter{\mark@curr@plist}
- \prop@get@NNN\mark@curr@plist#1\@tempa
-%<*debug>
- \ifx\q@no@value\@tempa
- \ERROR
- \fi
-%</debug>
- \@tempcnta\@tempa
- \advance\@tempcnta\@ne
- \expandafter
- \prop@gput@NNn\expandafter\mark@curr@plist\expandafter#1\expandafter
- {\the\@tempcnta}
-% \end{macrocode}
-% Now we want to put this plist into a \TeX{} mark. We need a
-% one-level expansion, otherwise our pkeys would expand which would
-% produce chaos. So we save it in a toks register.
-% \begin{macrocode}
- \@temptokena\expandafter{\mark@curr@plist}
- \mark
- {\the\@temptokena}
-% \end{macrocode}
-% Finally we shouldn't forget to put the info at the right of the
-% corresponding queue.
-% Without tracing we can omit the second argument to
-% this function.
-% \begin{macrocode}
-%<*trace>
- \queue@gadd@cn{\string#1@seq}{#2}
-%</trace>
-%<-trace> \queue@gadd@cn{\string#1@seq}%
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\mark@put@Nnn}
-% \begin{macrocode}
-\def\mark@put@Nnn#1#2#3{
- \mark@put@Nn#1{#2#3}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\mark@update@structure}
-% This function is for use in output routines to initialize the marks
-% at the beginning. It is only useful after \TeX{} internally has
-% updated |\botmark|.
-% \begin{macrocode}
-\def\mark@update@structure{
-% \end{macrocode}
-% We map a function over all keys in |\mark@last@plist|, in other
-% words over all types of marks. This routine will set the marks for
-% all types. Finally we set the plist |\mark@last@plist| to the
-% plist that was stored in |\botmark|, i.e., to the
-% info-numbers from this page.
-% \begin{macrocode}
- \prop@map@NN\mark@last@plist\mark@retrieve@single@Nn
- \expandafter\gdef\expandafter\mark@last@plist\expandafter{\botmark}
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\mark@retrieve@single@Nn}
-% This function will be mapped over the plist containing the info-numbers
-% from the last page. This means that |#1| will be the key (which is
-% simply our type token list pointer and |#2| is the value, i.e. the
-% info-number from the last page for this type.
-% \begin{macrocode}
-\def\mark@retrieve@single@Nn#1#2{
-%<*trace>
- \trace@mark@internal
- {queue~for~\string#1~ before:~`\tlp@to@str@c{\string#1@seq}'}
-%</trace>
-% \end{macrocode}
-% We retrieve the info number for this type from |\botmark|
-% and store the difference in |\@tempcnta|.
-% \begin{macrocode}
- \@temptokena\expandafter{\botmark}%
-%<*trace>
- \trace@mark@internal{picking~ up~ from~ output~ \the\@temptokena}%
-%</trace>
- \prop@get@NNN\botmark#1\@tempa
-%<*debug>
- \ifx\q@no@value\@tempa
- \ERROR
- \fi
-%</debug>
- \@tempcnta\@tempa
- \advance\@tempcnta-#2\relax
-%<*trace>
- \trace@mark@internal
- {found~\the\@tempcnta\space entries~ for~ \string#1~
- (new~\@tempa;~old~#2)}
-%</trace>
-% \end{macrocode}
-% Then we decide what to do depending on its value.
-% We use |\@tempa|, |\@tempb|, and |\@tempc| to
-% temporarily hold the previous, first and last mark for this type.
-% \begin{macrocode}
- \ifcase\@tempcnta
-% \end{macrocode}
-% If there haven't been any new marks we leave the queue alone,
-% peeking only at its top element and using it for all three marks.
-% \begin{macrocode}
- \queue@top@cN{\string#1@seq}\@tempa
- \let\@tempb\@tempa
- \let\@tempc\@tempa
- \or
-% \end{macrocode}
-% When there was one mark of this type, we pop one item for the
-% previous mark of this type, and use the remaining item for first
-% and last mark.
-% \begin{macrocode}
- \queue@gpop@cN{\string#1@seq}\@tempa
- \queue@top@cN{\string#1@seq}\@tempb
- \let\@tempc\@tempb
- \else
-% \end{macrocode}
-% If we had more than one mark for this type we pop one mark for the
-% previous mark of this type, then pop another mark for the first
-% mark of this type, then pop all but the last item and use the last
-% item as the last mark of this type, keeping it as before on the
-% queue.
-% \begin{macrocode}
- \queue@gpop@cN{\string#1@seq}\@tempa
- \queue@top@cN{\string#1@seq}\@tempb
- \@whilenum \@tempcnta>\@ne\do
- {\advance\@tempcnta\m@ne
- \queue@gpop@cN{\string#1@seq}
- \@tempc
- }
- \queue@top@cN{\string#1@seq}\@tempc
- \fi
-% \end{macrocode}
-% After this process all values for previous, first and last mark for
-% this type are found so that we can store them in the tlp
-% representing this type for further processing.
-% \begin{macrocode}
- \@temptokena\expandafter{\@tempa}
- \@temptokenb\expandafter{\@tempb}
- \@temptokenc\expandafter{\@tempc}
- \edef#1{{\the\@temptokena}{\the\@temptokenb}{\the\@temptokenc}}
-%<*trace>
- \trace@mark
- {in~output:~\string#1~->~\tlp@to@str@N#1}
-% \end{macrocode}
-% At this point the queue should show only one item.
-% \begin{macrocode}
- \trace@mark@internal
- {queue~ for~\string#1~after:~`\tlp@to@str@c{\string#1@seq}'}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@temptokenb}
-% \begin{macro}{\@temptokenc}
-% \begin{macrocode}
-\newtoks\@temptokenb
-\newtoks\@temptokenc
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\mark@curr@plist}
-% \begin{macro}{\mark@last@plist}
-% Here are the allocations for the two plists used.
-% \begin{macrocode}
-\prop@new@N\mark@curr@plist
-\prop@new@N\mark@last@plist
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-% \begin{macro}{\mark@get@first@N}
-% \begin{macro}{\mark@get@last@N}
-% \begin{macro}{\mark@get@previous@N}
-% To retrieve the first, last or previous page mark, we
-% grap the appropriate value stored in the tlp. The marks are stored
-% in the tlp in the order previous, first, last mark. These functions
-% should be used only in output routines after |\mark@retrieve| has
-% acted, otherwise their value will be wrong. They are all fully
-% expandable.
-%
-% Actually, they may bomb when tracing is included and we have
-% material that doesn't work corretly within a write.
-% \begin{macrocode}
-%<*trace>
-\def\mark@get@first@N#1{
- \expandafter\@secondofthree#1
- \trace@mark@internal{use~first~\string#1~=~
- `\expandafter\@secondofthree#1'}
-}
-\def\mark@get@last@N#1{
- \expandafter\@thirdofthree#1
- \trace@mark@internal{use~ last~ \string#1~ =~
- `\expandafter\@thirdofthree#1'}
-}
-\def\mark@get@previous@N#1{
- \expandafter\@firstofthree#1
- \trace@mark@internal{use~prev~\string#1~ =~
- `\expandafter\@firstofthree#1'}
-}
-%</trace>
-%<-trace>\def\mark@get@first@N{%
-%<-trace> \expandafter\@secondofthree}
-%<-trace>\def\mark@get@last@N{%
-%<-trace> \expandafter\@thirdofthree}
-%<-trace>\def\mark@get@previous@N{%
-%<-trace> \expandafter\@firstofthree}
-% \end{macrocode}
-% above version in trace case doesn't work alway!
-% \begin{macrocode}
-\def\mark@get@first@N{%
- \expandafter\@secondofthree}
-\def\mark@get@last@N{%
- \expandafter\@thirdofthree}
-\def\mark@get@previous@N{%
- \expandafter\@firstofthree}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\DeclareMarkType}
-% \begin{macrocode}
-\def\DeclareMarkType#1{
- \expandafter\mark@new\csname mark@#1\endcsname}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\PutMark}
-% \begin{macrocode}
-\def\PutMark#1{
- \@ifundefined{mark@#1}{\ERROR}{}
- \expandafter\mark@put@Nn\csname mark@#1\endcsname}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\PreviousMark}
-% \begin{macrocode}
-\def\PreviousMark#1{
- \expandafter\mark@get@previous@N\csname mark@#1\endcsname}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\FirstMark}
-% \begin{macrocode}
-\def\FirstMark#1{
- \expandafter\mark@get@first@N\csname mark@#1\endcsname}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\LastMark}
-% \begin{macrocode}
-\def\LastMark#1{
- \expandafter\mark@get@last@N\csname mark@#1\endcsname}
-% \end{macrocode}
-% \end{macro}
-%
-% \Finale
-%
-\endinput
-%
-% $Log: xmarks.dtx,v $
-% Revision 1.6 2000/06/13 20:47:23 latex3
-% docu update
-% inlined quarks code
-%
diff --git a/Master/texmf-dist/source/latex3/xor/xo-alloc.dtx b/Master/texmf-dist/source/latex3/xor/xo-alloc.dtx
deleted file mode 100644
index 05250715ccb..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xo-alloc.dtx
+++ /dev/null
@@ -1,125 +0,0 @@
-% \iffalse
-%%
-%% (C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley
-%% All rights reserved.
-%%
-%% Not for general distribution. In its present form it is not allowed
-%% to put this package onto CD or an archive without consulting the
-%% the authors.
-%%
-% \fi
-%
-% \begin{macrocode}
-\def\@tempa#1: #2.dtx,v #3 #4 #5 #6 #7${
- \ProvidesPackage{#2}[#4 #3 #5 #6]}
-\@tempa$Id: xo-alloc.dtx,v 1.4 2000/08/11 07:13:34 latex3 Exp $
-% \end{macrocode}
-%
-%
-% Ignore white space in this package.
-% \begin{macrocode}
-\IgnoreWhiteSpace
-% \end{macrocode}
-%
-% |\footins| is FD, should probably move to FE
-%
-% |\@footins| is FE, should probably go and be replaced by a box and skip allocation
-% they don't need to be same number, except for compatibility reasons.
-%
-% |\@kludgeins| was EA maybe can go, depending on how enlargethispage to be implemented.
-% for now, move to FC (which was bx@A
-% \begin{macrocode}
-\chardef\@kludgeins="FC\relax
-\global\dimen\@kludgeins \maxdimen
-\global\count\@kludgeins 1000
-\global\dimen\@kludgeins\z@
-\global\skip\@kludgeins\z@
-\global\setbox\@kludgeins\box\voidb@x
-% \end{macrocode}
-%
-% \begin{macrocode}
-\insc@unt"FC\relax
-% \end{macrocode}
-%
-% count dimen skip no longer bounded by insertion allocation.
-% toks now bounded by insertions.
-% \begin{macrocode}
-\def\newcount{\alloc@0\count\countdef\@kludgeins}
-\def\newdimen{\alloc@1\dimen\dimendef\@kludgeins}
-\def\newskip{\alloc@2\skip\skipdef\@kludgeins}
-\def\newtoks{\alloc@5\toks\toksdef\insc@unt}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\newinsert#1{\global\advance\insc@unt \m@ne
- \ch@ck4\insc@unt\box
- \ch@ck5\insc@unt\toks
- \allocationnumber\insc@unt
- \global\chardef#1\allocationnumber
- \wlog{\string#1=\string\insert\the\allocationnumber}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\newinsert\bx@A
-\newinsert\bx@B
-\newinsert\bx@C
-\newinsert\bx@D
-\newinsert\bx@E
-\newinsert\bx@F
-\newinsert\bx@G
-\newinsert\bx@H
-\newinsert\bx@I
-\newinsert\bx@J
-\newinsert\bx@K
-\newinsert\bx@L
-\newinsert\bx@M
-\newinsert\bx@N
-\newinsert\bx@O
-\newinsert\bx@P
-\newinsert\bx@Q
-\newinsert\bx@R
-% \end{macrocode}
-%
-% like |\@next| but allocates to list if empty (so doesn't have the
-% 4th argument) There is a hidden 3rd argument, picked up by |\@xnext|.
-% \begin{macrocode}
-\def\@allocating@next#1#2{
- \ifx#2\@empty
- \xdef#2{\noexpand\@elt\csname bx@\the\insc@unt\endcsname}
- \expandafter\newinsert\csname bx@\the\insc@unt\endcsname
- \fi
- \expandafter\@xnext #2\@@#1#2}
-% \end{macrocode}
-%
-% \begin{macrocode}
-% \end{macrocode}
-%
-% \begin{macrocode}
-% \end{macrocode}
-%
-% \begin{macrocode}
-% \end{macrocode}
-%
-% \begin{macrocode}
-% \end{macrocode}
-%
-% \begin{macrocode}
-% \end{macrocode}
-
-%
-% \endinput
-\endinput
-%
-% $Log: xo-alloc.dtx,v $
-% Revision 1.4 2000/08/11 07:13:34 latex3
-% added header
-%
-% Revision 1.3 2000/06/13 20:54:46 latex3
-% made this a dtx file
-%
-% Revision 1.2 2000/02/22 01:03:55 david
-% *** empty log message ***
-%
-% Revision 1.1 2000/02/22 00:52:52 david
-% Initial revision
-%
diff --git a/Master/texmf-dist/source/latex3/xor/xo-capt.dtx b/Master/texmf-dist/source/latex3/xor/xo-capt.dtx
deleted file mode 100644
index 618e22f94d7..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xo-capt.dtx
+++ /dev/null
@@ -1,306 +0,0 @@
-% \iffalse
-%%
-%% (C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley
-%% All rights reserved.
-%%
-%% Not for general distribution. In its present form it is not allowed
-%% to put this package onto CD or an archive without consulting the
-%% the authors.
-%%
-% \fi
-%
-
-% \begin{macrocode}
-\def\@tempa#1: #2.dtx,v #3 #4 #5 #6 #7${
- \ProvidesPackage{#2}[#4 #3 #5 #6]}
-\@tempa$Id: xo-capt.dtx,v 1.13 2000/08/11 07:14:03 latex3 Exp $
-% \end{macrocode}
-%
-% Ignore white space in this package.
-% \begin{macrocode}
-\IgnoreWhiteSpace
-% \end{macrocode}
-%
-%
-% \subsection{Modifying the caption command}
-%
-% \begin{macro}{\@caption}
-% |\caption| just saves its main argument in a token register. It also
-% has |\unskip| and |\ignorespaces| to cope with hmode.
-% The format of the token register is:\\
-% \marg{type}\marg{number}\marg{caption text}\marg{extra info}\\
-% The \meta{type} is something like `figure', used to generate the
-% relevant command names. \meta{number} is the fully expanded version of
-% |\the|\ldots. The last group is unused by the current definition
-% but extended packages may use it to pass extra information to the
-% float handler, as required.
-% \begin{macrocode}
-\def\caption{\@dblarg{\@caption\float@type}}
-
-\long\def\@caption#1[#2]#3{%
- \unskip
-% \end{macrocode}
-% We use the old \LaTeX{} interface with |\addcontentsline| for the
-% moment.\footnote{FIX!!}
-% \begin{macrocode}
- \addcontentsline{\csname toc@extension@#1\endcsname}{#1}
-% \end{macrocode}
-% The counter used is not |#1| but given by (|\foat@counter|) which
-% should perhaps be passed along but isn't:
-% \begin{macrocode}
- {\protect\numberline{\csname the\float@counter\endcsname}
- {\ignorespaces #2}}
- \global\toks\@currbox{#3}
- \ignorespaces
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Adding captions to float boxes}
-%
-% This should really be a template instance.
-% Must \emph{copy} the float body in |\this@float@box|
-% into |\this@captioned@float| adding the caption text.
-% May use |\this@area|, |\this@area@col@number| and other information, to be
-% determined \ldots
-%
-% \begin{macro}{\append@caption@to@float}
-% Combine float body and caption of the current float (``this
-% float'') and store it in |\this@captioned@float|.
-% \begin{macrocode}
-\def\append@caption@to@float{
- \typeset@some@floatbox
- \this@type\this@area
- \this@float@box{\csname caption@\this@type\endcsname}
- \this@usercnt\this@caption\this@span@number
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\append@here@caption@to@float}
-% Combine float body and caption of the current here float and
-% store it in |\this@captioned@float|.
-% \begin{macrocode}
-\def\append@here@caption@to@float{
- \typeset@some@floatbox
- \here@type{h\the\curr@col@count 1}
- \here@float@box{\csname caption@\here@type\endcsname}
- \here@usercnt\here@caption\here@span@number
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\typeset@this@float@and@caption}
-% Combine float body and caption of the current float (``this
-% float'') and output it into the current list.
-% \begin{macrocode}
-\def\typeset@this@float@and@caption{
- \append@caption@to@float
- \box\this@captioned@float
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \section{Some primitive templates for testing}
-%
-% prove of concept only --- not even prototype
-%
-%
-% \begin{macro}{\typeset@some@floatbox}
-% The macro |\typeset@some@floatbox| take 7 arguments as follows:
-% \begin{description}
-% \item[type] type of the float to be typeset
-% \item[area] area in which to format the float
-% \item[floatbody box] box register in which the body of the float
-% is stored
-% \item[caption heading] fixed text like ``Figure''
-% \item[caption number] caption number of the float
-% \item[caption text] caption text of the float
-% \item[span count] span count (normally deducable from the area
-% but\ldots
-% \end{description}
-% The first two arguments are used to decide which formatting
-% instance to call, the remaining arguments are passed to that
-% instance.
-%
-% The logic is (at the moment) as follows: if a template instance
-% (type \texttt{buildfloat}) with the name
-% \meta{type}|-|\meta{area}\footnote{The ``here'' areas are
-% denoted as \texttt{h}\meta{col}\texttt{1}.}
-% is defined then this instance is used,
-% otherwise we look if there is an instance with just the name of
-% the \meta{area}, otherwise we try an instance with the name
-% \meta{type} and if this isn't defined either we try the instance
-% named |default|.
-% \begin{macrocode}
-\def\typeset@some@floatbox#1#2{ % type area
-
- \IfExistsInstanceTF{buildfloat}
- { #1 - #2 }
- {\def\use@instance@named{#1 - #2}}
- {
- \IfExistsInstanceTF{buildfloat}
- { #2 }
- {\def\use@instance@named{#2}}
- {
- \IfExistsInstanceTF{buildfloat}
- { #1 }
- {\let\use@instance@named#1 } % we know this is a token
- {\def\use@instance@named{default}}
- }
- }
- \UseInstance{buildfloat}\use@instance@named
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macrocode}
-% #1 body box
-% #2 fixed text
-% #3 counter value
-% #4 caption
-% #5 span number
-\DeclareTemplateType{buildfloat}{5}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareTemplate{buildfloat}{centeredabove}{5}
- {
- body-caption-sep =l [10pt] \belowcaptionskip,
- }
- {
- \DoParameterAssignments
-
- \@parboxrestore
-
- \hsize=#5\columnwidth
-
- \global\setbox\this@captioned@float\vbox{
- \sbox\@tempboxb{#2~ #3:~ #4}
- \ifdim \wd\@tempboxb >\hsize
- #2~ #3:~ #4\par
- \else
- \hb@xt@\hsize{\hfil\box\@tempboxb\hfil}%
- \fi
- \vskip\belowcaptionskip
- \centerline{
- \copy#1
- }
- \kern\z@
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\newbox\@tempboxb
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareTemplate{buildfloat}{centeredbelow}{5}
- {
- body-caption-sep =l [10pt] \abovecaptionskip,
- }
- {
- \DoParameterAssignments
-
- \@parboxrestore
-
- \hsize=#5\columnwidth
-
- \global\setbox\this@captioned@float\vbox{
- \centerline{\copy#1}
- \vskip\abovecaptionskip
- \sbox\@tempboxb{#2~ #3:~ #4}
- \ifdim \wd\@tempboxb >\hsize
- #2~ #3:~ #4\par
- \else
- \hb@xt@\hsize{\hfil\box\@tempboxb\hfil}%
- \fi
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareTemplate{buildfloat}{bottomright}{5}
- {
- body-caption-sep =l [10pt] \abovecaptionskip,
- }
- {
- \DoParameterAssignments
-
- \@parboxrestore
-
- \hsize=#5\columnwidth
-
- \global\setbox\this@captioned@float\vbox{
- \@@line{\hss\vbox{\copy#1\kern0pt}
- \rlap{
- \hskip\abovecaptionskip
-% \end{macrocode}
-% rubbish as far as it goes: this should be turned into a real
-% template probably using coffins
-% \begin{macrocode}
- \parbox[b]{\marginparwidth
- +(#5\columnwidth-\wd#1)/2}{
- \raggedright
- #2~ #3:~ #4
- }
- }\hss
- }
- \kern0pt
- }
- }
-% \end{macrocode}
-%
-%
-%
-% \subsection{Some test instances}
-%
-% \begin{macrocode}
-\DeclareInstance{buildfloat}{default}{centeredabove}{}
-
-\DeclareInstance{buildfloat}{figure}{centeredbelow}{}
-
-\DeclareInstance{buildfloat}{t31}{bottomright}{}
-\DeclareInstance{buildfloat}{t22}{bottomright}{}
-\DeclareInstance{buildfloat}{t13}{bottomright}{}
-% \end{macrocode}
-%
-% \endinput
-\endinput
-%
-% $Log: xo-capt.dtx,v $
-% Revision 1.13 2000/08/11 07:14:03 latex3
-% added header
-%
-% Revision 1.12 2000/08/11 06:47:53 latex3
-% untabify
-%
-% Revision 1.11 2000/07/19 15:55:53 latex3
-% used \float@type rather than \@captype
-% extended buildfloat template to 5 arguments
-%
-% Revision 1.10 2000/07/10 18:45:23 latex3
-% some normalisation of caption attachment code -- needs more work
-%
-% Revision 1.9 2000/06/13 20:53:55 latex3
-% docu update
-% renamed template type builtfloat to buildfloat
-%
-% Revision 1.8 2000/05/03 20:16:59 latex3
-% added more arguments to the caption template
-%
-% Revision 1.7 2000/05/03 20:03:59 latex3
-% fixed typo in macro name
-%
-% Revision 1.6 2000/05/03 18:52:44 latex3
-% enabling write of toc entries
-% adding a prove of concept for caption templates
-%
diff --git a/Master/texmf-dist/source/latex3/xor/xo-final.dtx b/Master/texmf-dist/source/latex3/xor/xo-final.dtx
deleted file mode 100644
index ad4216ea7a3..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xo-final.dtx
+++ /dev/null
@@ -1,1094 +0,0 @@
-% \iffalse
-%%
-%% (C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley
-%% All rights reserved.
-%%
-%% Not for general distribution. In its present form it is not allowed
-%% to put this package onto CD or an archive without consulting the
-%% the authors.
-%%
-% \fi
-%
-%
-% \begin{macrocode}
-\def\@tempa#1: #2.dtx,v #3 #4 #5 #6 #7${
- \ProvidesPackage{#2}[#4 #3 #5 #6]}
-\@tempa$Id: xo-final.dtx,v 1.20 2000/08/11 07:14:09 latex3 Exp $
-% \end{macrocode}
-%
-% \begin{macrocode}
-\IgnoreWhiteSpace
-% \end{macrocode}
-%
-% Update: as of April 3 this now does something reasonable with
-% top and bottom floats. The text in between still needs lots of
-% attention. No headers/footers/margins/overlays etc etc yet.
-%
-% There is still a lot of inefficient indirection; this shows where we
-% may be able to support more general page-makeup systems.
-%
-% And not much tracing yet.
-%
-% \subsection{Text columns}
-%
-% \begin{macro}{\produce@final@column}
-% \begin{macro}{\final@column@with@floats}
-% \begin{macro}{\final@column}
-%
-% This version puts column floats in columns; see below for
-% an alternative. It simulates current \LaTeX{} so should not be
-% taken as a model for anything useful.
-%
-% When we remove or modernise this a lot more code from below can go
-% too.
-%
-% \begin{macrocode}
-\def\final@column@with@floats {
-%<*trace>
- \@tracepush{produce@final@column}
-%</trace>
- \setbox\@outputbox \box\@cclv
-
- \expandafter
- \add@floats@top
- \csname area@t1\the\curr@col@count\endcsname
-
- \ifvoid\footins
- \else
- \setbox\@outputbox \vbox {
- \boxmaxdepth \@maxdepth
- \dimen@\dp\@outputbox
- \unvbox \@outputbox
- \vskip-\dimen@
- \vskip \skip\footins
- \color@begingroup
- \normalcolor
- \footnoterule
- \unvbox \footins
- \color@endgroup
- }
- \fi
-
- \expandafter
- \add@floats@bottom
- \csname area@b1\the\curr@col@count\endcsname
-
- \global\setbox\csname col@box@\the\curr@col@count\endcsname
- % \vbox { % this should one day become \@colht
- \vbox { % this should one day become \@colht
- % or else
- \@texttop
- \dimen@ \dp\@outputbox
- \unvbox \@outputbox
- \vskip -\dimen@
- \@textbottom
- }%
- \global \maxdepth \@maxdepth
-%<*trace>
- \@tracepop{produce@final@column}
-%</trace>
-}
-% \end{macrocode}
-% This version does not give special treatment to column floats; it
-% simply attachs footnotes and tops/tails.
-%
-% Probably this should just stuff the main text and footnotes into
-% boxes (or a box?) with no extra formatting; all aesthetic handling would
-% be done later, when the page is being made-up.
-%
-% The formatting details are clearly temporary.
-%
-% \begin{macrocode}
-\def\final@column {
-%<*trace>
- \@tracepush{produce@final@column}
-%</trace>
- \setbox\@outputbox \box\@cclv
-
- \ifvoid\footins
- \else
- \setbox\@outputbox \vbox {
- \boxmaxdepth \@maxdepth
- \dimen@\dp\@outputbox
- \unvbox \@outputbox
- \vskip-\dimen@
- \vskip \skip\footins
- \color@begingroup
- \normalcolor
- \footnoterule
- \unvbox \footins
- \color@endgroup
- }
- \fi
-
-% \end{macrocode}
-%
-% I am not sure if texttop/bottom should survive for long: something
-% more spohisictaed is needed these days. This may mean that
-% footnotes need better handling too: what makes a complex column
-% look good?
-%
-% \begin{macrocode}
- \global\setbox\csname col@box@\the\curr@col@count\endcsname
- \vbox { % this should one day become \@colht
- % or else
- \@texttop
- \dimen@ \dp\@outputbox
- \unvbox \@outputbox
- \vskip -\dimen@
- \@textbottom
- }%
- \global \maxdepth \@maxdepth
-%<*trace>
- \@tracepop{produce@final@column}
-%</trace>
-}
-\let \produce@final@column \final@column
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\add@floats@top}
-% \begin{macro}{\add@floats@bottom}
-% These are now used (if at all)
-% only within columns (maybe not best even there).
-%
-% \begin{macrocode}
-\def\add@floats@top #1{
- \ifx#1\@empty
- \else
- \setbox\@tempboxa \vbox{}
- \let \@elt \@comflelt #1
- \setbox\@outputbox \vbox{
- \boxmaxdepth \maxdepth
- \unvbox\@tempboxa
- \vskip -\pagesetup@float@float@sep
- \topfigrule
- \vskip \pagesetup@float@text@sep
- \unvbox\@outputbox
- }
- \let\@elt\relax
- \release@floats#1
- \fi
-}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\add@floats@bottom#1{
- \ifx#1\@empty
- \else
- \setbox\@tempboxa \vbox{}
- \let\@elt\@comflelt
- #1
- \setbox\@outputbox \vbox{
- \unvbox\@outputbox
- \vskip \pagesetup@float@text@sep
- \botfigrule
- \unvbox\@tempboxa
- \vskip -\pagesetup@float@float@sep
- }
- \let\@elt\relax
- \release@floats#1
- \fi
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-%
-% \subsection{Shipout and housekeeping}
-%
-%
-% \begin{macro}{\absolute@page@number}
-% \begin{macrocode}
-\mathchardef\absolute@page@number\c@page
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-
-% \end{macrocode}
-%
-% \begin{macro}{\produce@final@page}
-%
-% This puts everything to be shipped out into the hbox
-% |\page@box| and then ships this out (not quite, see below!).
-%
-% Probably these two processes should be separated.
-%
-% At present it does the page-makeup within the shipped out box;
-% this should proably be done earlier.
-%
-% Should the box (or the box-name) be a global
-% fixed object (bad;-) or a local parameter (good;-)?
-%
-% The shipping out is surrounded by considerable housekeeping:
-% this version sets up to do the writes and fixes the
-% numbering.
-%
-% \begin{macrocode}
-\def\produce@final@page{
-%<*trace>
- \@tracepush{produce@final@page}
- \tr@ce{final~ page~ output:~ Chris'~ version}
-%</trace>
- \begingroup % the \endgroup is put in by \aftergroup
-% \end{macrocode}
-%
-% \begin{macrocode}
- \@resetactivechars
- \@parboxrestore
- \let \protect \noexpand
-% \end{macrocode}%
-% Temp: just puts stuff into lists (which could have been built up
-% as floats are placed?).
-% \begin{macrocode}
- \do@floats
- \shipout \hbox { % NOTE: an hbox now!
-% \end{macrocode}
-%
-% \begin{macrocode}
- \set@typeset@protect
- \aftergroup \endgroup
- \aftergroup \set@typeset@protect
-% \end{macrocode}
-% Making the box can be done outside the shipout.
-% \begin{macrocode}
- \make@page@box
- \box \page@box
- }
-% \endgroup %% This is _implicitly_ here.
-% \end{macrocode}
-%
-% \begin{macrocode}
- \count@\absolute@page@number
-%<*trace>
- \tr@ce{absolute~page:~\the\absolute@page@number}
-%</trace>
- \advance\count@\@ne
- \global\advance\c@page\@ne
- \global\mathchardef\absolute@page@number\count@
-%<*trace>
- \@tracepop{produce@final@page}
-%</trace>
-}
-
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{The page box}
-%
-% \begin{macro}{\mbox@addtopage}
-% \begin{macro}{\box@addtopage}
-% \begin{macro}{\page@box}
-% This should be generalised to add a box to any box (without overcrowding).
-% \begin{macrocode}
-\newbox \page@box
-\def\mbox@addtopage (#1,#2)#3{%
-%<*trace>
- \tr@ce{box~being~added~to~page:~at~(#1,~#2)
- }
-%</trace>
- \global \setbox\page@box
- \hbox {
- \unhbox \page@box
- \mbox@put (#1,#2) {#3}
- }
-}
-\def\box@addtopage (#1,#2)#3{%
- \mbox@addtopage (#1,#2){\box #3}
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\make@page@box}
-%
-% This adds stuff to a globallly named box; maybe it should be more
-% generic.
-%
-% This is some kind of default example.
-% It should be templated.
-%
-% \begin{macrocode}
-\def \make@page@box {
-%<*trace>
- \@tracepush{make@page@box}
- \tr@ce{new style page nake-up}
-%</trace>
-% \end{macrocode}
-% Temp for current header:
-% \begin{macrocode}
- \mbox@addtopage (\pagebodylefthpos, \headheight)
- {page:~\thepage}
-% \end{macrocode}
-% Then add the float areas, using a list of boxes and positions.
-% Probably, the whole thing should be done this way but this may
-% not be sensible for simple cases.
-%
-% Also, some alignments (eg text) may be better handled by the
-% use of coffins (which are a very similar, but more complex,
-% technology).
-%
-% First set-up starting point for main text body.
-% \begin{macrocode}
- \forall@columns {
- \expandafter \xdef
- \csname stack@level@\the\curr@col@count \endcsname
- {\pagebodytopvpos}
- }
- \stack@top@areas
- \add@columns
- \stack@bot@areas
-%<*trace>
- \@tracepop{make@page@box}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{The page box: text columns}
-%
-% This needs to be a lot more sophisticated in order to make these
-% look anything but dreadful.
-%
-% \begin{macro}{\add@columns}
-% \begin{macro}{\add@columns@topstacked}
-% \begin{macro}{\add@columns@botaligned}
-%
-% Several possibilities here: choose one.
-%
-% One way to do bottom-aligned columns (probably will not
-% generalise well):
-% \begin{macrocode}
-\def \add@columns@botaligned {
-%<*trace>
- \@tracepush{add@columns@botaligned}
-%</trace>
- \setlength \@tempdima {\pagebodylefthpos}
- \forall@columns {
-%<*trace>
- \tr@ce{bot~aligned~column~\the\curr@col@count :~%
- ht=\expandafter\the\expandafter\ht
- \csname col@box@\the\curr@col@count \endcsname,~
- dp=\expandafter\the\expandafter\dp
- \csname col@box@\the\curr@col@count \endcsname}
-%</trace>
-% \end{macrocode}
-% Rules will need to be handled separately: where do they go in
-% general with spanning floats?
-% \begin{macrocode}
-% \vrule
- \box@addtopage ( \@tempdima, \pagebodybotvpos )
- {\csname col@box@\the\curr@col@count \endcsname}
- \setlength \@tempdima {\@tempdima + \columnwidth + \columnsep}
-% \vrule
- }
-%<*trace>
- \@tracepop{add@columns@botaligned}
-%</trace>
-}
-% \end{macrocode}
-%
-% Stacking them at the top: this must be dome immediately after
-% stacking the top areas. They are aligned, if possible, at the
-% top (the actual top, not necessarily the top text line).
-%
-% \begin{macrocode}
-\def \add@columns@topstacked {
-%<*trace>
- \@tracepush{add@columns@topstacked}
-%</trace>
- \gsetmlength \cuur@col@pos {\pagebodylefthpos}
- \forall@columns {
-%<*trace>
- \tr@ce{top~stacked~column~\the\curr@col@count :~%
- ht=\expandafter\the\expandafter\ht
- \csname col@box@\the\curr@col@count \endcsname,~
- dp=\expandafter\the\expandafter\dp
- \csname col@box@\the\curr@col@count \endcsname}
- \tr@ce{vsize~for~column~\the\curr@col@count~was:~%
- \csname col@ht@ \the\curr@col@count\endcsname}
- \tr@ce{lowered~column~\the\curr@col@count~:~%
- \csname stack@level@\the\curr@col@count \endcsname
- }
-%</trace>
- \gsetmlength@c {stack@level@\the\curr@col@count}
- { \csname stack@level@\the\curr@col@count \endcsname
- + \expandafter
- \ht \csname col@box@\the\curr@col@count \endcsname
- }
-% \end{macrocode}
-% Vertical rules will need to be handled differentlyy:
-% where do they go in general with spanning floats?
-% \begin{macrocode}
-% \vrule
- \box@addtopage ( \cuur@col@pos,
- \csname stack@level@\the\curr@col@count \endcsname )
- {\csname col@box@\the\curr@col@count \endcsname}
- \gsetmlength \cuur@col@pos { \cuur@col@pos + \columnwidth + \columnsep}
-% \vrule
- }
-%<*trace>
- \@tracepop{add@columns@topstacked}
-%</trace>
-}
-\let \add@columns \add@columns@topstacked
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{The page box: float areas}
-%
-% \begin{macro}{\t@stack@area}
-% \begin{macro}{\b@stack@area}
-%
-% The 4th argument must be a procedure that fills a box whose number
-% is its last argument. This rather bizarre code merely avoids
-% a box-register-per-area.
-%
-% \begin{macrocode}
-\def\t@stack@area #1#2#3#4{
-%<*trace>
- \@tracepush{t@stack@area}
-%</trace>
- #4 \@tempboxa
-% \end{macrocode}
-% First update stacking position for these columns.
-% \begin{macrocode}
- \@tempcnta #2
- \@tempcntb #3 \relax
- \setlength \@tempdimb {\ht\@tempboxa + \dp\@tempboxa}
- \loop
- \@tempdima \csname stack@level@\the\@tempcntb \endcsname
- \advance \@tempdima \@tempdimb
- \expandafter
- \xdef \csname stack@level@\the\@tempcntb \endcsname
- { \the\@tempdima }
- \advance \@tempcntb \@ne
- \advance \@tempcnta \m@ne
- \ifnum \@tempcnta > \z@
- \repeat
-% \end{macrocode}
-% Calculate horizontal displacement.
-% \begin{macrocode}
- \setlength \@tempdima
- {\pagebodylefthpos - \columndisplacement + \columndisplacement * #3}
-% \end{macrocode}
-% Add box.
-% \begin{macrocode}
-%<*trace>
- \tr@ce{float~area~box~#1#2#3~~lowered~:~%
- \csname stack@level@#3 \endcsname
- }
-%</trace>
- \box@addtopage (\@tempdima,\csname stack@level@#3\endcsname)
- \@tempboxa
-%<*trace>
- \@tracepop{t@stack@area}
-%</trace>
-}
-% \end{macrocode}
-% Different order for co-stacking.
-% \begin{macrocode}
-\def\b@stack@area #1#2#3#4{
-%<*trace>
- \@tracepush{b@stack@area}
-%</trace>
- #4 \@tempboxa
-% \end{macrocode}
-% Calculate horizontal displacement.
-% \begin{macrocode}
- \setlength \@tempdima
- {\pagebodylefthpos - \columndisplacement + \columndisplacement * #3}
-% \end{macrocode}
-% Add box.
-% \begin{macrocode}
- \box@addtopage (\@tempdima,\csname stack@level@#3\endcsname)
- \@tempboxa
-% \end{macrocode}
-% Then update stacking position for these columns.
-% \begin{macrocode}
- \@tempcnta #2
- \@tempcntb #3 \relax
- \setlength \@tempdimb {\ht\@tempboxa + \dp\@tempboxa}
- \loop
- \@tempdima \csname stack@level@\the\@tempcntb \endcsname
- \advance \@tempdima -\@tempdimb
- \expandafter
- \xdef \csname stack@level@\the\@tempcntb \endcsname
- { \the\@tempdima }
- \advance \@tempcntb \@ne
- \advance \@tempcnta \m@ne
- \ifnum \@tempcnta > \@ne
- \repeat
-%<*trace>
- \@tracepop{b@stack@area}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\stack@top@areas}
-% \begin{macro}{\stack@bot@areas}
-%
-% Use of these is all a bit ad hoc for a particular stacking system.
-%
-% \begin{macrocode}
-\def \stack@bot@areas {
- \stack@areas@list b \pagebodybotvpos \pagebox@list@b
-}
-\def \stack@top@areas {
- \stack@areas@list t \pagebodytopvpos \pagebox@list@t
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\stack@areas@list}
-%
-% |#1| : stacking type (t, b or c at present)\\
-% |#2| : starting position\\
-% |#3| : list name
-%
-% \begin{macrocode}
-\def \stack@areas@list #1#2#3 {
-%<*trace>
- \@tracepush{stack@areas@list}
-%</trace>
- \ifx #3 \@empty
- \else
- \forall@columns {
-% \end{macrocode}
-% Starting point:
-% \begin{macrocode}
-% \vrule
- \expandafter \xdef
- \csname stack@level@\the\curr@col@count \endcsname
- {#2}
- }
-% \end{macrocode}
-% Stacking or co-stacking: bottom-up or top-down.
-% \begin{macrocode}
- \expandafter
- \let \expandafter
- \p@elt \csname #1@stack@area \endcsname
- #3
- \fi
-%<*trace>
- \@tracepop{stack@areas@list}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\make@area@floats@box}
-%
-% Format all the floats in a list and store the result in a box register.
-% This should be templated.
-%
-% This could do the file-writing too.
-%
-% |#1| : area-name\\
-% |#2| : box to be filled
-%
-% \begin{macrocode}
-\def\make@area@floats@box #1#2 {
-%<*trace>
- \@tracepush{make@area@floats@box}
-%</trace>
- \setbox #2 \vbox{}
-% \let \@elt \@comflelt % Big aaah!
- \def \@elt { \typeset@float@in@box {#2} }
- \csname area@#1\endcsname
-% \end{macrocode}
-% Not very pretty yet! But better when decoration
-% stuff is used.
-% \begin{macrocode}
- \let \@elt \relax
- \expandafter
- \release@floats
- \csname area@#1\endcsname
-%<*trace>
- \@tracepop{make@area@floats@box}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{DECORATIONS}
-% Not used at present but something like this is probably needed.
-%
-% \begin{macrocode}
-
-\def \box@decorate@bot #1 {
- \setbox #1 \vbox{
- \vskip \pagesetup@float@text@sep
- \botfigrule
- \unvbox #1
- \vskip -\pagesetup@float@float@sep
- }
-}
-\def \box@decorate@top #1 {
- \setbox #1 \vbox{
- \unvbox #1
- \vskip -\pagesetup@float@float@sep
- \topfigrule
- \vskip \pagesetup@float@text@sep
- }
-}
-
-
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{The page box: margins}
-%
-% Needed?
-%
-% \subsection{The page box: headers and footers}
-%
-% Nothing worth puting here yet.
-%
-% \subsection{The page box: other}
-%
-% Maybe should be many subsections: eg overlays.
-%
-% \subsection{Typesetting captions and float boxes}
-%
-% All more or less temporary.
-%
-% \begin{macro}{\@comflelt}
-% \begin{macro}{\typeset@float@in@box}
-%
-% Maybe a bad name but this is probably as generic as it can be at
-% present (and one would hate to see the name's demise).
-%
-% \begin{macrocode}
-\def\@comflelt #1 {
- \global \let \this@float@box #1
- \expandafter
- \extract@this@float@actual@structure \the\toks #1
- \setbox\@tempboxa \vbox {
- \unvbox\@tempboxa
- \typeset@this@float@and@caption
- }
- }
-% \end{macrocode}
-%
-% Thus sadly we maybe should move to this, avoiding the use of a
-% global variable for parameter passing.
-%
-% \begin{macrocode}
-\def\typeset@float@in@box #1 #2 {
- \global \let \this@float@box #2
- \expandafter
- \extract@this@float@actual@structure \the\toks #2
- \setbox #1 \vbox {
- \unvbox #1
- \typeset@this@float@and@caption
- }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\typeset@this@float@and@caption}
-%
-% This should really be a template instance.
-%
-% It must be integrated with the generic version of
-% |\append@caption@to@float| since they must both do the same thing.
-%
-% May use |\this@area|, |\this@area@col@number| and other information,
-% to be determined \ldots even |\this@caption@action|.
-%
-% First we disable premature captioning (fascist or what?).
-%
-% \begin{macrocode}
-%<*obsolete>
-\let\add@caption@to@float@box \relax
-%</obsolete>
-
-%<*obsolete>
-\def \typeset@this@float@and@caption {
- \box\this@float@box
- \nobreak
- \smallskip
- \hsize\columnwidth
- \this@caption \par
- \bigskip
- \hrule
- \vskip\pagesetup@float@float@sep
- }
-% Reminder ABOVE ONLY WORKS WITH THIS:
-% \def\append@caption@to@float{
-% \global\setbox\this@captioned@float\vbox{
-% \copy\this@float@box
-% \smallskip
-% \hsize\columnwidth
-% \this@caption
-% \par\bigskip\hrule}
-% }
-%</obsolete>
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Page box lists}
-%
-% \begin{macro}{\pagebox@area}
-% \begin{macro}{\@addto@pagebox@list}
-%
-% Bad names?
-%
-% Add the float areas to a page-box list, and specify how to
-% process them. This should be templated. The columns could be added
-% to this list.
-%
-% The 2nd argument must at present be a procedure that has two
-% arguments and it is expected to fill a box whose number
-% is its last argument. This rather bizarre code merely avoids
-% a box-register-per-area.
-%
-% |#1| : area-name
-% |#2| : action for each float in area
-% |#3| : area-position
-%
-% \begin{macrocode}
-\def\pagebox@area #1#2#3 {
-%<*trace>
- \@tracepush {pagebox@area}
-%</trace>
- \expandafter
- \let \expandafter
- \this@list \csname area@#1\endcsname
-%<*trace>
- \tr@ce{adding~ floats~ (if any)~ #1~ ==~ `\this@list'~
- to~page~list:~#3 }
-%</trace>
- \ifx \this@list \@empty
- \else
- \let \p@elt \relax
- \@addto@pagebox@list {#3}
- { \p@elt #1 { #2 {#1}} }
- \fi
-%<*trace>
- \@tracepop {pagebox@area}
-%</trace>
-}
-% \end{macrocode}
-% Ugh!! Improve?
-% \begin{macrocode}
-\def \@addto@pagebox@list #1#2 {
- \@temptokena \expandafter\expandafter\expandafter
- { \csname pagebox@list@#1 \endcsname
- #2
- }
- \expandafter
- \xdef
- \csname pagebox@list@#1 \endcsname
- { \the\@temptokena }
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{Magic boxes}
-%
-% \begin{macro}{\mbox@put}
-% \begin{macro}{\box@put}
-% \begin{macro}{\copy@put}
-%
-% Probably move sometime.\footnote{Move?}
-%
-% These add boxes with the specified visual relative position
-% but all-zero dimensions (unlike picture mode where the inner
-% boxes have non-zero vertical size). A highly generalised lap-box!
-%
-% At present these use Don Knuth's left-handed DVI co-ordinate
-% system. They could (should?) be changed to a saner system as used
-% by \LaTeX{}, Postscript and the rest of the known civilised world
-% since Descartes.
-%
-% \begin{macrocode}
-\def\mbox@put (#1,#2)#3{%
- \setbox\@tempboxa \hbox {
-% \raise #2 % Ugh! Zany y-direction---
- \lower #2 % thanks Don!
- \hbox {\kern#1 #3\hss}
- }
-% \end{macrocode}
-% For this application we must zero everything.
-% \begin{macrocode}
- \wd \@tempboxa \z@
- \ht \@tempboxa \z@
- \dp \@tempboxa \z@
- \box\@tempboxa
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\box@put (#1,#2)#3{%
- \mbox@put (#1,#2) {\box #3}
-}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\copy@put (#1,#2)#3{
- \mbox@put (#1,#2) {\copy #3}
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{Move me!}
-%
-% Stuff for elsewhere; maybe to xo-new right now?
-%
-% \begin{macro}{\forall@areas}
-% \begin{macro}{\def \make@useful@list@aux}
-% \begin{macro}{\def \make@useful@list}
-% Area list stuff\footnote{Probably move.}.
-%
-% These should be more generally used/available whatever area lists,
-% however impemnted, we end up with.
-%
-% This list manipulation stuff works only for lists whose elements are
-% unexpandable; this could be extended.
-% \begin{macrocode}
-\def \forall@areas #1 {
- \def \area@elt ##1##2##3 {
- \def \curr@area {##1##2##3}
- \def \curr@pos {##1}
- \def \curr@col {##3}
- \def \curr@span {##2}
- #1
- }
- \used@areas@exec
-}
-
-\def \make@useful@list@aux #1#2#3 {
- \ifx #1 \relax
- \else
- \expandafter
- \xdef \csname \temp@list@name @exec \endcsname
- {\csname \temp@list@name @exec \endcsname \temp@list@elt #1#2#3 }
- \expandafter
- \make@useful@list@aux
- \fi
-}
-\def \make@useful@list #1 #2 {
- \edef \temp@list@name
- {\expandafter \@gobble \string #1}
- \def \temp@list@elt {#2}
- \let #2 \relax
- \expandafter
- \let \csname \temp@list@name @exec \endcsname \@empty
- \expandafter
- \make@useful@list@aux #1\relax\relax\relax
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\release@floats}
-%
-% \begin{macrocode}
-\def\release@floats#1{
-% \show #1
- \xdef \@freelist {\@freelist#1}
- \global\let#1\@empty
-}
-% \end{macrocode}
-% \end{macro}
-%
-% More helper functions (some not yet used)\footnote{To be moved}.
-%
-% Lettings.
-%
-% \begin{macro}{\let@nc}
-% \begin{macro}{\let@cn}
-% \begin{macro}{\let@cc}
-% \begin{macrocode}
-\def \let@nc #1 #2 {
- \expandafter
- \let \expandafter
- #1 \csname #2\endcsname
-}
-\def \let@cn #1 {
- \expandafter
- \let \csname #1\endcsname
-}
-\def \let@cc #1 {
- \expandafter
- \let@nc \csname #1\endcsname
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% Macrised lengths etc.
-%
-% \begin{macro}{\setmlength}
-% \begin{macro}{\gsetmlength}
-% \begin{macrocode}
-\def \gsetmlength #1#2 {
- \setlength \@tempdima {#2}
- \xdef #1 {\the\@tempdima}
-}
-\def \gsetmlength@c #1#2 {
- \setlength \@tempdima {#2}
- \expandafter
- \xdef \csname #1\endcsname
- {\the\@tempdima}
-}
-\def \setmlength #1#2 {
- \setlength \@tempdima {#2}
- \edef #1 {\the\@tempdima}
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{Really temp stuff}
-%
-% \begin{macro}{TEMP@KLUDGES}
-% Some very temporary (very bad) examples and kludges:
-% \begin{macrocode}
-\def \do@floats {
-%<*trace>
- \@tracepush{do@floats}
-%</trace>
- \make@useful@list \used@areas \area@elt
- \let \pagebox@list@t \@empty
- \let \pagebox@list@b \@empty
- \forall@areas {
- \expandafter
- \pagebox@area
- \expandafter
- {\curr@area} \make@area@floats@box {\curr@pos}
- }
-%<*trace>
- \tr@ce{
- pagebox~list:~t~ is~\meaning \pagebox@list@t}
- \tr@ce{
- pagebox~list:~b~ is~\meaning \pagebox@list@t}
- \@tracepop{do@floats}
-%</trace>
-}
-
-% \end{macrocode}
-%
-% Temp place for these calcs. They should be part of the page layout
-% set-up.\footnote{Move?}
-% Temp positioning stuff:
-% \begin{macrocode}
-\AtBeginDocument {
-%% vert
- \setlength \@tempdima {\headheight + \headsep}
- \xdef \pagebodytopvpos {\the\@tempdima}
-
- \setlength \@tempdima {\@tempdima + \textheight}
- \xdef \pagebodybotvpos {\the\@tempdima}
-
-%% horiz
- \setlength \@tempdima {\columnwidth + \columnsep}
- \xdef \columndisplacement {\the\@tempdima}
-
- \def \pagebodylefthpos {\z@} % or whatever?)
-
-% \show \pagebodytopvpos
-% \show \pagebodybotvpos
-%
-% \showthe \headheight
-% \showthe \headsep
-% \showthe \textheight
-% \showthe \textwidth
-% \showthe \columnwidth
-}
-
-% \end{macrocode}
-% \end{macro}
-%
-% \endinput
-\endinput
-%
-% $Log: xo-final.dtx,v $
-% Revision 1.20 2000/08/11 07:14:09 latex3
-% added header
-%
-% Revision 1.19 2000/07/19 15:56:46 latex3
-% removed \extract@this@float@actual@structure (is now in xo-or awaiting
-% normalisation with similar commands)
-%
-% Revision 1.18 2000/07/10 18:46:11 latex3
-% mainly macro renamings
-%
-% Revision 1.17 2000/06/16 11:20:40 latex3
-% rename \construct@and@test@col@height to \construct@and@test@col@ht
-% rename \construct@and@test@col@heights to \construct@and@test@col@hts
-% rename \cl@height1 to \@col@ht@1 (etc)
-%
-% Revision 1.16 2000/06/13 21:17:32 latex3
-% move setting of \protect so that it works
-%
-% Revision 1.15 2000/04/12 20:52:39 car2
-% Much tidyng: farewell comflelt!
-%
-% Revision 1.14 2000/04/06 22:14:00 car2
-% added caption setting
-%
-% Revision 1.13 2000/04/03 12:09:28 car2
-% alpha version
-%
-% Revision 1.12 2000/04/03 10:59:31 car2
-% Untidy alpha
-%
-% Revision 1.11 2000/03/30 21:06:28 car2
-% Chris' alpha-minus version
-%
-% Revision 1.10 2000/03/24 15:34:27 latex3
-% version that starts supporting spans (still a hack yet)
-%
-% Revision 1.9 2000/03/22 15:29:42 latex3
-% some normalisations of names
-%
-% Revision 1.8 2000/03/09 14:44:31 latex3
-% *** empty log message ***
-%
-% Revision 1.7 2000/03/05 19:38:12 latex3
-% support multiple columns (6 max right now)
-%
-% Revision 1.6 2000/02/26 18:25:10 david
-% release floats changes
-%
-% Revision 1.5 2000/02/16 17:34:31 latex3
-% bit of extra tracing to find why columns do not align (no good :-)
-%
-% Revision 1.4 2000/02/16 13:39:47 latex3
-% added 3col support
-%
-% Revision 1.3 2000/02/16 10:19:03 latex3
-% better code for adding floats to column (using \pagesetup@float@text@sep and friends)
-%
-% Revision 1.2 2000/02/13 22:28:10 latex3
-% moved some stuff from xo-or.sty to this file
-%
diff --git a/Master/texmf-dist/source/latex3/xor/xo-float.dtx b/Master/texmf-dist/source/latex3/xor/xo-float.dtx
deleted file mode 100644
index cc552fe25b0..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xo-float.dtx
+++ /dev/null
@@ -1,950 +0,0 @@
-% \iffalse
-%%
-%% (C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley
-%% All rights reserved.
-%%
-%% Not for general distribution. In its present form it is not allowed
-%% to put this package onto CD or an archive without consulting the
-%% the authors.
-%%
-% \fi
-%
-
-% \begin{macrocode}
-\def\@tempa#1: #2.dtx,v #3 #4 #5 #6 #7${
- \ProvidesPackage{#2}[#4 #3 #5 #6]}
-\@tempa$Id: xo-float.dtx,v 1.32 2000/08/11 07:14:11 latex3 Exp $
-% \end{macrocode}
-%
-% Ignore white space in this package.
-% \begin{macrocode}
-\IgnoreWhiteSpace
-% \end{macrocode}
-%
-%
-%
-% \begin{macro}{\@xfloat}
-% The start of a float environment.
-% Unlike \LaTeXe, now save the float as a horizontal list.
-% \begin{macrocode}
-\def\@xfloat #1[#2]{%
-%<*trace>
-\@tracepush{float~environment}
-%</trace>
- \@nodocument
-% #2 is either user suplied or \fps@#1 (from 2e again)
- \def \@fps {#2}
- \def \float@type {#1}
-% \end{macrocode}
-% Next line could be inline since it is used only once
-% now.\footnote{Change?}
-% \begin{macrocode}
- \expandafter \let \expandafter
- \float@sequence@class \csname sequence@class@#1 \endcsname
-% \end{macrocode}
-%
-% \begin{macrocode}
- \expandafter \let \expandafter
- \float@counter \csname counter@#1 \endcsname
-% \end{macrocode}
-% Floats (not caption) increment counter:
-% \begin{macrocode}
- \refstepcounter\float@counter
- \ifhmode
- \@bsphack
- \fi
- \ifinner
- \@parmoderr\@floatpenalty\z@
- \else
- \@allocating@next\@currbox\@freelist
- {
-%
-% not used any longer:
-%
-% \global\expandafter\let\csname fps@\the\@currbox\endcsname
-% \@fps
-% \global\expandafter\let\csname ftype@\the\@currbox\endcsname
-% \@captype
-%
- \global\advance\float@sequence@count\@ne
- \expandafter\PutMark\expandafter\float@sequence@class\expandafter{
- \the\float@sequence@count}
- \global\toks\@currbox{}
- }
- \fi
-% \end{macrocode}
-%
-% Save |\@currbox| as an |\hbox|.
-% \begin{macrocode}
- \global\let\@saved@label\@empty
- \global \setbox\@currbox
-% \end{macrocode}
-% The float body is typeset in a normalised environment, i.e.., we
-% reset colour and font. This is followed by a call to
-% |\body@|\meta{type} to allow the designer to set up special
-% conventions for each float type, e.g., a special font or font
-% size or a special colour, etc.
-% \begin{macrocode}
- \hbox \bgroup\color@begingroup
- \normalcolor
- \normalfont
- \normalsize
- \csname body@\float@type \endcsname
- \ignorespaces}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@endfloatbox}
-% The end of a float environment.
-% First finish off the box assignment. Then make a copy in a second box.
-% The current code makes use of the fact that the allocated boxes
-% are in two continuous runs, |\sbx@offset| apart.
-% \begin{macrocode}
-\def \@endfloatbox{%
- \unskip
- \outer@nobreak
- \color@endgroup
- \egroup
- \edef\@tempa{
- \global\toks\@currbox{
- {\the\toks\@currbox}{\SPANCNT}
- {\@saved@label}
- {\csname the\float@counter \endcsname}
- {\@fps}
- {\float@type}
- {\the\float@sequence@count}
- }}
- \@tempa
-%<*trace>
-\tr@ce{\the\toks\@currbox}
-%</trace>
-% \end{macrocode}
-% Simple temporary interface to get here floats for testing. Needs
-% replacment!\footnote{FIX!!!}
-% \begin{macrocode}
- \def\@tempa{h}
- \ifx\@fps\@tempa
- \setup@here@float
- \else
- \@cons\@activelist\@currbox
- \fi
-%<*trace>
-\@tracepop{float~environment}
-%</trace>
-}
-
-\def\SPANCNT{} %%% do properly one day: David
-
-
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\float@sequence@count}
-% |\float@sequence@count| is the counter used to uniquely refer
-% to the floats, it is incremented whenever we encounter a new float.
-% \begin{macrocode}
-\newcount\float@sequence@count
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\label}
-% Modify to save the label string.
-% \begin{macrocode}
-\def\label#1{\@bsphack
- \gdef\@saved@label{#1}
- \protected@write\@auxout{}%
- {\string\newlabel{#1}{{\@currentlabel}{\thepage}}}%
- \@esphack}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-% \begin{macro}{\DeclareFloatType}
-% A float type is an identifier like ``figure'' the defines a class
-% (?) of floats of floats which have certain attributes in common,
-% e.g., they have the same fixed caption text (e.g. \texttt{Fig}),
-% they use the same counter to number the floats, etc.
-%
-% Setting up a float type is done by declaring an instance of type
-% \texttt{floattypesetup} and then executing it.
-% \begin{macrocode}
-\def\DeclareFloatType#1#2{
- \DeclareInstance{floattypesetup}{#1}{std}
- { type-id = #1, #2 }
- \UseInstance{floattypesetup}{#1}
-}
-% \end{macrocode}
-%
-% For each float type \texttt{TYPE} the following utility macros
-% hold important static data.
-%
-% \DescribeMacro\sequence@class@TYPE
-% The |\sequence@class@TYPE| holds the name of the float sequence
-% class the float type |TYPE| belongs to. A sequence class contains
-% all types which should be placed in order of their call-outs,
-% e.g., if type ``figure'' and ``table'' are in the same sequence
-% class a table whose call-out is later than that of a figure will
-% not be placed before it. If on the other hand these types are in
-% different sequence classes such reordering will be undertaken by
-% the placement algorithm if feasible.
-%
-%
-% \DescribeMacro\toc@extension@TYPE
-% The |\toc@extension@TYPE| holds the file extension to which
-% caption information for this type is written, e.g., |lot| for
-% tables, or |lof| for figures. If there is the desire to produce
-% combined listing one can use the same extension for different
-% float types.\footnote{This functionality can alternatively be
-% provided by putting all captions into a single external file and
-% then ignore certain entries when reading the data back, so it
-% might vanish again.}
-%
-%
-% \DescribeMacro\fps@TYPE
-% The |\fps@TYPE| holds the default float areas in which this float
-% type is allowed to go. By default this is the full list of all
-% known areas. By restricting it to a subset of areas it is
-% possible to provide special placement arrangements, e.g., tables
-% always at the bottom only.
-%
-%
-% \DescribeMacro\caption@TYPE
-% The |\caption@TYPE| holds the fixed caption text which is
-% displayed together with the caption number, e.g., |Figure|,
-% etc. This is passed to the caption formatting instances.
-%
-%
-% \DescribeMacro\counter@TYPE
-% The |\counter@TYPE| holds the name of the counter to use for
-% numbering the floats of type |TYPE|. It is possible that
-% different types share the same counter, i.e., are numbered as a
-% single sequence. However in that case one should probably ensure
-% that the types belong to a single float sequence class since
-% otherwise the numbers within the document might get out of
-% sequence. On the other hand it is not required to have floats in
-% the same sequence class share a counter; they can be numbered
-% independently without problems.
-%
-% \DescribeMacro\body@TYPE
-% The |\body@TYPE| holds the formatting instructions that should be
-% applied to the body of each float of type |TYPE|.
-%
-% \begin{macrocode}
-\DeclareTemplateType{floattypesetup}{0}
-
-\DeclareTemplate{floattypesetup}{std}{0}{
- type-id =n \floattypesetup@id,
- sequence-class-id =n \floattypesetup@class@id,
- toc-extension =n \floattypesetup@toc@ext,
- default-area-list =n \floattypesetup@area@list,
- caption-text =n \floattypesetup@caption@text,
- numbered-boolean =b @test,
- numbered-id =n \floattypesetup@numbered@id,
- numbered-within-id =n \floattypesetup@numbered@within@id,
- numbered-action =f0 \floattypesetup@numbered@action,
- body-decls =f0 \floattypesetup@body@decls,
-
- }
- {
-% \end{macrocode}
-% Setting up defaults is done (at least in parts) in two steps:
-% first we set certain key commands to |\relax| then we run
-% |\DoParameterAssignments| and then check if they are still
-% |\relax|. If so we set the commands that we really want to
-% set. This is necessary because several of them have names that
-% contain the float type as part of the name and this type name is
-% one of the keys.
-% \begin{macrocode}
- \let\floattypesetup@class@id\relax
- \let\floattypesetup@numbered@id\relax
- \let\floattypesetup@numbered@action\relax
- \let\floattypesetup@body@decls\relax
-% \end{macrocode}
-% Now for the defaults we can set directly:
-% the |@test| switch is locally used to denote that we want to
-% number the floats.
-% \begin{macrocode}
- \@testtrue % number by default
-% \end{macrocode}
-% The areas which should be tried for the current type are by
-% default all areas, i.e., |\known@areas|; we use |\def| not |\let|
-% to allow this list to grow afterwards.
-% \begin{macrocode}
- \def\floattypesetup@area@list{\known@areas}
-% \end{macrocode}
-% Default for the fixed caption text is |\@empty|.
-% \begin{macrocode}
- \let\floattypesetup@caption@text\@empty
-% \end{macrocode}
-% By default we don't run the float counter within another
-% counter. We use |\@empty| to denote this since this is also what
-% would be returned from |numbered-within-id=,| which might be
-% specified by a user.
-% \begin{macrocode}
- \let\floattypesetup@numbered@within@id\@empty
-% \end{macrocode}
-% Everything goes by default to the |.toc| file (which isn't too
-% bad if the extended \texttt{xcontents} package is used.
-% \begin{macrocode}
- \def\floattypesetup@toc@ext{toc} % everything in here by default
-% \end{macrocode}
-% Now we are ready to look at the designer specifications:
-% \begin{macrocode}
- \DoParameterAssignments
-% \end{macrocode}
-% Now for the second step: evaluate what we have: If the
-% |sequence-class-id| is not set up, we try to default it to the
-% |type-id|:
-% \begin{macrocode}
- \ifx\floattypesetup@class@id\relax
- \let\floattypesetup@class@id\floattypesetup@id
- \fi
-% \end{macrocode}
-% Float numbers are only set up if requested (which is the default).
-% \begin{macrocode}
- \if@test
-% \end{macrocode}
-% If the |numbered-id| is not set up, we try to default it to
-% the |type-id|:\footnote{This needs fixing since part of the float
-% handling assumes there is some counter to step etc. FIX!}
-% \begin{macrocode}
- \ifx\floattypesetup@numbered@id\relax
- \let\floattypesetup@numbered@id\floattypesetup@id
- \fi
-% \end{macrocode}
-% Set up the new counter, if it already exists skip this part:
-% \begin{macrocode}
- \expandafter\ifx\csname c@\floattypesetup@numbered@id \endcsname
- \relax
- \ifx\floattypesetup@numbered@within@id\@empty
- \newcounter\floattypesetup@numbered@id
- \else
- \newcounter\floattypesetup@numbered@id
- [\floattypesetup@numbered@within@id]
- \fi
-% \end{macrocode}
-% The default display for the float number is ``arabic'', we
-% overwrite this only if requested:
-% \begin{macrocode}
- \ifx\floattypesetup@numbered@action\relax
- \else
- \global\expandafter\let
- \csname the\floattypesetup@numbered@id \endcsname
- \floattypesetup@numbered@action
- \fi
- \fi
- \fi
-% \end{macrocode}
-%
-% Low-level environment declaration (allows overwriting since
-% figure etc already exists)\footnote{Handle better?}
-% \begin{macrocode}
- \expandafter
- \xdef\csname \floattypesetup@id \endcsname
- {\noexpand\@float{\floattypesetup@id}}
- \global\expandafter \let \csname end\floattypesetup@id \endcsname
- \end@float
-% \end{macrocode}
-% The remaining bits of the code set up the data structures that
-% belong to each float type by linking the macro name containing
-% the type in its name (i.e., |\floattypesetup@id|) to the
-% corresponding key macro. Theay are otherwise straight forward
-% |\let|s.
-%
-% First for |\sequence@class@|\meta{type}:
-% \begin{macrocode}
- \global\expandafter\let
- \csname sequence@class@\floattypesetup@id \endcsname
- \floattypesetup@class@id
-% \end{macrocode}
-% Then |\toc@extension@|\meta{type}:
-% \begin{macrocode}
- \global\expandafter\let
- \csname toc@extension@\floattypesetup@id \endcsname
- \floattypesetup@toc@ext
-% \end{macrocode}
-% Then |\fps@|\meta{type}:
-% \begin{macrocode}
- \global\expandafter\let
- \csname fps@\floattypesetup@id \endcsname
- \floattypesetup@area@list
-% \end{macrocode}
-% Then |\caption@|\meta{type}:
-% \begin{macrocode}
- \global\expandafter\let
- \csname caption@\floattypesetup@id \endcsname
- \floattypesetup@caption@text
-% \end{macrocode}
-% Then |\counter@|\meta{type}:
-% \begin{macrocode}
- \global\expandafter\let
- \csname counter@\floattypesetup@id \endcsname
- \floattypesetup@numbered@id
-% \end{macrocode}
-% Then |\body@|\meta{type}:
-% \begin{macrocode}
- \global\expandafter\let
- \csname body@\floattypesetup@id \endcsname
- \floattypesetup@body@decls
- }
-%
-%
-%
-%
-% \begin{macro}{\DeclareFloatSequenceClass}
-% A float sequence class is a list of float types for which the
-% placement algorithm should preserve call-out order even between
-% objects with different float type.
-%
-% For each class we need a corresponding ``mark'' (needed by the
-% algorithm) and we need to record the class name in an |\@elt|
-% list.
-%
-% Perhaps this declaration should be implicitly handled by
-% |\DeclareFloatType|. It would mean a bit more work for the latter
-% but less declarations in the document design!\footnote{Change one
-% day!}
-% \begin{macrocode}
-\def\DeclareFloatSequenceClass#1{
-% \end{macrocode}
-% We probably have to check if that class is already
-% declared since in that case we have to leave out a couple of
-% actions. We assume that this is the case if a mark class is
-% already defined for it.\footnote{Do it properly!}
-% \begin{macrocode}
- \@ifundefined{mark@#1}
- {
- \DeclareMarkType{#1}
-% \end{macrocode}
-% Add this to the list of known classes.
-% \begin{macrocode}
- \@cons\float@classes@list{{#1}}
- }
- \ErrorAlreadyDefined
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\float@classes@list}
-% The list of float classes known in the system.
-% \begin{macrocode}
-\let\float@classes@list\@empty
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\c@figure}
-% \begin{macro}{\c@table}
-% Throw away good registers\ldots this is only for testing to allow
-% us using the OR together with classes like article that sets up
-% figure and table already\footnote{Clean up!}
-% \begin{macrocode}
-\expandafter\ifx\csname c@figure \endcsname \relax
-\else
- \let\c@figure\relax % thus new counter will be defined
- \let\c@table \relax
-\fi
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-%
-%
-% \subsection{Float Placement Control Files}
-%
-% \begin{macro}{\perhaps@write@placements@to@fpl@file}
-% |\perhaps@write@placements@to@fpl@file| writes all float
-% placements (except for ``here'' floats) into the |fpl| in case we
-% are writing to this file.
-%
-% By default, don't write fpl files.
-% \begin{macrocode}
-\let\perhaps@write@placements@to@fpl@file\relax
-\let\perhaps@write@to@fpl@file\@gobble
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\perhaps@write@to@fpl@file}
-% |\perhaps@write@to@fpl@file| writes its first argument to the
-% |fpl| in case we are writing to it.
-%
-% By default, don't write fpl files.
-% \begin{macrocode}
-\let\perhaps@write@to@fpl@file\@gobble
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\perhaps@write@placements@to@fpl@file@aux}
-% The format for a Float: line in an |fpl| file. Only the sequence
-% number (|#7|) is currently used, the rest just helps a human
-% reader identify the float.
-% \begin{macrocode}
-\def\perhaps@write@placements@to@fpl@file@aux#1#2#3#4#5#6#7{
- \@spaces\@spaces Float:~#7~(#6~#4)~[#3]^^J}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\savefloatplacements}
-% Declaration to turn on writing of FPL files.
-% \begin{macrocode}
-\def\savefloatplacements{
- \newwrite\fpl@file
- \immediate\openout\fpl@file\jobname.fpl
- \def\perhaps@write@to@fpl@file{
- \immediate\write\fpl@file
- }
- \def\perhaps@write@placements@to@fpl@file{
- \def\@elt{\expandafter
- \perhaps@write@placements@to@fpl@file@aux\the\toks}
- \perhaps@write@to@fpl@file{
- ^^JPage:~\the\absolute@page@number\space (\the\c@page)^^J
-% \end{macrocode}
-%
-% \begin{macrocode}
- \expandafter\@write@areas\used@areas\relax\relax\relax
- }
- \let\@elt\relax}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@write@areas}
-% |\@write@areas| loops through an area list (like |\used@areas|)
-% and writes lines for every float, provided that |\@elt| is
-% properly set up before. It is used inside a |\write| so needs to
-% be expandable!
-% \begin{macrocode}
-\def\@write@areas#1#2#3{
- \ifx\relax#1
- \else
- \expandafter\ifx\csname area@#1#2#3\endcsname\@empty
- \else
- \@spaces Area:~#1#2#3^^J\csname area@#1#2#3\endcsname
- \fi
- \expandafter\@write@areas
- \fi}
-% \end{macrocode}
-% Alternate version that writes out all areas even if they don't
-% contain any floats.
-% \begin{macrocode}
-\def\@write@areas#1#2#3{
- \ifx\relax#1
- \else
- \@spaces Area:~#1#2#3^^J\csname area@#1#2#3\endcsname
- \expandafter\@write@areas
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\readfloatplacements}
-% Similar declaration to read FPC files. The file is read at this
-% point up to th efirst Page: line. and the output routine command
-% |\float@placement@loop| is redefined to read the FPC info for each page.
-% \begin{macrocode}
-\def\readfloatplacements{
- \newread\fpc@file
- \openin\fpc@file\jobname.fpc\relax
- \ifeof\fpc@file
- \PackageWarningNoLine{xo}
- {No~\jobname.fpc:~using~automatic~float~placement}
- \else
- \let\get@fpc@page@data\get@fpc@page@data@fpc
- \get@fpc@page@data
- \let\try@float@pages\relax
-% \end{macrocode}
-% Next line should go once we implement moving floats in and out of
-% ``here'' as then we need to read the file at a different
-% place!\footnote{Reimplement!}
-% \begin{macrocode}
- \let\float@placement@loop\fpc@float@placement@loop
- \fi
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\fpc@float@placement@loop}
-% Version of |\try@float@pages| to use with float placement control file.
-% Should be moved to xo-or once it works.
-% \begin{macrocode}
-\def\fpc@float@placement@loop{
-%<*trace>
- \@tracepush{fpc@float@placement@loop}
-%</trace>
-% \end{macrocode}
-% Don't think the the next line has any meaning, so
-% removed.\footnote{Old command only did set up best@trial, which
-% is later on set to relax anyway. Correct to remove?}
-% \begin{macrocode}
-% \initialise@best@trial
- \get@fpc@page@data
- \global\let\best@trial\relax
-% \end{macrocode}
-%
-% \footnote{Do we have to set run@with@floats? Check!}
-% \begin{macrocode}
- \mark@restore@state{
- \unvcopy\@holdpg
- \setup@best@column@or
- }
-%<*trace>
- \@tracepop{fpc@float@placement@loop}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\next@fpc@page}
-% The next page for which there is FPC data. Initial value has to be
-% a number to |\ifnum|.
-% \begin{macrocode}
-\let\next@fpc@page\m@ne
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\get@fpc@page@data}
-%
-% \begin{macrocode}
-\let\get@fpc@page@data\relax
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\get@fpc@page@data@fpc}
-% get one line of data from an FPC file, calls itself recursively
-% so the effect of a call is to get all the lines for the current page
-% up to and including the Page: line for the next page for which there
-% is data.
-% \begin{macrocode}
-\def\get@fpc@page@data@fpc{
-%<*trace>
-\@tracepush{get@fpc@page@data@fpc}
-%</trace>
- \let\@nextfpc\relax
- \ifnum\next@fpc@page>\absolute@page@number
-%<*trace>
- \tr@ce{No~ float~ control~ on~ page:~ \the\absolute@page@number}
-%</trace>
- \else
- \ifeof\fpc@file
-%<*trace>
- \tr@ce{fpc~ file~ended}
-%</trace>
- \global\let\next@fpc@page\maxdimen
- \else
- \begingroup
- \endlinechar`\ %
- \catcode`\ 10\relax
- \global\read\fpc@file~to~\@gtempa
- \endgroup
- \let\@nextfpc\get@fpc@page@data
- \ifx\@gtempa\@empty
- \else
- \expandafter\parse@fpc\@gtempa\relax
- \fi
- \fi
- \fi
-%<*trace>
-\@tracepop{get@fpc@page@data@fpc}
-%</trace>
- \@nextfpc
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{parse@fpc}
-% If float control files are being read,
-% Read the section of the fpc file for this page
-% and directly assign floats to the specified areas
-% with no trials or checks.
-% \begin{macrocode}
-\def\parse@fpc#1#2~#3~#4\relax{
- \ifx P#1
-%<*trace>
-\tr@ce{Next~page~control:~#3}
-%</trace>
- \global\mathchardef\next@fpc@page#3\relax
- \let\@nextfpc\relax
- \else\ifx A#1
-%<*trace>
-\tr@ce{Area:~#3}
-%</trace>
- \setup@this@area{#3}
- \let\@nextfpc\get@fpc@page@data
- \else\ifx F#1
- \ifx\this@area\fpc@here
-% \end{macrocode}
-% Should allow moving floats into and out of here status means
-% reading before the collecton OR, not after.\footnote{FIX, update,
-% extend --- whatever you want to call it.}
-% \begin{macrocode}
-%<*trace>
-\tr@ce{here~float}
-%</trace>
- \else
-%<*trace>
-\tr@ce{not~here~float}
-%</trace>
- \begingroup
- \count@#3\relax
- \global\let\this@float@box\relax
- \let\@elt\extract@float@by@number
- \@activelist
- \endgroup
-% \end{macrocode}
-% If a float number is specified and there is not a float of that
-% number in the active list, something has gone wrong, either we
-% haven't reached the float yet (possible if the new arrangement
-% results in the callout being on a later page than specified) or
-% we have already assigned this float (which is a bug, either in
-% this code, or in the fpc file.) Currently this condition is not
-% handled other than by |\ERROR|. If the float is found, assign it
-% to the current area (as set by an Area: line in the fpc file.
-% \begin{macrocode}
- \ifx\this@float@box\relax
-%<*trace>
- \tr@ce{Float:~#3~not~found}
-%</trace>
- \edef\fpc@list{\fpc@list#3,\this@area\relax}
- \show\fpc@list
- \else
-%<*trace>
- \tr@ce{Float:~#3~is~\this@float@box}
-%</trace>
-% \end{macrocode}
-% Before we add the float, let's do some sanity checks. We allow to
-% place a float into an area which is bigger than the float (spans
-% more columns) but we complain if the area is smaller.
-% \begin{macrocode}
- \ifnum \this@area@span@number <
- \if!\this@span@number! 1\else % big hack
- \this@span@number \fi
- \relax
- \PackageError{xo}
- {Float~ bigger~ than~ target~ area}
- {Float~\this@sequence@number\space spans ~
- \this@span@number\space columns,~
- but~ target~ area~ \this@area\space
- spans~ only~ \this@area@span@number\space
- columns.\MessageBreak
- Correct~ the~ data~ in~ file~ \jobname.fpc!
- }
- \fi
-% \end{macrocode}
-% We also check if the target area is allowed on the current page
-% (it could be the case that the page setup for that page doesn't
-% list it in its |area-list| key!
-% \begin{macrocode}
- \xin@\this@area
- \used@areas
- \ifin@\else
- \PackageError{xo}
- {Target~ area~ not~ available~ on~ current~ page}
- {Float~ \this@sequence@number\space was~ requested~ to~
- be~ placed~ into~ area~ \this@area,\MessageBreak
- but~ this~
- area~ is~ not~ available~ on~ page~ \thepage.
- \MessageBreak
- Correct~ the~ data~ in~ file~ \jobname.fpc!
- }
-% \end{macrocode}
-% If we can't put it into the requested area we have to put it
-% somewhere else. Otherwise a lot of code might break. So we simply
-% chose the first area in |\used@area|\footnote{Need a solution if
-% the page doesn't allow ``any'' floats! FIX!}
-% \begin{macrocode}
- \ifx\used@areas\@empty % we have a problem
- \RESOLVE
- \else
- \setup@this@area{\expandafter\@carcube\used@areas\@nil}
- \fi
- \fi
-% \end{macrocode}
-% Typeset and attach the caption and adjust the text size for the
-% current column.
-% \begin{macrocode}
- \append@caption@to@float
- \construct@and@test@col@hts
- \if@test
- \ERRORFloatAreaToLarge
- \fi
-% \end{macrocode}
-% We append the float to the area after the above column updates,
-% otherwise |\construct@and@test@col@hts| would incorrectly think
-% there is already a float present even if we add the first float
-% to an area.
-% \begin{macrocode}
- \let\@elt\relax
- \xdef\@freelist{\@freelist\@elt\this@float@box}
- \expandafter\@cons\csname area@\this@area\expandafter\endcsname
- \this@float@box
- \fi
- \fi
-% \end{macrocode}
-%
-% Loop to next line.
-% \begin{macrocode}
- \let\@nextfpc\get@fpc@page@data
-% \end{macrocode}
-% end of case on type of fpc line.
-% \begin{macrocode}
- \fi\fi\fi
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\fpc@here}
-%
-% \begin{macrocode}
-\def\fpc@here{hhh}
-% \end{macrocode}
-% \end{macro}
-
-% \begin{macro}{\fpc@list}
-%
-% \begin{macrocode}
-\def\fpc@list{\relax}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\get@float@number}
-% could be known as |\@seventhofseven|.
-% \begin{macrocode}
-\def\get@float@number#1#2#3#4#5#6#7{#7}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\extract@float@by@number}
-% Find the float box that has the float with sequence number |\count@|.
-% \begin{macrocode}
-\def\extract@float@by@number#1{
- \ifnum\expandafter\get@float@number\the\toks#1=\count@
- \def\@currbox{#1}
- \expandafter\update@this@float@structure\the\toks#1
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-% \endinput
-\endinput
-%
-% $Log: xo-float.dtx,v $
-% Revision 1.32 2000/08/11 07:14:11 latex3
-% added header
-%
-% Revision 1.31 2000/08/11 06:48:24 latex3
-% untabify
-%
-% Revision 1.30 2000/08/11 06:44:00 latex3
-% fix typo in initialization
-%
-% Revision 1.29 2000/08/04 10:17:28 latex3
-% separate out initialisation of here float
-%
-% Revision 1.28 2000/07/19 17:14:01 latex3
-% deduce \this@class from \this@type instead of storing it on a per
-% float basis
-%
-% Revision 1.27 2000/07/19 15:53:46 latex3
-% introduced float sequence classes
-% cleaned up parts of the code
-% added further documentation
-%
-% Revision 1.26 2000/07/10 18:47:12 latex3
-% macro name renaming
-%
-% Revision 1.25 2000/06/29 17:16:30 latex3
-% introduced \setup@this@area
-%
-% Revision 1.24 2000/06/26 15:00:59 latex3
-% docu update
-%
-% Revision 1.23 2000/06/22 20:07:00 latex3
-% renamed some macros to get them more uniform
-%
-% Revision 1.22 2000/06/22 10:55:59 latex3
-% Includeed part of David's code (formerly in xo-dpc.sty) for writing
-% and reading fpl/fpc files. Not done is moving floats in and out of hhh
-%
-% Revision 1.21 2000/06/16 11:20:50 latex3
-% rename \construct@and@test@col@height to \construct@and@test@col@ht
-% rename \construct@and@test@col@heights to \construct@and@test@col@hts
-% rename \cl@height1 to \@col@ht@1 (etc)
-%
-% Revision 1.20 2000/06/15 15:24:25 latex3
-% implemented new semantics for area names
-%
-% Revision 1.19 2000/06/13 21:18:02 latex3
-% add some trace guards
-%
-% Revision 1.18 2000/05/03 18:55:34 latex3
-% pass \theCNT instead of \value{CNT} in the float data structure (we
-% might need both one day)
-%
-% Revision 1.17 2000/04/21 19:11:39 latex3
-% updated here float interface (needs fixing)
-%
-% Revision 1.16 2000/04/08 10:49:39 latex3
-% first draft support for here floats
-%
-% Revision 1.15 2000/03/24 15:34:27 latex3
-% version that starts supporting spans (still a hack yet)
-%
-% Revision 1.14 2000/03/22 15:30:28 latex3
-% some normalisations of names
-% started on spans (tmp version)
-%
-% Revision 1.13 2000/03/16 10:28:29 latex3
-% partial and full flush working for the first time
-%
-% Revision 1.12 2000/03/05 19:40:07 latex3
-% support multiple columns (6 max right now)
-% moved some float init code into page setup
-%
-% Revision 1.11 2000/02/26 18:22:59 david
-% interface to x-alloc and make changes due to
-% deferred float pre-allocation
-%
-% Revision 1.10 2000/02/21 01:45:23 david
-% documentation improvements
-%
-% Revision 1.9 2000/02/20 00:05:08 david
-% use galley, don't discard it (get more pages that way)
-%
-% Revision 1.8 2000/02/19 23:16:19 david
-% Use \construct@and@test@col@height before destroying
-% \this@captioned@float, not after...
-%
-% Revision 1.7 2000/02/19 18:55:44 david
-% reading fpc files
-%
-% Revision 1.6 2000/02/17 22:47:07 david
-% *** empty log message ***
-%
-% Revision 1.5.1.1 2000/02/16 10:39:42 latex3
-% 3cols support added
-%
diff --git a/Master/texmf-dist/source/latex3/xor/xo-flow-chart.dtx b/Master/texmf-dist/source/latex3/xor/xo-flow-chart.dtx
deleted file mode 100644
index 5565a5aa6ad..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xo-flow-chart.dtx
+++ /dev/null
@@ -1,153 +0,0 @@
-
-% \iffalse
-% $Id: xo-flow-chart.dtx,v 1.5 2000/03/22 15:31:14 latex3 Exp $
-% \fi
-
-\begin{footnotesize}
-\begin{verbatim}
- (1)
- |
- V
- \setup@collection@or
- |
- V
- New OR: \collection@or
- |
- V
- \setup@float@placement
-
-
-
- \setup@float@placement
- |
- V
-(2)--> \float@placement@loop
- |
- V
- \trial@inner@loop
- |
- V
- <current float successfully placed in previous trial?>
- | |
- no yes
- | |
- | |
- | V
- | \try@next@float <---------------------
- | | |
- | | |
- | <\@activelist empty?> |
- | | | |
- | no yes |
- | | | |
- | | V |
- | (get it) \@activelist@empty@action |
- | | (= \setup@best@column@or) |
- -------------v---------------- |
- | |
- | |
- -----> \select@and@test@next@area |
- | | |
- | | |
- | <still open areas for current float type?> |
- | | | |
- | yes no---------------(defer float)----------------
- | | |
- | (do some tests and perhaps |
- | close area this way) |
- | | |
- | <float allowed on this page/column (according to tests)?> |
- | | | |
- | yes no---------------(defer float)----------------
- | |
- | <current area got closed by any test?>
- | | |
- | yes no
- | | |
- -------- V
- \pretests@success@action (\setup@grabcolumn@or)
-
-
-
-
- \setup@grabcolumn@or
- |
- V
- \grabcolumn@loop <--------
- | |
- V |
- New OR: \grabcolumn@or |
- | |
- | |
- <all cols produced?> |
- | | |
- yes no------------
- |
- (store results of trial)
- |
- V
- \setup@cleanup@or
- |
- V
- New OR: \cleanup@or
- |
- V
- <special outputpenalty reached?> --> (reenter 2)
-
-
-
- \setup@best@column@or
- |
- V
- \best@column@loop <-------
- | |
- V |
- New OR: \best@column@or |
- | |
- <all cols produced?> |
- | | |
- yes no----------
- |
- (produce final page)
- |
- V
- \initialise@next@page
- |
- V
- (try to make float pages)
- |
- V
- \setup@collection@or (reenter 1)
-
-
-
-\end{verbatim}
-\end{footnotesize}
-
-\endinput
-
-%
-% $Log: xo-flow-chart.dtx,v $
-% Revision 1.5 2000/03/22 15:31:14 latex3
-% some normalisations of names
-% some corrections
-%
-% Revision 1.4 2000/03/05 19:38:51 latex3
-% more updates -- still wrong
-%
-% Revision 1.3 2000/02/26 18:27:52 david
-% updates (not finished)
-%
-% Revision 1.4 2000/02/18 19:08:47 car2
-% oops, something else changed!
-%
-% Revision 1.3 2000/02/18 19:05:04 car2
-% correction: removed a defer
-%
-% Revision 1.2 2000/02/16 10:20:14 latex3
-% small updates
-%
-% Revision 1.1 2000/02/16 07:35:47 latex3
-% Initial revision
-%
-
diff --git a/Master/texmf-dist/source/latex3/xor/xo-grid.dtx b/Master/texmf-dist/source/latex3/xor/xo-grid.dtx
deleted file mode 100644
index b1d737358a7..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xo-grid.dtx
+++ /dev/null
@@ -1,345 +0,0 @@
-% \iffalse
-%%
-%% (C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley
-%% All rights reserved.
-%%
-%% Not for general distribution. In its present form it is not allowed
-%% to put this package onto CD or an archive without consulting the
-%% the authors.
-%%
-% \fi
-%
-
-% \begin{macrocode}
-\def\@tempa#1: #2.dtx,v #3 #4 #5 #6 #7${
- \ProvidesPackage{#2}[#4 #3 #5 #6]}
-\@tempa$Id: xo-grid.dtx,v 1.3 2000/08/11 07:14:20 latex3 Exp $
-% \end{macrocode}
-%
-% Ignore white space in this package.
-% \begin{macrocode}
-\IgnoreWhiteSpace
-% \end{macrocode}
-%
-% This package implements grid design on top of \LaTeXe{} by adding
-% |\AlignToGrid| in various macros. Nothing else is really needed (or
-% so I hope :-)
-%
-% So far this probably doesn't cover all structures that should, or
-% could be handled automatically.
-%
-% \subsection{Headings}
-%
-%
-% \begin{macro}{\headingsinkage}
-% This is a temporary register used to specify the amount of
-% sinkage a |\@startsection| heading is allowed if it falls at the
-% a column break. In a proper reimplementation of |\@startsection|
-% as a template, this should be individually specifiable rather
-% than being the same for all headings!
-% \begin{macrocode}
-\newskip\headingsinkage
-\headingsinkage=5pt plus 3pt minus 5pt
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@startsection}
-% \begin{macrocode}
-\def\@startsection#1#2#3#4#5#6{%
- \if@noskipsec \leavevmode \fi
- \par
- \@tempskipa #4\relax
- \@afterindenttrue
- \ifdim \@tempskipa <\z@
- \@tempskipa -\@tempskipa \@afterindentfalse
- \fi
- \if@nobreak
- \everypar{}%
- \else
- \addpenalty\@secpenalty
- \addvspace\@tempskipa
-% \end{macrocode}
-% next lines are pretty horrible but we need something like this
-% here (only it could be be done better)
-% \begin{macrocode}
- \vskip-\headingsinkage
- \vskip\saved@topskip
- \vskip-\prevdepth
- \nointerlineskip
- \null
- \nobreak
- \vskip-\saved@topskip
- \vskip\headingsinkage
- \fi
- \@ifstar
- {\@ssect{#3}{#4}{#5}{#6}}%
- {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\@sect}
-% Have to ensure that we don't get the heading itself aligned due
-% to a dangling |\AlignToGrid| from a previous structure, so we
-% issue a |\IgnoreAlignToGrid| early on. That's the only change for
-% this command.
-% \begin{macrocode}
-\def\@sect#1#2#3#4#5#6[#7]#8{%
- \ifnum #2>\c@secnumdepth
- \let\@svsec\@empty
- \else
- \refstepcounter{#1}%
- \protected@edef\@svsec{\@seccntformat{#1}\relax}%
- \fi
- \@tempskipa #5\relax
- \IgnoreAlignToGrid
- \ifdim \@tempskipa>\z@
- \begingroup
- #6{%
- \@hangfrom{\hskip #3\relax\@svsec}%
- \interlinepenalty \@M #8\@@par}%
- \endgroup
- \csname #1mark\endcsname{#7}%
- \addcontentsline{toc}{#1}{%
- \ifnum #2>\c@secnumdepth \else
- \protect\numberline{\csname the#1\endcsname}%
- \fi
- #7}%
- \else
- \def\@svsechd{%
- #6{\hskip #3\relax
- \@svsec #8}%
- \csname #1mark\endcsname{#7}%
- \addcontentsline{toc}{#1}{%
- \ifnum #2>\c@secnumdepth \else
- \protect\numberline{\csname the#1\endcsname}%
- \fi
- #7}}%
- \fi
- \@xsect{#5}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\@xsect}
-% Now after having typeset the heading we need to issue
-% |\ObeyAlignToGrid| and make sure that the first line of text gets
-% aligned again. And in addition we issue a |\AlignToGrid| inside
-% the |\everypar| to align the first text after the heading. Of
-% course that mean that we will generate a break point after this
-% line and thus might end up up with a heading and only a single
-% line afterwards.
-%
-% This could be fixed by using a ``rspace'' structure as
-% implemented in \texttt{xo-or.sty} but this is not added at the
-% moment!
-% \begin{macrocode}
-\def\@xsect#1{%
- \ObeyAlignToGrid
- \@tempskipa #1\relax
- \ifdim \@tempskipa>\z@
- \par \nobreak
- \vskip \@tempskipa
- \@afterheading
- \else
- \@nobreakfalse
- \global\@noskipsectrue
- \everypar{%
- \if@noskipsec
- \global\@noskipsecfalse
- {\setbox\z@\lastbox}%
- \clubpenalty\@M
- \AlignToGrid
- \begingroup \@svsechd \endgroup
- \unskip
- \@tempskipa #1\relax
- \hskip -\@tempskipa
- \else
- \clubpenalty \@clubpenalty
- \everypar{}%
- \fi}%
- \fi
- \ignorespaces}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-% \begin{macro}{\@afterheading}
-% The other case where we have to add |\AlignToGrid| to the
-% |\everypar|.
-% \begin{macrocode}
-\def\@afterheading{%
- \@nobreaktrue
- \everypar{%
- \if@nobreak
- \@nobreakfalse
- \clubpenalty \@M
- \if@afterindent \else
- {\setbox\z@\lastbox}%
- \fi
- \AlignToGrid
- \else
- \clubpenalty \@clubpenalty
- \everypar{}%
- \fi}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{List structures}
-%
-% \begin{macro}{\@doendpe}
-% Handling of |\everypar| after a list strcture is already strange
-% and complicated; here we complicate it even more by adding
-% |\AlignToGrid| into its definition(s).
-% \begin{macrocode}
-\def\@doendpe{\@endpetrue
- \def\par{\@restorepar
- \everypar{\everypar{}\AlignToGrid}\par\@endpefalse}%
- \everypar{{\setbox\z@\lastbox}\everypar{}\AlignToGrid\@endpefalse}%
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-% \begin{macro}{\endtrivlist}
-% And there is one case in |\endtrivlist| in which |\@doendpe|
-% is skipped so we have to set |\everypar| manually
-% here.\footnote{Perhaps done in a wrong way, CHECK!}
-% \begin{macrocode}
-\def\endtrivlist{%
- \if@inlabel
- \leavevmode
- \global \@inlabelfalse
- \fi
- \if@newlist
- \@noitemerr
- \global \@newlistfalse
- \fi
- \ifhmode\unskip \par\fi
- \if@noparlist
- \everypar{\everypar{}\AlignToGrid}
- \else
- \ifdim\lastskip >\z@
- \@tempskipa\lastskip \vskip -\lastskip
- \advance\@tempskipa\parskip \advance\@tempskipa -\@outerparskip
- \vskip\@tempskipa
- \fi
- \@endparenv
- \fi
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Math}
-%
-% \begin{macro}{\displaymath}
-% \begin{macro}{\enddisplaymath}
-% \begin{macro}{\[}
-% \begin{macro}{\]}
-% Math is a bit more complicated as with the standard definitions
-% we don't regain control after the display. So we change all the
-% definitions to use the |\@doendpe| method. This means we have to
-% redefine |\[| at al to be a ref to |\displaymath| not the other
-% way around as it was done in \texttt{latex.ltx}.
-% \begin{macrocode}
-\def \displaymath {
- \relax\ifmmode
- \@badmath
- \else
- \ifvmode
- \nointerlineskip
- \makebox[.6\linewidth]%
- \fi
- $$%%$$ BRACE MATCH HACK
- \fi
-}
-\def \enddisplaymath {
- \relax\ifmmode
- \ifinner
- \@badmath
- \else
- $$%%$$ BRACE MATCH HACK
- \fi
- \else
- \@badmath
- \fi
-% \end{macrocode}
-% To gain control we end the paragraph and then invoke the |\end|
-% mechanism for dealing with par. This gives in certain situations
-% slightly different results compared working only with |$$|'s but
-% that's life.
-% \begin{macrocode}
- \par
- \@endpetrue % kill parindent if current paragraph continues
- \@ignoretrue
-}
-\def\[{\begin{displaymath}}
-\def\]{\end{displaymath}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\endequation}
-% Same change for the end of an equation.
-% \begin{macrocode}
-\def\endequation{\eqno \hbox{\@eqnnum}$$\par\@ignoretrue
- \@endpetrue % kill parindent if current paragraph continues
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\endeqnarray}
-% And again the same for the equation array structure.
-% \begin{macrocode}
-\def\endeqnarray{%
- \@@eqncr
- \egroup
- \global\advance\c@equation\m@ne
- $$\par\@ignoretrue
- \@endpetrue % kill parindent if current paragraph continues
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \endinput
-\endinput
-%
-% $Log: xo-grid.dtx,v $
-% Revision 1.3 2000/08/11 07:14:20 latex3
-% added header
-%
-% Revision 1.2 2000/08/06 19:01:12 latex3
-% fix \prevdepth situation before \@startsection
-%
-% Revision 1.1 2000/07/30 18:07:22 latex3
-% Initial revision
-%
-%
-%
-%
-%
-%
-%
-% \begin{macro}{}
-% \begin{macrocode}
-% \end{macrocode}
-% \end{macro}
diff --git a/Master/texmf-dist/source/latex3/xor/xo-here.dtx b/Master/texmf-dist/source/latex3/xor/xo-here.dtx
deleted file mode 100644
index 189aa2259ae..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xo-here.dtx
+++ /dev/null
@@ -1,454 +0,0 @@
-% \iffalse
-%%
-%% (C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley
-%% All rights reserved.
-%%
-%% Not for general distribution. In its present form it is not allowed
-%% to put this package onto CD or an archive without consulting the
-%% the authors.
-%%
-% \fi
-%
-% \begin{macrocode}
-\def\@tempa#1: #2.dtx,v #3 #4 #5 #6 #7${
- \ProvidesPackage{#2}[#4 #3 #5 #6]}
-\@tempa$Id: xo-here.dtx,v 1.12 2000/08/11 07:14:21 latex3 Exp $
-% \end{macrocode}
-%
-% Ignore white space in this package.
-% \begin{macrocode}
-\IgnoreWhiteSpace
-% \end{macrocode}
-%
-%
-% Most of the code in this file is temporary in the sense that the
-% interfaces are not fixed or the intended functionality is not fully
-% implemented. It is sort of the proof of concept stuff.
-%
-%
-%
-% \begin{macro}{\requirespace}
-% The |\requirespace| command is an interface function for other
-% parts of a a class file. It issues a here point which ensures
-% that there is at least |#1| amount of space still available in
-% the current column. If not it results in carrying the here point,
-% including the previous line(s), to the next column. This could,
-% for example, be used by a heading to ensure that there is a
-% certain amount of minimal space following it.
-%
-% The precise (?) definition of ``previous line(s)'' is as follows:
-% the internal algorithm will split the so far collected column material
-% trying reach the latest possible break point before the here
-% point. It is theoretically possible to construct examples where
-% \TeX{} decides to take an earlier split point but it is
-% guaranteed the the here point is not losing contact with the
-% material directly preceeding it (unless a legal breakpoint was
-% added in front of it).
-% If the here point was added via |\vadjust| in horizontal mode,
-% this means that the line immediately before it will be after the
-% split (since there will be no other legal break point inbetween).
-% \begin{macrocode}
-\def\requirespace #1 {
- \ifhmode
- \@bsphack
- \fi
- \@next\@currbox\@freelist{}{}
-% \end{macrocode}
-% We are only interested in the type really:
-% \begin{macrocode}
- \global\toks\@currbox{{}{}
- {}
- {}
- {}
- {rspace}
- {}
- }
- \here@point\@currbox{#1}
- \@ignorefalse
- \@esphack
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\marginpar}
-% The current implementation of the document command |\marginpar|
-% is only a proof of concept draft. It doesn't cover the full
-% flexibility of the \LaTeXe{} version yet (and perhaps one wants
-% even an extension of that).
-% \begin{macrocode}
-\def\marginpar #1 {
- \ifhmode
- \@bsphack
- \fi
- \@next\@currbox\@freelist{}{}
- \@savemarbox\@currbox{#1}
-% \end{macrocode}
-% We are only interested in the type really:
-% \begin{macrocode}
- \global\toks\@currbox{{}{}
- {}
- {}
- {}
- {mpar}
- {}
- }
-% \end{macrocode}
-% How far is a marginpar allowed to move past the bottom of the
-% text area? Or say it differently: how much space does a marginpar
-% need to reserve on the page?
-%
-% The code below works differently than the \LaTeXe{} one: it will
-% move the marginpar including the line it was issued on to the
-% next column if its text will otherwise fall more than a
-% baselineskip below the page bottom.
-% \begin{macrocode}
- \@tempdima\ht\@currbox
- \advance\@tempdima\dp\@currbox
- \advance\@tempdima -\baselineskip % allow to run long
- \ifdim\@tempdima< \z@ \@tempdima\z@ \fi
- \here@point\@currbox{\the\@tempdima}
- \@ignorefalse
- \@esphack
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-%
-%
-% \begin{macro}{\typeset@a@marginpar}
-% The |\typeset@a@marginpar| code is called when a marginpar is
-% finally added to the current page (either in a trial or in the
-% final run).
-%
-% It should be templated!
-%
-% Current code is only working for two column setup (!) and lacks
-% any modification possibilities depending on the final position
-% for the marginpar.
-%
-% \begin{macrocode}
-\def \typeset@a@marginpar{
- \kern-\pagedepth
- \vtop to\pagedepth{\baselineskip\pagedepth
- \lineskip\z@
- \vss
- \dimen@\dp\@currbox
- \ifnum \curr@col@count = \@ne
-% \end{macrocode}
-% Since this perhaps only a trial setting we have to |\copy| and
-% not to |\box|!\footnote{FIX: Should clear those boxes somewhere
-% else to save space!}
-% \begin{macrocode}
- \llap{\copy\@currbox\kern\marginparsep}
- \else
- \ifnum \curr@col@count = \col@count
- \rlap{\kern\columnwidth\kern\marginparsep\copy\@currbox}
- \else
- \ERROR-NOT-SUPPORTED
- \fi
- \fi
- \kern-\dimen@
- \null}
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-% \begin{macro}{\check@and@typeset@a@here@float}
-%
-% When we reach |\check@and@typeset@a@here@float| we are trying to
-% place a float from the active list into some area and have
-% encountered a here point while grabbing the column text for this
-% trial placement. In |\check@and@typeset@a@here@float| we check if
-% the type of the here point is the same as the current float and
-% if so whether or not it would conflict with that trial
-% placement. This is the case if
-% \begin{itemize}
-% \item
-% the here float and the float under trial have the same type
-% \item
-% and their ordering gets out of sync.
-% \end{itemize}
-% \begin{macrocode}
-\def\check@and@typeset@a@here@float{
-%<*trace>
- \@tracepush{check@and@typeset@a@here@float}
-%</trace>
-% \end{macrocode}
-% If we don't run with floats then no check are necessary (in fact,
-% the checks would produce incorrect results), so we skip them and
-% immediately typeset the here float.
-% \begin{macrocode}
- \ifrun@with@floats
-% \end{macrocode}
-% If the current float under trial has the same sequence class as the here
-% object we have to look at the spatial relationship in more detail.
-% \begin{macrocode}
- \ifx\here@class\this@class
-%<*trace>
- \tr@ce{here:~ here@class~ =~ this@class~ =~ \this@class}
-%</trace>
-% \end{macrocode}
-% If the float under trial has a larger sequence number than the
-% here float we have to ensure that the area we place it in follows
-% the here point, i.e., is either a later column or if it is in the
-% same column comes at the bottom.
-% \begin{macrocode}
- \ifnum \this@sequence@number > \here@sequence@number \relax
-%<*trace>
- \tr@ce{here:~ target~ area~ should~ be~ after~ here~ point!}
-%</trace>
-% \end{macrocode}
-% Like in the case of checking call-out relations we use the column
-% number returned in |\count@| by |calculate@target@fl@column|
-% rather than always using the start column of the area.
-% \begin{macrocode}
- \calculate@target@fl@column
- \ifnum \count@ > \curr@col@count
-%<*trace>
- \tr@ce{OK:~ target~ area column~ later}
-%</trace>
- \else
- \ifnum \count@ = \curr@col@count
-%<*trace>
- \tr@ce{??:~ target~ area~ target~ column~ identical}
-%</trace>
-% \end{macrocode}
-% So in case we are in the same column at the top we fail the trial.
-% \begin{macrocode}
- \if t \this@area@type
-%<*trace>
- \tr@ce{Fail:~ target~ area~ is~ before~ here~ point}
-%</trace>
- \@failtrue
-%<*trace>
- \else
- \tr@ce{OK:~ target~ area~ is~ after~ here~ point}
-%</trace>
- \fi
- \else
-% \end{macrocode}
-% And we fail the trial if we tried to place the float into an
-% earlier column.
-% \begin{macrocode}
-%<*trace>
- \tr@ce{Fail:~ target~ area~ column~ earlier~
- (\the\count@ < \the\curr@col@count)}
-%</trace>
- \@failtrue
- \fi
- \fi
-% \end{macrocode}
-% If the float sequence number of the current float is smaller than
-% the one of the here float then we should always handle it via
-% flushing the float out. So the |\else| case is really only there
-% for debugging
-% \begin{macrocode}
-%<*debug>
- \else
- \tr@ce{here:~ target~ area~ should~ be~ before~ here~ point!}
- \ifnum \this@area@col@number > \curr@col@count
- \tr@ce{Problem:~ target~ area~ column~ after~ here~ point
- (\this@area@col@number > \the\curr@col@count)}
- \else
- \ifnum \this@area@col@number = \curr@col@count
- \tr@ce{??:~ target~ area~ target~ column~ identical}
- \if t \this@area@type
- \tr@ce{OK:~ target~ area~ is~ before~ here~ point}
- \else
- \tr@ce{Problem:~ target~ area~ is~ after~ here~ point}
- \fi
- \else
- \tr@ce{OK:~ target~ area~ is~ before~ here~ point}
- \fi
- \fi
-%</debug>
- \fi
- \fi
- \fi
- \if@fail
-% \end{macrocode}
-% If the test above failed we report progress claiming that the
-% reason is due to the current float being placed before the here
-% float. As mentioned above this should be the only possibility why
-% things fail.
-% \begin{macrocode}
-%<*progress>
- \progress@failed{\this@area\space before~here~float~
- (\here@type\space \here@sequence@number)~
- in~ column~ \the\curr@col@count}
-%</progress>
- \global\curr@col@count\col@count
-%<*trace>
- \tr@ce{Failed:~ here~ float~ out~ of~ sync}
-%</trace>
- \else
- \typeset@a@here@float
- \fi
-%<*trace>
- \@tracepop{check@and@typeset@a@here@float}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\typeset@a@here@float}
-% The |\typeset@a@here@float| is called when a here float is
-% finally added to the current page (either in a trial or in the
-% final run).
-%
-% The caption is attached by the usual method where the here
-% area is denoted by |h|\meta{col}|1|. This allows to have
-% different caption placements depending, for example, on the
-% column being near the one of outer margins.
-%
-% The float is separated from preceeding and following text by the
-% current value of |\pagesetup@float@inline@sep| as defined in the
-% page setup template plus or minus a certain amount to allow
-% grid-based typesetting if desired.
-% \begin{macrocode}
-\def \typeset@a@here@float{
-% \end{macrocode}
-% Attach the caption to the float body and store the result in
-% |\this@captioned@float|.
-% \begin{macrocode}
- \append@here@caption@to@float
-% \end{macrocode}
-% If we are not doing grid typesetting we simply put
-% |\pagesetup@float@inline@sep| before and after the formatted
-% float.
-% \begin{macrocode}
- \ifdim \pagesetup@grid@point@sep = \z@
- \@tempskipa\pagesetup@float@inline@sep
- \else
-% \end{macrocode}
-% Otherwise we have to work a little harder since now we need to
-% put exactly the right amount of space before and after the float
-% to stay within the grid. So we measure the size of the formatted
-% float and store the value in |\@tempdima|.
-% \begin{macrocode}
- \@tempdima\ht\this@captioned@float
- \advance\@tempdima\dp\this@captioned@float
-% \end{macrocode}
-% To this we add twice |\pagesetup@float@inline@sep| which gives us
-% the target size for whole object including surrounding space.
-% \begin{macrocode}
- \advance\@tempdima\tw@\pagesetup@float@inline@sep
-% \end{macrocode}
-% Calculate the difference to the nearest grid point\ldots
-% \begin{macrocode}
- \snap@to@grid \@tempdima \pagesetup@grid@point@sep
-% \end{macrocode}
-% \ldots and decide which grid point is closest. If the smaller one
-% is closer use it if we are allowed to shrink the white space by
-% the necessary amount.
-% \begin{macrocode}
- \ifdim \returned@lower@delta@size < \returned@delta@size \relax
- \ifdim \returned@lower@delta@size < 2\pagesetup@float@inline@shrink
-% \end{macrocode}
-% Note that for the lower delta size we have to use the
-% negation since we want to backup by this amount and delta sizes
-% are always given in absolute values.
-% \begin{macrocode}
- \xdef \returned@delta@size {-\returned@lower@delta@size }
- \fi
- \fi
-% \end{macrocode}
-% Now set up the amount of white space we need around the float by
-% starting with the |\returned@delta@size| divided by two (i.e.,
-% equal amount contributed to both sides of the float and then add
-% |\pagesetup@float@inline@sep|. Notice, that we used a skip
-% register for the calculation so that any minus or plus parts will
-% survive. This is useful in case we are not doing grid typesetting
-% and want to allow for some flexibility.\footnote{This needs perhaps
-% rethinking it the light of extended grid implementation concept!}
-% \begin{macrocode}
- \@tempskipa \returned@delta@size \relax
- \divide \@tempskipa \tw@
- \advance \@tempskipa \pagesetup@float@inline@sep
-%<*trace>
- \tr@ce{GRID:~ here~float:~ use~ \the\@tempskipa \space above~ and~ below}
-%</trace>
- \fi
-% \end{macrocode}
-% Finally typeset the float and its surrounding space which is by
-% now stored in |\@tempskipa|.\footnote{Perhaps make the space
-% above and below specifiable individually. One day, perhaps!}
-% \begin{macrocode}
- \vskip\@tempskipa
- \box\this@captioned@float
- \vskip\@tempskipa
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\setup@here@float}
-% Absolutely temp!!!!!\footnote{FIX!!!!}
-% \begin{macrocode}
-\def \setup@here@float {
- \@tempskipa 2\pagesetup@float@inline@sep %FMi arbitrary value TMP
- \advance\@tempskipa\ht\@currbox %FMi arbitrary value TMP
- \advance\@tempskipa\dp\@currbox %FMi arbitrary value TMP
- \advance\@tempskipa5\baselineskip %FMi arbitrary value TMP
- \here@point\@currbox{\the\@tempskipa}
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \endinput
-\endinput
-%
-% $Log: xo-here.dtx,v $
-% Revision 1.12 2000/08/11 07:14:21 latex3
-% added header
-%
-% Revision 1.11 2000/08/04 10:19:09 latex3
-% added init of here floats (temp version)
-%
-% Revision 1.10 2000/07/19 16:05:41 latex3
-% introduced float sequence class concept
-%
-% Revision 1.9 2000/07/10 19:13:34 latex3
-% template here floats and support grid typesetting for them.
-%
-% Revision 1.8 2000/06/29 17:18:44 latex3
-% introduced \setup@this@area
-%
-% Revision 1.7 2000/06/18 14:58:32 latex3
-% use \calculate@target@fl@column to determine the target column ti
-% check if here float and current float are in sync
-%
-% Revision 1.6 2000/06/15 15:23:05 latex3
-% untabify
-%
-% Revision 1.5 2000/06/13 20:45:47 latex3
-% docu updates
-%
-% Revision 1.4 2000/05/03 18:58:56 latex3
-% provide caption template support
-%
-% Revision 1.3 2000/04/27 19:51:45 latex3
-% bug fix: need to copy boxes in trials :-)
-% moved \check@and@typeset@a@here@float to this file
-%
-% Revision 1.2 2000/04/21 19:01:13 latex3
-% added documentation
-%
-% Revision 1.1 2000/04/21 10:19:07 latex3
-% Initial revision
-%
diff --git a/Master/texmf-dist/source/latex3/xor/xo-new.dtx b/Master/texmf-dist/source/latex3/xor/xo-new.dtx
deleted file mode 100644
index acbeda1bf83..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xo-new.dtx
+++ /dev/null
@@ -1,701 +0,0 @@
-% \iffalse
-%%
-%% (C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley
-%% All rights reserved.
-%%
-%% Not for general distribution. In its present form it is not allowed
-%% to put this package onto CD or an archive without consulting the
-%% the authors.
-%%
-% \fi
-%
-% \begin{macrocode}
-\def\@tempa#1: #2.dtx,v #3 #4 #5 #6 #7${
- \ProvidesPackage{#2}[#4 #3 #5 #6]}
-\@tempa$Id: xo-new.dtx,v 1.25 2000/08/11 07:14:23 latex3 Exp $
-% \end{macrocode}
-%
-% This package is available for test overwrites that need integration
-% into the main packages at some point
-%
-% Ignore white space in this package.
-% \begin{macrocode}
-\IgnoreWhiteSpace
-% \end{macrocode}
-%
-
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%
-% STUFF THAT CHANGES CHRIS' xo-final
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%
-%
-%
-% \begin{macrocode}
-
-\flushbottom
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%changes to xo-final
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\iftrue % using Frank's changes built on 1.15
-
-%<*obsolete>
-\def\typeset@this@float@and@caption{
- \append@caption@to@float
- \box\this@captioned@float
-}
-%</obsolete>
-
-
-
-\def\final@column {
-%<*trace>
- \@tracepush{produce@final@column}
-%</trace>
- \setbox\@outputbox \box\@cclv
-
- \ifvoid\footins
- \else
- \setbox\@outputbox \vbox {
- \boxmaxdepth \@maxdepth
-% \end{macrocode}
-% \TeX\ calculates page breaks expecting the depth of the main text
-% to extend below the page baseline, not contributing to the page height,
-% and it assumes the entire height plus depth of footnotes will contribute
-% to the page height. When the page is assembled, the footnote depth
-% is below the baseline and the main text depth appears mid-page. To
-% make the contents fit the page precisely, we (locally) adjust the
-% footnote spacing \cs{skip}\cs{footins} by the \emph{difference} in
-% the two depths.\footnote{This part of the code was suggested by
-% Donald Arseneau in bug report pr3189.}
-% \begin{macrocode}
- \advance\skip\footins -\dp\@outputbox % already limited to \@maxdepth
- \unvbox \@outputbox
- \advance\skip\footins
- \ifdim\dp\footins>\@maxdepth \@maxdepth \else \dp\footins \fi
- \vskip \skip\footins
-% \end{macrocode}
-% If we are doing grid typesetting we put all excess space between
-% the text and the footnote(s).
-% \begin{macrocode}
- \ifdim \pagesetup@grid@point@sep > \z@
- \vfil
- \fi
- \color@begingroup
- \normalcolor
- \footnoterule
- \unvbox \footins
- \color@endgroup
- }
- \fi
-% \end{macrocode}
-%
-% I am not sure if texttop/bottom should survive for long: something
-% more spohisictaed is needed these days. This may mean that
-% footnotes need better handling too: what makes a complex column
-% look good?
-%
-% \begin{macrocode}
- \global\setbox\csname col@box@\the\curr@col@count\endcsname
- \vbox to \csname col@ht@ \the\curr@col@count\endcsname %<-----
- { % this should one day become \@colht
- % or else
- \@texttop
- \dimen@ \dp\@outputbox
- \unvbox \@outputbox
- \vskip -\dimen@
- \@textbottom
- }%
- \global \maxdepth \@maxdepth
-%<*trace>
- \@tracepop{produce@final@column}
-%</trace>
-}
-\let \produce@final@column \final@column
-
-
-
-\def\make@area@floats@box #1#2 {
-%<*trace>
- \@tracepush{make@area@floats@box}
- \tr@ce{Area:~ #1}
-%</trace>
- \@ifundefined{area@#1} % test only needed because of missing integration
- {
-%<*trace>
- \tr@ce{Area:~ not~ set~ up}
-%</trace>
- }
- {
- \setup@this@area{#1} % needed below when typesetting floats
-
- \setbox #2 \box\voidb@x % <-------- FMi
-% \let \@elt \@comflelt % Big aaah!
- \def \@elt { \typeset@float@in@box {#2} }
- \csname area@#1\endcsname
-% \end{macrocode}
-% Not very pretty yet! But better when decoration
-% stuff is used.
-% \begin{macrocode}
- \let \@elt \relax
-
- \expandafter
- \release@floats
- \csname area@#1\endcsname
- }
-%<*trace>
- \@tracepop{make@area@floats@box}
-%</trace>
-}
-
-
-\def\typeset@float@in@box #1 #2 {
-%<*trace>
- \@tracepush{typeset@float@in@box}
-%</trace>
- \gdef\this@float@box {#2} % <------------- FMi
- \expandafter
- \extract@this@float@actual@structure \the\toks #2
-
- \update@this@area@columns
- {
- \expandafter
- \gdecrement@num
- \csname col@ \this@area@type
- @floats@ \the\count@ @number\endcsname
-%<*trace>
- \tr@ce{col@ \this@area@type
- @floats@ \the\count@ @number~ <-~
- \csname col@ \this@area@type
- @floats@ \the\count@ @number\endcsname}
-%</trace>
- }
-
- \setbox #1 \vbox {
- \ifvoid #1
-%<*trace>
-\tr@ce{add~to~#1:~float~ #2}
-%</trace>
- \else % experimental FMi
-%<*trace>
-\tr@ce{add~to~#1:~float~ #2~ plus~ \pagesetup@float@float@sep}
-%</trace>
- \unvbox #1 % experimental FMi
- \vskip \pagesetup@float@float@sep % experimental FMi
- \fi % experimental FMi
- \typeset@this@float@and@caption
- }
-%<*trace>
- \@tracepop{typeset@float@in@box}
-%</trace>
- }
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% my new xo-final stuff
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-\def \myfinalpage {
- \mbox@addtopage (\pagebodylefthpos, -\headsep)
- {page:~\thepage}
-% \end{macrocode}
-%
-% \begin{macrocode}
-% Init |\dimen|1,2,3,\ldots as vertical current point per column
-% (don't forget in Chris's (sorry, Don's) universum zero is at the
-% top).
-% \end{macrocode}
-%
-% \begin{macrocode}
- \forall@columns{
- \dimen \the\curr@col@count
- \z@
- }
-% \end{macrocode}
-% Now mount all top areas looping through an ordered list of top
-% areas.
-% \begin{macrocode}
- \expandafter\mount@top@areas@loop
- \top@areas
- \relax\relax\relax
-% \end{macrocode}
-% Next mount the text columns.
-% \begin{macrocode}
- \forall@columns{
-
-%<*trace>
- \tr@ce{GRID (delta):~ column~\the\curr@col@count t:~
- \csname col@t@delta@ \the\curr@col@count
- \endcsname\space used}
-%</trace>
- \advance \dimen \the\curr@col@count
- by %NEEDED!!!!!
- \csname col@t@delta@ \the\curr@col@count \endcsname
-
- \advance \dimen \the\curr@col@count
- \csname col@ht@ \the\curr@col@count \endcsname
-
- \setlength \@tempdima
- {\pagebodylefthpos - \columndisplacement
- + \columndisplacement * \curr@col@count }
-
- \mbox@addtopage ( \the\@tempdima ,\the\dimen\curr@col@count )
- { \box \csname col@box@ \the\curr@col@count \endcsname }
-
-%<*trace>
- \tr@ce{GRID (delta):~ column~\the\curr@col@count b:~
- \csname col@b@delta@ \the\curr@col@count
- \endcsname\space used}
-%</trace>
- \advance \dimen \the\curr@col@count
- by %NEEDED!!!!!
- \csname col@b@delta@ \the\curr@col@count \endcsname
- }
-% \end{macrocode}
-% Then mount the bottom floats.
-% \begin{macrocode}
- \def\col@of@focus{0} % temp solution see below
- \expandafter\mount@bot@areas@loop
- \bot@areas
- \relax\relax\relax
-% \end{macrocode}
-%
-% Next thing is absolutely temp: mount a marginal area on the right
-% (bottom) to allow footnotes there (this is just for testing).
-% \begin{macrocode}
- \setlength \@tempdima
- {\pagebodylefthpos + \columndisplacement * \col@count }
- \mbox@addtopage ( \the\@tempdima , \textheight )
- { \box \saved@footins } % TEMP FMi
-%
-% Next thing is absolutely temp: mount a marginal area on the right
-% (bottom) to allow marginal floats there (this is just for testing).
-% \begin{macrocode}
- \expandafter
- \ifx\csname area@m1\the\curr@col@count\endcsname\relax
- \else
- \curr@col@count\col@count
- \advance\curr@col@count\@ne
- \make@area@floats@box {m\the\curr@col@count1}\@tempboxa
- \setlength \@tempdima
- {\pagebodylefthpos + \columndisplacement * \col@count }
- \mbox@addtopage ( \the\@tempdima , \textheight )
- { \vbox to\textheight{\vfil \unvbox \@tempboxa \vfil }}
- \fi
-%
- \ifShowGrid
- \ifdim \pagesetup@grid@point@sep > \z@
- \@tempcnta\textheight
- \@tempcntb\topskip
- \advance\@tempcnta -\@tempcntb
- \@tempdimb\pagesetup@grid@point@sep
- \@tempcntb\@tempdimb
- \divide\@tempcnta\@tempcntb
- \advance\@tempcnta\@ne
-
- \setlength \@tempdimb
- {\pagebodylefthpos + \columndisplacement * \col@count
- - \columnsep }
- \count@\@tempdimb
-
- \sbox\grid@box{
- \setlength\unitlength{1sp}
- \begin{picture}(0,0)
- \multiput(0,0)(0,\@tempcntb){\@tempcnta}
- {\line(1,0){\count@}}
- \end{picture}
- }
-
- \mbox@addtopage ( 0pt ,\textheight )
- { \box\grid@box }
-
- \fi
- \fi
-}
-
-\newbox\grid@box
-
-\newif\ifShowGrid
-\ShowGridtrue
-
-% for tracing only (unchanged)
-
-
-\def\mbox@addtopage (#1,#2)#3{%
-% \tr@ce{box~being~added~to~page:~at~(#1,~#2) }
- \global \setbox\page@box
- \hbox {
- \unhbox \page@box
- \mbox@put (#1,#2) {#3}
- }
-}
-
-
-
-
-\def\mount@top@areas@loop#1#2#3{
- \ifx#1\relax
- \else
- \mount@top@area#1#2#3
- \expandafter\mount@top@areas@loop
- \fi}
-
-
-\def\mount@top@area#1#2#3 {
- \make@area@floats@box {#1#2#3}\@tempboxa
-
- \ifvoid \@tempboxa
- \else
-
- \setlength \@tempdimb
- { \dimen#2 + \ht\@tempboxa + \dp\@tempboxa }
-
- \setlength \@tempdima
- {\pagebodylefthpos - \columndisplacement + \columndisplacement * #2 }
-
- \mbox@addtopage ( \the\@tempdima ,\the\@tempdimb )
- { \box \@tempboxa }
-
- \count@ #2\relax
- \advance\count@ #3\relax
- \loop
- \advance\count@\m@ne
- \dimen \count@ = \@tempdimb
- \advance\dimen \count@
- \ifnum \csname col@t@floats@ \the\count@ @number\endcsname > \z@
- \pagesetup@float@area@sep
- \else
- \pagesetup@float@text@sep
- \fi
- \ifnum #2 < \count@
- \repeat
-
- \fi
-}
-
-\def\mount@bot@areas@loop#1#2#3{
- \ifx#1\relax
- \else
- \mount@bot@area#1#2#3
- \expandafter\mount@bot@areas@loop
- \fi}
-
-\def\mount@bot@area#1#2#3 {
- \make@area@floats@box {#1#2#3}\@tempboxa
-
- \ifvoid \@tempboxa
- \else
-
- \setlength \@tempdimb
- { \dimen#2 + \ht\@tempboxa + \dp\@tempboxa }
-
-% \end{macrocode}
-% There are probably much better ways to get the spacing right, the
-% one below is really only a temporary fix: in |\col@of@focus| we
-% remember the last column in which already applied
-% |\pagesetup@float@text@sep|, any additional float area will
-% contribute another |\pagesetup@float@area@sep|
-% instead.\footnote{To make this work it is absolutely necessary
-% that the floats in bot@areas are ordered by column!!! No-good. FIX!!}
-% \begin{macrocode}
- \ifnum \col@of@focus < #2 \relax
- \def\col@of@focus{#2}
- \advance\@tempdimb
- \pagesetup@float@text@sep
- \else
- \advance\@tempdimb
- \pagesetup@float@area@sep
- \fi
-
- \setlength \@tempdima
- {\pagebodylefthpos - \columndisplacement + \columndisplacement * #2 }
-
- \mbox@addtopage ( \the\@tempdima ,\the\@tempdimb )
- { \box \@tempboxa }
-
-% \end{macrocode}
-% Next loop is actually not necessary as long we keep the
-% restriction that we don't allow partial overlapping float areas, ie we
-% will never mount another float area in the columns that are
-% spanned by the current float area (other than potentially the
-% first and we set this one explicitly).
-% \begin{macrocode}
- \dimen #2 = \@tempdimb
-% \count@ #2\relax
-% \advance\count@ #3\relax
-% \loop
-% \advance\count@\m@ne
-% \dimen \count@ = \@tempdimb
-% \ifnum #2 < \count@
-% \repeat
-
- \fi
-}
-
-
-% of course \top@areas and \bot@areas should be constructed
-% automatically when preparing the \use@areas or from the \known@areas
-% but for now i simply define them here:
-
-\def\top@areas{t13 t12 t22 t32 t11 t21 t31}
-
-\def\bot@areas{b11 b12 b13 b21 b22 b31 b32}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% next line activates my version (well some of it is activated already
-% above)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\let\make@page@box\myfinalpage
-
-\fi % end of stuff modifying xo-final 1.15
-
-% \end{macrocode}
-%
-
-\endinput
-
-
-
-% \begin{macro}{\savecolumnsizes}
-% Declaration to turn on writing of CSL (column size list) files.
-% \begin{macrocode}
-\def\savecolumnsizes{
- \newwrite\csl@file
- \immediate\openout\csl@file\jobname.csl
- \def\perhaps@write@to@csl@file{
- \immediate\write\csl@file
- }
- \def\perhaps@write@placements@to@csl@file{
- \def\@elt{\expandafter
- \perhaps@write@placements@to@csl@file@aux\the\toks}
- \perhaps@write@to@csl@file{
- ^^JPage:~\the\absolute@page@number\space (\the\c@page)^^J
-% \end{macrocode}
-%
-% \begin{macrocode}
- \expandafter\@write@areas\used@areas\relax\relax\relax
- }
- \let\@elt\relax}}
-% \end{macrocode}
-% \end{macro}
-%
-
-
-
-
-
-
-\endinput
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% an attempt to use column 0 and n+1 as marginal areas
-% not active
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% \begin{macro}{\forall@columns@and@margins}
-% \begin{macrocode}
-\def\forall@columns@and@margins#1{
- \edef\saved@curr@col@count{\the\curr@col@count}
- \global\curr@col@count\col@count
- \global\advance\curr@col@count\@ne
- \@whilenum \curr@col@count>\m@ne \do
- {
- #1
- \global\advance\curr@col@count\m@ne
- }
- \global\curr@col@count\saved@curr@col@count\relax
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macrocode}
-% original macro no longer used
-\def\initialise@best@trial{
-%<*trace>
- \@tracepush{initialise@best@trial}
-%</trace>
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\let\best@trial\@empty
- \forall@columns@and@margins{
- \expandafter
- \g@addto@macro\expandafter\best@trial\expandafter
- {
- \expandafter
- \global
- \csname col@ht@ \the\curr@col@count\endcsname
- \textheight
- }
- }
-%<*trace>
- \tr@ce{\meaning\best@trial}
- \@tracepop{initialise@best@trial}
-%</trace>
-}
-% \end{macrocode}
-%
-
-% \begin{macrocode}
-\expandafter\newdimen\csname col@ht@ 0\endcsname
-% \end{macrocode}
-%
-
-
-% \begin{macro}{\initialise@next@page}
-% Initialises the column heights to text height. Clear the float
-% area lists, zero holdinginserts to allow footnote texts to arrive
-% in the insertion box.
-% \begin{macrocode}
-\def\initialise@next@page{
-%<*trace>
- \@tracepush{initialise@next@page}
-%</trace>
-%
- \forall@columns@and@margins
- {\global\csname col@ht@ \the\curr@col@count\endcsname\textheight}
-%
- \initialise@areas
-%
- \global\page@float@count\z@
-%
- \initialise@best@trial
-% \end{macrocode}
-%
-% \begin{macrocode}
- \initialise@flush@data
-% \end{macrocode}
-%
-% \begin{macrocode}
- \initialise@here@data
-% \end{macrocode}
-%
-% \begin{macrocode}
- \initialise@footins@action
-% \end{macrocode}
-%
-% Nothing is closed when we are at the start of a page.
-% \begin{macrocode}
- \global\let\this@page@closed\@empty
-% \end{macrocode}
-%
-% \begin{macrocode}
- \let\@elt\initialise@float@class
- \float@classes@list
- \let\@elt\relax
-%
-%\showfloatlists
-%\show\area@ddd\show\@activelist
-% for safety
- \global\let\this@float@box\@undefined
-%<*trace>
- \@tracepop{initialise@next@page}
-%</trace>
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-
-%
-% \endinput
-\endinput
-%
-% $Log: xo-new.dtx,v $
-% Revision 1.25 2000/08/11 07:14:23 latex3
-% added header
-%
-% Revision 1.24 2000/08/11 06:49:09 latex3
-% untabify
-%
-% Revision 1.23 2000/08/05 10:01:26 latex3
-% ensure that \make@area@floats@box doesn't do any harm to areas not set
-% up via \DeclareFloatArea
-%
-% Revision 1.22 2000/08/04 15:50:31 latex3
-% \flushbottom default again
-%
-% Revision 1.21 2000/08/04 13:58:58 latex3
-% \bot@areas need to be ordered by column at the moment!!!!
-%
-% Revision 1.20 2000/08/04 10:20:09 latex3
-% removed old experimental code for grid layout
-%
-% Revision 1.19 2000/07/22 06:30:50 latex3
-% fixed bug in positioning bottom floats
-%
-% Revision 1.18 2000/07/19 17:12:53 latex3
-% introduced float sequence list
-%
-% Revision 1.17 2000/07/10 19:22:12 latex3
-% more grid support
-%
-% Revision 1.16 2000/07/04 19:48:55 latex3
-% experimental stuff for GRIDs
-% start writing out columnsizes (unused)
-% use \update@this@area@columns
-%
-% Revision 1.15 2000/06/29 17:16:59 latex3
-% introduced \setup@this@area
-%
-% Revision 1.14 2000/06/26 15:17:26 latex3
-% prototype support for \pagesetup@float@area@sep
-%
-% Revision 1.13 2000/06/16 11:21:07 latex3
-% rename \construct@and@test@col@height to \construct@and@test@col@ht
-% rename \construct@and@test@col@heights to \construct@and@test@col@hts
-% rename \cl@height1 to \@col@ht@1 (etc)
-%
-% Revision 1.12 2000/06/15 15:22:36 latex3
-% implemented new semantics for area names
-%
-% Revision 1.11 2000/06/13 21:23:03 latex3
-% *** empty log message ***
-%
-% Revision 1.10 2000/05/04 09:21:27 latex3
-% urg: \this@area undefined inside the output routine, so captions got
-% typeset with whatever was the last \this@area.
-%
-% Revision 1.9 2000/05/03 18:41:52 latex3
-% still overwriting code for xo-final 1.15 ! (not 1.16)
-% enabling support for caption templates
-%
-% Revision 1.8 2000/04/21 19:16:32 latex3
-% activate my version of xo-final
-%
-% Revision 1.7 2000/04/21 19:05:21 latex3
-% my version of xo-final mainly
-%
-% Revision 1.6 2000/04/09 20:02:42 latex3
-% first draft of marginpar support
-%
-% Revision 1.5 2000/03/24 15:34:27 latex3
-% version that starts supporting spans (still a hack yet)
-%
-% Revision 1.4 2000/02/26 18:26:08 david
-% code moved to xo-*
-%
-% Revision 1.3 2000/02/13 21:37:20 latex3
-% ooops, my ultrix rcs is too old to guess the comment char correctly
-% so we better add explicit \endinput
-%
-% Revision 1.2 2000/02/13 21:35:25 latex3
-% wording
-%
-% Revision 1.1 2000/02/13 21:34:51 latex3
-% Initial revision
-%
diff --git a/Master/texmf-dist/source/latex3/xor/xo-or.dtx b/Master/texmf-dist/source/latex3/xor/xo-or.dtx
deleted file mode 100644
index 6aef48254b1..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xo-or.dtx
+++ /dev/null
@@ -1,5188 +0,0 @@
-% \iffalse
-%%
-%% (C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley
-%% All rights reserved.
-%%
-%% Not for general distribution. In its present form it is not allowed
-%% to put this package onto CD or an archive without consulting the
-%% the authors.
-%%
-% \fi
-%
-
-% \begin{macrocode}
-\def\@tempa#1: #2.dtx,v #3 #4 #5 #6 #7${
- \ProvidesPackage{#2}[#4 #3 #5 #6]}
-\@tempa$Id: xo-or.dtx,v 1.53 2000/08/11 07:14:25 latex3 Exp $
-% \end{macrocode}
-%
-% \subsection{A flowchart of the algorithm}
-%
-% Several output routines are employed. Output routines (that is,
-% macros to be used as the sole content of the primitive |\output|
-% register) are named xxx@or. Typically a companion macro named
-% setup@xxx is called to initialise the state (typically setting
-% vsize) and to assign |\output|.
-%
-%
-% [The flow chart has be cut into pieces and individual pieces are
-% shown below.]
-%
-% ^^A \input{xo-flow-chart.sty} ^^A .sty to ease updating
-%
-%
-%
-% Ignore white space in this package.
-% \begin{macrocode}
-\IgnoreWhiteSpace
-% \end{macrocode}
-%
-%
-%
-%
-% \subsection{General helper Routines}
-%
-% \begin{macro}{\@gobblethree}
-% Get rid of three tokens or brace groups.
-% \begin{macrocode}
-\long\def\@gobblethree#1#2#3{}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\xin@}
-% Like |\in@| but with both args (which have to be single tokens!)
-% expanded. Should be replaced by a proper interface.
-% \begin{macrocode}
-\def\xin@#1#2{%
-% expanded once:
- \expandafter\def\expandafter\in@@\expandafter##\expandafter1#1##2##3\in@@{%
- \ifx\in@##2\in@false\else\in@true\fi}%
- \expandafter\expandafter\expandafter\in@@\expandafter#2#1\in@\in@@}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\gincrement@num}
-% Globally increment a ``number macro'' by one.
-% \begin{macrocode}
-\def\gincrement@num#1 {
-% \end{macrocode}
-% We don't want to modify |\count@| here as it might hold some
-% important data so we do everything in a group.
-% \begin{macrocode}
- \begingroup
- \count@#1
- \advance\count@\@ne
- \xdef#1{\the\count@}
- \endgroup
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\gdecrement@num}
-% Globally decrement a ``number macro'' by one.
-% \begin{macrocode}
-\def\gdecrement@num#1 {
- \begingroup
- \count@#1
- \advance\count@\m@ne
- \xdef#1{\the\count@}
- \endgroup
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\split@skip}
-% \begin{macro}{\check@for@fil}
-% \begin{macro}{\get@plus@part}
-% \begin{macro}{\get@minus@part}
-% |\split@skip| takes four aguments: a template key name (for error
-% recovery), a skip specification (e.g., either the value of a skip
-% register via |\the|\meta{register}, or a macro holding the
-% information, or the specification directly), and two dimen
-% registers. The skip specification is taken apart and the first
-% dimen register receives ``plus'' part and the second the
-% ``minus'' part. If the specification contains any |fil| parts an
-% error is generated since these values can't be assigned to a
-% dimen register.
-% \begin{macrocode}
-\begingroup
-% \end{macrocode}
-% We employ the |\lowercase| trick to get certain letters with
-% |\catcode| 12 since we have to scan for them (they are what
-% |\the| outputs. So if we say |MINUS| below we get |minus| but all
-% |\catcode|d 12.
-% \begin{macrocode}
-\catcode`\M=12
-\catcode`\I=12
-\catcode`\N=12
-\catcode`\U=12
-\catcode`\S=12
-% \end{macrocode}
-% We need |p| with |\catcode| 12 to scan for |pt| but we also need
-% |P| with |\catcode| 11 to be able to say |\PackageError|. So we
-% claim lowecase of |Z| is |p| and then say |ZT| and |ZLUS| below.
-% \begin{macrocode}
-\catcode`\Z=12
-\lccode`\Z=`\p
-\catcode`\T=12
-% \end{macrocode}
-% And we need to scan for |FIL|:
-% \begin{macrocode}
-\catcode`\L=12
-\catcode`\F=12
-% \end{macrocode}
-% And the error message contains uppercase |V| and |O| and we want
-% to retain those.
-% \begin{macrocode}
-\lccode`\V=`\V
-\lccode`\O=`\O
-% \end{macrocode}
-% With the above prelims we now apply |\lowercase| to all the
-% definitions below, which will put the correctly |\catcode|d
-% strings in the parsing part of the macros.
-% \begin{macrocode}
-\lowercase{
-\gdef\split@skip #1#2#3#4{
-% \end{macrocode}
-% |#2| is the skip specification. To be sure that the strings
-% ``plus'', ``minus'', ``pt'' are always having |\catcode| 12 we
-% assign it to a register first. Otherwise a user supplied string
-% like |1in plus .5in| wouldn't be parsable since we are only
-% looking for |pt| and also because in this case the |\catcode|s of
-% |plus| would be 11.
-% \begin{macrocode}
- \@tempskipa#2\relax
-% \end{macrocode}
-% Then we pass this on to |\check@for@fil| which will make sure
-% that there isn't any |fil| present and if not does the rest of
-% the processing.
-% \begin{macrocode}
- \expandafter\check@for@fil \the\@tempskipa FIL\relax\check@for@fil
- {\the\@tempskipa}{#3}{#4}{#1}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\gdef\check@for@fil #1FIL#2\check@for@fil#3#4#5#6{
- \ifx\relax#2
- \expandafter
- \get@minus@part #3MINUS 0ZT \get@minus@part{#4}{#5}
- \else
- #4\z@
- #5\z@
- \PackageError{template}{Value~ for~ key~ #6~ contains~ `fil(ll)'}
- {Only~ finite~ minus~ or~ plus~ parts~ are~ allowed~ for~ this~ key.}
- \fi
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\gdef\get@plus@part #1ZLUS#2ZT#3\get@plus@part#4{
- #4=#2pt\relax
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\gdef\get@minus@part #1MINUS#2ZT#3\get@minus@part#4#5{
- \get@plus@part #1ZLUS 0ZT\get@plus@part{#4}
- #5=#2pt\relax
- }
-}
-\endgroup
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-%
-%
-% \subsection{Special Output Routine Penalties}
-%
-%
-% \begin{macro}{\output@collect@penalty}
-% Special penalty marking the point at which the collection OR ended.
-% \begin{macrocode}
-\mathchardef\output@collect@penalty=20202
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\output@balance@penalty}
-% Special penalty marking the point at which the collection OR
-% should end collection because we want to balance the material.
-% \begin{macrocode}
-\mathchardef\output@balance@penalty=10010
-% \end{macrocode}
-% \end{macro}
-%
-%
-% Other special penalties are inbetween -10000 and -10010. Those will
-% not stop the collection OR but are instead recorded along the way.
-%
-% \begin{macro}{\output@columnbreak@penalty}
-% Special penalty marking the point a forced column break was
-% requested by the user.
-% \begin{macrocode}
-\mathchardef\output@columnbreak@penalty=10005
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\output@flush@float@penalty}
-% Special penalty to trigger float flushing for one or more types.
-% \begin{macrocode}
-\mathchardef\output@flush@float@penalty=10006
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\output@here@float@penalty}
-% Special penalty for floats that should stay with their callout.
-% \begin{macrocode}
-\mathchardef\output@here@float@penalty=10007
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\output@grid@align@penalty}
-% Special penalty for places that should fall on the page grid.
-% \begin{macrocode}
-\mathchardef\output@grid@align@penalty=10008
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-% \subsubsection{Utilities for Special Output Routine Penalties}
-%
-%
-% \begin{macro}{\add@badly@guarded@penalty}
-% Put a special penalty into the output and guard it with a
-% box. The reason this macro is called |\add@badly@guarded@penalty|
-% is that such a box of size zero is still messing up spacing
-% caluclations. Why? Because when the penalty is reached on the MVL
-% the preceeding line has already be fully added (i.e., including
-% its depth). This means that \TeX{} might not reach it at all in
-% time! For example, if the preceeding line would be the last line
-% of the page the depth would not be taken into account yet, but by
-% the time we reach the special penalty it has been added to
-% |\pagetotal| and that may result in not fitting anymore onto the
-% page.
-%
-% A solution would be to use a box that has the same depth as its
-% preceeding box and a negative height so that it effectively
-% doesn't modify the galley length. Easy, right? The only problem
-% is that in case of |\vadjust| (and that is unfortunately the more
-% important case) we just don't know what the preceeding depth is,
-% since |\prevdepth| will always give us a friendly |-1000pt| in
-% that case (start of a vertical sub-list\ldots).
-%
-% So not so easy after all. The way out of this dilemma turned out
-% to be complicated and involves a lot of strange corrective
-% actions in the collection process, see there for a replacement of
-% that box and what else can go wrong if one delves into messing
-% around with that part of \TeX.
-% \begin{macrocode}
-\def\add@badly@guarded@penalty#1 {
- \ifvmode
- \nointerlineskip
- \vbox to\z@{\vss\the#1}\penalty-#1\relax
- \else
- \@bsphack
- \vadjust{\vbox to\z@{\vss\the#1}\penalty-#1\relax}
- \@esphack
- \fi
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\add@guarded@penalty}
-% Put a special penalty into the output. To ensure that it doesn't
-% get mistakenly removed during breaking preceed it with a ``guard
-% box'' which is later removed again. --- Actually no longer used
-% but replacement isn't yet finalised.\footnote{CLEANUP!}
-% \begin{macrocode}
-\def\add@guarded@penalty#1
- {\guard@box{BUG:~\string#1}\penalty-#1\relax}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\guard@box}
-% Could be moved into the previous macro.
-%
-% The way it is written (using |\prevdepth|) this can only be used
-% in vertical mode! We have to carry over the |\prevdepth| and
-% append the box without adding any additional interline
-% space. Without it one gets nasty extra glue blobs of height
-% |\baselineskip| somewhere in the output.
-% \begin{macrocode}
-\def\guard@box#1{
- \dimen@\prevdepth
- \nointerlineskip
- \vbox to0pt{\vss \rlap{#1}\kern\z@}
- \prevdepth\dimen@
-}
-% \end{macrocode}
-% Better implementation? The above is wrong!\footnote{FIX!}
-% \begin{macrocode}
-\def\guard@box#1{
- \dimen@\prevdepth
- \nointerlineskip
- \begingroup
- \setbox\z@\vbox to\z@{\vss \rlap{#1}}
- \dp\z@\dimen@
- \box\z@
- \endgroup
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\remove@guard@box@from@cclv}
-% Remove a guard box again. This always happens in the OR and so we
-% hard code the box number for speed.
-%
-% Chris thinks this needs a maxdepth setting.
-% \begin{macrocode}
-\def\remove@guard@box@from@cclv{
- \global\setbox\@cclv \vbox{\boxmaxdepth\@maxdepth \unvbox\@cclv
- \global\setbox\removed@guard@box\lastbox}
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\readd@guarded@penalty}
-% Readding a guared penalty including the box that was removed
-% earlier. Probably not needed in the end either since the way it
-% is used at the moment we have a |\topskip| problem this
-% way.\footnote{FIX!!!!}
-% \begin{macrocode}
-\def\readd@guarded@penalty#1 {
- \box\removed@guard@box
-%FMi what about topskip?
- \penalty-#1\relax}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\removed@guard@box}
-% \begin{macrocode}
-\newbox\removed@guard@box
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-% \subsection{Columns and their Data Structures}
-%
-% \begin{macro}{\col@count}
-% We are collecting stuff for a given number of columns. This
-% number of column is available in a count register.
-% \begin{macrocode}
-\let\col@count \col@number % reuse a register from LaTeX
- % which is named differently there
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\curr@col@count}
-% Register denoting the column number of the current column while
-% we cut the galley etc. Should always be modified globally since
-% it is used within output routines.
-% \begin{macrocode}
-\newcount\curr@col@count
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \DescribeMacro\col@box@FOO
-% Per column number FOO we have one box register allocated in which
-% the column text from the galley is stored during trials and page
-% makeup.
-%
-% \DescribeMacro\col@ht@FOO
-% Per column number FOO we have dimen register allocated which
-% holds the vertical target size for the column during the trials.
-%
-% \DescribeMacro\col@t@floats@FOO@number
-% Per column number FOO we have a macro number in which we count
-% the number of top floats we have seen so far in this column. This
-% is used to implement |\pagesetup@float@area@sep| handling.
-%
-% \DescribeMacro\col@b@floats@FOO@number
-% Per column number FOO we have a macro number in which we count
-% the number of bottom floats we have seen so far in this column. This
-% is used to implement |\pagesetup@float@area@sep| handling.
-%
-%
-% \DescribeMacro\col@t@delta@FOO
-% Per column number foo we have a macro in which we record the
-% difference between the real size of all top floats (including
-% there separation spaces) and the nominal size which is used to
-% determine the vertical size of the remaining text column. The two
-% may differ if we do grid typesetting.
-%
-% \DescribeMacro\col@b@delta@FOO
-% Same kind of delta is recorded per column for the bottom floats.
-%
-% \DescribeMacro\fl@FOO@BAR
-% For each float type BAR (e.g., |figure|, |table|, etc.) and each
-% column number FOO we have a macro which holds the highest float
-% sequence number for floats of type BAR allocated to column FOO or
-% zero if no float has been allocated so far.
-%
-% \DescribeMacro{\fl@0@BAR}
-% For each float type BAR (e.g., |figure|, |table|, etc.)
-% |\fl@0@BAR| holds the highest sequence number in columns of the
-% previous page.
-%
-% \DescribeMacro\tfl@FOO@BAR
-% |\tfl@FOO@BAR| is like |\fl@FOO@BAR| but only stores information
-% about floats allocated to top areas.
-%
-%
-
-% \begin{macro}{\col@box@1}
-% \begin{macro}{\col@box@2}
-% \begin{macro}{\col@box@3}
-% \begin{macro}{\col@box@4}
-% \begin{macro}{\col@box@5}
-% \begin{macro}{\col@box@6}
-% Need a box per column (currently fixed at six) to hold material
-% from the galley for this column.
-% \begin{macrocode}
-\expandafter\newbox\csname col@box@1\endcsname
-\expandafter\newbox\csname col@box@2\endcsname
-\expandafter\newbox\csname col@box@3\endcsname
-\expandafter\newbox\csname col@box@4\endcsname
-\expandafter\newbox\csname col@box@5\endcsname
-\expandafter\newbox\csname col@box@6\endcsname
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\col@ht@ 1}
-% \begin{macro}{\col@ht@ 2}
-% \begin{macro}{\col@ht@ 3}
-% \begin{macro}{\col@ht@ 4}
-% \begin{macro}{\col@ht@ 5}
-% \begin{macro}{\col@ht@ 6}
-% Need a dimen\footnote{Could be a macro if we find ourselves to
-% use up too many dimens.} per column to hold its current vertical
-% target size.
-% \begin{macrocode}
-\expandafter\newdimen\csname col@ht@ 1\endcsname
-\expandafter\newdimen\csname col@ht@ 2\endcsname
-\expandafter\newdimen\csname col@ht@ 3\endcsname
-\expandafter\newdimen\csname col@ht@ 4\endcsname
-\expandafter\newdimen\csname col@ht@ 5\endcsname
-\expandafter\newdimen\csname col@ht@ 6\endcsname
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-%
-%
-% \subsubsection{Utilities for Columns and their Data Structures}
-%
-% \begin{macro}{\forall@columns}
-% If we want to do something to data structures for all column we
-% can use the macro |\forall@columns|. Within its argument the
-% current column is available in the register
-% |\curr@col@count|. The macro takes some pains to restore the
-% original value of |\curr@col@count| afterwards.
-% \begin{macrocode}
-\def\forall@columns#1{
- \edef\saved@curr@col@count{\the\curr@col@count}
- \global\curr@col@count\z@
- \@whilenum \curr@col@count<\col@count \do
- {\global\advance\curr@col@count\@ne
- #1
- }
- \global\curr@col@count\saved@curr@col@count\relax
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\initialise@column@data}
-% \begin{macrocode}
-\def\initialise@column@data{
-%<*trace>
- \@tracepush{initialise@column@data}
-%</trace>
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\let\best@trial\@empty
-
- \forall@columns
- {
-
- \global\csname col@ht@ \the\curr@col@count\endcsname\textheight
-
-% \end{macrocode}
-%
-% \begin{macrocode}
- \expandafter
- \g@addto@macro\expandafter\best@trial\expandafter
- {
- \expandafter
- \global
- \csname col@ht@ \the\curr@col@count\endcsname
- \textheight
- }
-% \end{macrocode}
-% We haven't seen any top or bottom floats yet.
-% \begin{macrocode}
- \global\@namedef{col@t@floats@ \the\curr@col@count
- @number}{0}
- \global\@namedef{col@b@floats@ \the\curr@col@count
- @number}{0}
-% \end{macrocode}
-% For the same reason the delta values for top and bottom areas are
-% zeroed.\footnote{Using \texttt{\string\let} and
-% \texttt{\string\z@} in places like this would be more faster and
-% shorter, but it wouldn't work nicely in tracing as it would make
-% unexpandable macros. Perhaps the tracing versions should be made
-% specially.}
-% \begin{macrocode}
- \global\@namedef{col@t@delta@ \the\curr@col@count}{0pt}
- \global\@namedef{col@b@delta@ \the\curr@col@count}{0pt}
- }
-
-%<*trace>
- \tr@ce{\meaning\best@trial}
- \@tracepop{initialise@column@data}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-% \subsubsection{User Commands for Columns}
-%
-%
-% \begin{macro}{\columnbreak}
-% And here is the user command formaking a column
-% break:\footnote{All this is stolen from \texttt{multicol.sty} and
-% there is still code that doesn't belong here.} |\columnbreak| is
-% modelled after |\pagebreak| except that we generate a penalty
-% |-\output@columnbreak@penalty|.
-% \begin{macrocode}
-\def\columnbreak{
-% \end{macrocode}
-% We have to ensure that it is only used within a multicolumn
-% environment since if that penalty would be seen by the unmodified
-% \LaTeX{} output routine strange things would happen.
-% \begin{macrocode}
- \ifnum\col@count<\tw@
- \PackageError{xoutput}
- {\noexpand\columnbreak~ in~ one-column~ mode}
- {???}
- \else
- \ifvmode
- \penalty -\output@columnbreak@penalty
- \else
- \@bsphack
- \vadjust{\penalty -\output@columnbreak@penalty}
- \@esphack
- \fi
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-%
-%
-%
-%
-% \subsection{Float Areas and their Data Structures}
-%
-% Naming conventions for float areas is as follows:
-% \begin{quote}
-% \meta{identifier}\meta{start-column}\meta{span-count}.
-% \end{quote}
-% The \meta{identifier} is a single letter denoting the type of area,
-% e.g., |t| for top, |b| for bottom. The \meta{span-count} is a single
-% digit denoting the number of columns to span. The
-% \meta{start-column} is a single digit\footnote{with a bit of care in
-% the code this could be extended to allow more than one digit.}
-% denoting the start column of the area. Thus |t32| is a top area
-% starting at column three and spanning two columns ie three and four.
-% A restriction due to the naming scheme is that currently no more than
-% 9 columns are possible.
-%
-% Only a subset of the float areas is allowed to be popolated on a
-% page. In essense the current algorithm does not support placements
-% that result in splitting the text of a column due to a float (other
-% than column `here' floats).\footnote{Perhaps this restriction is
-% lifted one day.} This means that if $pcs$ ($p=\textrm{pos}$,
-% $c=\textrm{column}$, $s=\textrm{span}$) is a float area that is
-% being populated then it must prevent populating all float areas that
-% satisfy either
-% \[
-% pij \textrm{ with } i < c \leq i+j < c+s
-% \]
-% or
-% \[
-% pij \textrm{ with } i \leq c+s < i+j \leq \verb=\col@count=
-% \]
-% The first formula describes the areas which partly overlap from the
-% left, the second formula describes those that partly overlap from
-% the right. Areas which are sub- or super-areas, e.g., \texttt{t13}
-% and \texttt{t22} do not affect each other. The above restriction is
-% necessary to prevent situations like
-%\begin{verbatim}
-%aaaaaaaaaaa 444
-%aaaaaaaaaaa 444
-%aaaaaaaaaaa 444
-%111 222 bbbbbbb
-%111 222 bbbbbbb
-%111 222 bbbbbbb
-%111 222 333 444
-%111 222 333 444
-%\end{verbatim}
-%
-%
-% For each area |FOO| (e.g., |t13|) we keep a number of global
-% variables to store relevant data. These are the following
-% variables\footnote{Not a consistent lot}:
-%
-% \DescribeMacro\area@FOO
-% Floats allocated to the area |FOO| by the page building process
-% are stored as an |\@elt| list in the macro |\area@FOO|.
-%
-% \DescribeMacro\pagesetup@FOO@float@num
-% The maximum number of floats allowed in area |FOO| is stored in
-% the macro |\pagesetup@FOO@float@num|.
-%
-% \DescribeMacro\FOO@@float@count
-%
-% The number of floats currently allocated to area |FOO| is stored
-% in the count register |\FOO@@float@count|.\footnote{This is a
-% waste of registers!}
-%
-% \DescribeMacro\pagesetup@FOO@class@close
-% The areas that should be closed for floats of the same sequence class the
-% moment a float is placed into area |FOO|. This is a comma
-% separated list.
-%
-% \DescribeMacro\pagesetup@FOO@all@close
-% The areas that should be closed for all float sequence classes the
-% moment a float is placed into area |FOO|. This is a comma
-% separated list.
-%
-%
-%
-% \begin{macro}{\known@areas}
-% |\known@areas| are the areas known to the system.\footnote{or
-% something else, the semantics are still changing} Initialisation
-% is done when declaring individual areas.
-% \begin{macrocode}
-\def\known@areas{}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\used@areas}
-% |\used@areas| are the areas used by the current page setup.
-% Initialisation is done in the page setup template so the
-% definition below is arbitrary.
-% \begin{macrocode}
-\def\used@areas{ t11 b11 }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\@activelist}
-% \begin{macrocode}
-\let\@activelist\@empty
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@mvllist}
-% \begin{macrocode}
-\let\@mvllist\@empty
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\area@ddd}
-% The list of deferred floats (which we consider being an area in
-% some respects).
-% \begin{macrocode}
-\let\area@ddd\@empty
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pagesetup@ddd@class@close}
-% \begin{macro}{\pagesetup@ddd@all@close}
-% \begin{macrocode}
-\def\pagesetup@ddd@class@close{\pagesetup@area@list}
-\let\pagesetup@ddd@all@close\@empty
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\this@open@areas}
-% \begin{macro}{\saved@this@open@areas}
-% In |\this@open@areas| we store the float areas which we will try
-% to place a float onto the current page. These areas are tried one
-% after another until the float is successfully placed or we run
-% out of areas. The list does not have any separator (as we assume
-% that all areas are denoted by a letter followed by two digits).
-%
-% |\saved@this@open@areas| is the seved version needed for
-% backtracking if we encounter a flush point that can't be resolved.
-% \begin{macrocode}
-\let\this@open@areas\@empty
-\let\saved@this@open@areas\@empty
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\this@closed@areas}
-% In |\this@closed@areas| we store the float areas which have been
-% closed for the current float while trying to place it. In this
-% list each area name is followed by a comma (to avoid spurious
-% matches). It is initialised with |closed@\this@class @areas| when
-% we fetch a new float to try. Once the float is placed we write
-% the then current value back.
-% \begin{macrocode}
-\let\this@closed@areas\@empty
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\this@page@closed}
-% In |\this@page@closed| we store the float areas which have been
-% closed for all float types. In this list each area name is
-% followed by a comma (to avoid spurious matches).
-% \begin{macrocode}
-\let\this@page@closed\@empty
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\t11@float@count}
-% \begin{macro}{\t21@float@count}
-% \begin{macro}{\b11@float@count}
-% \begin{macro}{\b21@float@count}
-% The float counts are allocated dynamically when an area is
-% declared if they are not defined, but we have a few registers
-% left over from \LaTeX{}'s old OR so we might as well use them.
-% \begin{macrocode}
-%\expandafter\newcount\csname t11@float@count\endcsname
-\expandafter\let\csname t11@float@count\endcsname \@topnum
-%\expandafter\newcount\csname b11@float@count\endcsname
-\expandafter\let\csname b11@float@count\endcsname \@botnum
-%\expandafter\newcount\csname t12@float@count\endcsname
-\expandafter\let\csname t12@float@count\endcsname \@dbltopnum
-%\expandafter\newcount\csname b12@float@count\endcsname
-\expandafter\let\csname b12@float@count\endcsname \@dblbotnum
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\ddd@float@count}
-% And we need to declare the one for the defer area is that isn't
-% going through the normal initialisation process.
-% \begin{macrocode}
-\newcount\ddd@float@count
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\pagesetup@float@area@sep}
-% |\pagesetup@float@area@sep| is the separation to use between two
-% adjacent float areas.
-% \begin{macrocode}
-\newskip\pagesetup@float@area@sep
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\pagesetup@float@text@sep}
-% |\pagesetup@float@text@sep| is the separation to use between
-% column text and adjacent float areas.
-% \begin{macrocode}
-%\newskip\pagesetup@float@text@sep
-\let\pagesetup@float@text@sep\textfloatsep % reuse register
-\let\textfloatsep\@undefined
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\pagesetup@float@float@sep}
-% |\pagesetup@float@float@sep| is the separation to use between
-% two floats in the same float area.
-% \begin{macrocode}
-%\newskip\pagesetup@float@float@sep
-\let\pagesetup@float@float@sep\floatsep % reuse register
-\let\floatsep\@undefined
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\pagesetup@float@text@shrink}
-% |\pagesetup@float@text@shrink| is the allowed shrinkability of
-% |\pagesetup@float@text@sep|. This is used if we are doing grid
-% typesetting and have to adjust the vertical size of the column.
-% \begin{macrocode}
-\newdimen\pagesetup@float@text@shrink
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\pagesetup@float@inline@sep}
-% |\pagesetup@float@inline@sep| is the separation to use between
-% two floats in the same float area.
-% \begin{macrocode}
-%\newskip\pagesetup@inline@float@sep
-\let\pagesetup@float@inline@sep\intextsep % reuse register
-\let\intextsep\@undefined
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\pagesetup@float@inline@shrink}
-% |\pagesetup@float@inline@shrink| is the allowed shrinkability of
-% |\pagesetup@float@inline@sep|. This is used if we are doing grid
-% typesetting and have to adjust the vertical size of object to be
-% added, e.g., an inline float with its caption.
-% \begin{macrocode}
-\newdimen\pagesetup@float@inline@shrink
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-% \subsubsection{Utilities for Float Areas and their Data Structures}
-%
-%
-% \begin{macro}{\initialise@areas}
-% Initialise all float areas used within the current page setup.
-% \begin{macrocode}
-\def\initialise@areas{
- \expandafter\initialise@areas@loop
- \used@areas
- \relax\relax\relax
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\initialise@areas@loop}
-% The |\initialise@areas@loop| picks up the next three tokens and
-% interprets them as the component of an area name.
-% \begin{macrocode}
-\def\initialise@areas@loop#1#2#3{
- \ifx#1\relax
- \else
- \global\csname #1#2#3@float@count\endcsname\z@
- \global\expandafter\let\csname area@#1#2#3\endcsname\@empty
- \expandafter\initialise@areas@loop
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\first@of@type}
-% The macro |\first@of@type| takes a \meta{type} name as its first
-% argument and an \meta{area} area name as its second argument and
-% will return in the macro |\returned@sequence@number| the sequence
-% number of the first float of type \meta{type} currently in
-% \meta{area}. If there is no float of type \meta{type} in this
-% area it will return |-1| (impossible sequence number).
-% \begin{macrocode}
-\def\first@of@type#1#2{
- \begingroup
- \def\@tempb{#1}
- \gdef\returned@sequence@number{-1}
- \def\@elt{\expandafter\first@of@type@aux\the\toks}
- \csname area@#2\endcsname
- \endgroup
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\first@of@type@aux}
-% This macro picks up the type definition in the data structure of
-% a float and compares it with the name started in |\@tempb|. If
-% they agree |\returned@sequence@number| will get updated to
-% contain the sequence number of the float.
-% \begin{macrocode}
-\def\first@of@type@aux#1#2#3#4#5#6#7{
- \def\@tempa{#6}
- \ifx\@tempa\@tempb
- \gdef\returned@sequence@number{#7}
- \let\@elt\@gobble
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\last@of@type}
-% The macro |\last@of@type| takes a \meta{type} name as its firat
-% argument and an \meta{area} area name as its second argument and
-% will return in the macro |\returned@sequence@number| the sequence
-% number of the last float of type \meta{type} currently in
-% \meta{area}. If there is no float of type \meta{type} in this
-% area it will return |-1| (impossible sequence number).
-% \begin{macrocode}
-\def\last@of@type#1#2{
- \begingroup
- \def\@tempb{#1}
- \gdef\returned@sequence@number{-1}
- \def\@elt{\expandafter\last@of@type@aux\the\toks}
- \csname area@#2\endcsname
- \endgroup
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\last@of@type@aux}
-% \begin{macrocode}
-\def\last@of@type@aux#1#2#3#4#5#6#7{
- \def\@tempa{#6}
- \ifx\@tempa\@tempb
- \gdef\returned@sequence@number{#7}
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\setup@this@area}
-%
-% Whenever the algorithm works with some area as the current
-% candidate for putting a float into it uses the following commands
-% to reference this area:
-%
-% \DescribeMacro\this@area
-% The macro |\this@area| holds the name of the candidate area, e.g.,
-% it would expand to something like |t13|.
-%
-% \DescribeMacro\this@area@type
-% The macro |\this@area@type| holds the ``type'' of the area, e.g., |t|
-% in the above example.
-%
-% \DescribeMacro\this@area@col@number
-% The macro |\this@area@col@number| holds the starting column of the
-% area, e.g., |1| in the above example.
-%
-%
-% \DescribeMacro\this@area@span@number
-% The macro |\this@area@span@number| holds the number of columns
-% spanned by the area, e.g., |3| in the above example.
-%
-% All the above macros are globally assigned when calling
-% |\setup@this@area|. The argument is fully expanded (!) since one
-% typical usage to pick up the first area from an area like
-% |\this@open@areas| which can then be done within the argument.
-%
-% \begin{macrocode}
-\def\setup@this@area #1 {
- \xdef\this@area{#1}
-% \end{macrocode}
-% This really relies on |\this@area| containing exactly three
-% tokens (no error recovery if not).
-% \begin{macrocode}
- \expandafter\gassign@area@type@col@and@span@aux\this@area
-}
-\def\gassign@area@type@col@and@span@aux #1#2#3{
- \gdef \this@area@type {#1} % type
- \gdef \this@area@col@number {#2} % col
- \gdef \this@area@span@number {#3} % span
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\update@this@area@columns}
-%
-% If we have to do updates for all columns that are spanned by the
-% current target area we can call |\update@this@area@columns|. It
-% loops through the columns with |\count@| referring to the current
-% column. Data structure updates have to be global as everything
-% happens within a group.
-% \begin{macrocode}
-\def\update@this@area@columns #1 {
- \begingroup
- \count@\this@area@col@number\relax
- \advance\count@\this@area@span@number\relax
- \loop
- \ifnum \this@area@col@number < \count@
- \advance\count@\m@ne
-%<*trace>
- \tr@ce{looking~ at~ column:~ \the\count@}
-%</trace>
- #1
- \repeat
- \endgroup
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-% \newpage
-% \subsection{Collection Output Routine}
-%
-% \begin{description}
-% \item[Entry:] |\setup@collection@or|
-% \item[Exit:] |\setup@float@placement|
-% \item[Prereq:] |\initialise@next@page| should have been called before.
-% \item[Description:] Grab enough text (and float call-outs) to obtain
-% a galley big enough to form the next text page. The page goal is
-% set to a value high enough to ensure that in normal cases text
-% for all columns of the page is collected, i.e, we have a safety
-% margin of 5 extra lines per column.\footnote{This should be made
-% customisable for unusual jobs!}
-%
-% If the output routine is triggered with a special penalty (in the
-% range of $-10000>p>-10010=|\output@balance@penalty|$) the penalty
-% is moved into the collection box |\partial@galley@box| without
-% further processing; otherwise the collection is ended and all
-% collected material is moved to |\@holdpg| for use in page
-% production.
-%
-% \item[Flow:]
-%\begin{footnotesize}
-%\begin{verbatim}
-% \setup@collection@or
-% |
-% V
-% New OR: \collection@or
-% |
-% |<-----------------------------------------
-% | |
-% (natural end of collection reached?) |
-% | | |
-% yes no |
-% | | |
-% | (record special penalty and carry on)----
-% |
-% V
-% \setup@float@placement
-%\end{verbatim}
-%\end{footnotesize}
-% \end{description}
-%
-% Chris noted that |\@holdpg| never gets emptied. This could be
-% done when the Collection OR is started for a new page (in this
-% next macro).\footnote{FIX}
-%
-% \begin{macro}{\setup@collection@or}
-% \begin{macrocode}
-\def\setup@collection@or{
-%<*trace>
- \@tracepush{setup@collection@or}
-%</trace>
- \global\holdinginserts\@ne
-% \end{macrocode}
-% We set the |\vsize| for collection to the height of a single
-% column (plus a safety margin of currently five lines to allow for
-% vanishing space at margins) multiplied by the number of columns.
-% \begin{macrocode}
- \global\vsize\textheight
- \global\advance\vsize 5\baselineskip
- \global\multiply\vsize \col@count
-%<*trace>
- \tr@ce{collection~vsize:~\the\vsize }
-%</trace>
-% \end{macrocode}
-% Initialising the flush point handling:
-% \begin{macrocode}
- \@flushseenfalse
- \@flushfailfalse
-% \end{macrocode}
-% We may have to restart the collection (whenever we find a here or
-% a flush point) and we don't want to get extra space added via
-% |\topskip|. So we can either make |\topskip| zero during
-% collection (current strategy) or back it out whenever we restart.
-%
-% We can't set topskip to zero now since a) we want a proper
-% |\topskip| for the first column and b) due to a bloody fix for the
-% old \LaTeX{} OR, a value of |0pt| is set to |1sp| in
-% |\begin{document}| and this results in adding |1sp| at every
-% special point\ldots no, we definitely do not want this! It took
-% me ages to find out why the grid design macros didn't work.
-% \begin{macrocode}
- \xdef\saved@topskip{\the\topskip}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\output{\collection@or}
-%<*trace>
- \@tracepop{setup@collection@or}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\if@collecting@new@material}
-% There are actually two collecting modes: one when the recent
-% contributions are empty and we are really collecting material
-% that we haven't seen before and one where we collect material
-% that has been collected on a previous collection pass and has been
-% placed again on to the main vertical list. The reason why we need
-% to differentiate between the two is that in the second case we
-% have to handle the special penalties differently since by now
-% they are already surrounded by the proper guard boxes before and
-% after and we better do not disturb this fragile setup.
-% \begin{macrocode}
-\newif\if@collecting@new@material
-\def\@collecting@new@materialfalse
- {\global\let\if@collecting@new@material\iffalse}
-\def\@collecting@new@materialtrue
- {\global\let\if@collecting@new@material\iftrue}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\collection@or}
-% The output routine during the collection phase assembles the
-% material until enough has been gathered to be sure to fill a
-% page.
-% \begin{macrocode}
-\def\collection@or{
-%<*trace>
- \@tracepush{collection@or}
- \tr@ce{output~pen:~ \the\outputpenalty}
-%{\x\showoutput\showbox255}
-%</trace>
-% \end{macrocode}
-% We first look if the call to the OR is due to a special penalty.
-% \begin{macrocode}
- \@testfalse
- \ifnum\outputpenalty < -\@M
- \ifnum\outputpenalty > -\output@balance@penalty
- \@testtrue
- \fi
- \fi
- \if@test
-%<*trace>
- \tr@ce{Forced~ break~(\the\outputpenalty)~ seen\on@line}
-%</trace>
-% \end{macrocode}
-% Whenever a special penalty, i.e., one between $-10000 > p >
-% -10010$ is encountered we need some magic:
-% \begin{itemize}
-% \item We want to keep the the penalty in the collected material but
-% nevertheless carry on with the collection. Simply moving the
-% collected material to a separate box is not enough since then
-% we will restart the collection with an empty page and thus
-% receive a |\topskip| glue as well as probably losing material
-% if there is anything discardable after the special penalty.
-% \item But putting a zero box back and doing something to fix the
-% problem with the |\topskip| glue isn't good either in case we
-% later actually want to break after the line with special
-% penalty, since then we would start a page with our inserted
-% box, and in this case we would like to get a proper |\topskip|
-% and we would like to get rid of discardable stuff.
-% \item And there is another problem, we need a guard box in front of
-% that special penalty, but this guard box should not be simply a
-% |\null| box (as it is right now added by
-% |\add@badly@guarded@penalty|) since that will result in wrong
-% page calculations because it will make \TeX{} add the depth of
-% the precious line to the page total which it shouldn't.
-% \end{itemize}
-% So what to do? First of all we remove the guard box in front of
-% the special penalty (which is now at the end of box 255) since we
-% want to replace that with something better, then we
-% store away the depth of box 255 since we need that in a minute.
-% \begin{macrocode}
- \remove@guard@box@from@cclv
-% \end{macrocode}
-% We really have to say |\dp\@cclv| not |\pagedepth|. The latter is
-% always zero in the OR which looks suspiciously like a bug or at
-% least an inconsistency when Don implemented the change from \TeX2
-% to \TeX3 (in \TeX2 |\page...| registers were useless in the OR,
-% now only |\pagedepth| seems to be left).
-% \begin{macrocode}
- \dimen@\dp\@cclv
-% \end{macrocode}
-% Then we subtract the size of the collected material from
-% |\vsize| since we will store it away in a separate box for a
-% while. Note that we have to use |\ht\@cclv| here not |\pagetotal|
-% since the latter might be to large because of that |\null|
-% box. The height of 255 on the other hand is, after the removal of
-% that box the natural height of the material.
-% \begin{macrocode}
- \global\advance\vsize-\ht\@cclv
-% \end{macrocode}
-% Now we append the material to |\partial@galley@box|, this is
-% straight forward.
-% \begin{macrocode}
- \global\setbox\partial@galley@box
- \vbox{\ifvoid\partial@galley@box
- \else
- \unvbox\partial@galley@box
- \fi
- \unvbox\@cclv
-% \end{macrocode}
-% But how to add the penalty and how to guard it? We need a box or
-% something to ensure the penalty doesn't get lost at a column
-% break but we also want to avoid that \TeX{} adds the depth of the
-% preceding line to |\pagetotal|. Fortunately we know this depth by
-% now (we have just stored it in |\dimen@|), something we didn't
-% know at the time the we added the penalty with
-% |\add@badly@guarded@penalty|. So we could back up and then add a
-% box with zero height and that depth. This way a break directly
-% after this line would have the same |\pagetotal| as a break at
-% the special penalty. In fact, instead of backing up using a
-% |\kern| or a |\vskip| we can simply make the height of the box
-% negative. The advantage is that this way we don't generate a
-% break point between the box and a preceding box and thus don't
-% have to use special precautions to prevent \TeX{} from breaking in
-% front of the guard box.\footnote{This statement is only true for
-% special penalties added using \texttt{\string\vadjust}, i.e., in
-% hmode. If the penalty was added between paragraphs then there
-% might be vertical space in front of the box. This might need
-% special handling too. CHECK!}
-% \begin{macrocode}
- \setbox\z@\vbox to-\dimen@{}
- \dp\z@\dimen@
- \box\z@
- \penalty\outputpenalty
- }
-%{\showoutput\batchmode\showbox\partial@galley@box\errorstopmode}
-% \end{macrocode}
-% So now we have put everthing we need into the
-% |\partial@galley@box|, but how do we restart our collection
-% process without running into the problems outlined above?
-%
-% Well, right now on the recent contributions there will be a
-% penalty node (from our special penalty) which gets set to 10000
-% by \TeX{} followed perhaps by another penalty from the line
-% breaking followed probably by interline glue calculated to make
-% the next line of text fit vertically with the preceding one ---
-% and we don't want to loose that that glue if we are ending up in
-% the middle of a column. But we want to make it vanish if we
-% happen to finally break at the special penalty place.
-%
-% So the trick is that we a) disable |\topskip| by setting it to
-% |-\maxdimen| (not zero this might be too large still) and b) we
-% add another of those funny boxes followed by a penalty of zero to
-% allow for a break after it.
-%
-% If later on all this is put together again into a single box (in
-% |\@holdpg|) we will have the following sequence there:
-% \begin{itemize}
-% \item text line (box) preceding the special penalty with depth $d$
-% or some other vertical material in which case $d=0\texttt{pt}$
-% \item special box with height $-d$ and depth $d$
-% \item special penalty, e.g. $-10008$
-% \item |\topskip| glue of 0pt
-% \item special box with height $-d$ and depth $d$
-% \item |\penalty| 0
-% \item |\penalty| 10000
-% \item perhaps a |\penalty| and/or interline glue
-% \item perhaps the next text line (box)
-% \end{itemize}
-% Now if during later processing we hit the special penalty
-% |\pagetotal| has the same value as if we would have broken the
-% galley directly after the text line, in other words we do not see
-% the penalty too late (assume this happens to be the last line of
-% the column then if |\pagetotal| would also have the extra depth
-% added to it it might have been overfull and the penalty not being
-% considered at all for this column).
-%
-% After the OR's have dealt with the special penalty, e.g., by
-% flushing some floats, etc. the penalty will be replaced by 10000
-% and thus the next time the galley is processed there is no
-% breakpoint between the two special boxes any more. As a result
-% the next potential breakpoint is the penalty 0 which again
-% results in exactly the same |\pagetotal| as before, i.e., if the
-% text line was the last line to fit in the column then this
-% breakpoint will still fit there. Thus if we break the column
-% there then the interline glue etc will vanish and \TeX{} will
-% insert |\topskip| glue (which has be set back to a normal value
-% by then). If on the other hand, this break point is not chosen
-% the interline glue will stay and thus the two text lines, before
-% and after the special penalty will sit one |\baselineskip| apart
-% just as they should.
-%
-% Woah. What did Don said on page 125 of \textit{The \TeX{}book}?
-% (Deep breath.) You got that?\footnote{There are probably still
-% cases that aren't covered I fear and the need for an explicit
-% penalty 0 at the end is kind of toublesome, so we have to see if
-% this needs further refinements.}
-%
-% And here is already the first case where the above method is not
-% appropriate: if we stumble across a |\output@columnbreak@penalty|
-% we need to discard any following glue, so we don't want a box
-% intervene here.\footnote{Once this is interfaced with the galley
-% code problems like this should vanish since then we can ensure
-% that all such penalties are added to the galley on at save
-% places. REDO THEN!}
-% \begin{macrocode}
- \global\topskip-\maxdimen % okay here?
- \if@collecting@new@material
- \ifnum \outputpenalty = -\output@columnbreak@penalty
- \else
- \setbox\z@\vbox to-\dimen@{}
- \dp\z@\dimen@
- \box\z@
- \penalty\z@
- \fi
- \fi
-% \end{macrocode}
-%
-% \begin{macrocode}
- \ifnum\outputpenalty=-\output@flush@float@penalty
-%<*trace>
- \tr@ce{Forced~ break~ =~ flush~ float~ point}
-%</trace>
- \@flushseentrue
- \fi
-% \end{macrocode}
-% Otherwise either the we reached the natural end of the
-% collection, or the point where we have been before (in case we
-% are recollecting previously seen material) or we reached an
-% |\output@balance@penalty|.
-% \begin{macrocode}
- \else
- \ifnum\outputpenalty = -\output@collect@penalty
-% \end{macrocode}
-% If we got an |-\output@collect@penalty| then we are at the point
-% to which the previous collection pass got. So, away with the
-% guard box, then everything back onto the MVL and as a penalty we
-% try to put what we have found in the previous collection pass.
-% \begin{macrocode}
- \remove@guard@box@from@cclv
- \unvbox\@cclv
-%<*trace>
- \tr@ce{reinsert~penalty:~ \saved@outputpenalty\space
- (unless~ 10000~ or~ <~ -9999)}
-%</trace>
- \ifnum\saved@outputpenalty > -\@M
- \penalty
- \ifnum\saved@outputpenalty=\@M
- \z@
- \else
- \saved@outputpenalty\relax
- \fi
-% \end{macrocode}
-% We have a special situation to account for here: if we have a
-% |\pagebreak| that ended the collection last time then it might
-% still be the case that we haven't got to this point due to
-% floats. So we would need to put that penalty back. But only then,
-% and therese the catch! The alternative is to not stop a
-% collection as such a point so that this problem doesn't arise in
-% the first place. Right now we lose the
-% penalty.\footnote{Unresolved situation. FIX!}
-% \begin{macrocode}
- \else
- \fi
-% \end{macrocode}
-% Finally we change the |@collecting@new@material| switch since we
-% are from now on looking at really new material.
-% \begin{macrocode}
- \@collecting@new@materialtrue
- \else
-% \end{macrocode}
-% Next case is not functional right now\ldots
-% \begin{macrocode}
- \ifnum\outputpenalty = -\output@balance@penalty
- \@balancetrue
-%<*trace>
- \tr@ce{BALANCE:~ break~ seen\on@line}
-%</trace>
- \xdef\saved@outputpenalty{0}
-% \end{macrocode}
-% This is now the point where the collection ended naturally: we
-% save the penalty that triggered it and combine the
-% |\partial@galley@box| if it contains material with the stuff now
-% in 255 and put everything into |\@holdpg|.
-% \begin{macrocode}
- \else
- \xdef\saved@outputpenalty{\the\outputpenalty}
- \fi
- \ifvoid\partial@galley@box
- \global \setbox\@holdpg\box\@cclv
- \else
-%<*trace>
- \tr@ce{Re-adding~ forced~ break(s)~ for~ splitting}
-%</trace>
- \global\setbox\@holdpg\vbox{
- \unvbox\partial@galley@box
- \unvbox\@cclv}
- \fi
-
-%\showbox\@holdpg
-
- \if@balance
- \global\setbox\@holdpg\vbox{
- \unvbox\@holdpg
- \penalty\outputpenalty % short for "-\output@balance@penalty"
- }
- \fi
-
- \mark@save@state
- \mark@update@structure
-%
- \global\holdinginserts\z@
-
- \global\topskip\saved@topskip
-
- \setup@float@placement
-
- \@collecting@new@materialfalse
- \fi
- \fi
-%<*trace>
- \@tracepop{collection@or}
-%</trace>
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\partial@galley@box}
-% Need a box to store the partially collected galley.
-% \begin{macrocode}
-\newbox\partial@galley@box
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-% \begin{macro}{\initialise@float@class}
-%
-% \begin{macrocode}
-\def\initialise@float@class#1{
-%<*trace>
- \@tracepush{initialise@float@class}
-%</trace>
- \count@0\LastMark{#1}
-%
-% next line no longer used
-% \global\expandafter\mathchardef\csname count@#1\endcsname\count@
-%
-%<*trace>
- \tr@ce{count~ (#1) = \the\count@}
-%</trace>
-% \end{macrocode}
-%
-% At some point the set of open areas at page start (for a
-% given type of floats) should be specifiable through some
-% templates. Using |\used@areas| is not really the right thing
-% to do.\footnote{Code should vanish one day}.
-% \begin{macrocode}
- \global\expandafter\let\csname open@#1@areas\endcsname\used@areas
- \global\expandafter\let\csname closed@#1@areas\endcsname\@empty
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<*trace>
- \tr@ce{open~ (#1) = \csname open@#1@areas\endcsname}
- \tr@ce{closed~ (#1) = \csname closed@#1@areas\endcsname}
-%</trace>
-% \end{macrocode}
-%
-% |\fl@1@figure| are macros that expands to the highest numbered
-% figure callout in this column (or zero if there is none).
-% |\fl@0@figure| is the highest value from previous pages (or zero
-% if there was never any float of this type).
-% \begin{macrocode}
- \forall@columns {
- \ifnum \csname fl@ \the\curr@col@count @#1\endcsname>\z@
- \global\expandafter\let\csname fl@0@#1\expandafter\endcsname
- \csname fl@ \the\curr@col@count @#1\endcsname
- \expandafter\xdef
- \csname fl@ \the\curr@col@count @#1\endcsname{0}
- \fi
-% \end{macrocode}
-% |\tfl@1@figure| is like |\fl@1@figure| but only stores
-% information about floats allocated to top areas.
-% \begin{macrocode}
- \expandafter\xdef
- \csname tfl@ \the\curr@col@count @#1\endcsname{0}
- }
-%<*trace>
- \@tracepop{initialise@float@class}
-%</trace>
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \newpage
-%
-% \subsection{Placing Floats}
-%
-%
-% \begin{description}
-% \item[Entry:] |\setup@float@placement|
-% \item[Exit:] |\setup@grab@column@or| or |\setup@best@column@or|
-% \item[Prereq:]
-% \item[Description:]
-% \item[Flow:]
-%\begin{footnotesize}
-%\begin{verbatim}
-% \setup@float@placement
-% |
-% V
-%(2)--> \float@placement@loop
-% |
-% <run with floats?>
-% | |
-% yes no----------> \setup@grab@column@or
-% |
-% V
-% \trial@inner@loop
-% |
-% V
-% <current float successfully placed in previous trial?>
-% | |
-% no yes
-% | |
-% (means we now try V
-% again using different \try@next@float <-------------------
-% placement rules below ) | |
-% | | |
-% | <\@activelist empty?> |
-% | | | |
-% | no yes |
-% | | | |
-% | | V |
-% | (get it) \@activelist@empty@action |
-% | | (= \setup@best@column@or) |
-% -------------v---------------- |
-% | |
-% -----> \try@this@area (= \std@try@this@area, or |
-% | | \relaxed@try@this@area) |
-% | | |
-% | <still open areas for current float type?> |
-% | | | |
-% | yes no---------------(defer float)--------------
-% | | |
-% | (do some tests and perhaps |
-% | close area this way) |
-% | | |
-% | <float allowed on this page/column (according to tests)?> |
-% | | | |
-% | yes no---------------(defer float)--------------
-% | |
-% | <current area got closed by any test?>
-% | | |
-% | yes no
-% | | |
-% | (select next area) |
-% | | |
-% -------- V
-% \pretests@success@action (\setup@grab@column@or)
-%\end{verbatim}
-%\end{footnotesize}
-% \end{description}
-%
-%
-%
-%
-%
-% \begin{macro}{\if@fail}
-% \begin{macrocode}
-\newif\if@fail
-\def\@failfalse{\global\let\if@fail\iffalse}
-\def\@failtrue{\global\let\if@fail\iftrue}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\setup@float@placement}
-%
-% \begin{macrocode}
-\def\setup@float@placement {
-% initialise before trial loop (needs work)
-%<*trace>
- \@tracepush{setup@float@placement}
-%</trace>
-% \end{macrocode}
-% A bit statistics: how many floats do we have on the
-% |\@activelist|?
-% \begin{macrocode}
-%<*progress>
- \def\@elt{\global\advance\trial@count\@ne\@gobble}
- \@activelist
- \let\@elt\relax
- \progress@separator
- \progress@nl{STATS:~ floats~ waiting~ =~ \the\trial@count
- \space on~ page~ \the\absolute@page@number}
- \progress@separator
- \global\trial@count\z@
-%</progress>
-% \end{macrocode}
-% We need the list of here floats during all trials. They are
-% therefore saved in |\saved@herelist| at this point which is then
-% used to initialise |\@herelist| at the beginning of each trial.
-% \begin{macrocode}
- \global\let\saved@herelist\@herelist
-% \end{macrocode}
-%
-% \begin{macrocode}
- \tighten@float@placement@conditions
-% \end{macrocode}
-% First time we run the |\float@placement@loop| we run it without
-% actually trying any floats (i.e., we are just cutting the
-% galley).\footnote{Could be improved: if there are no floats then
-% we run it once too often this way (per page) so\ldots}
-% \begin{macrocode}
- \run@with@floatsfalse
- \float@placement@loop
-%<*trace>
- \@tracepop{setup@float@placement}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\float@placement@loop}
-% Place the galley box back on the MVL. Needs to be done via the
-% special output routine call |\mark@restore@state| to ensure that
-% \TeX's primitive marks reflect the `logical' previous page rather
-% than the previous actual output routine call.
-% \begin{macrocode}
-\def\float@placement@loop{
-%<*trace>
- \@tracepush{float@placement@loop}
-%</trace>
-% \end{macrocode}
-%
-% \begin{macrocode}
- \deadcycles\z@
- \global\let\@activelist@empty@action\setup@best@column@or
- \global\let\pretests@success@action\setup@grab@column@or
-% \end{macrocode}
-%
-% If we are doing trials we have to place a special penalty at the
-% end of the MVL but if we are cutting up the galley for
-% typesetting we don't want this penalty. Since at this point it is
-% not clear in which case we are we defer this action until
-% later.\footnote{This part of the documentation is no longer true,
-% we now add it below. CORRECT DOCU}
-%
-% |\mark@restore@state| state is a special output routine those
-% only purpose is to reinitialise the state of the mark
-% mechanism. Its argument is executed at the of that OR.
-% \begin{macrocode}
- \mark@restore@state{
-% \end{macrocode}
-% Initialising the grabbing trials means putting the saved material
-% back onto the MVL and reinitialising the here float list.
-% \begin{macrocode}
- \unvcopy\@holdpg
- \ifnum\saved@outputpenalty > -1073741824\relax
- \add@badly@guarded@penalty\output@collect@penalty
- \fi
- \global\let\@herelist\saved@herelist
-% \end{macrocode}
-%
-% The we can start the actual loop: if we run with floats we go to
-% |\trial@inner@loop| otherwise we immediately setup the grap
-% column OR.
-% \begin{macrocode}
- \ifrun@with@floats
- \trial@inner@loop
- \else
- \setup@grab@column@or
- \fi
- }
-%<*trace>
- \@tracepop{float@placement@loop}
-%</trace>
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\trial@inner@loop}
-% Alternative entry into the float placement trial loop. This can
-% be used by setting |\@activelist@empty@action| and
-% |\pretests@success@action| to different values, e.g., for trying
-% float pages without the overhead of the grabcolumn output
-% routine, etc.
-% \begin{macrocode}
-\def\trial@inner@loop{
-%<*trace>
- \@tracepush{trial@inner@loop}
-%</trace>
-% \end{macrocode}
-% If |\if@fail| is true we have already tried the current float
-% before. This means we either do a retry with relaxed conditions
-% (in which case the current area to try was suitably modified
-% beforhand) or else we have just started with a new float and
-% should try the first area of |\this@open@areas|.
-% \begin{macrocode}
- \if@fail
- \@failfalse
- \@flushfailfalse
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<*progress>
- \global\advance\trial@count\@ne
-%</progress>
-% \end{macrocode}
-%
-% \begin{macrocode}
- \do@next\try@this@area
- \else
- \do@next\try@next@float
- \fi
-%<*trace>
- \@tracepop{trial@inner@loop}
-%</trace>
- \do@continue
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\trial@count}
-% To gather statistics we count the number of trials per page.
-% \begin{macrocode}
-%<*progress>
-\newcount\trial@count
-%</progress>
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\try@this@area}
-% |\try@this@area| is |\let| to the right definition before it is
-% called so on top-level it is defined to be an error.
-% \begin{macrocode}
-\let\try@this@area\ERROR
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\try@next@area}
-% |\try@next@area| first updates |\this@open@areas| by removing the
-% first area in this list and then calls |\try@this@area|. Thus it
-% should never be called if |\this@open@areas| is already empty.
-% \begin{macrocode}
-\def\try@next@area{
- \xdef\this@open@areas{\expandafter\@gobblethree\this@open@areas}
-%<*progress>
- \global\advance\trial@count\@ne
-%</progress>
- \try@this@area
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\try@next@float}
-% If there is still a float on the active list take it and try to
-% place it in the next open float area (which will be the same as
-% the current area after a successful trial). If there are no
-% floats left execute |\best@trial| to return to that state then
-% switch to the bestcolumn output routine to begin typesetting
-% columns.
-% \begin{macrocode}
-\def\try@next@float{
-%<*trace>
- \@tracepush{try@next@float}
-%</trace>
- \@next\@currbox\@activelist{
-%<*trace>
- \tr@ce{currbox:~ \@currbox}
-%</trace>
-%<*progress>
- \progress{Float:~ \@currbox}
-%</progress>
- \expandafter\update@this@float@structure\the\toks\@currbox
-%<*trace>
- \tr@ce{saved@this@open@areas~(init):~
- \saved@this@open@areas\space :=~\this@open@areas}
-%</trace>
- \global\let\saved@this@open@areas\this@open@areas
-%<*progress>
- \global\advance\trial@count\@ne
-%</progress>
- \try@this@area
- }
-% \end{macrocode}
-% no floats left\ldots
-% \begin{macrocode}
- {
-%<*progress>
- \progress@nl{STATS:~ trials~ =~ \the\trial@count}
- \global\trial@count\z@
-%</progress>
- \@activelist@empty@action
- }
-%<*trace>
- \@tracepop{try@next@float}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-% \begin{macro}{\update@this@float@structure}
-% Each float box has an associated token register storing several
-% information fields.
-% \begin{enumerate}
-% \item[1] float caption (set by caption command)
-% \item[2] Currently unused (could have callout page number, set by
-% |\best@column@or|).
-% \item[3] saved label string
-% \item[4] `user counter' number (per-type count) set by float environment.
-% \item[5] Allowed float areas (from default or optional arg.)
-% \item[6] float type (currently this is the long name, eg figure) should
-% probably be the single token name, to allow quicker testing.
-% \item[7] float sequence number.
-% \end{enumerate}
-%
-% This macro assumes that |\@currbox| is the box number for this structure
-% \begin{macrocode}
-\def\update@this@float@structure#1#2#3#4#5#6#7{
- \gdef\this@caption{#1}
- \gdef\this@span@number{#2}
- \gdef\this@usercnt{#4}
- \gdef\this@fps{#5}
- \gdef\this@type{#6}
-% \end{macrocode}
-% From the type we infer the class:
-% \begin{macrocode}
- \global\expandafter\let\expandafter
- \this@class\csname sequence@class@#6\endcsname
- \gdef\this@sequence@number{#7}
-% \end{macrocode}
-% If we want to consider all areas for each float (and storing
-% closed areas via |\closed@|\meta{type}|@areas| we have to
-% initialise |\this@open@areas| to |\used@areas| (which is
-% derived from the |area-list| key.
-% \begin{macrocode}
- \global\let\this@open@areas\used@areas
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\expandafter\let\expandafter\this@closed@areas
- \csname closed@\this@class @areas\endcsname % FMi tmp
- \global\let\this@float@box\@currbox
-%<*trace>
-\tr@ce{This~float~structure:}
-\toks@{#1}\tr@ce{~{\the\toks@}}
-\tr@ce{~{#2}}
-\tr@ce{~{#3}}
-\tr@ce{~{#4}}
-\tr@ce{~{#5}}
-\tr@ce{~{#6}}
-\tr@ce{~{#7}}
-\tr@ce{~this@open@areas~ <-~ \this@open@areas}
-\tr@ce{~this@closed@areas~ <-~ \this@closed@areas}
-%</trace>
-%<*progress>
-\progress{~{#7}}
-\progress{~{#6}~(\this@class)}
-\progress{~{#4}}
-%\progress{~{#2}}
-%\progress{~{#3}}
-%\progress{~{#5}}
-\toks@{#1}\progress@nl{~{\the\toks@}}
-%</progress>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\extract@this@float@actual@structure}
-% As used by Chris in xo-final. Should probably be replaced by the
-% one above or combined with the one above!\footnote{FIX!!}
-% \begin{macrocode}
-\def \extract@this@float@actual@structure #1#2#3#4#5#6#7 {
- \gdef\this@caption{#1}
- \gdef\this@span@number{#2}
- \gdef\this@loglabel{#3}
- \gdef\this@usercnt{#4}
- \gdef\this@fps{#5}
- \gdef\this@type{#6}
- \global\expandafter\let\expandafter
- \this@class\csname sequence@class@#6\endcsname
- \gdef\this@sequence@number{#7}
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\update@here@float@structure}
-%
-% Similar to |\update@this@float@structure| but filling different
-% macros.\footnote{We only need some of those macros, so this
-% should be cleaned up at some stage.}
-%
-% This macro assumes that |\@currbox| is the box number for this
-% structure.
-%
-% \begin{macrocode}
-\def\update@here@float@structure#1#2#3#4#5#6#7{
- \gdef\here@span@number{#2}
- \gdef\here@type{#6}
- \global\expandafter\let\expandafter
- \here@class\csname sequence@class@#6\endcsname
- \gdef\here@sequence@number{#7}
- \gdef\here@usercnt{#4}
-% \gdef\here@fps{#5}
- \gdef\here@caption{#1}
- \global\let\here@float@box\@currbox
-%<*trace>
-\tr@ce{Here~object~structure:}
-\toks@{#1}\tr@ce~{~{\the\toks@}}
-\tr@ce{~{#2}}
-\tr@ce{~{#3}}
-\tr@ce{~{#4}}
-\tr@ce{~{#5}}
-\tr@ce{~{#6}}
-\tr@ce{~{#7}}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-% \begin{macro}{\page@float@count}
-% \begin{macrocode}
-%\newcount\page@float@count
-\let\page@float@count\@colnum
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\this@captioned@float}
-% \begin{macrocode}
-\newbox\this@captioned@float
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \newpage
-%
-% \subsection{Grab Column Output Routine}
-%
-% \begin{description}
-% \item[Entry:] |\setup@grab@column@or|
-% \item[Exit:] |\setup@cleanup@or|
-% \item[Prereq:]
-% \item[Description:]
-% \item[Flow:]
-%\begin{footnotesize}
-%\begin{verbatim}
-% \setup@grab@column@or
-% |
-% New OR: \grab@column@or
-% |
-% V
-% \grab@column@loop <-------
-% |
-% (when entering OR...)
-% |
-% <end of collection reached?>
-% | |
-% yes no
-% | |
-% | <col break requested?>
-% | | |
-% | yes no
-% | | |
-% | | <flush point encountered?>
-% | | | |
-% | | yes no
-% | | | |
-% | | <flush point <here point encountered?>
-% | | too early?> | |
-% | | | | yes no
-% | | yes no | |
-% | | | | ? ?
-% | | | (ignore break)
-% | | | |
-% | | | |
-% (end column now) <------- |
-% | |
-% V |
-% <all cols produced?> |
-% | | V
-% yes no--------------------> (reenter \grab@column@loop)
-% |
-% (store results of trial)
-% |
-% V
-% \setup@cleanup@or
-%\end{verbatim}
-%\end{footnotesize}
-% \end{description}
-%
-%
-%
-% \begin{macro}{\setup@grab@column@or}
-%
-% \begin{macrocode}
-\def\setup@grab@column@or{
-%<*trace>
- \@tracepush{setup@grab@column@or}
-%</trace>
-% \end{macrocode}
-%
-% We just returned to the MVL the current galley. We now add a
-% special penalty to mark the point that we need to reach in order
-% to remove everything after the trial run.
-% This penalty has to be guarded against premature removal, e.g.,
-% if the algorithm would break exactly before it it would then be
-% discarded which we can't allow.\footnote{Penalty now added
-% earlier (normally). CORRECT DOCU}
-% \begin{macrocode}
- \ifnum\saved@outputpenalty = -1073741824\relax
- \add@badly@guarded@penalty\output@collect@penalty
- \fi
-% \end{macrocode}
-%
-% \begin{macrocode}
- \@failfalse
- \global\curr@col@count\z@
-% \end{macrocode}
-% In case there is a flush penalty in the collection we have to
-% find out if we see it again during the trial. So we record the
-% number of flush points we see during the trial. Same happens for
-% here points.
-% \begin{macrocode}
- \gdef\trial@flush@seen@num{0}
- \gdef\trial@here@seen@num{0}
-% \end{macrocode}
-%
-% Moved from |\try@this@area| as it should be executed
-% only if we really do a trial and thus back it out if
-% unsuccessful---this was a bug as it changed
-% |\fl@|\meta{col}|@|\meta{type} in cases we never came to this
-% point here but recursed)
-% \begin{macrocode}
- \ifrun@with@floats
-% \end{macrocode}
-% Depending on the policy a spanning float can be considered belong
-% to different columns. This influences the behaviour of the
-% call-out contraint tests and is determined by the code stored in
-% |\calculate@target@fl@column|.
-% \begin{macrocode}
- \calculate@target@fl@column
-% \end{macrocode}
-% |\calculate@target@fl@column| returns its calculated column
-% number in |\count@|.
-% \begin{macrocode}
- \global\expandafter\let\expandafter\saved@fl@
- \csname fl@\the\count@ @\this@class\endcsname
- \global\expandafter\let
- \csname fl@\the\count@ @\this@class\endcsname
- \this@sequence@number
-%<*trace>
- \tr@ce{~fl@\the\count@ @\this@class\space <-~
- \csname fl@\the\count@ @\this@class\endcsname}
-%</trace>
-% \end{macrocode}
-% If we are adding to a top area we also have to update the
-% corresponding |tfl@| commands:
-% \begin{macrocode}
- \if t\this@area@type
- \global\expandafter\let\expandafter\saved@tfl@
- \csname tfl@\the\count@ @\this@class\endcsname
- \global\expandafter\let
- \csname tfl@\the\count@ @\this@class\endcsname
- \this@sequence@number
-%<*trace>
- \tr@ce{~tfl@\the\count@ @\this@class\space <-~
- \csname tfl@\the\count@ @\this@class\endcsname}
-%</trace>
- \fi
- \fi
-% \end{macrocode}
-%
-% If we have seen any flush points during collection we need to
-% save their current |min@col| positions in case we have to throw
-% away the current trial.
-% \begin{macrocode}
- \if@flushseen
- \count@\z@
- \@whilenum \flush@seq@num>\count@ \do
- { \advance\count@\@ne
- \global\expandafter\let
- \csname saved@flush@min@col@\the\count@ \expandafter\endcsname
- \csname flush@min@col@\the\count@\endcsname
-%<*trace>
- \tr@ce{saved@flush@min@col@\the\count@ \space <-~
- \csname flush@min@col@\the\count@\endcsname}
-%</trace>
- }
- \fi
-% \end{macrocode}
-%
-% \begin{macrocode}
- \initialise@footins@action
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\output{\grab@column@or}
- \grab@column@loop
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<*trace>
- \@tracepop{setup@grab@column@or}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\calculate@target@fl@column}
-% \begin{macro}{\calculate@target@fl@column@flexible}
-% \begin{macro}{\calculate@target@fl@column@strict}
-% The purpose of |\calculate@target@fl@column| is to calculate
-% the column number for which the |\fl@|\meta{col}|@number| has to
-% be updated in case we place the current float into the area with
-% start column |\this@area@col@number| and span-number
-% |\this@area@span@number|. It returns the calculated number in
-% |\count@|.
-%
-% For non-spanning floats it is simply returning
-% |\this@area@col@number|. If we return this value also in case of
-% spanning floats then this means that we claim that the float has
-% be placed the first of its spanned columns. Alternatively we
-% could return the last of the spanned columns which would if the
-% |column| policy is in force, allow to place a float into |t12|
-% even if its call-out is in the second column.
-%
-% The real value for |\calculate@target@fl@column| will be assigned
-% in the page setup template.
-% \begin{macrocode}
-\let\calculate@target@fl@column \ERROR
-% \end{macrocode}
-%
-% And here are the two possibilities.
-% \begin{macrocode}
-\def\calculate@target@fl@column@flexible {
- \count@\this@area@col@number\relax
- \advance\count@\this@area@span@number\relax
- \advance\count@\m@ne
-}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\calculate@target@fl@column@strict {
- \count@\this@area@col@number\relax
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\ifrun@with@floats}
-% \begin{macro}{\run@with@floatstrue}
-% \begin{macro}{\run@with@floatsfalse}
-%
-% \begin{macrocode}
-\newif\ifrun@with@floats
-\def\run@with@floatsfalse{\global\let\ifrun@with@floats\iffalse}
-\def\run@with@floatstrue{\global\let\ifrun@with@floats\iftrue}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\grab@column@loop}
-% The |\grab@column@or| output routine is responsible for
-% constructing one column of a layout trial. The loop command
-% increments the column count and sets vsize to the target height
-% for the current column (which has already been set based on the
-% size and position of the floats in this trial layout.
-% \begin{macrocode}
-\def\grab@column@loop{
-%<*trace>
- \@tracepush{grab@column@loop}
-%</trace>
- \global\advance\curr@col@count\@ne
- \global\vsize\csname col@ht@ \the\curr@col@count\endcsname
-%<*trace>
- \@tracepop{grab@column@loop}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-% \begin{macro}{\some@column@or}
-% |\grab@column@or| and |\best@column@or| are sharing most of their
-% code which is therefore placed into a separate macro. At the
-% moment it takes 4 arguments: the name (``grab'' or ``best''),
-% what to do when we actually finish the column
-% (``|\grab@column@or@finish|'' or ``|\best@column@or@finish|''),
-% what to do for a flush point, and what to do when we encounter a
-% here float.\footnote{This code needs a bit of redesign to deal
-% properly with the case that we have stumbled upon one of the
-% special penalties. In this case we need to ensure that we also
-% remove the special box after the penalty in case we are at a
-% column break. This is not done right now so that in this case we
-% will not dicard material at the top of the column properly. FIX!!!!}
-% \begin{macrocode}
-\def\some@column@or #1#2#3#4{
-%<*trace>
- \@tracepush{#1@column@or}
- \tr@ce{output~pen:~ \the\outputpenalty}
- \tr@ce{#1~ col:~ \the\curr@col@count\space of~ \the\col@count}
-%</trace>
- \handle@case@of@premature@ending
- \handle@case@of@forced@pagebreak
-% \end{macrocode}
-% If the |\outputpenalty| is |-\output@flush@float@penalty| we
-% have reached a float flush point in the galley.
-% \begin{macrocode}
- \ifnum\outputpenalty=-\output@flush@float@penalty
- \gincrement@num\trial@flush@seen@num
-%<*trace>
- \tr@ce{flush~ point~(\trial@flush@seen@num,~
- affects:~ \csname flush@classes@list@\trial@flush@seen@num\endcsname,~
- mincol:~ \csname flush@min@col@\trial@flush@seen@num\endcsname,~
- lastfloat:~ \csname flush@last@float@\trial@flush@seen@num\endcsname
- )~ reached}
-%</trace>
-% \end{macrocode}
-% We then remove the guard box from the output (which is at the end
-% of box |\@cclv|.
-% \begin{macrocode}
- \remove@guard@box@from@cclv
-% \end{macrocode}
-% If the flush penalty moved to an earlier column than in the last
-% trial we end the current column (by calling
-% |\#1@column@or@finish|) and reinsert the penalty so that it will
-% be seen again if we do the next column.
-% \begin{macrocode}
- \ifnum\csname flush@min@col@\trial@flush@seen@num\endcsname
- > \curr@col@count
-%<*trace>
- \tr@ce{flush@min@col@\trial@flush@seen@num\space >~
- curr@col@count~
- (\csname flush@min@col@\trial@flush@seen@num\endcsname
- \space >~ \the\curr@col@count)~ ->~ ending~ column}
-%</trace>
- \gdecrement@num\trial@flush@seen@num
- \readd@guarded@penalty\output@flush@float@penalty
- #2
- \else
-% \end{macrocode}
-% Otherwise the flush point is in an acceptable position which
-% means we ignore it and carry on collecting material for the
-% current column. This is done be putting everything back onto the
-% MVL except the guard box and the penalty.\footnote{We lose a
-% potential break point here (acceptable?) See comments in
-% best@column@or!!}
-% \begin{macrocode}
-%<*trace>
- \tr@ce{flush@min@col@\trial@flush@seen@num\space
- <=~ curr@col@count~
- (\csname flush@min@col@\trial@flush@seen@num\endcsname
- \space <=~ \the\curr@col@count)}
-%</trace>
-% \end{macrocode}
-% What exactly happens here (beside the above) depends on the
-% calling macro.
-% \begin{macrocode}
- #3
- \fi
- \else
-% \end{macrocode}
-% If it was not a flush point we might have a here point to take
-% care of. This is more or less like the code above.
-% \begin{macrocode}
- \ifnum\outputpenalty=-\output@here@float@penalty
- \gincrement@num\trial@here@seen@num
-%<*trace>
- \tr@ce{here~ penalty~(\trial@here@seen@num)~ reached}
-%</trace>
- \remove@guard@box@from@cclv
- \ifnum\csname here@min@col@\trial@here@seen@num\endcsname
- > \curr@col@count
-%<*trace>
- \tr@ce{here@min@col@\trial@here@seen@num\space >~curr@col@count~
- (\csname here@min@col@\trial@here@seen@num\endcsname
- \space >~ \the\curr@col@count)~ ->~ ending~ column}
-%</trace>
- \split@off@last@line
- \gdecrement@num\trial@here@seen@num
- \readd@guarded@penalty\output@here@float@penalty
- #2
- \else
- \@tempdima \pagegoal
- \advance\@tempdima -\pagetotal
- \ifdim \@tempdima <
- \csname
- here@required@space@\trial@here@seen@num
- \endcsname \relax
-%<*trace>
- \tr@ce{here@required@space@\trial@here@seen@num\space >~
- \pagegoal-\pagetotal \space
- (\csname here@required@space@\trial@here@seen@num\endcsname
- \space >~ \the\pagegoal\space
- -~ \the\pagetotal\space =~
- \the\@tempdima)~
- ->~ ending~ column}
-%</trace>
- \split@off@last@line
- \gdecrement@num\trial@here@seen@num
- \readd@guarded@penalty\output@here@float@penalty
- #2
- \else
-%<*trace>
- \tr@ce{here@required@space@\trial@here@seen@num\space <=~
- \pagegoal-\pagetotal \space
- (\csname here@required@space@\trial@here@seen@num\endcsname
- \space <=~ \the\pagegoal\space
- -~ \the\pagetotal\space =~
- \the\@tempdima)~
- ->~ accepting~ here~ point}
-%</trace>
- \@reinserts
- \unvbox\@cclv
- \@next\@currbox\@herelist{
-%<*trace>
- \tr@ce{@currbox:~ \@currbox}
-%</trace>
- \expandafter\update@here@float@structure\the\toks\@currbox
-% \end{macrocode}
-% Different things need to be done depending on the type of the
-% here point:
-% \begin{macrocode}
- \def\@tempa{mpar}
- \ifx\@tempa\here@type
- \typeset@a@marginpar
- \else
- \def\@tempa{rspace}
- \ifx\@tempa\here@type
- % do nothing
- \else
- #4
- \fi
- \fi
- }
-% \end{macrocode}
-% If there is no here object left the algorithm has screwed up
-% (i.e., a ``this can't happen'' situation).
-% \begin{macrocode}
- \ERROR
- \fi
- \fi
- \else
-% \end{macrocode}
-% If it is neither a flush nor a here point it might be a grid point:
-% \begin{macrocode}
- \ifnum\outputpenalty=-\output@grid@align@penalty
- \align@collected@galley@and@restart
-% \end{macrocode}
-% So we now know that it wasn't one of our special points so this
-% must have been a normal end of the galley:
-% \begin{macrocode}
- \else
- #2
- \fi
- \fi
- \fi
-%<*trace>
- \@tracepop{#1@column@or}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\grab@column@or}
-% Here is the output routine used during trials, an instantiation
-% of |\some@column@or|.
-% \begin{macrocode}
-\def\grab@column@or{\some@column@or{grab}
- \grab@column@or@finish
- \grab@column@or@flushcheck
- \check@and@typeset@a@here@float
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\grab@column@or@flushcheck}
-%
-% The |\grab@column@or@flushcheck| code checks for restrictions
-% regarding the placement of the current float. It is called when
-% we just have encountered a flush float penalty while grabbing the
-% text for a column and now have to see which floats (if any) need
-% to be positioned before that flush point.
-% \begin{macrocode}
-\def\grab@column@or@flushcheck{
-%<*trace>
- \@tracepush{grab@column@or@flushcheck}
-%</trace>
-% \end{macrocode}
-% If we are making a dry-run without floats then there is no need to
-% do much, so we skip all testing that involves flush points and
-% only do the cleanup actions at the end.
-% \begin{macrocode}
- \ifrun@with@floats
- \expandafter\xin@\expandafter\this@class
- \csname flush@classes@list@\trial@flush@seen@num\endcsname
- \ifin@
-%<*trace>
- \tr@ce{flush:~ class~ \this@class\space in~
- {\csname flush@classes@list@\trial@flush@seen@num\endcsname}}
-%</trace>
-% \end{macrocode}
-% We store in |\count@| the float sequence number of the last float
-% that would be affected by the current flush penalty. This value
-% is then used in the tests below.
-% \begin{macrocode}
- \count@\csname flush@last@float@\trial@flush@seen@num\endcsname\relax
-% \end{macrocode}
-%
-% If the current float number is higher than float number stored in
-% |\flush@last@float@|\meta{num} with the flush penalty, we are
-% dealing with a float whose call-out is after the flush penalty
-% and thus we have no restriction.
-% \begin{macrocode}
- \ifnum\this@sequence@number>\count@
-%<*trace>
- \tr@ce{???:\this@sequence@number>\the\count@}
- \tr@ce{this~float~ past~flush~point}
-%</trace>
- \else
-% \end{macrocode}
-% Otherwise check if this float is placed in an acceptable position
-% with respect to the current flush point. For this we run
-% different code depending on the ``fuzziness'' of the flush point
-% under check:
-% \begin{macrocode}
- \csname flush@fuzziness@\trial@flush@seen@num \endcsname
- \fi
-%<*trace>
- \else
- \tr@ce{flush:~ class~ \this@class\space not~ in~
- {\csname flush@classes@list@\trial@flush@seen@num\endcsname}}
-%</trace>
- \fi
- \fi
-% \end{macrocode}
-% If we failed above we additionally record that the failure is
-% due to violating restrictions for a flush point.
-% \begin{macrocode}
- \if@fail
- \@flushfailtrue
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\setbox\@cclv\box\voidb@x
- \global\setbox\footins\box\voidb@x
-% \end{macrocode}
-% We have to immediately abort the current trial otherwise a
-% flush point following in the galley might be encountered and
-% processed before we reach |\evaluate@results@of@trial|. That
-% would result in updating the wrong data structure there (due to
-% the fact that there it assumes that |\trial@flush@seen@num|
-% refers to the flush point that is the reason for
-% failure).\footnote{Implementation could be improved!}
-% \begin{macrocode}
- \global\curr@col@count\col@count
- \grab@column@or@finish
- \else
-% \end{macrocode}
-% If we haven't failed we might have to update the
-% |\flush@min@col|\meta{num} for the current flush point in case it
-% moved to a new column.
-% \begin{macrocode}
- \ifnum\csname flush@min@col@\trial@flush@seen@num\endcsname<\curr@col@count
- \expandafter\xdef
- \csname flush@min@col@\trial@flush@seen@num\endcsname
- {\the\curr@col@count}
-%<*trace>
- \tr@ce{set~ flush@min@col@\trial@flush@seen@num:~
- \csname flush@min@col@\trial@flush@seen@num\endcsname}
-%</trace>
- \fi
-% \end{macrocode}
-% We have to return the collected footnotes first or else \TeX{}
-% might decide that it is better to break before
-% them.\footnote{Quite likely that this needs some refinement as it
-% might mess up vertical spacing in other respects. Look out for
-% other places where \texttt{\string\@reinserts} is used, if this
-% needs fixing.}
-% \begin{macrocode}
- \@reinserts
- \unvbox\@cclv
-% \end{macrocode}
-% What penalty to return???\footnote{FIX!!!}
-% \begin{macrocode}
-% \penalty\z@ % none i think now (in the current version) but this
- % will change again
- \fi
-%<*trace>
- \@tracepop{grab@column@or@flushcheck}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-% \begin{macro}{\flushcheck@page}
-% \begin{macrocode}
-\def\flushcheck@page {
-%<*trace>
- \tr@ce{OK:~flush~check~ (same~page)}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\flushcheck@spread}
-%
-% This is actually a dummy definition. There is more to do if we
-% want to provide support for spreads!\footnote{Finish implementation}
-% \begin{macrocode}
-\def\flushcheck@spread {
-%<*trace>
- \tr@ce{OK:~flush~check~ (using~page~not~ spread)}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\flushcheck@strict}
-% \begin{macrocode}
-\def\flushcheck@strict {
-%<*trace>
- \@tracepush{flushcheck@strict}
-%</trace>
-% \end{macrocode}
-% If strict flushing is required we look where the current float is
-% being placed. If it
-% is placed in a column which is earlier than the current column
-% then it is definitely before the flush point and thus we are okay.
-% \begin{macrocode}
- \ifnum\this@area@col@number<\curr@col@count
-%<*trace>
- \tr@ce{OK:~flush~check~
- (\this@area@col@number<\the\curr@col@count,~\this@area)}
-%</trace>
- \else
-% \end{macrocode}
-% Otherwise we test if the float is placed into the current
-% column. If this is the case it might be okay, but only if it is
-% not placed into the bottom area.
-% \begin{macrocode}
- \ifnum\this@area@col@number=\curr@col@count
-% \end{macrocode}
-% To test for the bottom area(s) means looking at the first token
-% in the area identifier. If it is |b| we are past the flush
-% point.\footnote{It might be an interesting extension to allow
-% relaxing the flush situation to allow the floats to appear
-% anywhere on the current column (on which the flush point ends up),
-% or even allowing that it only has to appear on the current page
-% or page spread.}
-% \begin{macrocode}
- \if b \this@area@type
- \@failtrue
-%<*progress>
- \progress@failed{area~ below~ flush~ point~
- (\this@area@col@number=\the\curr@col@count,~\this@area)}
-%</progress>
-%<*trace>
- \tr@ce{Fail:~flush~check~
- (\this@area@col@number=\the\curr@col@count,~\this@area)}
-% \end{macrocode}
-% Otherwise the float was placed into an area that is still before
-% the flush point.
-% \begin{macrocode}
- \else
- \tr@ce{OK:~flush~check~
- (\this@area@col@number=\the\curr@col@count,~\this@area)}
-%</trace>
- \fi
-% \end{macrocode}
-% If the float was neither placed before nor into the current
-% column we have to conclude that it was placed into a later column
-% which means it was placed after the flush point --- thus we fail.
-% \begin{macrocode}
- \else
- \@failtrue
-%<*progress>
- \progress@failed{area~ after~ flush~ point~
- (\this@area@col@number>\the\curr@col@count,~\this@area)}
-%</progress>
-%<*trace>
- \tr@ce{Fail:~flush~check~
- (\this@area@col@number>\the\curr@col@count,~\this@area)}
-%</trace>
- \fi
- \fi
-%<*trace>
- \@tracepop{flushcheck@strict}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\flushcheck@column}
-% \begin{macrocode}
-\def\flushcheck@column {
- \ifnum\this@area@col@number>\curr@col@count
- \@failtrue
-%<*progress>
- \progress@failed{area~ after~ flush~ point~ column~
- (\this@area@col@number>\the\curr@col@count,~\this@area)}
-%</progress>
-%<*trace>
- \tr@ce{Fail:~flush~check~
- (\this@area@col@number>\the\curr@col@count,~\this@area)}
- \else
- \tr@ce{OK:~flush~check~
- (\this@area@col@number<=\the\curr@col@count,~\this@area)}
-%</trace>
- \fi
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\grab@column@or@finish}
-% \begin{macrocode}
-\def\grab@column@or@finish{
-%<*trace>
- \@tracepush{grab@column@or@finish}
-%</trace>
-% \end{macrocode}
-%
-% \begin{macrocode}
- \mark@update@structure
-% \end{macrocode}
-%
-% \begin{macrocode}
- \deal@with@footins@action
-% \end{macrocode}
-%
-% First check if there are some special constraints that should be
-% met (this is, for example, used to check if there are both bottom
-% floats and footnotes). If the constraints are not met don't
-% bother to check the callout/float constraints.
-% \begin{macrocode}
- \if@fail\else
- \ifrun@with@floats
- \check@some@constraints
- \fi
- \fi
- \if@fail\else
-% \end{macrocode}
-% For each float sequence class, call |\check@callout@constraints|
-% this will be set via a call to a pagesetup template to do an
-% appropriate check on the float placement relative to float
-% call-out.
-% \begin{macrocode}
- \ifrun@with@floats
- \let\@elt\check@callout@constraints
- \float@classes@list
- \fi
- \fi
-% \end{macrocode}
-%
-% Throw the text away (it will be reset later if this trial is
-% in fact chosen).
-% \begin{macrocode}
- \global\setbox\@cclv\box\voidb@x
- \global\setbox\footins\box\voidb@x
-% \end{macrocode}
-% After the last column we evaluate the results of the trial (and
-% if the result looks ok remember it as a candidate for the final
-% solution). We then switch to the `clean up' OR which will
-% collect up the main vertical list as far as the special penalty
-% marking the end of the collection pass, to clear the MVL for the
-% next trial. If this isn't the last column, set up the next
-% column.
-% \begin{macrocode}
- \ifnum\curr@col@count=\col@count
- \evaluate@results@of@trial
- \setup@cleanup@or
- \else
- \grab@column@loop
- \fi
-%<*trace>
- \@tracepop{grab@column@or@finish}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\handle@case@of@premature@ending}
-% Next |\ifnum| is a fix that needs rethinking: what is the best
-% approach if we hit the penalty which denotes the end of the
-% collected galley too early, e.g., in the middle of a trial using
-% |\grab@column@or| or when producing the final columns with
-% |\best@column@or|? Current solution gets the stuff out, but is it
-% probably not the best solution.
-% correct?
-% \begin{macrocode}
-\def\handle@case@of@premature@ending{
- \ifnum\outputpenalty=-\output@collect@penalty
- \remove@guard@box@from@cclv
- \readd@guarded@penalty\output@collect@penalty
- \fi
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\check@some@constraints}
-% By default there are no additional constraints to check for.
-% \begin{macrocode}
-\let\check@some@constraints\relax
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\evaluate@results@of@trial}
-%
-% The purpose of |\evaluate@results@of@trial| is to determine if
-% the current trial is a potential candiate for the final solution
-% and if so store it away. We can determine if the trial failed by
-% looking at the switch |@fail|.
-% \begin{macrocode}
-\def\evaluate@results@of@trial{
-%<*trace>
- \@tracepush{evaluate@results@of@trial}
-%</trace>
-% \end{macrocode}
-%
-% \begin{macrocode}
- \ifrun@with@floats
- \ifx\try@this@area\std@try@this@area
- \count@\trial@here@seen@num\relax
- \advance\count@\page@float@count
- \ifnum \pagesetup@max@float@num < \count@
-%<*trace>
- \tr@ce{Failed:~ area~ +~ here~ floats~ exceed~ max~ floats}
-%</trace>
-%<*progress>
- \progress@failed{area~ +~ here~ floats~ exceed~ max~ floats}
-%</progress>
- \@failtrue
- \fi
- \fi
- \fi
-% \end{macrocode}
-%
-% \begin{macrocode}
- \if@fail
-%<*trace>
- \tr@ce{fail:~true}
-%</trace>
-% \end{macrocode}
-% If the trial has failed we have to distinguish two cases:
-% \begin{itemize}
-% \item
-% There has been a request for flushing out floats up to a
-% certain float somewhere
-% and the current float belongs to the list of floats to flush.
-% \item
-% There has been no such request.
-% \end{itemize}
-%
-% If there have been flush points we need to restore their
-% |min@col| values since we might have updated them.
-% \begin{macrocode}
- \if@flushseen
- \count@\z@
- \@whilenum \flush@seq@num>\count@ \do
- { \advance\count@\@ne
- \global\expandafter\let
- \csname flush@min@col@\the\count@ \expandafter\endcsname
- \csname saved@flush@min@col@\the\count@\endcsname
-%<*trace>
- \tr@ce{flush@min@col@\the\count@ \space <-~
- \csname flush@min@col@\the\count@\endcsname \space
- (restore) }
-%</trace>
- }
- \fi
-
- \if@flushfail
-%<*trace>
- \tr@ce{flushfail:~true}
-%</trace>
-% \end{macrocode}
-% If we have failed and |\try@this@area| is already the ``relaxed''
-% version we have to artificially move the offending flush point to
-% the next column and hope that this way we get ourselves some new
-% options (worst case is that eventually the flush point is removed
-% from the page in which case we can as a last resort defer the
-% float).
-% \begin{macrocode}
- \ifx\try@this@area\relaxed@try@this@area
-
- \expandafter\gincrement@num
- \csname flush@min@col@\trial@flush@seen@num\endcsname
-%<*trace>
- \tr@ce{flush@min@col@\trial@flush@seen@num~ <-~
- \csname flush@min@col@\trial@flush@seen@num\endcsname}
-%</trace>
-%<*progress>
- \progress@failed{flush~ point~ \trial@flush@seen@num\space
- moved~ to~ column~
- \csname flush@min@col@\trial@flush@seen@num\endcsname}
-%</progress>
- \else
-
- \ifx\saved@this@open@areas\@empty
-%<*debug>
- \tr@ce{saved@this@open@areas:~empty ????????}
-%</debug>
- \ERROR
- \else
- \global\let\this@open@areas\saved@this@open@areas
-%<*trace>
- \tr@ce{~this@open@areas~ <-~ \this@open@areas \space (reopen)}
-%</trace>
- \fi
- \relax@float@placement@conditions
- \fi
- \else
-%<*trace>
- \tr@ce{flushfail:~false}
-%</trace>
- \xdef\this@open@areas{\expandafter\@gobblethree\this@open@areas}
- \fi
-
-%<*trace>
- \tr@ce{open:~\this@open@areas}
-
- \tr@ce{restore:~last~allocated:~\saved@fl@}
-%</trace>
-% \end{macrocode}
-% To restore the previous state we have to recalculate the target
-% |fl@| column.
-% \begin{macrocode}
- \calculate@target@fl@column
- \global\expandafter\let
- \csname fl@\the\count@ @\this@class\endcsname
- \saved@fl@
-%<*trace>
- \tr@ce{~fl@\the\count@ @\this@class\space <-~
- \saved@fl@ \space (restored)}
-%</trace>
-% \end{macrocode}
-% And if we tried a top area we also have to restored the
-% corresponding |tfl@| macro.
-% \begin{macrocode}
- \if t\this@area@type
- \global\expandafter\let
- \csname tfl@\the\count@ @\this@class\endcsname
- \saved@tfl@
-%<*trace>
- \tr@ce{~tfl@\the\count@ @\this@class\space <-~
- \saved@tfl@ \space (restored)}
-%</trace>
- \fi
-% \end{macrocode}
-% And we better don't forget to restore the heights.\footnote{This
-% is most likely buggy: I seem to restore all column values but i think
-% i don't save all of them! FIX!!!!}
-% \begin{macrocode}
- \update@this@area@columns
- {
-%<*trace>
- \tr@ce{restore:~saved@col@ht@ \the\count@:~
- \csname saved@col@ht@ \the\count@\endcsname}
-%</trace>
- \global\csname col@ht@ \the\count@\endcsname
- \csname saved@col@ht@ \the\count@\endcsname\relax
- \global\expandafter\let
- \csname col@ \this@area@type @delta@ \the\count@
- \expandafter \endcsname
- \csname saved@col@ \this@area@type @delta@ \the\count@ \endcsname
-%<*trace>
- \tr@ce{GRID (delta):~ column~\the\count@\this@area@type:~
- \csname saved@col@ \this@area@type @delta@ \the\count@
- \endcsname\space (restore) }
-%</trace>
- }
- \else
-%<*trace>
- \tr@ce{fail:~false}
-%</trace>
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<*progress>
- \let\progress@inform@later\@empty
-%</progress>
-% \end{macrocode}
-% If this trial is valid and we haven't seen all flush penalties
-% again we must have pushed them to the next page. We record
-% this fact by setting |flush@min@col@...| to |\maxdimen|.
-% \begin{macrocode}
- \if@flushseen
- \count@\flush@seq@num\relax
- \loop
- \ifnum \trial@flush@seen@num < \count@
- \global\@namedef{flush@min@col@\the\count@}{\maxdimen}
-%<*trace>
- \tr@ce{flush@min@col@\the\count@\space <-~ maxdimen}
-%</trace>
- \advance\count@\m@ne
- \repeat
-% \end{macrocode}
-% If there has been a flush point (ie if |\trial@flush@seen@num| und
-% thus |\count@| is greater than 0) we test whether or not the
-% float recently placed was the last one affected by the last flush
-% point on the current page and if so tighten the float placement
-% setting again.\footnote{correct logic?}
-% \begin{macrocode}
-%<*progress>
- \let\progress@inform@later\@empty
-%</progress>
- \ifrun@with@floats
- \ifnum \count@ > \z@
- \ifnum \csname flush@last@float@\trial@flush@seen@num\endcsname =
- \this@sequence@number \relax
-%<*trace>
- \tr@ce{flush:~ last~float~affected~ by~ flush~ point~
- \trial@flush@seen@num\space placed~ ->~
- use~ partly~ normal~ placement~ conditions~ again}
-%</trace>
-%<*progress>
- \def\progress@inform@later{
- \progress@nl{->~ past~ flush~ point:~ -->~
- tighten~ conditions~ again}
- \progress@nl{}
- }
-%</progress>
- \partly@tighten@float@placement@conditions
- \fi
- \fi
- \fi
-% \end{macrocode}
-% Having placed a float we need to update |\flush@classes@list@max| to
-% reflect which float types are affected by the flush points
-% currently on the page as this might be needed when trying to
-% place or rather defer the next float.
-%
-% So we loop and concatenate all |\flush@classes@list@|\meta{num} that
-% belong to flush points on the current page. This might result in
-% the list containing types several times but for the test we need
-% to do this doesn't make any difference (and it is far faster than
-% unifying the list).
-% \begin{macrocode}
- \count@\z@
- \global\let\flush@classes@list@max\@empty
- \loop
- \ifnum \trial@flush@seen@num > \count@
- \advance\count@\@ne
- \xdef\flush@classes@list@max{
- \flush@classes@list@max;
- \csname flush@classes@list@\the\count@\endcsname
- }
-%<*trace>
- \tr@ce{flush@classes@list@max~ <-~ \flush@classes@list@max}
-%</trace>
- \repeat
- \fi
-% \end{macrocode}
-%
-% With this algorithm a trial which passed so far is always
-% considered to be better than previous trials (meaning more floats
-% on the page are better). So we always update the best trial data
-% (unless this was the run without adding floats in which case we
-% only change the |run@with@floats| switch.
-% \begin{macrocode}
- \ifrun@with@floats
- \update@best@trial
-%<*progress>
- \progress@inform@later
-%</progress>
- \else
- \run@with@floatstrue
- \fi
- \fi
-%<*trace>
- \@tracepop{evaluate@results@of@trial}
-%</trace>
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \subsection{Best Trial Data}
-%
-%
-% \begin{macro}{\best@trial}
-% \begin{macrocode}
-\let\best@trial\@empty
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\update@best@trial}
-% Not all of this belongs into this macro!\footnote{redistribute}
-% \begin{macrocode}
-\def\update@best@trial{
-%<*trace>
- \@tracepush{update@best@trial}
-%</trace>
-%<*progress>
- \progress@nl{->~ accepted}
-%</progress>
- \global\let\best@trial\@empty
- \forall@columns{
- \expandafter
- \g@addto@macro\expandafter\best@trial\expandafter
- {
- \expandafter
- \global
- \csname col@ht@ \the\curr@col@count\expandafter\endcsname
- \the\csname col@ht@ \the\curr@col@count\endcsname
- }
- }
-% \end{macrocode}
-%
-% Frank says this needs to be documented (the rest of the code is self evident)
-% |\this@float@box| is |\let| to |\@currbox| which is defed to a chardefed
-% token from newinsert. so this is OK. honest.
-% \begin{macrocode}
- \expandafter\@cons\csname area@\this@area\expandafter\endcsname
- \this@float@box
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<*trace>
- \tr@ce{this@page@closed~ \this@page@closed\space +~
- "\csname pagesetup@\this@area @all@close\endcsname"}
- \tr@ce{this@closed@areas~ \this@closed@areas\space +~
- "\csname pagesetup@\this@area @class@close\endcsname"}
-%</trace>
- \xdef\this@page@closed{\this@page@closed,
- \csname pagesetup@\this@area @all@close\endcsname}
- \xdef\this@closed@areas{\this@closed@areas,
- \csname pagesetup@\this@area @class@close\endcsname}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\expandafter\let\csname open@\this@class
- @areas\endcsname % FMi tmp
- \this@open@areas
- \global\expandafter\let\csname closed@\this@class
- @areas\endcsname % FMi tmp
- \this@closed@areas
-% \end{macrocode}
-% moving the captioned float to the main float box is put into a
-% separate macro so that we can suppress this in cases where we
-% potentially want to revert to a previous stage.\footnote{FIX}
-% \begin{macrocode}
-%<*obsolete>
- \add@caption@to@float@box
-%</obsolete>
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\advance\page@float@count\@ne
- \global\advance\csname \this@area @float@count\endcsname\@ne
-% \end{macrocode}
-%
-% Since the trial was successful, we have to update the the macros
-% that hold the number of top or bottom floats we have seen so far
-% in each column.\footnote{Code for this is similar to the one in
-% construct@and@test@col@ht and elsewhere; perhaps there should be
-% a subroutine for it!}
-% \begin{macrocode}
- \update@this@area@columns
- {
- \expandafter
- \gincrement@num
- \csname col@ \this@area@type
- @floats@ \the\count@ @number\endcsname
-%<*trace>
- \tr@ce{col@ \this@area@type
- @floats@ \the\count@ @number <-~
- \csname col@ \this@area@type
- @floats@ \the\count@ @number\endcsname}
-%</trace>
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<*trace>
- \tr@ce{\meaning\best@trial}
- \tr@ce{area:~\this@area\space\csname area@\this@area\endcsname}
- \@tracepop{update@best@trial}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-
-% \begin{macro}{\add@caption@to@float@box}
-% This is a hook really to be able to prevent moving the caption
-% back into |\this@float@box| (by making this macro |\relax| and
-% this is what happens later on in xo-final). Yes we know the
-% coding here needs changing!\footnote{David FIX!!!}
-% \begin{macrocode}
-%<*obsolete>
-\def\add@caption@to@float@box{
- \global\setbox\this@float@box\box\this@captioned@float
-}
-%</obsolete>
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \newpage
-%
-% \subsection{Best Column Output Routine}
-%
-% \begin{description}
-% \item[Entry:] |\setup@best@column@or|
-% \item[Exit:] |\setup@collection@or|
-% \item[Prereq:]
-% \item[Description:]
-% \item[Flow:]
-%\begin{footnotesize}
-%\begin{verbatim}
-% \setup@best@column@or
-% |
-% New OR: \best@column@or
-% |
-% V
-% \best@column@loop <-------
-% |
-% (when entering OR...)
-% |
-% <end of collection reached?>
-% | |
-% yes no
-% | |
-% | <col break requested?>
-% | | |
-% | yes no
-% | | |
-% | | <flush point encountered?>
-% | | | |
-% | | yes no
-% | | | |
-% | | <flush point <here point encountered?>
-% | | too early?> | |
-% | | | | yes no
-% | | yes no | |
-% | | | | ? ?
-% | | | (ignore break)
-% | | | |
-% | | | |
-% | | | |
-% | | | |
-% | | | |
-% | | | |
-% | | | |
-% | | | |
-% | | | |
-% (end column now) <------- |
-% | |
-% V |
-% <all cols produced?> |
-% | | V
-% yes no--------------------> (reenter \best@column@loop)
-% |
-% (produce final page)
-% |
-% V
-% \initialise@next@page
-% |
-% V
-% (try to make float pages)
-% |
-% V
-% \setup@collection@or
-%\end{verbatim}
-%\end{footnotesize}
-% \end{description}
-%
-%
-% After the best trial is chosen the `best@column@or' output routines
-% are executed. Structurally this is similar to the grab column output
-% routines used during the trials, but this time information
-% about the float placements is recorded in the float area lists
-% and also optionally in float placement control files.
-%
-% \begin{macro}{\setup@best@column@or}
-% This is the initialisation code for producing the final best set
-% of columns (via the @best@column@or output routine).
-% \begin{macrocode}
-\def\setup@best@column@or{
-%<*trace>
- \@tracepush{setup@best@column@or}
-% Elsewhere now:
-% \tr@ce{reinsert~penalty:~ \saved@outputpenalty\space (unless~ 10000)}
-%</trace>
-% \penalty
-% \ifnum\saved@outputpenalty=\@M
-% \z@
-% \else
-% \saved@outputpenalty\relax
-% \fi
- \global\curr@col@count\z@
- \gdef\trial@flush@seen@num{0}
- \gdef\trial@here@seen@num{0}
- \perhaps@write@placements@to@fpl@file
- \best@trial
-% \end{macrocode}
-%
-% \begin{macrocode}
- \initialise@footins@action
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\output{\best@column@or}
- \best@column@loop
-%<*trace>
- \@tracepop{setup@best@column@or}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\best@column@loop}
-% \begin{macrocode}
-\def\best@column@loop{
-%<*trace>
- \@tracepush{best@column@loop}
-%</trace>
- \global\advance\curr@col@count\@ne
- \global\vsize\csname col@ht@ \the\curr@col@count\endcsname
-%<*trace>
- \tr@ce{vsize~ <-~ \the\vsize }
- \@tracepop{best@column@loop}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\best@column@or}
-% Here is the output routine used when preparing the final columns,
-% an instantiation of |\some@column@or|. In contrast to the version
-% used for |\grab@column@or| it doesn't do the tests.
-% \begin{macrocode}
-\def\best@column@or{\some@column@or{best}
- \best@column@or@finish
- {
- \@reinserts
- \unvbox\@cclv
-% \end{macrocode}
-% Next line not okay! we need to add a penalty here but which one?
-% Or we need a different mechanism using either |\holdinginserts|
-% or a partial box line in collection OR.\footnote{FIX!!! there is
-% also another place like this!}
-% \begin{macrocode}
-% \penalty\z@ %FMi?
- }
- {
- \perhaps@write@to@fpl@file{
- \@spaces Area:~hhh^^J
- \expandafter\perhaps@write@placements@to@fpl@file@aux\the\toks\@currbox}
- \typeset@a@here@float
- }
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-% \begin{macro}{\best@column@or@finish}
-%
-% \begin{macrocode}
-\def\best@column@or@finish{
-%<*trace>
- \@tracepush{best@column@or@finish}
-%</trace>
- \mark@update@structure
-% \end{macrocode}
-%
-% \begin{macrocode}
- \deal@with@footins@action
-% \end{macrocode}
-%
-% save all marks here\footnote{not done yet!}
-%
-% add floats and footnotes etc to collected column
-%
-% \begin{macrocode}
- \produce@final@column
-% \end{macrocode}
-%
-% \begin{macrocode}
- \ifnum\curr@col@count=\col@count
- \produce@final@page
- \initialise@next@page
- \try@float@pages
- \place@deferred@floats
- \setup@collection@or
-%{\showoutput\showlists}
- \else
- \best@column@loop
- \fi
-%<*trace>
- \@tracepop{best@column@or@finish}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\initialise@next@page}
-% Initialises the column heights to text height. Clear the float
-% area lists, zero holdinginserts to allow footnote texts to arrive
-% in the insertion box.
-% \begin{macrocode}
-\def\initialise@next@page{
-%<*trace>
- \@tracepush{initialise@next@page}
-%</trace>
-%
-% \end{macrocode}
-%
-% \begin{macrocode}
- \initialise@column@data
-% \end{macrocode}
-%
-% \begin{macrocode}
- \initialise@areas
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\page@float@count\z@
-% \end{macrocode}
-%
-% \begin{macrocode}
- \initialise@flush@data
-% \end{macrocode}
-%
-% \begin{macrocode}
- \initialise@here@data
-% \end{macrocode}
-%
-% \begin{macrocode}
- \initialise@footins@action
-% \end{macrocode}
-%
-% Nothing is closed when we are at the start of a page.
-% \begin{macrocode}
- \global\let\this@page@closed\@empty
-% \end{macrocode}
-%
-% \begin{macrocode}
- \let\@elt\initialise@float@class
- \float@classes@list
- \let\@elt\relax
-%
-%\showfloatlists
-%\show\area@ddd\show\@activelist
-% for safety
- \global\let\this@float@box\@undefined
-%<*trace>
- \@tracepop{initialise@next@page}
-%</trace>
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\handle@case@of@forced@pagebreak}
-% This is related to |\handle@case@of@premature@ending| but we have
-% to return the penalty only if we haven't reached the last column.
-% If we don't do this we would start collecting material in the
-% middle of final page generation!
-% \begin{macrocode}
-\def \handle@case@of@forced@pagebreak{
- \ifnum\curr@col@count<\col@count
- \ifnum\outputpenalty=-\@M
- \@emptycol
- \fi
- \fi
-
- \ifnum\outputpenalty=-\output@balance@penalty
-%<*trace>
- \tr@ce{BALANCE:~ end~ point~ seen~ again}
-%</trace>
- \remove@guard@box@from@cclv
- \ifnum\curr@col@count<\col@count
- \@emptycol
- \fi
- \fi
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \newpage
-%
-% \subsection{Cleanup Output Routine}
-%
-% \begin{description}
-% \item[Entry:] |\setup@cleanup@or|
-% \item[Exit:] |\float@placement@loop|
-% \item[Prereq:]
-% \item[Description:]
-% Responsible for discarding unused text still on Main Vertical
-% List After the end of a trial. It eats everything until it sees
-% the special penalty marking the end of the last collection output
-% routine. This output routine may need to be called several times
-% in succession due to forced penalties in the galley.
-% \item[Flow:]
-%\begin{footnotesize}
-%\begin{verbatim}
-% \setup@cleanup@or
-% |
-% V
-% New OR: \cleanup@or
-% |
-% V
-% <special outputpenalty reached?> --> \float@placement@loop
-%\end{verbatim}
-%\end{footnotesize}
-% \end{description}
-%
-%
-% \begin{macro}{\setup@cleanup@or}
-% \begin{macrocode}
-\def\setup@cleanup@or{
- \global\vsize\maxdimen
- \global\output{\cleanup@or}
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\cleanup@or}
-% In the actual output routine we grab text and throw it away until
-% we see the special output penalty. Then we prepare for the trials
-% to place the floats properly.
-% \begin{macrocode}
-\def\cleanup@or{
-%<*trace>
- \@tracepush{cleanup@or}
- \tr@ce{output~pen:~ \the\outputpenalty}
-%</trace>
-% \end{macrocode}
-% Throw everything away \ldots
-% \begin{macrocode}
- \global\setbox\@cclv\box\voidb@x
- \global\setbox\footins\box\voidb@x
-% \end{macrocode}
-% \ldots\ until we see the special output penalty again.
-% \begin{macrocode}
- \ifnum\outputpenalty=-\output@collect@penalty
- \float@placement@loop
- \fi
-%<*trace>
- \@tracepop{cleanup@or}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \newpage
-%
-% \subsection{Making float pages}
-%
-%
-% \begin{description}
-% \item[Entry:] |\try@float@pages|
-% \item[Exit:] --- (this happens within the OR)\\
-% On exit |\area@ddd| will be empty and the floats not being put
-% onto float pages are moved to |\@activelist| (those that have
-% their call outs on previous pages) and |\@mvllist| (those that
-% have their call outs still on the MVL).
-% \item[Prereq:] |\area@ddd| contains the float to work on; all other
-% areas are empty.
-% \item[Description:]
-% \item[Flow:]
-%\begin{footnotesize}
-%\begin{verbatim}
-% \try@float@pages
-% |
-% V
-% <\area@ddd has floats?>
-% | |
-% ----no yes
-% | |
-% | V
-% | (split \area@ddd into \@activelist and \@mvllist;
-% | setup trial conditions)
-% | |
-% | V
-% | \try@float@page <-------------
-% | | |
-% | <float page produced?> |
-% | | | |
-% | no yes |
-% | | | |
-% | | (output page) |
-% | | | |
-% | | (move new \area@ddd |
-% | | to \@activelist) |
-% | | | |
-% | | ------------------
-% | |
-% | |
-% | (restore float conditions before last trial)
-% | |
-% | (restore trial condition to normal)
-% | |
-% ------------->|
-% |
-% V
-%\end{verbatim}
-%\end{footnotesize}
-% \end{description}
-%
-%
-%
-% \begin{macro}{\try@float@pages}
-%
-% \begin{macrocode}
-\def\try@float@pages {
-%<*trace>
- \@tracepush{try@float@pages}
-%</trace>
- \ifx\area@ddd\@empty
-%<*trace>
- \tr@ce{no~ deferred~ floats}
-%</trace>
- \else
- \global\let\@activelist@empty@action\relax
- \global\let\pretests@success@action\floatpage@pretests@success@action
-% \end{macrocode}
-% this is only a tmp: we just use |\relaxed@try@this@area| but of
-% course there should be different rules for float pages (and
-% different float areas and \ldots)
-% \begin{macrocode}
- \global\let\try@this@area\relaxed@try@this@area
-% \end{macrocode}
-%
-% First thing to do is to split the list of deferred floats into
-% those that have ther callouts already typeset (on previous pages)
-% and those that we have only seen because we looked a bit
-% ahead. For making float pages we can only use the former.
-% \begin{macrocode}
- \let\@elt\split@defer@list
- \area@ddd
- \let\@elt\relax
- \global\let\area@ddd\@empty
-% \end{macrocode}
-% Now we loop until we fail to make float pages. The actual work is
-% done in the macro |\try@float@page|.
-% \begin{macrocode}
- \@floatpagetrue
- \loop
- \if@floatpage
- \begingroup % no nesting of \loop without grouping ...
-% \end{macrocode}
-% Next line prevents adding the caption to the float box. Of course
-% the float page does come out even worse this way, but we don't
-% get multiple captions if float page generation
-% fails.\footnote{FIX by redesigning caption handling!}
-% \begin{macrocode}
-%<*obsolete>
- \let\add@caption@to@float@box\relax %tmp!!
-%</obsolete>
-% \end{macrocode}
-%
-% A bit statistics: how many floats do we have on the
-% |\@activelist|?
-% \begin{macrocode}
-%<*progress>
- \def\@elt{\global\advance\trial@count\@ne\@gobble}
- \@activelist
- \let\@elt\relax
- \progress@nl{}
- \progress@separator
- \progress@nl{STATS:~ floats~ waiting~ =~ \the\trial@count
- \space on~ page~ \the\absolute@page@number\space (float~ page)}
- \progress@separator
- \global\trial@count\z@
-%</progress>
-% \end{macrocode}
-% \begin{macrocode}
- \try@float@page
- \endgroup
- \repeat
-% \end{macrocode}
-% Once we are finished we have to return to normal trial
-% conditions, so\ldots
-% \begin{macrocode}
- \global\let\try@this@area\std@try@this@area
- \fi
-%<*trace>
- \@tracepop{try@float@pages}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\try@float@page}
-% This macro tries to build a single float page from the floats in
-% |\@activelist|. If it fails it (tries to) restores the state of
-% the floats. If it succeeds it will output a float page and returns.
-% \begin{macrocode}
-\def\try@float@page {
-%<*trace>
- \@tracepush{try@float@page}
-%</trace>
-% \end{macrocode}
-% Save the current state in case of failure then run the float
-% placement loop (setup for this loop should have happened
-% earlier).
-% \begin{macrocode}
- \save@current@float@state
- \trial@inner@loop
-%
-%\typeout{float.list.after.trial}
-%\showfloatlists
-%
-% \end{macrocode}
-% Loop through all ``text columns'' and add up their heights. This
-% is again only done to have some sort of measure for float pages
-% and should be removed once some real code gets into this part.
-% \begin{macrocode}
- \dimen@\z@
- \forall@columns{
-%<*trace>
- \tr@ce{\ht\the\curr@col@count=\the \csname
- col@ht@ \the\curr@col@count \endcsname}
-%</trace>
- \advance\dimen@ \csname
- col@ht@ \the\curr@col@count \endcsname
- }
-% \end{macrocode}
-%
-% If the sum of all white space is more than 300pt :-)
-% \begin{macrocode}
- \ifdim \dimen@ > 300pt \relax
-% \end{macrocode}
-% we fail
-% \begin{macrocode}
- \@floatpagefalse
-%<*trace>
- \tr@ce{float~page~failed}
-%</trace>
-%<*progress>
- \progress@failed{no~ float~ page~ made}
- \progress@nl{}
-%</progress>
-% \end{macrocode}
-% Return to the previous state (and as can be seen by using
-% |\initialise@next@page|) this needs some work; the latter might
-% in fact do too much like calling
-% |\initialise@flush@num|!\footnote{FIX}
-% \begin{macrocode}
- \saved@float@state
-% \end{macrocode}
-% To avoid having |\initialise@flush@num| do anything harmful we
-% set |\trial@flush@seen@num| to zero at this point.\footnote{This
-% needs fixing properly!} And the same is necessary for
-% |\initialise@here@num|.
-% \begin{macrocode}
- \gdef\trial@flush@seen@num{0}
- \gdef\trial@here@seen@num{0}
- \initialise@next@page
- \else
-% \end{macrocode}
-% Otherwise we claim we have a good float page.
-% \begin{macrocode}
-%<*trace>
- \tr@ce{float~page~succeeded}
- \tr@ce{We~ better~ output~ something~ now~ ...}
-%</trace>
-%<*progress>
- \progress@nl{succeeded}
- \progress@nl{}
-%</progress>
-% \end{macrocode}
-% producing this page is rubbish as well but it can't be written
-% before we have parameters and rules for making float pages.
-% \begin{macrocode}
- \forall@columns{
- \global\setbox\csname col@box@\the\curr@col@count\endcsname
- \vbox to \csname col@ht@ \the\curr@col@count\endcsname{}
- \produce@final@column
- }
- \perhaps@write@placements@to@fpl@file
- \produce@final@page
- \initialise@next@page
-% \end{macrocode}
-% But the final lines are for real: if we did succeed we need to
-% provide a new |\@activelist| for the next potential float page.
-% It should be the floats we deferred while trying to make the
-% current float page followed by the floats that are still on the
-% active list (i.e., those we haven't even tried for the current
-% page).
-% \begin{macrocode}
- \xdef\@activelist{\area@ddd\@activelist}
- \global\let\area@ddd\@empty
- \fi
-%
-%\typeout{float.list.after.shipout.float.page.or.fail}
-%\showfloatlists
-%
-%<*trace>
- \@tracepop{try@float@page}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\if@floatpage}
-% \begin{macro}{\@floatpagefalse}
-% \begin{macro}{\@floatpagetrue}
-% Switch which is set to true while we are in the process of making
-% float pages and haven't failed.
-% \begin{macrocode}
-\newif\if@floatpage
-\def\@floatpagefalse{\global\let\if@floatpage\iffalse}
-\def\@floatpagetrue{\global\let\if@floatpage\iftrue}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\save@current@float@state}
-%
-% Save the current state of affairs concerning
-% floats\footnote{Needs more work, there are now other data
-% structures that should be saved if this is every going to be of
-% much use. (its current usage actually could be achieved with
-% simpler means). FIX or fold!}. In case of failure return to
-% this state by executing |\saved@float@state|.
-% \begin{macrocode}
-\def\save@current@float@state {
-%<*trace>
- \@tracepush{save@current@float@state}
-%</trace>
- \xdef\saved@float@state{\gdef\noexpand\@activelist{\@activelist}}
- \forall@columns {
- \expandafter
- \g@addto@macro
- \expandafter \saved@float@state
- \expandafter { \expandafter \global
- \csname col@ht@ \the\curr@col@count\expandafter\endcsname
- \the \csname col@ht@ \the\curr@col@count\endcsname
-% \end{macrocode}
-% No final |\relax| needed since this is followed by area data. And
-% if there are no areas we wouldn't call this code, would we?
-% \begin{macrocode}
- }
- }
-% \end{macrocode}
-% Save current state of all used float areas by looping though them.
-% \begin{macrocode}
- \expandafter\save@area@info\used@areas ddd\relax\relax\relax
-%<*trace>
- \tr@ce{saved:~ \meaning\saved@float@state}
- \@tracepop{save@current@float@state}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\save@area@info}
-% Save information about area and recourse.
-% \begin{macrocode}
-\def\save@area@info#1#2#3{
- \ifx#1\relax
- \else
- \edef\@tempa {
- \global\csname #1#2#3@float@count\endcsname
- \the\csname #1#2#3@float@count\endcsname
-% \end{macrocode}
-% No |\relax| needed since followed by a |\gdef|.
-% \begin{macrocode}
- \gdef \expandafter\noexpand \csname area@#1#2#3\endcsname
- {\csname area@#1#2#3\endcsname}
- }
- \expandafter
- \g@addto@macro
- \expandafter \saved@float@state
- \expandafter { \@tempa }
-
- \expandafter\save@area@info
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\saved@float@state}
-% To return to the saved float state execute |\saved@float@state|.
-% \begin{macrocode}
-\let\saved@float@state\@empty
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\split@defer@list}
-%
-% Split |\area@ddd| list, moving those floats whose callouts have
-% been typeset to |\@activelist| for consideration for (one day)
-% float pages, and for allocating to text page float areas.
-%
-% Floats whose callouts are still on MVL are placed on |\@mvllist|.
-% \begin{macrocode}
-\def\split@defer@list #1 {
- \def\@currbox{#1}
- \expandafter\extract@this@float@actual@structure\the\toks #1
-%<*trace>
- \tr@ce { #1:~\LastMark{\this@class}~ ???~\this@sequence@number }
-%</trace>
- \ifnum 0\LastMark{\this@class} < \this@sequence@number
-%<*trace>
- \tr@ce {#1:~ not~ really~ defered }
-%</trace>
- \@cons \@mvllist #1
- \else
-%<*trace>
- \tr@ce {#1:~ callout~ has~ been~ typeset}
-%</trace>
- \@cons \@activelist #1
- \fi
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-% \subsection{Preassign deferred floats}
-%
-%
-%
-% \begin{macro}{\place@deferred@floats}
-%
-% The |\place@deferred@floats| is supposed to distribute from
-% previous pages (i.e., from the top of |\area@ddd| or more exactly
-% those currently on the |\@activelist| since the |\area@ddd| was
-% already split when trying to build float pages) into the areas
-% of the page to be build. After all we know that for those floats
-% the call outs are on previous pages so testing for them
-% is unnecessary and we could save time by bypassing this stuff.
-%
-% On the other hand if we have flush points in the upcoming text
-% all our placements might be wrong, so perhaps this doesn't really
-% save so much time after all and the extra complication might not
-% be worth the effort.
-%
-% Perhaps a compromise is to make a first column grab without any
-% floats to see if we end up with a flush point (not implemented).
-%
-% So if we don't do this then the only thing we need to do at this
-% point is to move the floats from the |\@mvllist| to the end of
-% the |\@activelist|.
-% \begin{macrocode}
-\def\place@deferred@floats {
-%<*trace>
- \@tracepush{place@deferred@floats}
-%</trace>
- \xdef\@activelist{\@activelist\@mvllist}
- \global\let\@mvllist\@empty
-%\showfloatlists
-%<*trace>
- \@tracepop{place@deferred@floats}
-%</trace>
-}
-% \end{macrocode}
-%
-%
-% Here is an alternate definition which does the preassigning but
-% it would need to be extended by checking for flush points or by a
-% flag that ensures that if we later encounter a flush point that
-% we know we could backtrack if necessary (e.g., the preassignment
-% might have already deferred some floats past the flush
-% point).\footnote{Extend, fix, or get rid of.}
-% \begin{macrocode}
-\iffalse % we don't do it right now
-\def\place@deferred@floats {
-%<*trace>
- \@tracepush{place@deferred@floats}
-%</trace>
-%\showfloatlists
-% \let\@elt\split@defer@list
-% \area@ddd
-% \let\@elt\relax
-% \global\let\area@ddd\@empty
- \global\let\@activelist@empty@action\relax
- \global\let\pretests@success@action\floatpage@pretests@success@action
-\showfloatlists
- \trial@inner@loop
- \xdef\@activelist{\area@ddd\@mvllist}
- \global\let\area@ddd\@empty
- \global\let\@mvllist\@empty
-%\showfloatlists
-%<*trace>
- \@tracepop{place@deferred@floats}
-%</trace>
-}
-\fi
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\floatpage@pretests@success@action}
-% Version of |\pretests@success@action| for use in initial phase
-% when previously deferred floats are being allocated to float areas.
-% \begin{macrocode}
-\def\floatpage@pretests@success@action{
-%<*trace>
- \@tracepush{floatpage@pretests@success@action}
-%</trace>
- \update@best@trial
- \trial@inner@loop
-%<*trace>
- \@tracepop{floatpage@pretests@success@action}
-%</trace>
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \newpage
-%
-% \subsection{Support for Balancing}
-%
-% Code in this section (and related code in other sections) is not
-% used at the moment and will most likely be replaced with something
-% completely different.
-%
-% \begin{macro}{\if@balance}
-% |@balance| is set to true if we encounter a balance penalty
-% during collection.
-% \begin{macrocode}
-\newif\if@balance
-\def\@balancefalse{\global\let\if@balance\iffalse}
-\def\@balancetrue{\global\let\if@balance\iftrue}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\balancecolumns}
-%
-% \begin{macrocode}
-\def\balancecolumns {
- \add@badly@guarded@penalty\output@balance@penalty
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-% \newpage
-%
-% \subsection{Support for Flush Points}
-%
-%
-% \begin{macro}{\if@flushseen}
-% \begin{macro}{\if@flushfail}
-%
-% |@flushseen| is set to true if we encounter a flush penalty
-% during collection.
-%
-% |@flushfail| is set to true if we fail a trial due to placing the
-% float after the flush penalty.
-% \begin{macrocode}
-\newif\if@flushseen
-\def\@flushseenfalse{\global\let\if@flushseen\iffalse}
-\def\@flushseentrue{\global\let\if@flushseen\iftrue}
-\newif\if@flushfail
-\def\@flushfailfalse{\global\let\if@flushfail\iffalse}
-\def\@flushfailtrue{\global\let\if@flushfail\iftrue}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\flushfloats}
-%
-% Possible variants:
-%
-% Flush only one (some) types.
-%
-% Fuzzyflush or, more precisely, flush-to-this-column
-% or -page or -spread.\footnote{Right now "spread" is not implemented.}
-%
-% Parts of the flushpenalty (all types) data structure:
-%
-% |\flush@min@col@|\meta{num}
-% |\saved@flush@min@col@|\meta{num}
-% |\flush@prev@float@num@|\meta{num}\footnote{what is this Chris?}
-%
-% |\flush@seq@num| is the number of these so that
-% \meta{num} has range [1, |\flush@seq@num|]
-%
-% In addition, whilst doing an fp trial we need |\trial@flush@seen@num|
-% to record that we have, in this trial so far, seen the
-% flush points [1, |\trial@flush@seen@num|].
-%
-%
-% \begin{macrocode}
-\DeclareDocumentCommand\flushfloats { o O{strict} }
- { \flush@floats {#1} {#2} }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\flush@floats #1 #2 {
- \add@badly@guarded@penalty\output@flush@float@penalty
-% \end{macrocode}
-%
-% \begin{macrocode}
- \gincrement@num\flush@seq@num
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\@namedef{flush@min@col@\flush@seq@num}{1}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \expandafter\xdef
- \csname flush@last@float@\flush@seq@num \endcsname
- {\the\float@sequence@count}
-% \end{macrocode}
-% If |#1| is |\NoValue| the current flush point affects all float
-% sequence classes, thus we store in
-% |\flush@classes@list@|\meta{num} a list of all float sequence
-% classes separated by semicolons. Otherwise we assume that we got
-% a single float type(!) as argument and flush the corresponding
-% class.
-% \begin{macrocode}
- \IfNoValueTF{#1}{
- \def\@elt##1{##1;}
- \expandafter\xdef
- \csname flush@classes@list@\flush@seq@num \endcsname
- {\float@classes@list}
- \let\@elt\relax
- }
- {\expandafter\ifx\csname sequence@class@#1\endcsname
- \relax
- \ErrorArgumentNotAFloatType
- \else
- \global\expandafter\let
- \csname flush@classes@list@\flush@seq@num
- \expandafter\endcsname
- \csname sequence@class@#1\endcsname
- \fi
- }
-% \end{macrocode}
-% The argument |#2| holds the fuzziness of the flush point which
-% currently can be either |strict|, |column| or |page|.
-% We link |\flush@fuzziness@|\meta{num} to the code stored in
-% |\flushcheck@#2| after making sure that such code
-% exists.\footnote{Improve error handling (as elsewhere)}
-% \begin{macrocode}
- \@ifundefined {flushcheck@#2}
- \userinputERROR
- {\global\expandafter\let
- \csname flush@fuzziness@\flush@seq@num \expandafter \endcsname
- \csname flushcheck@#2\endcsname
-%<*trace>
- \tr@ce{flush@fuzziness@\flush@seq@num \space
- =:~ \expandafter\noexpand\csname flushcheck@#2\endcsname
- }
-%</trace>
- }
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\clearpage}
-% \LaTeX's |\clearpage| command now looks like this:
-% \begin{macrocode}
-\def\clearpage{ \flushfloats \newpage }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\doubleclearpage}
-% \LaTeX's |\doubleclearpage| command also needs a new
-% definition:\footnote{But not this one :-) FIX!}
-% \begin{macrocode}
-\def\doubleclearpage{ \clearpage }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\flush@seq@num}
-% The number |\flush@seq@num| records the number of flush
-% points we have have seen during collection.
-% \begin{macrocode}
-\def\flush@seq@num{0}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\trial@flush@seen@num}
-% The number |\trial@flush@seen@num| records the number of flush
-% points we have seen so far during a trial, i.e., it will be
-% initialised to zero at the beginning of the trial and advanced by
-% one for each flush point encountered.
-% \begin{macrocode}
-\def\trial@flush@seen@num{0}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\flush@last@float@xxx}
-% \begin{macro}{\flush@min@col@xxx}
-% \begin{macro}{\flush@classes@list@xxx}
-% \begin{macro}{\flush@fuzziness@xxx}
-%
-% For each flush point we have a data structure in which we store
-% relevant information. This data structure is provided by a set of
-% macros which can be accessed by using the number of the current
-% flush point and constructing |\csname|s from it, e.g., to get at
-% the ``flush min col'' for the flush point with number 3 would be
-% |\csname flush@min@col@3\endcsname|.
-
-% |\flush@min@col@|\meta{num} holds the column number in which we
-% last seen the flush penalty while trying to find a solution for
-% the current page. This is initialised to 1 in collection@or when
-% a flush penalty is encountered during collection (since 1 is the
-% earliest column in which the flush penalty finally may fall). By
-% adding additional floats to the page the penalty might move to a
-% later column but normally not back to an earlier
-% one\footnote{There is a possibility that this happens if there is
-% enough space vanishing at the new break.} If we end up with the
-% flush penalty moving backwards we force a break at this point
-% until we reach the column where it was before. The reason for
-% this action is that we might have allocated floats to later
-% columns that would otherwise end after after the flush penalty.
-%
-% If by adding floats to the trials the flush penalty is moved to
-% the next page we set |\flush@min@col@|\meta{num} to
-% |\maxdimen|. The actual test to see if a flush penalty still
-% belongs to the current page is to check against |\curr@col@count|
-% (so |\curr@col@count+1| would be sufficient, but using
-% |\maxdimen| avoids calculations.
-%
-% |\flush@classes@list@|\meta{num} holds a list of float types which
-% are affected by the current flush point.
-%
-% |\flush@fuzziness@|\meta{num} holds the fuzziness associated with
-% the flushpoint, valid values are |strict| and |page|.
-%
-% By defining (some of) them on top-level we avoid unnecessary
-% entries on the savestack since they would otherwise be
-% constructed (locally) first within the output routine (when doing
-% |\ifx| testing), resulting in |\relax| being stored on the
-% savestack.
-% \begin{macrocode}
-\expandafter\let\csname flush@last@float@1 \endcsname\ERROR
-\expandafter\let\csname flush@classes@list@1 \endcsname\ERROR
-\expandafter\let\csname flush@min@col@1 \endcsname\ERROR
-\expandafter\let\csname flush@fuzziness@1 \endcsname\ERROR
-\expandafter\let\csname flush@last@float@2 \endcsname\ERROR
-\expandafter\let\csname flush@classes@list@2 \endcsname\ERROR
-\expandafter\let\csname flush@min@col@2 \endcsname\ERROR
-\expandafter\let\csname flush@fuzziness@2 \endcsname\ERROR
-\expandafter\let\csname flush@last@float@3 \endcsname\ERROR
-\expandafter\let\csname flush@classes@list@3 \endcsname\ERROR
-\expandafter\let\csname flush@min@col@3 \endcsname\ERROR
-\expandafter\let\csname flush@fuzziness@3 \endcsname\ERROR
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\flush@classes@list@max}
-% |\flush@classes@list@max| holds the concatenation of all
-% |\flush@classes@list@|\meta{num} on the page currently
-% constructed. This information is needed in case we get to a new
-% float and the preliminary tests suggests that it needs to be
-% deferred. In that case we need to know which flush points have
-% been seen previously to decide whether or not we can defer the
-% new float.
-% \begin{macrocode}
-\let\flush@classes@list@max\@empty
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\initialise@flush@data}
-% \begin{macrocode}
-\def \initialise@flush@data{
-%<*trace>
- \@tracepush{initialise@flush@data}
-%</trace>
-% \end{macrocode}
-% Does this need any documentation?
-%
-% Well, we have to get rid of all information relating to flush
-% float penalties that have been typeset on the previous page and
-% move the remaining ones (if any) to the front.
-% \begin{macrocode}
- \count@\flush@seq@num\relax
- \advance\count@ -\trial@flush@seen@num
-%<*trace>
- \tr@ce{flush@seq@num~
- =~ \flush@seq@num\space <-~
- \the\count@ }
-%</trace>
-% \end{macrocode}
-% Something wrong here if we get negative values!
-% \begin{macrocode}
-%<*debug>
- \ifnum\count@<\z@ \ERROR \fi
-%</debug>
-% \end{macrocode}
-%
-% \begin{macrocode}
- \xdef\flush@seq@num{\the\count@}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \@tempcnta\trial@flush@seen@num
- \@tempcntb\z@
- \loop
- \ifnum \@tempcntb < \count@
-
- \advance\@tempcnta\@ne
- \advance\@tempcntb\@ne
-%<*trace>
- \tr@ce{flush@fuzziness@\the\@tempcntb\space
- =~ \expandafter \noexpand
- \csname flush@fuzziness@\the\@tempcntb\endcsname\space
- <-~ \expandafter \noexpand
- \csname flush@fuzziness@\the\@tempcnta \endcsname
- }
- \tr@ce{flush@last@float@\the\@tempcntb\space
- =~ \csname flush@last@float@\the\@tempcntb\endcsname\space <-~
- \csname flush@last@float@\the\@tempcnta \endcsname
- }
- \tr@ce{flush@classes@list@\the\@tempcntb\space
- =~ \csname flush@classes@list@\the\@tempcntb\endcsname\space <-~
- \csname flush@classes@list@\the\@tempcnta \endcsname
- }
- \tr@ce{flush@min@col@\the\@tempcntb\space <-~ 1}
-%</trace>
- \global\expandafter\let
- \csname flush@fuzziness@\the\@tempcntb \expandafter\endcsname
- \csname flush@fuzziness@\the\@tempcnta \endcsname
-
- \global\expandafter\let
- \csname flush@last@float@\the\@tempcntb \expandafter\endcsname
- \csname flush@last@float@\the\@tempcnta \endcsname
-
- \global\expandafter\let
- \csname flush@classes@list@\the\@tempcntb \expandafter\endcsname
- \csname flush@classes@list@\the\@tempcnta \endcsname
-
- \global\@namedef{flush@min@col@\the\@tempcntb}{1}
- \repeat
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\let\flush@classes@list@max\@empty
-% \end{macrocode}
-% Need to reset |\trial@flush@seen@num| in case the current macro
-% is called again too early, e.g., if it is called to initialize a
-% float page and then again to initialize a text page.
-% \begin{macrocode}
- \gdef\trial@flush@seen@num{0}
-%<*trace>
- \@tracepop{initialise@flush@data}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-% \subsection{Support for Here Points}
-%
-% A ``Here Point'' is a place in the galley at which something is
-% supposed to happen. For example, a marginal note needs to be
-% attached to the column, or a float needs to be inserted into the
-% column (here float), or it needs to be made sure that from that
-% point on there is still a certain amount of space available in the
-% column.
-%
-% With each here point there is associated a float structure (i.e. a
-% box and its corresponding |\toks| register) although in most cases
-% only parts of that structure is used. In addition each here point
-% has an associated dimension which denotes the amount of available
-% space which is required after the here point in the column to allow
-% to place the here point into this column. If this requirement is not
-% met the here point is moved to the next column (or page) by ending
-% the current column prematurely at the last legal breakpoint before
-% the here point (not at the here point itself\footnote{It should be
-% considered to allow breaking directly at the here point in special
-% cases, i.e., specified at the here point declaration.}). This
-% behaviour will ensure that a line of text preceding the here point
-% will also be moved to the next column or page which is important in
-% case of marginals and similar situations. In case of here floats it
-% might not be a requirements so perhaps this should be made
-% customisable.
-%
-% At the moment the ``type'' in the float structure is used to define
-% the type of here point. E.g.,
-% \begin{description}
-% \item[mpar] denotes a marginal
-% \item[rspace] denotes a requested space
-% \item[figure,table,\ldots] all normal float types identify the here
-% point as belonging to a here float.
-% \end{description}
-% The down side of this approach is that ``mpar'' can't be used as a
-% float type any longer and the whole approach might be too difficult
-% to extend this way. This needs certainly needs a cleanup.
-%
-% It is quite likely that there will be additional values that need
-% storing on a per here point basis. For this reason the code below
-% provides the requiredspace as a data structure external to the float
-% structure. Otherwise it could probably be integrated therein.
-%
-% When a here point is encountered while making columns for a trial or
-% for the final page, its requirements are checked. If they are
-% fulfilled then a here-point-type specific function will update the
-% column material (e.g. by adding a here float or a marginal).
-%
-% Here points are in many aspects like flush points. So most of the
-% code below should not be very surprising.
-%
-% \begin{macro}{\here@seq@num}
-% The number |\here@seq@num| records the number of here
-% points we have have seen during collection.
-% \begin{macrocode}
-\def\here@seq@num{0}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\trial@here@seen@num}
-% The number |\trial@here@seen@num| records the number of here
-% points we have seen so far during a trial, i.e., it will be
-% initialised to zero at the beginning of the trial and advanced by
-% one for each here point encountered.
-% \begin{macrocode}
-\def\trial@here@seen@num{0}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@herelist}
-% |\@elt| list of floats that should appear at a here point.
-% \begin{macrocode}
-\let\@herelist\@empty
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\saved@herelist}
-% Saved version of the |\@herelist| while we run a through the
-% float placement trial since we need the full |\@herelist| again in
-% the next trial.
-% \begin{macrocode}
-\let\saved@herelist\@empty
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\here@point}
-% |\here@point| adds a here point to the MVL. It takes two
-% arguments: the box reference associated with the here point and
-% the vertical space that needs to be reserved for the material
-% added.
-% \begin{macrocode}
-\def\here@point #1#2{
-% \end{macrocode}
-%
-% \begin{macrocode}
- \@cons\@herelist#1
-% \end{macrocode}
-%
-% \begin{macrocode}
- \gincrement@num\here@seq@num
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\@namedef{here@min@col@\here@seq@num}{1}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \setlength\dimen@{#2}
- \expandafter\xdef
- \csname here@required@space@\here@seq@num \endcsname
- {\the\dimen@}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \add@badly@guarded@penalty\output@here@float@penalty
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\initialise@here@data}
-% \begin{macrocode}
-\def \initialise@here@data{
-%<*trace>
- \@tracepush{initialise@here@data}
-%</trace>
-% Does this need any documentation?
-%
-% Well, we have to get rid of all information relating to here
-% float penalties that have been typeset on the previous page and
-% move the remaining ones (if any) to the front.
-% \begin{macrocode}
- \count@\here@seq@num\relax
- \advance\count@ -\trial@here@seen@num
-%<*trace>
- \tr@ce{here@seq@num~
- =~ \here@seq@num\space <-~
- \the\count@ }
-%</trace>
-% \end{macrocode}
-% Something wrong hereif we get negative values!
-% \begin{macrocode}
-%<*debug>
- \ifnum\count@<\z@ \ERROR \fi
-%</debug>
-% \end{macrocode}
-%
-% \begin{macrocode}
- \xdef\here@seq@num{\the\count@}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \@tempcnta\trial@here@seen@num
- \@tempcntb\z@
- \loop
- \ifnum \@tempcntb < \count@
-
- \advance\@tempcnta\@ne
- \advance\@tempcntb\@ne
-%<*trace>
- \tr@ce{here@required@space@\the\@tempcntb\space
- =~ \csname here@required@space@\the\@tempcntb\endcsname\space <-~
- \csname here@required@space@\the\@tempcnta \endcsname
- }
- \tr@ce{here@min@col@\the\@tempcntb\space <-~ 1}
-%</trace>
- \global\expandafter\let
- \csname here@required@space@\the\@tempcntb \expandafter\endcsname
- \csname here@required@space@\the\@tempcnta \endcsname
-
- \global\@namedef{here@min@col@\the\@tempcntb}{1}
- \repeat
-%<*trace>
- \@tracepop{initialise@here@data}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\split@off@last@line}
-%
-% When a here point doesn't fit onto the current page or column for
-% some reason it will be moved into the next column. In some cases,
-% e.g., when the here point is associated with the line before it
-% (as, for example, in marginals) it is necessary to move the line
-% also to the later column.
-%
-% The purpose of |\split@off@last@line| (to be called inside the
-% OR) is to split box 255 at the latest possible breakpoint before
-% the end and return the material following this breakpoint to the
-% MVL.
-%
-% The idea is as follows: if we subtract 1sp from the height of
-% box 255 and also subtract all of its internal shrinkability and
-% then split it to this height it can't any longer reach the final
-% breakpoint (by 1sp). Thus it will settle with some earlier
-% breakpoint and chances are very very good that this will be the
-% prefinal one.
-% \begin{macrocode}
-\def \split@off@last@line{
-%<*trace>
- \@tracepush{split@off@last@line}
- \tr@ce{goal:~ \the\pagegoal;~ total:~ \the\pagetotal;~ shrink:~
- \the\pageshrink}
- \tr@ce{ht255:~ \the\ht255;~ dp255:~ \the\dp255}
-%</trace>
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
- \dimen@\ht\@cclv
-% \end{macrocode}
-% Looking at |\ht255| should be the same as |\pagetotal-\pagedepth|
-% or not?\footnote{Doesn't seem to be the case, bug in the code,
-% the program, or in my thinking? (seems to be a bug in \TeX:
-% pagedepth is always zero in the OR!)}
-% \begin{macrocode}
- \advance\dimen@-\pageshrink
- \advance\dimen@-1sp
-%{\showoutput\showbox\@cclv}
-% \end{macrocode}
-% Before splitting we have to ensure that the maximum depth is not
-% larger than the maximum depth allowed on the MVL.
-% \begin{macrocode}
- \splitmaxdepth\@maxdepth
- \setbox\z@\vsplit\@cclv to\dimen@
-%{\showoutput\showbox\z@}
-%{\showoutput\showbox\@cclv}
-% \end{macrocode}
-%
-% Before we now |\unvbox| 255 back onto the MVL we have to make sure
-% that the sum of its vertical dimensions plus the requested space
-% for the current here point is smaller than a full column height.
-%
-% If we don't do that we might end up with a situation where we are
-% pushing the two from column to columns since they will never fit.
-% \begin{macrocode}
- \dimen@\csname
- here@required@space@\trial@here@seen@num
- \endcsname
- \advance\dimen@\ht\@cclv
- \advance\dimen@\dp\@cclv
-% \end{macrocode}
-% If the sum is too large we reduce the required space for the here
-% point and complain (not really done yet the latter).
-% \begin{macrocode}
- \ifdim \dimen@ > \textheight
- \ERROR-HERE-TOO-LARGE
- \dimen@\textheight
- \advance\dimen@-\ht\@cclv
- \advance\dimen@-\dp\@cclv
- \expandafter\xdef\csname
- here@required@space@\trial@here@seen@num
- \endcsname{\the\dimen@}
- \fi
-% \end{macrocode}
-% So now we can |\unvbox| and then move the top from the split back
-% into 255 (essentially to have it taken out of that register by
-% the code following, but such is life).
-% \begin{macrocode}
- \unvbox\@cclv
- \global\setbox\@cclv\box\z@
-%<*trace>
- \@tracepop{split@off@last@line}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \subsection{Support for Grid Points}
-%
-%
-%
-%
-% \begin{macro}{\align@collected@galley@and@restart}
-% |\align@collected@galley@and@restart| is called inside
-% |\some@column@or| when we have encountered a grid point. It is
-% supposed to align the current line with the text grid and then
-% restarts the galley processing.
-%
-% We do this by putting the material gathered so far into a box of
-% appropriate size, and then push this pack onto the recent
-% contributions for reconsideration.
-% \begin{macrocode}
-\def \align@collected@galley@and@restart {
-%<*trace>
- \@tracepush{align@collected@galley@and@restart}
- \tr@ce{GRID:~ page~ goal~\space\space\space =~ \the\pagegoal}
- \tr@ce{GRID:~ page~ total~\space\space =~ \the\pagetotal}
- \tr@ce{GRID:~ page~ depth~\space\space =~ \the\pagedepth}
- \tr@ce{GRID:~ page~ shrink~\space =~ \the\pageshrink}
- \tr@ce{GRID:~ page~ stretch~ =~ \the\pagestretch}
- \tr@ce{GRID:~ page~ fil~ stretch~ =~ \the\pagefilstretch}
- \tr@ce{GRID:~ page~ fill~ stretch~ =~ \the\pagefillstretch}
- \tr@ce{GRID:~ page~ filll~ stretch~ =~ \the\pagefillstretch}
- \tr@ce{GRID:~ ht~ 255~\space =~ \the\ht\@cclv}
- \tr@ce{GRID:~ dp~ 255~\space =~ \the\dp\@cclv}
-%</trace>
-% \end{macrocode}
-% As a first step we remove the guard box since it has now served
-% its purpose.
-% \begin{macrocode}
- \remove@guard@box@from@cclv
-% \end{macrocode}
-% Then we calculate the distance to nearby grid points.
-% \begin{macrocode}
- \snap@to@grid{\ht\@cclv}\pagesetup@grid@point@sep
-% \end{macrocode}
-% So the next step is to make a decision which grid point to
-% use. The strategy used below can probably be refined
-% further\ldots
-%
-% First we test if the next grid point down makes us fall off the
-% page\footnote{We should use \texttt{\string\pagegoal} for the
-% test I think, not the commented out construct below, since in
-% case of footnotes the available space for text might has be
-% reduced!}, if so\ldots
-% \begin{macrocode}
- \ifdim \returned@size > \pagegoal
- % \csname col@ht@ \the\curr@col@count\endcsname % not!
-% \end{macrocode}
-% \ldots we better try using the previous grid point.
-% \begin{macrocode}
- \ifdim \returned@lower@delta@size < \pageshrink
-% \end{macrocode}
-% If the |\pageshrink| allows us to reach the previous point then
-% use it.
-% \begin{macrocode}
-% can use it: do so
-%<*trace>
- \tr@ce{GRID:~ outside~ page,~ choosing~ lower~ grid~ point}
-%</trace>
- \global\let \returned@size \returned@lower@size
- \xdef \returned@delta@size {-\returned@lower@delta@size }
- \else
-% \end{macrocode}
-% Otherwise, ouch \ldots{} what now? Can this happen? Unfortunately
-% yes, it seems to happen, for example, when we are trying to place
-% floats.\footnote{Analyse this situation and decide on a course of
-% action if necessary.}
-% \begin{macrocode}
- \OuchERROR
- \fi
-% \end{macrocode}
-% Otherwise we are in the normal case, i.e., somewhere in the
-% middle of the page.
-% \begin{macrocode}
- \else
-% \end{macrocode}
-% So now we can in principle choose either grid point. The code
-% below makes the decision based on which grid point is closer but
-% chooses the previous point only if |\pageshink| allows
-% it.\footnote{One could also have a look at the available
-% stretchability and base the decision on the resulting badness,
-% this might in fact be the more appropriate way!}
-% \begin{macrocode}
- \ifdim \returned@lower@delta@size < \returned@delta@size \relax
- \ifdim \returned@lower@delta@size < \pageshrink
-%<*trace>
- \tr@ce{GRID:~ choosing~ lower~ grid~ point}
-%</trace>
- \global\let \returned@size \returned@lower@size
- \xdef \returned@delta@size {-\returned@lower@delta@size }
- \fi
- \fi
- \fi
-%<*trace>
- \tr@ce{GRID:~ adjustment:~ \the\ht\@cclv\space ->~ \returned@size}
-%</trace>
-% \end{macrocode}
-% Whatever the decision was, we finally bundle up all material in a
-% box with the vertical size being that of the chosen grid point
-% (no |\maxdepth| setting in this case) and return this box to the
-% MVL followed by any footnotes found in that process. These
-% footnotes are reinserted so that they will be reconsidered but
-% since we have no break point between the box and them they will
-% be considered as a unit.
-% \begin{macrocode}
- \vbox to\returned@size{\unvbox\@cclv}
- \@reinserts
-% \end{macrocode}
-% We know that the material returned to the MVL is followered
-% immediately by a box of size zero followed by a penalty thus
-% there will be a breakpoint in the right place (or so we hope) so
-% that the box plus the following footnotes will still fit into the
-% column when reprocessed.
-% \begin{macrocode}
-%<*trace>
- \@tracepop{align@collected@galley@and@restart}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\OuchERROR}
-% This part of the code (as far as I can see right now) will be
-% executed if there is some larger display object (ie off grid)
-% which will just fit onto the page unaligned but not if we align
-% to the next grid point. The reason for this is that somewhere on
-% the column there are also footnotes for example, which result in
-% the column not being an integral number of grid lines.
-% \begin{macrocode}
-\def\OuchERROR{
-%<*trace>
- \tr@ce{Failed:~grid~ overflowing~ column~ \the\curr@col@count}
-%</trace>
-%<*progress>
- \progress@failed{next~ possible~ grid~ point~ in~ column~
- \the\curr@col@count\space outside~ page}
-%</progress>
-% \end{macrocode}
-% I think essentially what is needed here is to split the column
-% just before the current line, ie, using something like
-% |\split@off@last@line| (except that this only works for here
-% points right now) and this move the grid align penalty to the
-% next column.\footnote{Not done! FIX}
-% \begin{macrocode}
-% \split@off@last@line
-% \(re)???add@guarded@penalty\output@grid@align@penalty
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\std@AlignToGrid}
-% This is the definition for |\AlignToGrid| if we are really doing
-% grid based layout.
-% \begin{macrocode}
-\def\std@AlignToGrid{
- \add@badly@guarded@penalty\output@grid@align@penalty
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\IgnoreAlignToGrid}
-% \begin{macro}{\ObeyAlignToGrid}
-% |\IgnoreAlignToGrid| will turn off automatic grid alignment for a
-% while, while |\ObeyAlignToGrid| will turn it on again. This is
-% needed in commands that want to set something outside the grid
-% and then realign afterwards, e.g., a heading. If that heading
-% would follow, say, a list that issued a |\AlignToGrid| to be
-% executed on the next paragraph, that |\AlignToGrid| would
-% effectively appear on the heading title thus forcing that to be
-% on a grid line, which is typically not intended. So the heading
-% macro first says |\IgnoreAlignToGrid| then typesets the material
-% which should be not aligned, then says |\ObeyAlignToGrid| and
-% prepares to install its own |\AlignToGrid| (typically after the
-% first line of text via |\everypar|).
-% \begin{macrocode}
-\def\IgnoreAlignToGrid{
- \global\let\AlignToGrid\relax
-}
-\def\ObeyAlignToGrid{
- \global\let\AlignToGrid\std@AlignToGrid
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\AlignToGrid}
-% |\AlignToGrid| is the command that inserts a grid point which
-% triggers alignment to the text grid for the current line (if we
-% are doing grid based design). It should be set in the page setup
-% so the default is an error.
-% \begin{macrocode}
-\let\AlignToGrid\ERROR
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\TextAlignToGrid}
-% In nearly all cases the alignment should be done for a text line,
-% so we provide this abbreviation which starts horizontal mode if
-% necessary.
-% \begin{macrocode}
-\def\TextAlignToGrid{ \leavevmode \AlignToGrid }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-% \subsection{Initialisations}
-%
-% The initialisation at begin document isn't properly done
-% yet. Some bits are done unnecessarily here (by calling
-% initialisation commands that do too much and some bits are
-% problably still in the wrong place. Furthermore the column data
-% initialisation needs to be resolved properly. Right now we
-% hardwire a maximum of 6 columns down there and initialise the
-% data structures for all the potential columns independently of
-% whether or not they are ever being used.\footnote{SORT OUT!}
-% \begin{macrocode}
-\AtBeginDocument{
- \begingroup
- \col@count6\relax
- \initialise@column@data
-% \end{macrocode}
-% More column data stuff which needs to be set only the very first
-% time!
-% \begin{macrocode}
- \forall@columns {
-% \end{macrocode}
-%
-% \begin{macrocode}
- \def\@elt#1{
- \global\@namedef{fl@\the\curr@col@count @#1}{0}
- \global\@namedef{tfl@\the\curr@col@count @#1}{0}
- }
- \float@classes@list
-% \end{macrocode}
-% Setting |\@elt| back to |\relax| is done below.
-% \begin{macrocode}
- }
-% \end{macrocode}
-%
-% The default for fps should be all areas known (not only those
-% currently used!)
-% \begin{macrocode}
- \def\@elt#1{
- \global\expandafter\let\csname fps@#1\endcsname\known@areas
- \global\@namedef{fl@0@#1}{0}
- }
- \float@classes@list
- \endgroup
-% \end{macrocode}
-%
-% \begin{macrocode}
-% \initialise@next@page
-% \end{macrocode}
-% Start the document by collecting text.
-% \begin{macrocode}
- \@collecting@new@materialtrue
- \setup@collection@or
-}
-% \end{macrocode}
-%
-%
-% \endinput
-\endinput
-%
-% $Log: xo-or.dtx,v $
-% Revision 1.53 2000/08/11 07:14:25 latex3
-% added header
-%
-% Revision 1.52 2000/08/11 06:49:21 latex3
-% untabify
-%
-% Revision 1.51 2000/08/11 06:46:48 latex3
-% change logic for handling special penalties once more (and still not
-% okay)
-%
-% Revision 1.50 2000/08/06 19:03:44 latex3
-% change initialisation at \begin{document}
-% fix \columnbreak
-%
-% Revision 1.49 2000/08/04 13:58:16 latex3
-% documented issue when grid point overflows column
-%
-% Revision 1.48 2000/08/04 10:22:31 latex3
-% added \split@skip (probably not final version)
-%
-% Revision 1.47 2000/07/26 20:37:03 latex3
-% working version of grid points (text grids)
-%
-% Revision 1.46 2000/07/21 13:52:13 latex3
-% more renaming for float sequence class concept
-%
-% Revision 1.45 2000/07/19 17:12:08 latex3
-% introduced float sequence class concept
-% added variables for float area separation
-%
-% Revision 1.44 2000/07/10 19:24:59 latex3
-% some start at supporting "balance points" (unfinished).
-% added \initialise@column@data.
-% getting rid of extra empty page at end due to old defnition of
-% \clearpage.
-%
-% Revision 1.43 2000/07/04 19:45:40 latex3
-% fix GRID stuff (restore all values as needed)
-%
-% Revision 1.42 2000/07/01 16:07:26 latex3
-% use \update@this@area@columns
-% integrate code to support grid design (first draft)
-%
-% Revision 1.41 2000/06/29 17:40:44 latex3
-% introduced \setup@this@area
-%
-% Revision 1.40 2000/06/26 15:16:15 latex3
-% prototype support for \pagesetup@float@area@sep
-%
-% Revision 1.39 2000/06/22 20:07:51 latex3
-% renamed some macros to get them more uniform
-%
-% Revision 1.38 2000/06/22 10:59:57 latex3
-% Included support for writing fpl files
-%
-% Revision 1.37 2000/06/21 09:55:41 latex3
-% fix typo
-%
-% Revision 1.36 2000/06/19 19:03:56 latex3
-% make \gincrement@num and \gdecrement@num behave (not update \count@)
-% cleanup flushing (if fail only move flush point one column)
-%
-% Revision 1.35 2000/06/18 14:59:50 latex3
-% docu updates (and a bug fix due to typo)
-%
-% Revision 1.34 2000/06/16 11:21:14 latex3
-% rename \construct@and@test@col@height to \construct@and@test@col@ht
-% rename \construct@and@test@col@heights to \construct@and@test@col@hts
-% rename \cl@height1 to \@col@ht@1 (etc)
-%
-% Revision 1.33 2000/06/16 11:05:25 latex3
-% implemented tfl@ support (top area float sequences)
-% support float-callout-span-constraint
-% more documentation
-%
-% Revision 1.32 2000/06/15 15:20:16 latex3
-% implemented new semantics for area names
-%
-% Revision 1.31 2000/06/15 09:32:18 latex3
-% added mising \end{macro}'s
-%
-% Revision 1.30 2000/06/13 20:44:25 latex3
-% guard the output@collect@penalty
-% implemented fuzzy flushing (except for spreads)
-%
-% Revision 1.29 2000/06/06 11:03:21 latex3
-% before attempting fuzzyflush
-%
-% Revision 1.28 2000/05/03 20:17:31 latex3
-% need more info about here floats
-%
-% Revision 1.27 2000/05/03 18:45:40 latex3
-% fix bugs: always have a trial run wihtout floats to initialise here
-% and flush points; reset \trial@flush@seen@num after using it to update
-% the data structures on a new pages; have adding to the defer area
-% close other areas :-)
-% more documentation
-%
-% Revision 1.26 2000/04/27 19:50:11 latex3
-% some stats gathered now
-% combine \grab@column@or and \best@column@or as far as possible
-% some bug fixes and additional documentation
-%
-% Revision 1.25 2000/04/21 19:08:43 latex3
-% code cleanup
-% additional documentation
-% fixes for here points
-% support for footnote setup
-%
-% Revision 1.24 2000/04/11 21:06:06 latex3
-% basically Chris's 1.24 plus my changes
-%
-% Revision 1.24 2000/04/10 16:41:14 car2
-% typos, comments and guardbox removal
-%
-% Revision 1.23 2000/04/09 20:02:00 latex3
-% fix topskip problem in collection
-% added first draft of marginpar support
-%
-% Revision 1.22 2000/04/08 09:47:06 latex3
-% first draft of here point implementation
-% code cleanup
-% further documentation
-%
-% Revision 1.21 2000/03/31 17:12:41 latex3
-% disable preplacing deferred floats (until caption handling is fixed)
-% fix float page handling
-% ensure that float pages don't add additional captions (don't mind that
-% the float page comes out even worse)
-%
-% Revision 1.20 2000/03/26 21:05:11 latex3
-% work on float pages
-% some renaming in particular \try@this@area
-% and \try@next@area
-% some more documentation
-%
-% Revision 1.19 2000/03/24 15:34:27 latex3
-% version that starts supporting spans (still a hack yet)
-%
-% Revision 1.18 2000/03/22 15:51:11 latex3
-% some normalisations of names
-% moved code around
-% lot of updates
-%
-% Revision 1.17 2000/03/17 20:26:40 latex3
-% more fixes to flushing (looks good now)
-%
-% Revision 1.16 2000/03/16 10:28:29 latex3
-% partial and full flush working for the first time
-%
-% Revision 1.15 2000/03/05 19:36:53 latex3
-% some renaming
-% support multiple columns (6 max right now)
-% fix flush float logic (hopefully)
-%
-% Revision 1.14 2000/02/28 23:41:14 david
-% deadcycles
-%
-% Revision 1.13 2000/02/27 15:39:53 david
-% *** empty log message ***
-%
-% Revision 1.12 2000/02/27 15:12:00 david
-% 2nd attempt at flush floats (working as far as implemented)
-%
-% Revision 1.11 2000/02/27 11:26:35 david
-% first attempt at flush floats
-%
-% Revision 1.10 2000/02/26 18:20:09 david
-% added pre-allocation of deferred floats to float areas
-%
-% Revision 1.9 2000/02/21 23:25:11 david
-% t11|t22 support in optional argument
-%
-% Revision 1.8 2000/02/19 23:14:58 david
-% chris' doc fix
-%
-% Revision 1.7 2000/02/16 13:40:40 latex3
-% added 3col support
-%
-% Revision 1.6 2000/02/16 10:07:13 latex3
-% added further documentation
-% fixed bug by removing code from \try@this@area to
-% \pretests@success@action
-% handle case of hitting special output penalty during trial or
-% page production
-% handle case of \newpage ie penalty -10000
-%
-% Revision 1.5 2000/02/15 01:08:25 david
-% dead code
-%
-% Revision 1.4 2000/02/13 22:40:13 latex3
-% moved some stuff around and added macro environments
-%
diff --git a/Master/texmf-dist/source/latex3/xor/xo-page.dtx b/Master/texmf-dist/source/latex3/xor/xo-page.dtx
deleted file mode 100644
index 7dff99b8119..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xo-page.dtx
+++ /dev/null
@@ -1,694 +0,0 @@
-% \iffalse
-%%
-%% (C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley
-%% All rights reserved.
-%%
-%% Not for general distribution. In its present form it is not allowed
-%% to put this package onto CD or an archive without consulting the
-%% the authors.
-%%
-% \fi
-%
-
-% \begin{macrocode}
-\def\@tempa#1: #2.dtx,v #3 #4 #5 #6 #7${
- \ProvidesPackage{#2}[#4 #3 #5 #6]}
-\@tempa$Id: xo-page.dtx,v 1.34 2000/08/11 07:14:27 latex3 Exp $
-% \end{macrocode}
-%
-%
-% Ignore white space in this package.
-% \begin{macrocode}
-\IgnoreWhiteSpace
-% \end{macrocode}
-%
-%
-%
-% \subsection{Footnote setup}
-%
-% \begin{macro}{\initialise@footins@action}
-% The |\initialise@footins@action| is a hook to add code to the
-% page initialisation phase related to the footnote insertions. For
-% example, when all footnotes are accumulated in the last column we
-% need to make footnote insertions invisible when gathering
-% material for the first columns.
-% \begin{macrocode}
-\let\initialise@footins@action\relax
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\deal@with@footins@action}
-% The |\deal@with@footins@action| hook is called in the
-% |\grab@column@or| and the |best@column@or| output routine to do
-% something to the accumulated footnote insertions if
-% necessary. I.e., it is called for every column.
-% \begin{macrocode}
-\let\deal@with@footins@action\relax
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macrocode}
-\DeclareTemplateType{footnotesetup}{0}
-% \end{macrocode}
-%
-%
-%
-%
-% \begin{macrocode}
-\DeclareTemplate{footnotesetup}{std}{0}{
- text-sep =+l \skip\footins,
- max-height =+l \dimen\footins,
- }
- {
-
- \global\skip\footins 10pt plus 5pt
- \global\dimen\footins.7\textheight
-
- \DoParameterAssignments
-
- \let\initialise@footins@action\relax
- \let\deal@with@footins@action\relax
-
- \global\count\footins\@m
-
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareTemplate{footnotesetup}{ftnright}{0}{
- text-sep =+l \rcol@footinsskip,
- max-height =+l \dimen\footins,
- }
- {
-
- \global\rcol@footinsskip 10pt plus 5pt
- \global\dimen\footins\textheight
-
- \DoParameterAssignments
-
- \let\initialise@footins@action\initialise@footins@ftnright
- \let\deal@with@footins@action\deal@with@footins@ftnright
-
- }
-% \end{macrocode}
-%
-%
-% Setting |max-height| as done below has not the desired effect and
-% needs investigation.\footnote{FIX!}
-%
-% \begin{macrocode}
-\DeclareTemplate{footnotesetup}{margin}{0}{
- max-height =+l \dimen\footins,
- }
- {
-
- \global\dimen\footins.7\textheight
-
- \DoParameterAssignments
-
- \let\initialise@footins@action\initialise@footins@margin
- \let\deal@with@footins@action\deal@with@footins@margin
-
-% \end{macrocode}
-% If the footnote do not appear within the columns we have to
-% ensure that the |\insert| does not change the page
-% calculations. This needs changes in two places:
-% \begin{macrocode}
- \global\count\footins\z@
- \global\skip\footins \z@
-
- }
-% \end{macrocode}
-%
-%
-%
-%
-% \subsubsection{Footnote setup ftnright}
-%
-% In this section we provide the code for running all footnotes in the
-% last column.
-%
-% \begin{macro}{\saved@footins}
-%
-% \begin{macrocode}
-\newbox\saved@footins
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\rcol@footinsskip}
-% \begin{macrocode}
-\newskip\rcol@footinsskip
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-% \begin{macro}{\initialise@footins@ftnright}
-% \begin{macrocode}
-\def \initialise@footins@ftnright {
- \global\setbox\saved@footins\box\voidb@x
- \global\skip\footins\z@
- \global\count\footins\z@
- \global\dimen\footins\textheight
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-% \begin{macro}{\deal@with@footins@ftnright}
-% \begin{macrocode}
-\def \deal@with@footins@ftnright {
-%<*trace>
- \@tracepush{deal@with@footins@ftnright}
-%</trace>
-% \end{macrocode}
-% If we are not in the last column we save any footnote accumulated
-% in |\footins| in a separate |\saved@footins| box. This way any
-% later code that checks |\footins| for constraints will not fire
-% incorrectly.
-% \begin{macrocode}
- \ifnum\curr@col@count<\col@count
-%<*trace>
- \tr@ce{not~ last~ col}
-%</trace>
- \ifvoid\footins
- \else
- \global\setbox\saved@footins
- \vbox{\unvbox\saved@footins
- \unvbox\footins}
- \fi
-% \end{macrocode}
-% If we are in the second last column we have to change the
-% procedure: we now have to return all saved footnotes to the MVL
-% and modify the insertion register values so that from now on
-% footnotes need space in the column.\footnote{Not correctly
-% handled is the case that we have accumulated more than a full
-% column of footnotes before!}
-% \begin{macrocode}
- \count@\col@count
- \advance\count@\m@ne
- \ifnum\curr@col@count=\count@ % cur col = second last col
-%<*trace>
- \tr@ce{second~ last~ col}
-%</trace>
- \global\count\footins\@m
- \global\skip\footins\rcol@footinsskip
- \ifvoid\saved@footins
- \else
- \insert\footins{\unvbox\saved@footins}
- \fi
- \fi
- \fi
-%<*trace>
- \@tracepop{deal@with@footins@ftnright}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\deal@with@footins@margin}
-% \begin{macrocode}
-\def \deal@with@footins@margin {
-%<*trace>
- \@tracepush{deal@with@footins@margin}
-%</trace>
- \ifvoid\footins
- \else
- \global\setbox\saved@footins
- \vbox{\unvbox\saved@footins
- \unvbox\footins}
- \fi
-%<*trace>
- \@tracepop{deal@with@footins@margin}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\deal@with@footins@margin}
-% \begin{macrocode}
-\def \initialise@footins@margin {
- \global\setbox\saved@footins\box\voidb@x
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \subsection{A basic page setup template}
-%
-%
-% \begin{macro}{\test@named@key}
-% This should perhaps be made more general
-% \begin{macrocode}
-\def\test@named@key #1#2#3#4 {
- \global\expandafter\let \expandafter #1
- \csname #2 \endcsname
- \ifx #1 \relax
- \PackageError{template}{#3~ unknown}
- {#3~ can~ be~ either~ #4}
- \fi
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\DeclareFloatArea}
-% We declare new float areas and (for the moment) internally use the
-% template mechanism. But this is more or less overkill and should
-% probably be replaced in the end.
-% \begin{macrocode}
-\def\DeclareFloatArea#1#2{
- \xdef\known@areas{\known@areas#1}
- \DeclareInstance{floatareasetup}{#1}{std}
- { name = #1, #2 }
-% \end{macrocode}
-% We need to do some intialisation here in case the area isn't
-% really used. (Since it is added to |\known@areas| it will be
-% considered and that will die if the initialisation isn't done)
-% \begin{macrocode}
- \UseInstance{floatareasetup}{#1}
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macrocode}
-\DeclareTemplateType{floatareasetup}{0}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareTemplate{floatareasetup}{std}{0}{
- name =n \floatareasetup@name,
- class-close-list=n \floatareasetup@class@close,
- all-close-list =n \floatareasetup@all@close,
- max-float-num =C \floatareasetup@maxfloats,
- }
- {
-
- \DoParameterAssignments
-% \end{macrocode}
-%
-% Declare area data structures if necessary\ldots
-% \begin{macrocode}
- \@ifundefined{\floatareasetup@name @float@count}
- {\expandafter\newcount\csname \floatareasetup@name
- @float@count\endcsname}
- {}
-% \end{macrocode}
-% \ldots and initialise them
-% \begin{macrocode}
- \global\expandafter\let
- \csname pagesetup@ \floatareasetup@name @float@num\endcsname
- \floatareasetup@maxfloats
- \global\expandafter\let
- \csname pagesetup@ \floatareasetup@name @class@close\endcsname
- \floatareasetup@class@close
- \global\expandafter\let
- \csname pagesetup@ \floatareasetup@name @all@close\endcsname
- \floatareasetup@all@close
-% \end{macrocode}
-% Let's not forget that area itself (some macros wouldn't like if
-% this is |\relax| rather than |\@empty|.
-% \begin{macrocode}
- \global\expandafter\let
- \csname area@\floatareasetup@name\endcsname
- \@empty
-}
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
-\DeclareTemplateType{pagesetup2}{0}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareTemplate{pagesetup2}{std}{0}{
- column-num =+c \col@count,
- column-width =+l \columnwidth,
- column-height =+l \textheight, % FMi tmp
- column-sep =+l \columnsep,
- max-float-num =C \pagesetup@max@float@num,
- float-callout-constraint =n \pagesetup@float@callout,
- float-callout-span-constraint =n \pagesetup@float@callout@span,
- bottom-float-footnote-constraint =n \pagesetup@float@footnote,
- flush-float-callout-constraint =n \pagesetup@flush@float@callout,
- flush-float-callout-span-constraint =n \pagesetup@flush@float@callout@span,
- flush-bottom-float-footnote-constraint =n
- \pagesetup@flush@float@footnote,
-%
-% \end{macrocode}
-%
-% \begin{macrocode}
- area-list =n \pagesetup@area@list,
-% \end{macrocode}
-% \begin{macrocode}
- defer-class-close-list=n \pagesetup@ddd@class@close,
- defer-all-close-list =n \pagesetup@ddd@all@close,
-% \end{macrocode}
-%
-% \begin{macrocode}
- footnote-setup =i {footnotesetup} \pagesetup@footnote@setup,
-% \end{macrocode}
-%
-% \begin{macrocode}
- float-float-sep =+l \pagesetup@float@float@sep,
- float-area-sep =+l \pagesetup@float@area@sep,
- float-text-sep =+l \pagesetup@float@text@sep,
- float-inline-sep =+l \pagesetup@float@inline@sep,
-% \end{macrocode}
-%
-% \begin{macrocode}
- grid-point-sep =+L \pagesetup@grid@point@sep,
- }
- {
-% \end{macrocode}
-% We start off with ensuring that we are at the top of a page. This
-% is a temporary solution until after pagesetup is more settled and
-% those bits which are only possible if there is nothing left on
-% recent contributions are properly separated from those things
-% which can be changed midway.
-% \begin{macrocode}
- \newpage
-
- \global\col@count\@ne
- \def\pagesetup@max@float@num{3}
- \def\pagesetup@float@callout{column}
- \def\pagesetup@float@footnote{none}
- \def\pagesetup@flush@float@callout{\pagesetup@float@callout}
- \def\pagesetup@flush@float@footnote{\pagesetup@float@footnote}
- \def\pagesetup@float@callout@span{flexible}
- \def\pagesetup@flush@float@callout@span{\pagesetup@float@callout@span}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \let\pagesetup@ddd@class@close\maxdimen %impossible value
- \let\pagesetup@ddd@all@close\@empty
-% \end{macrocode}
-%
-% \begin{macrocode}
-% tmp:
- \def\pagesetup@footnote@setup{\UseTemplate{footnotesetup}{std}{}}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\let\pagesetup@grid@point@sep\z@ % no grid points by default
-
- \DoParameterAssignments
-% \end{macrocode}
-%
-% \begin{macrocode}
- \ifdim \pagesetup@grid@point@sep = \z@
- \global\let\snap@to@grid\dummy@snap@to@grid
-% \end{macrocode}
-% Next two lines need some refinement, we need some mechanism to
-% fully disable those grid points. |\IgnoreAlignToGrid| doesn't do
-% the trick.\footnote{FIX!}
-% \begin{macrocode}
- \IgnoreAlignToGrid
- \global\let\std@AlignToGrid\relax
- \else
- \global\let\snap@to@grid\std@snap@to@grid
- \ObeyAlignToGrid
- \fi
-% \end{macrocode}
-% Split the |\pagesetup@float@text@sep| specification and store the
-% minus part in |\pagesetup@float@text@shrink|. Right now the plus
-% part is not used. Actually this is only really necessary if we do
-% grid typesetting but we do it anyway so that the spec is always
-% checked for offending infinite stretch.
-% \begin{macrocode}
- \split@skip{float-text-sep}
- \pagesetup@float@text@sep
- \dimen@
- {\global\pagesetup@float@text@shrink}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \split@skip{float-inline-sep}
- \pagesetup@float@inline@sep
- \dimen@
- {\global\pagesetup@float@inline@shrink}
- \global\pagesetup@float@inline@sep \@ne\pagesetup@float@inline@sep
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\hsize\columnwidth
- \global\linewidth\columnwidth
-
-% all taken away from AtBeginDocument (where it is was added in xo-final)
- \setlength \@tempdima {\headheight + \headsep}
- \xdef \pagebodytopvpos {\the\@tempdima}
-
- \setlength \@tempdima {\@tempdima + \textheight}
- \xdef \pagebodybotvpos {\the\@tempdima}
-
-%% horiz
- \setlength \@tempdima {\columnwidth + \columnsep}
- \xdef \columndisplacement {\the\@tempdima}
-
-% \end{macrocode}
-%
-% Perhaps we could use |\known@areas| instead and save the
-% test (would need a change in xo-place as well!).\footnote{Check!}
-% \begin{macrocode}
- \ifx\pagesetup@ddd@class@close\maxdimen % not set?
- \let\pagesetup@ddd@class@close\pagesetup@area@list
- \fi
-% \end{macrocode}
-%
-% \begin{macrocode}
- \test@named@key
- \std@check@callout@constraints
- {check@callout@\pagesetup@float@callout}
- {float-callout-constraint}
- {`none',~ `page',~ `column',~ or~ `after'}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \test@named@key
- \relaxed@check@callout@constraints
- {check@callout@\pagesetup@flush@float@callout}
- {flush-float-callout-constraint}
- {`none',~ `page',~ `column',~ or~ `after'}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \test@named@key
- \std@check@some@constraints
- {check@float@footnote@\pagesetup@float@footnote}
- {bottom-float-footnote-constraint}
- {`none'~ or~ `forbidden'}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \test@named@key
- \relaxed@check@some@constraints
- {check@float@footnote@\pagesetup@flush@float@footnote}
- {flush-bottom-float-footnote-constraint}
- {`none'~ or~ `forbidden'}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \test@named@key
- \std@calculate@target@fl@column
- {calculate@target@fl@column@\pagesetup@float@callout@span}
- {float-callout-span-constraint}
- {`strict'~ or~ `flexible'}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \test@named@key
- \relaxed@calculate@target@fl@column
- {calculate@target@fl@column@\pagesetup@flush@float@callout@span}
- {flush-float-callout-span-constraint}
- {`strict'~ or~ `flexible'}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\let\check@some@constraints\std@check@some@constraints
- \global\let\check@callout@constraints\std@check@callout@constraints
- \global\let\calculate@target@fl@column\std@calculate@target@fl@column
-% \end{macrocode}
-%
-% \begin{macrocode}
- \global\let\used@areas\@empty
-% \end{macrocode}
-%
-% \begin{macrocode}
- \expandafter
- \@for \expandafter \@tempa \expandafter:\expandafter=
- \pagesetup@area@list \do
- {
-% \end{macrocode}
-% Perhaps the instance should be called the moment we declare the
-% area. on the other hand calling it within the page setup would
-% allow to use collections!\footnote{Think and decide}
-% \begin{macrocode}
- \xdef\used@areas{\used@areas\@tempa}
-% after next line \@tempa is gone ... David, template.sty needs a cleanup
- \UseInstance{floatareasetup}{\@tempa}
-%\show\@tempa
- }
-
-% \end{macrocode}
-%
-% \begin{macrocode}
- \pagesetup@footnote@setup
-% \end{macrocode}
-%
-% Finally another bit of the initalisation that we have to redo at
-% this point since now some of the values may have
-% changed.\footnote{Temporary solution until the initialisation bit
-% and the pagesetup is properly sorted out.}
-% \begin{macrocode}
- \initialise@next@page
- \setup@collection@or
- }
-%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\endinput
-% \end{macrocode}
-%
-% \endinput
-%
-% $Log: xo-page.dtx,v $
-% Revision 1.34 2000/08/11 07:14:27 latex3
-% added header
-%
-% Revision 1.33 2000/08/07 19:50:48 latex3
-% setup the collection@or again when a pagesetup is selected since its
-% parameter might have changed.
-%
-% Revision 1.32 2000/08/06 19:02:51 latex3
-% move parts initialisation to \begin{document}
-% move \newpage in pagesetup template first to ensure that previous page
-% is finished with old values
-%
-% Revision 1.31 2000/08/06 09:02:57 latex3
-% documented that footnotehandling needs fixing
-%
-% Revision 1.30 2000/08/04 10:23:24 latex3
-% removed float-text-shrink and float-inline-shrink keys and instead
-% used \split@skip
-%
-% Revision 1.29 2000/07/26 20:45:51 latex3
-% first implementation of grid point support
-%
-% Revision 1.28 2000/07/21 13:52:53 latex3
-% more renaming for float sequence class concept
-%
-% Revision 1.27 2000/07/18 21:07:03 latex3
-% introduced float sequence classes
-%
-% Revision 1.26 2000/07/12 16:47:44 latex3
-% use grid points properly in template
-%
-% Revision 1.25 2000/07/10 21:04:30 latex3
-% integration of float specing parameters in page setup
-% support for grid typesetting in page setup
-%
-% Revision 1.24 2000/07/04 19:44:58 latex3
-% fix marginal footnote template (did change column calculations)
-%
-% Revision 1.23 2000/06/26 15:01:29 latex3
-% docu update
-%
-% Revision 1.22 2000/06/21 09:56:09 latex3
-% update docu
-%
-% Revision 1.21 2000/06/18 15:00:35 latex3
-% move "Bottom float footnote relation" to xo-place file
-%
-% Revision 1.20 2000/06/16 11:06:05 latex3
-% support float-callout-span-constraint
-%
-% Revision 1.19 2000/06/15 17:49:55 latex3
-% moved macros about placment checking to xo-place since they don't
-% belong here
-%
-% Revision 1.18 2000/06/15 15:21:33 latex3
-% implemented new semantics for area names
-%
-% Revision 1.17 2000/06/13 21:21:08 latex3
-% added support for columnheight (tmp)
-% define \pagebodytopvpos etc inside template so that it can change
-%
-% Revision 1.16 2000/05/03 18:48:42 latex3
-% initialise float area data structure the moment the float area is
-% declared (otherwise you can't declare areas if they are not used!)
-%
-% add keys defer-type-close-list and defer-all-close-list to pagesetup2
-% template
-%
-% Revision 1.15 2000/04/21 19:03:58 latex3
-% added footnote setup
-% cleanup pagesetup code
-%
-% Revision 1.14 2000/04/08 10:48:42 latex3
-% code cleanup
-%
-% Revision 1.13 2000/04/08 08:16:53 latex3
-% default for \pagesetup@flush@float@callout changed
-%
-% Revision 1.12 2000/03/31 17:07:24 latex3
-% don't fail in footnote/float test if there isn't any bottom area at
-% all!
-%
-% Revision 1.11 2000/03/24 15:34:27 latex3
-% version that starts supporting spans (still a hack yet)
-%
-% Revision 1.10 2000/03/22 15:51:51 latex3
-% some normalisations of names
-%
-% Revision 1.9 2000/03/17 20:25:02 latex3
-% initialise fl@0
-% support relaxing constraints when flushing
-%
-% Revision 1.8 2000/03/15 19:58:00 latex3
-% assigning values to \column@number should always be done globally
-%
-% Revision 1.7 2000/03/05 19:41:21 latex3
-% support multiple columns (6 max right now)
-%
-% Revision 1.6 2000/02/26 18:21:16 david
-% fixed footnote bottom constraint code
-%
-% Revision 1.5 2000/02/26 16:52:25 david
-% *** empty log message ***
-%
-% Revision 1.4 2000/02/17 22:41:38 david
-% *** empty log message ***
-%
-% Revision 1.4 2000/02/16 13:41:06 latex3
-% added 3col support
-%
-% Revision 1.3 2000/02/13 14:38:53 latex3
-% was 1.2.1.2
-%
-% Revision 1.2.1.2 2000/02/13 11:51:27 latex3
-% fixed \check@callout@after (hopefully correct now)
-% added \check@some@constraints logic
-%
diff --git a/Master/texmf-dist/source/latex3/xor/xo-place.dtx b/Master/texmf-dist/source/latex3/xor/xo-place.dtx
deleted file mode 100644
index 0a208459540..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xo-place.dtx
+++ /dev/null
@@ -1,1537 +0,0 @@
-% \iffalse
-%%
-%% (C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley
-%% All rights reserved.
-%%
-%% Not for general distribution. In its present form it is not allowed
-%% to put this package onto CD or an archive without consulting the
-%% the authors.
-%%
-% \fi
-%
-
-% \begin{macrocode}
-\def\@tempa#1: #2.dtx,v #3 #4 #5 #6 #7${
- \ProvidesPackage{#2}[#4 #3 #5 #6]}
-\@tempa$Id: xo-place.dtx,v 1.37 2000/08/11 07:14:28 latex3 Exp $
-% \end{macrocode}
-%
-%
-%
-% Ignore white space in this package.
-% \begin{macrocode}
-\IgnoreWhiteSpace
-% \end{macrocode}
-%
-%
-%
-% \subsection{Selecting the next area to try}
-%
-%
-% \begin{macro}{\std@try@this@area}
-% The |\std@try@this@area| command is called when we have
-% selected a float from the |\@activelist| and want to place it
-% in one of the open areas to see if it fits there. If we succeed
-% in finding a potential candidate place we will exit using
-% |\contruct@trial| which will run a trial cutting the galley to
-% see if each column gets the right kind of text and contains the
-% right kind of callouts.
-% The areas are tried in a defined order.
-%
-% If we don't find any open areas we return putting the current
-% float onto the |\area@ddd| and then calling |\@trynextfloat|.
-%
-% If we find an open area but for some reason the float is not
-% allowed to go there we close that area for floats of this type
-% and recurse (i.e. try to use the next open area for this type).
-%
-% The reasons for failure to place the float into the first open
-% area are numerous. First there are restrictions on the number of
-% floats on a page (if we reach this all areas get closed) there
-% there are similar restrictions for each individual float area.
-%
-% If those tests are passed we trial typeset the float with its
-% caption (or rather typeset and attach its caption) to determine
-% the size needed by the float. That will give us a dimension to
-% test against restrictions for the amount of space floats are
-% allowed to occupy etc.
-%
-% \begin{macrocode}
-\def\std@try@this@area{
-%<*trace>
- \@tracepush{std@try@this@area}
-%</trace>
-% \end{macrocode}
-% If all areas for the float type are closed we have to defer this float.
-% \begin{macrocode}
- \ifx\this@open@areas\@empty
-%<*trace>
- \tr@ce{defer:~no~open~area~ available}
-%</trace>
- \do@next\defer@and@try@next@float
- \else
-% \end{macrocode}
-% Otherwise the next area to try is the first of |\this@open@areas|:
-% \begin{macrocode}
- \setup@this@area{\expandafter\@carcube\this@open@areas\@nil}
-%<*trace>
- \tr@ce{area~trial:~ \this@area}
-%</trace>
-%<*progress>
- \progress{~ area~trial:~ \this@area}
-%</progress>
-% \end{macrocode}
-% Next test needs cleanup once the span has a decent data
-% structure.\footnote{FIX!!}
-% \begin{macrocode}
- \ifnum \this@area@span@number = \if!\this@span@number! 1\else % big hack
- \this@span@number \fi
- \relax
-%<*trace>
- \tr@ce{span~ count~ okay:~ \this@area \space =~
- \if!\this@span@number! 1\else % big hack
- \this@span@number \fi}
-%</trace>
-% \end{macrocode}
-%
-% \begin{macrocode}
- \ifnum \pagesetup@max@float@num > \page@float@count
-% \end{macrocode}
-%
-% \begin{macrocode}
- \ifnum\csname pagesetup@\this@area @float@num\endcsname =
- \csname \this@area @float@count \endcsname
-%
-% \end{macrocode}
-% Current area doesn't accept any more floats, so try next one (if any)
-% \begin{macrocode}
-%<*trace>
- \tr@ce{close~area:~\this@area\space float~num~reached ~
- (\csname pagesetup@\this@area @float@num\endcsname)}
-%</trace>
-%<*progress>
- \progress@failed{\this@area\space float~num~reached ~
- (\csname pagesetup@\this@area @float@num\endcsname)}
-%</progress>
- \do@next\try@next@area
-% \end{macrocode}
-%
-% \begin{macrocode}
- \else
- \xin@\this@area
- \this@page@closed
- \ifin@
-%<*trace>
- \tr@ce{area~ closed~ for~ all~ types;~ member~ of~
- (\this@page@closed)}
-%</trace>
-%<*progress>
- \progress@failed{area~ closed~ for~ all~ types}
-%</progress>
- \do@next\try@next@area
- \else
-%<*trace>
- \tr@ce{area~ not~ closed~ for~ all~ types:~ not~ member~ of~
- (\this@page@closed)}
-%</trace>
- \xin@\this@area
- \this@closed@areas
- \ifin@
-%<*trace>
- \tr@ce{area~ closed~ for~ class~ \this@class;~ member~ of~
- (\this@closed@areas)}
-%</trace>
-%<*progress>
- \progress@failed
- {area~ closed~ for~ class~ \this@class}
-%</progress>
- \do@next\try@next@area
- \else
-%<*trace>
- \tr@ce{area~ open~ for~ class~ \this@class;~ not~ member~ of~
- (\this@closed@areas)}
-%</trace>
- \xin@\this@area\this@fps
- \ifin@
-%
- \append@caption@to@float
- \construct@and@test@col@hts
- \if@test
- \do@next\try@next@area
- \else
- \do@next\pretests@success@action
- \fi
-
- \else
-%<*trace>
- \tr@ce{close~area:~\this@area\space float~not~allowed~
- by~ user~ control~ (\this@fps)}
-%</trace>
-%<*progress>
- \progress@failed{\this@area\space float~not~allowed~
- by~ user~ control~ (\this@fps)}
-%</progress>
- \do@next\try@next@area
- \fi
- \fi
- \fi
- \fi
- \else
-% defer
- \global\let\this@open@areas\@empty
-%<*trace>
- \tr@ce{defer:~max~float~num~reached ~(\pagesetup@max@float@num)}
-%</trace>
-%<*progress>
- \progress@failed{max~float~num~reached ~(\pagesetup@max@float@num)}
-%</progress>
- \do@next\defer@and@try@next@float
- \fi
- \else
-%<*trace>
- \tr@ce{span~ count~ unsuitable:~ \this@area \space /=~
- \if!\this@span@number! 1\else % big hack
- \this@span@number \fi}
-%</trace>
-%<*progress>
- \progress@failed{span~ count~ \this@area \space /=~
- \if!\this@span@number! 1\else % big hack
- \this@span@number \fi}
-%</progress>
- \do@next\try@next@area
- \fi
- \fi
-%<*trace>
- \@tracepop{std@try@this@area}
-%</trace>
- \do@continue
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\do@next}
-% Emergency macro to reduce the number of input levels (as the code
-% got past the internal default of 300). This is because we have a
-% lot of recursion going on without being tail
-% recursion. Essentially this means some of the code needs slightly
-% different implementation.\footnote{fix}
-% \begin{macrocode}
-\def\do@next{\let\do@continue}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\relaxed@try@this@area}
-% \begin{macrocode}
-\def\relaxed@try@this@area{
-%<*trace>
- \@tracepush{relaxed@try@this@area}
-%</trace>
-% \end{macrocode}
-% If all areas for the float type are closed we have to defer this float.
-% \begin{macrocode}
- \ifx\this@open@areas\@empty
-%<*trace>
- \tr@ce{defer:~no~open~area~ available}
-%</trace>
- \do@next\defer@and@try@next@float
- \else
-% \end{macrocode}
-% Otherwise the next area to try is the first of |\this@open@areas|:
-% \begin{macrocode}
- \setup@this@area{\expandafter\@carcube\this@open@areas\@nil}
-%<*trace>
- \tr@ce{area~trial:~ \this@area}
-%</trace>
-%<*progress>
- \progress{~ area~trial:~ \this@area}
-%</progress>
-% \end{macrocode}
-% Next test needs cleanup once the span has a decent data
-% structure.\footnote{FIX!!}
-% \begin{macrocode}
- \ifnum \this@area@span@number = \if!\this@span@number! 1\else % big hack
- \this@span@number \fi
- \relax
-%<*trace>
- \tr@ce{span~ count~ okay:~ \this@area \space =~
- \if!\this@span@number! 1\else % big hack
- \this@span@number \fi}
-%</trace>
-% \end{macrocode}
-%
-% \begin{macrocode}
- \xin@\this@area\this@page@closed
- \ifin@
-%<*trace>
- \tr@ce{area~ closed~ for~ all~ types;~ member~ of~
- (\this@page@closed)}
-%</trace>
-%<*progress>
- \progress@failed{area~ closed~ for~ all~ types}
-%</progress>
- \do@next\try@next@area
- \else
-%<*trace>
- \tr@ce{area~ not~ closed~ for~ all~ types:~ not~ member~ of~
- (\this@page@closed)}
-%</trace>
- \xin@\this@area
- \this@closed@areas
- \ifin@
-%<*trace>
- \tr@ce{area~ closed~ for~ class~ \this@class;~ member~ of~
- (\this@closed@areas)}
-%</trace>
-%<*progress>
- \progress@failed
- {area~ closed~ for~ class~ \this@class}
-%</progress>
- \do@next\try@next@area
- \else
-%<*trace>
- \tr@ce{area~ open~ for~ class~ \this@class;~ not~ member~ of~
- (\this@closed@areas)}
-%</trace>
- \append@caption@to@float
- \construct@and@test@col@hts
- \if@test
- \do@next\try@next@area
- \else
- \do@next\pretests@success@action
- \fi
- \fi
- \fi
- \else
-%<*trace>
- \tr@ce{span~ count~ unsuitable:~ \this@area \space /=~
- \if!\this@span@number! 1\else % big hack
- \this@span@number \fi}
-%</trace>
-%<*progress>
- \progress@failed{span~ count~ \this@area \space /=~
- \if!\this@span@number! 1\else % big hack
- \this@span@number \fi}
-%</progress>
- \do@next\try@next@area
- \fi
- \fi
-%<*trace>
- \@tracepop{relaxed@try@this@area}
-%</trace>
- \do@continue
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\construct@and@test@col@hts}
-% The |\construct@and@test@col@hts| loops over all columns
-% affected by the float area we want to place our float into
-% and reduces the column size as
-% needed. It sets the switch |@test| to true in case the float
-% doesn't fit into area for some reason. It is up to the calling
-% macro to take proper action in this case (including resetting
-% column heights to their former values).
-% \begin{macrocode}
-\def\construct@and@test@col@hts {
-% \end{macrocode}
-% We use the information from the area not from the float (which
-% allows us to put small floats into larger areas.
-% \begin{macrocode}
- \update@this@area@columns
- {
- \expandafter
- \construct@and@test@col@ht
- \csname col@ht@ \the\count@ \endcsname
- {\the\count@}
-% \end{macrocode}
-% We need to break out of the updating loop if we found a column that
-% doesn't work, a) to save time and b) since the
-% |\construct@and@test@col@ht| resets the switch again to false
-% (in the current implementation).
-% \begin{macrocode}
- \if@test
- \count@\z@ % break out of loop
- \fi
- }
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\construct@and@test@col@ht}
-% The |\construct@and@test@col@ht| reduces the height of one column
-% by the size of the current float (plus some suitable extra space)
-% and tests if this reduction is possible/allowed. It sets the
-% switch |@test| to true if it encounters a problem.
-% \begin{macrocode}
-\def\construct@and@test@col@ht#1#2{
-%<*trace>
- \tr@ce{col height~before:~ \the#1 (\string#1)}
-%</trace>
-% \end{macrocode}
-% In |\@tempdima| we calculate the amount of space we need if we
-% place the float. This is the size of the float, i.e., its height
-% and depth, plus either |\pagesetup@float@text@sep| if this is the
-% very first float in this column (on top or on bottom), or
-% |\pagesetup@float@area@sep| if it is the first float in the
-% current area, or |\pagesetup@float@float@sep| if we already have
-% floats in this area.
-% \begin{macrocode}
- \@tempdima \ht\this@captioned@float
- \advance \@tempdima \dp\this@captioned@float
- \ifnum \csname col@ \this@area@type
- @floats@#2@number\endcsname
- = \z@
-%<*trace>
- \tr@ce{first~ float~ in~ any~ \this@area@type\space
- in~ column~ #2:~
- adding~ \string\pagesetup@float@text@sep
- =\the\pagesetup@float@text@sep}
-%</trace>
- \advance \@tempdima \pagesetup@float@text@sep
- \else
- \advance \@tempdima
- \expandafter
- \ifx \csname area@\this@area\endcsname\@empty
- \pagesetup@float@area@sep
-%<*trace>
- \tr@ce{first~ float~ in~ \this@area :~
- adding~ \string\pagesetup@float@area@sep
- =\the\pagesetup@float@area@sep}
-%</trace>
- \else
- \pagesetup@float@float@sep
-%<*trace>
- \tr@ce{additional~ float~ in~ \this@area :~
- adding~ \string\pagesetup@float@float@sep
- = \the\pagesetup@float@float@sep}
-%</trace>
- \fi
- \fi
-% \end{macrocode}
-% Now we make the area size fully fall into the page grid (if there
-% is one). To do this we first substract any delta that has been
-% accumulated for the column (to get back to the real size) and
-% then run |\snap@to@grid| to get the next grid point.
-% \begin{macrocode}
- \advance \@tempdima
- -\csname col@ \this@area@type @delta@ #2 \endcsname \relax
-% \end{macrocode}
-% The |\col@|\meta{area-type}|@delta@|\meta{col} are macros but
-% fortunately low-level \TeX{} supports register assignments of the
-% form |--3pt| so the above will work even if the macro contains a
-% negative value.
-% \begin{macrocode}
- \snap@to@grid \@tempdima \pagesetup@grid@point@sep
-% \end{macrocode}
-%
-% If the distance to the next grid point is larger than the
-% distance to the previous one, and if the space between floats and
-% text is allowed to shrink by the needed amount we will use the
-% previous grid point.
-% \begin{macrocode}
- \ifdim \returned@lower@delta@size < \returned@delta@size \relax
- \ifdim \returned@lower@delta@size < \pagesetup@float@text@shrink
-%<*trace>
- \tr@ce{GRID:~ column~#2:~ choosing~ lower~ grid~ point}
-%</trace>
-% \end{macrocode}
-% We do this by copying the |\returned@lower@...| to the macros
-% used below. Note that for the delta size we have to use the
-% negation since we want to backup by this amount and delta sizes
-% are always given in absolute values.
-% \begin{macrocode}
- \global\let \returned@size \returned@lower@size
- \xdef \returned@delta@size {-\returned@lower@delta@size }
- \fi
- \fi
-%<*trace>
- \tr@ce{GRID:~ column~#2:~ \the\@tempdima\space ->~ \returned@size}
-%</trace>
- \@tempdima \returned@size
-% \end{macrocode}
-%
-% After updating |\@tempdima| in this way we now have to check if
-% the space remaining for the text column is large enough.
-% \begin{macrocode}
- \@tempdimb#1
- \advance \@tempdimb -\@tempdima
- \@testfalse
- \ifdim \textminlines\baselineskip > \@tempdimb
-% \end{macrocode}
-% If not we bail out
-% \begin{macrocode}
- \@testtrue
-%<*trace>
- \tr@ce{close~area:~\this@area\space not~ enough~ text~ lines~
- left~
- (\textminlines x\the\baselineskip> \the\@tempdimb)}
-%</trace>
-%<*progress>
- \progress@failed{not~ enough~ text~ space~
- (\textminlines x\the\baselineskip\space
- >~ \the\@tempdimb)}
-%</progress>
- \else
-% \end{macrocode}
-% Otherwise we have to update the column heights (and their saved
-% version in case we back out later) as well as storing the new
-% delta (which is still in |\returned@delta@size|).
-% \begin{macrocode}
-%<*trace>
- \tr@ce{saved@col@ht@ #2~ <-~\the#1}
-%</trace>
- \expandafter\xdef
- \csname saved@col@ht@ #2\endcsname{\the#1}
- \global#1\@tempdimb
- \global\expandafter\let
- \csname saved@col@ \this@area@type @delta@ #2 \expandafter \endcsname
- \csname col@ \this@area@type @delta@ #2 \endcsname
- \global\expandafter\let
- \csname col@ \this@area@type @delta@ #2 \endcsname
- \returned@delta@size
-%<*trace>
- \tr@ce{GRID (delta):~ column~#2\this@area@type:~
- \csname saved@col@ \this@area@type @delta@ #2
- \endcsname\space ->~ \returned@delta@size}
-%</trace>
- \fi
-%<*trace>
- \tr@ce{col height~after:~ \the#1}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\textminlines}
-% Tmp definition; should be interfaced to pagesetup.
-% \begin{macrocode}
-\def\textminlines{4}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \subsection{Supporting grid based designs}
-%
-%
-%
-% \begin{macro}{\pagesetup@grid@point@sep}
-% |\pagesetup@grid@point@sep| is the distance between grid points
-% for page design or 0pt if we are not doing grid design.
-% \begin{macrocode}
-\let\pagesetup@grid@point@sep\ERROR
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\snap@to@grid}
-% |\snap@to@grid| takes a dimension as first argument and a
-% ``grid-size'' as second argument and from those two values
-% calculates a new dimension which is a multiple of the grid-size
-% and equal or larger than the first argument.
-%
-% It returns this calculated value globally in |\returned@size|. In
-% addition it will return in |\returned@delta@size| the delta
-% between the original and the new dimension.
-%
-% It also returns a lower or equal grid point in
-% |\returned@lower@size| and the delta to it (absolute value) in
-% |\returned@lower@delta@size|.
-%
-% Thus the first argument lies on a grid point if and only if
-% |\returned@size| equals |\returned@lower@size|.
-%
-% If we are not doing grid typesetting then |\snap@to@grid| is
-% actually a dummy which will return always the first argument in
-% |\returned@size| and |\returned@lower@size|, and |0pt| in the
-% deltas.
-%
-% The actual definition is assigned within the page setup.
-% \begin{macrocode}
-\let\snap@to@grid\ERROR
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\dummy@snap@to@grid}
-% In case we don't do grids we simply pretend that all sizes lie on
-% grid points.
-% \begin{macrocode}
-\def \dummy@snap@to@grid #1#2{
- \begingroup
-% \end{macrocode}
-% Definitions below can be optimised for speed but the ones used
-% give better tracing.
-% \begin{macrocode}
- \@tempdima #1 \relax
- \xdef \returned@size { \the\@tempdima }
- \global\let \returned@lower@size \returned@size
- \gdef \returned@delta@size {0pt}
- \global\let \returned@lower@delta@size \returned@delta@size
- \endgroup
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\std@snap@to@grid}
-% But if we do grid typesetting we have to do a bit more work
-% here.
-% \begin{macrocode}
-\def \std@snap@to@grid #1#2{
-% \end{macrocode}
-% Everything is done in a group so that the register change do not
-% affect other parts of the code.
-% \begin{macrocode}
- \begingroup
-% \end{macrocode}
-% First we calculate in |\@tempdimc| the nearest grid point which
-% is smaller or equal to the given size in |#1| by using scaled
-% point arithmetic.
-% \begin{macrocode}
- \@tempdima #1\relax
- \@tempdimb #2\relax
- \@tempcnta \@tempdima % orig size in sp
- \@tempcntb \@tempdimb % grid size in sp
- \divide \@tempcnta \@tempcntb
- \@tempdimc \@tempcnta\@tempdimb
-% \end{macrocode}
-% If the calculated grid point is smaller than the original
-% dimension use the next larger one. But record the other in
-% |\returned@lower@size|.
-% \begin{macrocode}
- \ifdim \@tempdimc < \@tempdima
- \xdef \returned@lower@size { \the\@tempdimc }
- \advance\@tempdimc \@tempdimb
- \fi
-% \end{macrocode}
-% The |\returned@size| will be whatever the result of the above is
-% and |\returned@delta@size| the difference to the given value in
-% |#1|. Note that |\returned@size| will always be larger or equal
-% to this value so the difference computed below will also be
-% non-negative!
-% \begin{macrocode}
- \xdef \returned@size { \the\@tempdimc }
- \advance \@tempdimc -\@tempdima
- \xdef \returned@delta@size { \the\@tempdimc }
-% \end{macrocode}
-% Now if this difference turns out to be zero then we actually
-% started with a dimension exactly on a grid point. In this case we
-% better define both |\returned@lower@size| and
-% |\returned@lower@delta@size| to equal their counterparts.
-% \begin{macrocode}
- \ifdim \@tempdimc = \z@
- \global \let \returned@lower@size \returned@size
- \global \let \returned@lower@delta@size \returned@delta@size
-% \end{macrocode}
-% Otherwise we only have to compute |\returned@lower@delta@size|
-% since in that case we already recorded |\returned@lower@size|
-% above (and we better had since by now we lost this information as
-% we reused |\@tempdimc|). Now the value for this macro should be
-% the difference between |\returned@delta@size| and our grid size
-% both of which are already stored in some temp registers,
-% thus\ldots
-% \begin{macrocode}
- \else
- \advance\@tempdimb-\@tempdimc
- \xdef \returned@lower@delta@size { \the\@tempdimb }
- \fi
- \endgroup
-%<*trace>
- \tr@ce{GRID:~ \string\returned@lower@size=\returned@lower@size}
- \tr@ce{GRID:~ \string\returned@lower@delta@size=\returned@lower@delta@size}
- \tr@ce{GRID:~ \string\returned@size=\returned@size}
- \tr@ce{GRID:~ \string\returned@delta@size=\returned@delta@size}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-% \subsection{Deferring a float}
-%
-%
-%
-% \begin{macro}{\really@defer@and@try@next@float}
-% \begin{macrocode}
-\def\really@defer@and@try@next@float{
-%<*progress>
- \progress@failed{-->~ defer}
- \progress@nl{}
-%</progress>
- \@cons\area@ddd\this@float@box
-%<*trace>
- \tr@ce{this@page@closed~ <-~ "\this@page@closed"~ +~
- "\pagesetup@ddd@all@close"}
-%</trace>
- \xdef\this@page@closed{\this@page@closed,
- \pagesetup@ddd@all@close}
-
- \ifx\pagesetup@ddd@class@close\pagesetup@area@list
-%<*trace>
- \tr@ce{this@closed@areas~ <-~
- "\pagesetup@ddd@class@close"~ (all~ closed)}
-%</trace>
- \global\let\this@closed@areas\pagesetup@ddd@class@close
- \else
-%<*trace>
- \tr@ce{this@closed@areas~ <-~ "\this@closed@areas"~ +~
- "\pagesetup@ddd@class@close"}
-%</trace>
- \xdef\this@closed@areas{\this@closed@areas,
- \pagesetup@ddd@class@close}
- \fi
-
- \global\expandafter\let\csname closed@\this@class
- @areas\endcsname % FMi tmp
- \this@closed@areas
- \try@next@float
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\defer@and@try@next@float}
-%
-% This code either defers the current float and restarts by calling
-% |\try@next@float| or recurses after relaxing the placement
-% conditions (in case the current float should be flushed).
-%
-% If the placement conditions are already relaxed we move the first
-% flush point that affects the current float one column forward and
-% then retry. This might result in succeding to place the float, if
-% not it will ultiamtely result in the flush point being moved from
-% the page at which point the float can be deferred.
-%
-% \begin{macrocode}
-\def\defer@and@try@next@float{
-%<*trace>
- \@tracepush{defer@and@try@next@float}
-%</trace>
-% \end{macrocode}
-% If there have been no flush points or if the flush points seen do
-% not affect the current float we can immediately defer it.
-% \begin{macrocode}
- \if@flushseen
- \xin@\this@class\flush@classes@list@max
- \ifin@
-%<*trace>
- \tr@ce{flush:~ class~ \this@class\space in~
- \flush@classes@list@max}
-%</trace>
-% \end{macrocode}
-% First test is just there to avoid doing any of the loops
-% (might not be worth having)
-% \begin{macrocode}
- \ifnum \csname flush@min@col@1\endcsname > \curr@col@count
-%<*trace>
- \tr@ce{flush:~ no~ flush~ points~ on~ page;~ defer}
-%</trace>
- \do@next\really@defer@and@try@next@float
- \else
-% \end{macrocode}
-%
-% The code is often invoked before there is an attempt to split the
-% galley; this means we don't know which flush point affects the
-% current float and thus have to manually get at it.
-%
-% So we loop through the |\flush@last@float@|\meta{num} values to
-% find the first one that a) affects the current float type and b)
-% holds a sequence number that is higher or equal to the sequence
-% number of the current float.
-% \begin{macrocode}
- \count@ \@ne
- \loop
-% \end{macrocode}
-% If |\count@| is greater than |\flush@seq@num| we have exhausted
-% all possible flush points without finding a candidate.
-% \begin{macrocode}
- \ifnum \flush@seq@num < \count@
- \in@false
- \else
-% \end{macrocode}
-% Otherwise, if |\this@sequence@number| is greater than
-% |\flush@last@float@|\meta{num} the current flush point is before
-% the call-out to the current float.
-% \begin{macrocode}
-%<*trace>
- \tr@ce{flush:~ \this@sequence@number \space ???~
- \csname flush@last@float@ \the\count@ \endcsname}
-%</trace>
- \ifnum \this@sequence@number >
- \csname flush@last@float@ \the\count@ \endcsname
- \relax
-% \end{macrocode}
-% We set |\in@true| to get a repeat below with a new value of
-% |\count@|.
-% \begin{macrocode}
- \in@true
- \else
-% \end{macrocode}
-% Otherwise we have a flush point that is later in the galley in
-% comparison to the call-out of the current float thus potentially
-% affects it. Therefore we now have to check if the sequence class
-% of the current float is affected by the flush point found:
-% \begin{macrocode}
- \expandafter\xin@\expandafter\this@class
- \csname flush@classes@list@ \the\count@ \endcsname
-% \end{macrocode}
-% Now we could make good use of the |\unless| primitive of
-% e\TeX. But since we want to run with standard \TeX{} and don't
-% have |\xnotin@| available we invert the result.
-% \begin{macrocode}
- \ifin@
- \in@false
- \else
- \in@true
-%<*trace>
- \tr@ce{flush:~ class~ \this@class\space not~ in~
- \csname flush@classes@list@ \the\count@ \endcsname
- \space (ignored)
- }
-%</trace>
- \fi
- \fi
- \fi
- \ifin@
- \advance\count@\@ne
- \repeat
-%<*trace>
- \tr@ce{flush:~ first~ float~ point~ after~ float~ =~
- \the\count@}
-%</trace>
- \ifnum \flush@seq@num < \count@
-%<*trace>
- \tr@ce{flush:~ this~ float~ past~all~flush~ points;~ defer}
-%</trace>
- \do@next\really@defer@and@try@next@float
- \else
-% \end{macrocode}
-% Once a |flush@min@col| is larger than |\curr@col@count| it has
-% moved to the next page. In particular this is true for the
-% artificial value |\maxdimen| to which it is sometimes set to
-% denote this fact. If so we can defer our float.
-% \begin{macrocode}
- \ifnum \csname flush@min@col@\the\count@\endcsname
- > \curr@col@count
-%<*trace>
- \tr@ce{flush:~ float~ past~ all~ flush~ points~
- on~ current~ page;~ defer}
-%</trace>
- \do@next\really@defer@and@try@next@float
- \else
-% \end{macrocode}
-% If we have already relaxed the conditions and we are still in
-% conflict with a flush point on the current page we nearly ran out
-% of options. In this case we are forced to move the flush point,
-% but rather than moving it to the next page and defering the float
-% we can move it one column further (which might make it fall off
-% the page though) and then retry to place the float since we have
-% now more space available.
-% \begin{macrocode}
- \ifx\try@this@area\relaxed@try@this@area
-%<*trace>
- \tr@ce{flush:~ defer~ forced;~ move~
- flush~ point~ columns}
-%</trace>
-%<*progress>
- \progress@nl{}
- \progress@nl{Flushing~ impossible~ -->~ breaking~
- before~ flush~ point~ and~ retry}
-%</progress>
-% \end{macrocode}
-% We should only increment the |flush@min@col@| value of the first
-% flush point that affects our float (this will automatically move
-% later flush points if necessary). Incrementing the later ones is
-% incorrect as they might not need moving!
-% \begin{macrocode}
- \expandafter \gincrement@num
- \csname flush@min@col@ \the\count@ \endcsname
-%<*trace>
- \tr@ce{flush@min@col@\the\count@ \space <-~
- \csname flush@min@col@ \the\count@ \endcsname
- }
-%</trace>
-%<*progress>
- \progress@nl{}
- \progress@nl{Defer~ impossible~ -->~ moving~
- flush~ point~ to~ column~
- \csname flush@min@col@ \the\count@\endcsname
- \space
- and~ retry}
-%</progress>
-% \end{macrocode}
-% Not clear that it is really necessary to check all areas again,
-% but it is late (after midnight) and it is definitely not
-% wrong.\footnote{Check!}
-% \begin{macrocode}
- \relax@float@placement@conditions % needed to reset open areas
- \do@next\try@this@area
-
- \else
-% \end{macrocode}
-%
-% \begin{macrocode}
- \relax@float@placement@conditions
- \do@next\try@this@area
- \fi
- \fi
- \fi
- \fi
- \else
-%<*trace>
- \tr@ce{flush:~ class~ \this@class\space not~ in~
- \flush@classes@list@max;~ defer}
-%</trace>
- \do@next\really@defer@and@try@next@float
- \fi
-
- \else
-%<*trace>
- \tr@ce{flush:~ no~ flush~ point~ seen; defer}
-%</trace>
- \do@next\really@defer@and@try@next@float
- \fi
-
-%<*trace>
- \@tracepop{defer@and@try@next@float}
-%</trace>
- \do@continue
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\relax@float@placement@conditions}
-% \begin{macrocode}
-\def \relax@float@placement@conditions {
-%<*progress>
- \progress@failed{-->~ retry~ with~ relaxed~ conditions}
- \progress@nl{}
-%</progress>
-%<*trace>
- \tr@ce{flush:~relax~placement~conditions}
-%</trace>
- \global\let\try@this@area\relaxed@try@this@area
-% next line perhaps external?
- \global\let\this@open@areas\saved@this@open@areas
-
- \global\let\check@some@constraints\relaxed@check@some@constraints
- \global\let\check@callout@constraints\relaxed@check@callout@constraints
- \global\let\calculate@target@fl@column\relaxed@calculate@target@fl@column
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tighten@float@placement@conditions}
-% \begin{macrocode}
-\def\tighten@float@placement@conditions {
-%<*trace>
- \tr@ce{flush:~tighten~placement~conditions}
-%</trace>
- \global\let\try@this@area\std@try@this@area
-
- \global\let\check@some@constraints\std@check@some@constraints
- \global\let\check@callout@constraints\std@check@callout@constraints
- \global\let\calculate@target@fl@column\std@calculate@target@fl@column
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\partly@tighten@float@placement@conditions}
-% This is used when we have placed the last float that is affected
-% by a certain flush point. We don't want to tighten up completely
-% since this would essentially mean that we can't place any further
-% floats since callout relationships etc might be violated for
-% them. Good question is whether or not the last restriction should
-% be used again since this too might prevent any further placements.
-% \begin{macrocode}
-\def\partly@tighten@float@placement@conditions {
-%<*trace>
- \tr@ce{flush:~partly~tighten~placement~conditions}
-%</trace>
- \global\let\try@this@area\std@try@this@area
-
-% \global\let\check@some@constraints\std@check@some@constraints
-% \global\let\check@callout@constraints\std@check@callout@constraints
- \global\let\calculate@target@fl@column\std@calculate@target@fl@column
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \subsection{Checking float placement during trial}
-%
-% The interface to checking float placement in relation to its callout
-% is the following piece of code in |\grab@column@or|:
-%\begin{verbatim}
-% \let\@elt\check@callout@constraints
-% \float@classes@list
-%\end{verbatim}
-% This loops through all float types and executes
-% |\check@callout@constraints| with the float type as an argument. The output
-% routine |\grab@column@or| itself is called for each column of a trial
-% configuration, thus the above loop is called for each column
-% individually (|\curr@col@count| can be used to determine the current
-% column number).
-%
-% By giving |\check@callout@constraints| an appropriate definition a
-% pagesetup template can implement different relationships between
-% callout and float.
-%
-% Possible tests (getting stronger):
-% \begin{itemize}
-%
-% \item
-% Don't check, i.e., add the float when you find it and it fits
-% according to other criteria (like number of floats in the area,
-% etc.). This is implemented in |\check@callout@none|.
-%
-%
-% \item
-% Check if callouts for all floats on the page (not column) are
-% either on the same page or on an earlier page; i.e., callout can be
-% late as long as the float is visible from the callout.
-%
-% Fail if for last column and all float types:
-% last callout number for float type is smaller than maximum last float
-% of type put into any column.\footnote{This description is
-% probably wrong}
-%
-% This is implemented in |\check@callout@page|.
-%
-% \item
-% Check if callouts for all floats in the column are either on the
-% same column or on an earlier column.
-%
-% Fail if for any column and any float type:
-% last callout number for float type is smaller last float sequence
-% number for type recorded for this column.
-%
-% This case consists in fact of two subcases depending on how we
-% interpret to which column a spanning float belongs. If we claim
-% that a spanning float is placed into its starting column, then we
-% fail if its call-out is in a later column even though this column
-% might still be spanned by the float area.
-%
-% This is implemented in |\check@callout@column|.
-%
-% \item
-% Check if callouts for all floats in the column are on an earlier
-% column or if on the same column the float was added to the bottom
-% (or marginal) area; i.e. strict float/callout order
-%
-% Fail if for each type and for any column:
-% `top' callout number less than `top' float number
-% (at top of text column)
-%\begin{verbatim}
-% [Corectness proof:
-% TRUE => first callout's float comes before bottom
-% and so comes too early
-% => FAIL
-% FALSE => first callout's float comes in bottom and all other
-% callouts come later and so are in bottom or beyond
-% => OK
-% ]
-%\end{verbatim}
-% The proof above is in fact only valid if you look at the whole
-% document and not only at a single page since a float in the bottom
-% area of the last column with its callout on the next page will
-% only be detected when testing the next page. Therefore one needs
-% an additional check of type |\check@callout@column|.
-%
-% This is implemented in |\check@callout@after|.
-%
-%
-% \end{itemize}
-%
-%
-% \begin{macro}{\check@callout@none}
-% This test is an easy one: just do nothing, i.e., gobble the argument.
-% \begin{macrocode}
-\let\check@callout@none\@gobble
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\check@callout@page}
-% We are are only interested in the callout/float relation per page
-% we only have to do a check when producing the last column, i.e.,
-% when |\curr@col@count| is |\col@count|.
-% \begin{macrocode}
-\def\check@callout@page#1{
-%<*trace>
- \@tracepush{check@callout@page}
-%</trace>
- \ifnum\curr@col@count=\col@count
-% \end{macrocode}
-% We store in |\fl@max| the highest sequence number for floats of
-% the current type up to the end of the page. For this we have to
-% find the maximum of |\fl@0@|\meta{type} (highest float number on
-% previous pages) and those for the columns, e.g.,
-% |\fl@|\meta{colnum}|@|\meta{type}; this is done by the following
-% code:
-% \begin{macrocode}
- \global\expandafter\let\expandafter\fl@max
- \csname fl@0@#1\endcsname
- \forall@columns {
- \ifnum\csname fl@\the\curr@col@count @#1\endcsname>\fl@max\relax
- \xdef\fl@max{\csname fl@\the\curr@col@count @#1\endcsname}
- \fi
- }
-% \end{macrocode}
-% We then store the number of the last callout in |\count@|; the
-% |0| will take care of the potential problem that there was never any
-% callout so far. And we better have a |\relax| afterwards since
-% otherwise we will expand the |\ifnum| before we have finished
-% assigning the |\count@|.
-% \begin{macrocode}
- \count@0\LastMark{#1}\relax
-%<*trace>
- \tr@ce{Last~callout~ (#1)~ =~ \the\count@}
-%</trace>
-% \end{macrocode}
-% Now we have to compare those two numbers to find out if that
-% trial has failed:
-% \begin{macrocode}
- \ifnum\count@<\fl@max\relax
- \@failtrue
-%<*progress>
- \progress@failed{last~callout~
- \the\count@\space~<~\fl@max
- \space last~float~put~on~page~or~ earlier}
-%</progress>
-%<*trace>
- \tr@ce{Failed:~(#1)~ last~callout~
- \the\count@\space~<~\fl@max
- \space last~float~put~on~page~or~ earlier}
- \else
- \tr@ce{OK:~(#1)~ last~callout~
- \the\count@\space~>=~\fl@max
- \space last~float~put~on~page~or~ earlier}
-%</trace>
- \fi
- \fi
-%<*trace>
- \@tracepop{check@callout@page}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\fl@max}
-% The macro |\fl@max| is used within |\check@callout@page| to hold
-% the highest sequence number of any allocated float on the current
-% page for the type under testing. It will be recalculated on
-% each pass.\footnote{One could generate this value while running through
-% the trials --- this would perhaps be a bit more time efficient.}
-% \begin{macrocode}
-\let\fl@max\ERROR
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\check@callout@column}
-% Checking each column separately means we have to compare for each
-% type the last callout on this or previous columns (i.e., as
-% returned by |\LastMark|) with the highest sequence number for
-% floats of this type in the current column (as stored in
-% |fl@|\meta{col}|@|\meta{type}). So we first store the callout
-% info in |\count@|.
-% \begin{macrocode}
-\def\check@callout@column#1{
-%<*trace>
- \@tracepush{check@callout@column}
-%</trace>
- \count@0\LastMark{#1}\relax
-% \end{macrocode}
-% Then we do the test. If there are no floats of the current type
-% in the current column |\fl@|\meta{col}|@|\meta{type} will be zero
-% and thus the following test will come out true. This is the
-% correct behaviour as any callouts that might be present will be
-% correctly evaluated in tests on neighboring columns with floats.
-% \begin{macrocode}
- \ifnum\count@<\csname fl@\the\curr@col@count @#1\endcsname\relax
-%<*progress>
- \progress@failed{last~ callout~
- \the\count@\space <~
- \csname fl@\the\curr@col@count @#1\endcsname
- \space last~ float~ placed~ in~ column~ \the\curr@col@count}
-%</progress>
-%<*trace>
- \tr@ce{Failed:~(#1)~ last~ callout~
- \the\count@\space <~
- \csname fl@\the\curr@col@count @#1\endcsname
- \space last~float~placed}
-%</trace>
-% \end{macrocode}
-% If the test fails we abort this trial by setting the switch
-% |@fail| to true. We also set
-% |\curr@col@count| to |\col@count| which will save us any further
-% iteration (in case this wasn't the last column). Finally we
-% locally set |\@elt| to |\@gobble| which will essentially about
-% the current loop through the |\float@classes@list|.
-% \begin{macrocode}
- \@failtrue
- \global\curr@col@count\col@count
- \let\@elt\@gobble
-% \end{macrocode}
-% Otherwise the constraints for callout of current float type are
-% met so we report this fact if we do tracing.
-% \begin{macrocode}
-%<*trace>
- \else
- \tr@ce{OK:~(#1)~ last~ callout~
- \the\count@\space >=~
- \csname fl@\the\curr@col@count @#1\endcsname
- \space last~float~placed}
-%</trace>
- \fi
-%<*trace>
- \@tracepop{check@callout@column}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\check@callout@after}
-%
-% \begin{macrocode}
-\def\check@callout@after#1{
-%<*trace>
- \@tracepush{check@callout@after}
-%</trace>
-% \end{macrocode}
-%
-% We first check if all floats are either on the same column than
-% their callout or on an later column by calling
-% |\check@callout@column|. If this returns |@fail| we immediately
-% abort any further processing.
-% \begin{macrocode}
- \check@callout@column{#1}
- \if@fail\else
-% \end{macrocode}
-%
-% If the above check found no violation we have to check for top
-% area floats that might preceed their callouts.
-%
-% For this we look at the value of the
-% |\tfl@|\meta{col}|@|\meta{float-type} macro which holds the
-% highest float sequence number for floats of this type allocated
-% in that column.
-% \begin{macrocode}
- \global\expandafter\let\expandafter
- \returned@sequence@number
- \csname tfl@\the\curr@col@count @#1\endcsname
-% \end{macrocode}
-%
-% If there was no float in the top area we get |0| back and in
-% that case we are done since all our constraints are met.
-% \begin{macrocode}
- \ifnum \returned@sequence@number = \z@
-%<*trace>
- \tr@ce{OK:~(#1)~ top~ areas~ have~ no~ floats}
-%</trace>
- \else
-% \end{macrocode}
-%
-% Otherwise we have to look at the top callout number and compare
-% it to the last float number of the top area.
-% \begin{macrocode}
- \count@ 0\PreviousMark{#1}\relax
-% \end{macrocode}
-% If that callout number is less than the last float number we
-% failed since this means that there is a float in the top area
-% which callout has not yet been seem. So we abort the
-% trial. Otherwise our constraints are met.
-% \begin{macrocode}
- \ifnum \count@ < \returned@sequence@number \relax
-% \end{macrocode}
-% But before aborting we give some information on why we
-% failed. This has to come first since we change |\curr@col@count|
-% below.
-% \begin{macrocode}
-%<*progress>
- \progress@failed{top~ callout~
- \the\count@\space <~ \returned@sequence@number
- \space last~ float~ put~ in~ top~
- of~ column~ \the\curr@col@count}
-%</progress>
- \@failtrue
- \global\curr@col@count\col@count
- \let\@elt\@gobble
-%<*trace>
- \tr@ce{Failed:~(#1)~ top~ callout~
- \the\count@\space <~ \returned@sequence@number
- \space last~float~put~in~top}
- \else
- \tr@ce{OK:~(#1)~ top~ callout~
- \the\count@\space >=~ \returned@sequence@number
- \space last~float~put~in~top}
-%</trace>
- \fi
- \fi
- \fi
-%<*trace>
- \@tracepop{check@callout@after}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \subsection{Checking bottom float footnote constraints}
-%
-% In |\grab@column@or|, the output routine that grabs a single column
-% during a trial, we have the command |\check@some@constraints| which
-% allows to check some constraints and if they aren't met is supposed
-% to set the switch |@fail|.
-%
-% This can, for example be used to implement a constraint that bottom
-% floats are only allowed if there are no footnotes in the current
-% column.\footnote{At the moment this is restricted to single column
-% floats. Spanning floats are always allowed.}
-%
-% \begin{macro}{\check@float@footnote@forbidden}
-% The command |\check@float@footnote@forbidden| is the
-% implementation for |\check@some@constraints| that prevents bottom
-% floats if the current column contains footnotes.
-% \begin{macrocode}
-\def\check@float@footnote@forbidden{
-%<*trace>
- \@tracepush{check@float@footnote@forbidden}
-%</trace>
- \ifvoid\footins
- \else
-% \end{macrocode}
-% If the current column contains footnotes and we have bottom
-% floats we fail. First we check if there is a bottom area for this
-% column defined if not we pretend there is an empty one.
-% \begin{macrocode}
- \expandafter
- \ifx \csname area@b\the\curr@col@count1\endcsname
- \relax
- \global\expandafter\let
- \csname area@b\the\curr@col@count1\endcsname
- \@empty
- \fi
-% \end{macrocode}
-% Then we check if the bottom area is empty and fail otherwise
-% \begin{macrocode}
- \expandafter
- \ifx \csname area@b\the\curr@col@count1\endcsname
- \@empty
-%<*trace>
- \tr@ce{OK:~ no~ old~ bottom~ floats}
-%</trace>
- \else
-%<*progress>
- \progress@failed{old~bottom~floats:~ \expandafter\meaning
- \csname area@b\the\curr@col@count1\endcsname}
-%</progress>
-%<*trace>
- \tr@ce{Failed:~ old~bottom~floats:~ \expandafter\meaning
- \csname area@b1\the\curr@col@count\endcsname}
-%</trace>
- \@failtrue
- \fi
-% \end{macrocode}
-% Finally we test if the float we are try to place is going onto a
-% bottom area.
-%
-% However we only do this if the float doesn't span.\footnote{Extend?}
-% \begin{macrocode}
- \ifnum \this@area@span@number = \@ne
-%<*trace>
- \tr@ce{this@area,column:~ \this@area,~\the\curr@col@count}
-%</trace>
- \if b \this@area@type
- \ifnum \this@area@col@number = \curr@col@count
- \@failtrue
- \fi
- \fi
- \fi
- \if@fail
-%<*progress>
- \progress@failed{column~ \the\curr@col@count\space
- contains~ footnotes~ and~ bottom~ floats}
-%</progress>
-%<*trace>
- \tr@ce{Failed:~ column~ \the\curr@col@count\space
- contains~ footnotes~ and~ bottom~ floats}
-%</trace>
- \global\curr@col@count\col@count
- \fi
- \fi
-%<*trace>
- \@tracepop{check@float@footnote@forbidden}
-%</trace>
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\check@float@footnote@none}
-%
-% This is the implementation for |\check@some@constraints| if we
-% don't care about mixing footnotes and bottom floats. The reason
-% |\@empty| rather than |\relax| is used is that otherwise the
-% |\ifx| test in the template would fail.
-% \begin{macrocode}
-\let\check@float@footnote@none\@empty
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-%
-% \endinput
-\endinput
-%
-% $Log: xo-place.dtx,v $
-% Revision 1.37 2000/08/11 07:14:28 latex3
-% added header
-%
-% Revision 1.36 2000/08/11 06:49:47 latex3
-% untabify
-%
-% Revision 1.35 2000/08/11 06:45:03 latex3
-% only partially tighten float constraints after passing a flush point
-%
-% Revision 1.34 2000/07/23 21:03:19 latex3
-% removed obsolete commentary
-%
-% Revision 1.33 2000/07/21 13:53:17 latex3
-% more renaming for float sequence class concept
-%
-% Revision 1.32 2000/07/18 21:06:36 latex3
-% introduced float sequence classes
-%
-% Revision 1.31 2000/07/12 17:24:53 latex3
-% more support for grids
-%
-% Revision 1.30 2000/07/10 21:00:57 latex3
-% support for grid typesetting
-%
-% Revision 1.29 2000/07/04 19:42:05 latex3
-% fix tracing for GRID stuff
-%
-% Revision 1.28 2000/07/01 15:57:25 latex3
-% use \update@this@area@columns
-% integrate code to support grid design (first draft)
-%
-% Revision 1.27 2000/06/29 17:18:14 latex3
-% introduced \setup@this@area
-%
-% Revision 1.26 2000/06/26 15:03:40 latex3
-% making prototype for \pagesetup@float@area@sep
-%
-% Revision 1.25 2000/06/22 20:08:09 latex3
-% renamed some macros to get them more uniform
-%
-% Revision 1.24 2000/06/22 11:01:24 latex3
-% When substracting heights from columns do this for the columns spanned
-% by the area. Don't use the span number from the float (in the future
-% this might be smaller than the span number of the area)
-%
-% Revision 1.23 2000/06/19 21:38:04 latex3
-% fixed flush point handling when deferring
-%
-% Revision 1.22 2000/06/18 19:03:53 latex3
-% added "Checking bottom float footnote constraints" from xo-page
-%
-% Revision 1.21 2000/06/16 11:20:15 latex3
-% rename \construct@and@test@col@height to \construct@and@test@col@ht
-% rename \construct@and@test@col@heights to \construct@and@test@col@hts
-% rename \cl@height1 to \@col@ht@1 (etc)
-%
-% Revision 1.20 2000/06/16 11:06:37 latex3
-% support float-callout-span-constraint
-%
-% Revision 1.19 2000/06/16 07:49:49 latex3
-% improve progress info
-%
-% Revision 1.18 2000/06/15 17:49:02 latex3
-% moved macros from xo-page into here since they deal with placement
-%
-% Revision 1.17 2000/06/15 15:23:32 latex3
-% implemented new semantics for area names
-%
-% Revision 1.16 2000/06/13 20:48:18 latex3
-% docu update
-%
-% Revision 1.15 2000/06/06 12:50:40 latex3
-% before attempting fuzzy flushpoints
-%
-% Revision 1.14 2000/05/03 18:57:56 latex3
-% provide \construct@and@test@col@heights subroutine
-%
-% fix problem that deferred floats would not stop other floats going
-% into earlier areas
-%
-% Revision 1.13 2000/03/31 17:08:50 latex3
-% avoid using up too much input stack by using tail recursion in
-% strategic places (tmp fix)
-%
-% Revision 1.12 2000/03/26 21:04:03 latex3
-% some renaming of macros
-%
-% Revision 1.11 2000/03/24 15:34:27 latex3
-% version that starts supporting spans (still a hack yet)
-%
-% Revision 1.10 2000/03/22 15:52:37 latex3
-% some normalisations of names
-% first go at spans (tmp version)
-%
-% Revision 1.9 2000/03/17 20:23:11 latex3
-% more fixes to flushing (looks good now)
-%
-% Revision 1.8 2000/03/16 10:28:29 latex3
-% partial and full flush working for the first time
-%
-% Revision 1.7 2000/03/05 19:31:56 latex3
-% some renaming
-% extend to multiple columns (6 max right now)
-% fix defer logic: when flushseen don't defer immediately
-%
-% Revision 1.6 2000/02/27 15:12:45 david
-% *** empty log message ***
-%
-% Revision 1.5 2000/02/27 11:27:45 david
-% first attempt at flush floats
-%
-% Revision 1.4 2000/02/26 18:24:21 david
-% renaming, and using \initialise@areas
-%
-% Revision 1.3 2000/02/16 13:40:09 latex3
-% added 3col support
-%
-% Revision 1.2 2000/02/16 10:10:43 latex3
-% added documentation
-% added test for float area size after adding float
-%
-% Revision 1.1 2000/02/13 22:27:39 latex3
-% Initial revision
-%
diff --git a/Master/texmf-dist/source/latex3/xor/xo-trace.dtx b/Master/texmf-dist/source/latex3/xor/xo-trace.dtx
deleted file mode 100644
index 435994f1682..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xo-trace.dtx
+++ /dev/null
@@ -1,140 +0,0 @@
-% \iffalse
-%%
-%% (C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley
-%% All rights reserved.
-%%
-%% Not for general distribution. In its present form it is not allowed
-%% to put this package onto CD or an archive without consulting the
-%% the authors.
-%%
-% \fi
-%
-
-% \begin{macrocode}
-\def\@tempa#1: #2.dtx,v #3 #4 #5 #6 #7${
- \ProvidesPackage{#2}[#4 #3 #5 #6]}
-\@tempa$Id: xo-trace.dtx,v 1.9 2000/08/11 07:14:29 latex3 Exp $
-% \end{macrocode}
-%
-% Ignore white space in this package.
-% \begin{macrocode}
-\IgnoreWhiteSpace
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
-\def\showmarks{
- \toks@\expandafter{\topmark}\typeout{topmark:\the\toks@}
- \toks@\expandafter{\firstmark}\typeout{firstmark:\the\toks@}
- \toks@\expandafter{\botmark}\typeout{botmark:\the\toks@}
-}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\showfloatlists{{
- \let\@elt\@empty
- \typeout{free:~\@freelist}
- \typeout{active:~\@activelist}
- \typeout{mvl:~\@mvllist}
- \typeout{defer:~\area@ddd}
- \typeout{assigned:}
- \showfloatarea{t13}
- \showfloatarea{t12}
- \showfloatarea{t22}
- \showfloatarea{t11}
- \showfloatarea{t21}
- \showfloatarea{t31}
- \showfloatarea{b11}
- \showfloatarea{b21}
- \showfloatarea{b31}
- \edef\@tempa{currbox\expandafter\strip@prefix\meaning\@currbox>\space
- this@float\expandafter\strip@prefix\meaning\this@float@box>}
- \show\@tempa}}
-
-\def\showfloatarea#1{
- \@ifundefined{area@#1}{}
- {\expandafter
- \ifx\csname area@#1\endcsname\@empty
- \else
- \typeout{~\space\space #1:~\csname area@#1\endcsname}
- \fi
- }
-}
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<*trace>
-\def \@tracemessage #1{%
- \begingroup\let\@elt\space\typeout{:~\tf@indent~#1}\endgroup}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\let\tf@indent\@empty
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@tracepush#1{%
- \tr@ce{entering~#1}
- \xdef\tf@indent{-\tf@indent}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\@tracepop#1{%
- \tr@ce{leaving~#1}
- \xdef\tf@indent{\expandafter\@gobble\tf@indent}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def \tracefloats{\global\let \tr@ce \@tracemessage}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def \notrace {\global\let \tr@ce \@gobble}
-%\notrace
-% \end{macrocode}
-%
-% \begin{macrocode}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\traceonly#1{
- \notrace
- \def\@trace@command{#1}
- \gdef\@tracepush##1{
- \def\@trace@this{##1}
- \ifx\@trace@this\@trace@command
- \global\let\@this@tf@indent\tf@indent
- \tracefloats
- \tr@ce{entering~##1}
- \fi
- \xdef\tf@indent{-\tf@indent}}
- \def\@tracepop##1{
- \tr@ce{leaving~##1}
- \xdef\tf@indent{\expandafter\@gobble\tf@indent}
- \ifx\@this@tf@indent\tf@indent
- \global\let\@this@tf@indent\relax
- \notrace
- \fi}
-}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\tracefloats
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def \@traceval #1{\tr@ce{\string #1~=~\the #1}}
-%</trace>
-%<-trace>\let\tr@ce\@gobble
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<*progress>
-\def \progress #1{\message{#1}}
-\def \progress@separator{
- \progress{===============================
- ========================================^^J}}
-\def \progress@nl #1{\progress{~ #1^^J}}
-\def \progress@failed #1{\progress@nl{ ->~ failed:~ #1}}
-%</progress>
-% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex3/xor/xo.ins b/Master/texmf-dist/source/latex3/xor/xo.ins
deleted file mode 100644
index be726b76dfa..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xo.ins
+++ /dev/null
@@ -1,40 +0,0 @@
-%
-% $Id: xo.ins,v 1.4 2000/08/05 09:43:49 latex3 Exp $
-
-\input docstrip
-\keepsilent
-\askforoverwritefalse
-
-\preamble
-
-Not for distribution
-
-(C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley
-All rights reserved.
-
-Not for general distribution. In its present form it is not allowed
-to put this package onto CD or an archive without consulting the
-the authors.
-\endpreamble
-
-
-
-\generate{%
- \file{xmarks.sty}{\from{xmarks.dtx}{package}}
- \file{xo-alloc.sty}{\from{xo-alloc.dtx}{package}}
- \file{xo-capt.sty}{\from{xo-capt.dtx}{package}}
- \file{xo-final.sty}{\from{xo-final.dtx}{package}}
- \file{xo-float.sty}{\from{xo-float.dtx}{package}}
- \file{xo-grid.sty}{\from{xo-grid.dtx}{package}}
- \file{xo-here.sty}{\from{xo-here.dtx}{package}}
- \file{xo-new.sty}{\from{xo-new.dtx}{package}}
- \file{xo-or.sty}{\from{xo-or.dtx}{package}}
- \file{xo-page.sty}{\from{xo-page.dtx}{package}}
- \file{xo-place.sty}{\from{xo-place.dtx}{package}}
- \file{xo-trace.sty}{\from{xo-trace.dtx}{package,trace}}
- \file{xoutput.sty}{\from{xoutput.dtx}{package}}
-}
-
-\endbatchfile
-
-% \file{xo-implement.sty}{\from{xo-implement-generic-algorithm.dtx}{package}}
diff --git a/Master/texmf-dist/source/latex3/xor/xoprogress.ins b/Master/texmf-dist/source/latex3/xor/xoprogress.ins
deleted file mode 100644
index 307853273dd..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xoprogress.ins
+++ /dev/null
@@ -1,40 +0,0 @@
-%
-% $Id: xoprogress.ins,v 1.3 2000/08/04 15:54:51 latex3 Exp $
-
-\input docstrip
-\keepsilent
-\askforoverwritefalse
-
-\preamble
-
-Not for distribution
-
-(C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley
-All rights reserved.
-
-Not for general distribution. In its present form it is not allowed
-to put this package onto CD or an archive without consulting the
-the authors.
-\endpreamble
-
-
-
-\generate{%
- \file{xmarks.sty}{\from{xmarks.dtx}{package}}
- \file{xo-alloc.sty}{\from{xo-alloc.dtx}{package,progress}}
- \file{xo-capt.sty}{\from{xo-capt.dtx}{package,progress}}
- \file{xo-final.sty}{\from{xo-final.dtx}{package,progress}}
- \file{xo-float.sty}{\from{xo-float.dtx}{package,progress}}
- \file{xo-grid.sty}{\from{xo-grid.dtx}{package,progress}}
- \file{xo-here.sty}{\from{xo-here.dtx}{package,progress}}
- \file{xo-new.sty}{\from{xo-new.dtx}{package,progress}}
- \file{xo-or.sty}{\from{xo-or.dtx}{package,progress}}
- \file{xo-page.sty}{\from{xo-page.dtx}{package,progress}}
- \file{xo-place.sty}{\from{xo-place.dtx}{package,progress}}
- \file{xo-trace.sty}{\from{xo-trace.dtx}{package,progress,trace}}
- \file{xoutput.sty}{\from{xoutput.dtx}{package,progress}}
-}
-
-\endbatchfile
-
-% \file{xo-implement.sty}{\from{xo-implement-generic-algorithm.dtx}{package,progress}}
diff --git a/Master/texmf-dist/source/latex3/xor/xotrace.ins b/Master/texmf-dist/source/latex3/xor/xotrace.ins
deleted file mode 100644
index 7c5f971dcce..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xotrace.ins
+++ /dev/null
@@ -1,40 +0,0 @@
-%
-% $Id: xotrace.ins,v 1.4 2000/08/04 15:47:48 latex3 Exp $
-
-\input docstrip
-\keepsilent
-\askforoverwritefalse
-
-\preamble
-
-Not for distribution
-
-(C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley
-All rights reserved.
-
-Not for general distribution. In its present form it is not allowed
-to put this package onto CD or an archive without consulting the
-the authors.
-\endpreamble
-
-
-
-\generate{%
- \file{xmarks.sty}{\from{xmarks.dtx}{package,trace}}
- \file{xo-alloc.sty}{\from{xo-alloc.dtx}{package,trace}}
- \file{xo-capt.sty}{\from{xo-capt.dtx}{package,trace}}
- \file{xo-final.sty}{\from{xo-final.dtx}{package,trace}}
- \file{xo-float.sty}{\from{xo-float.dtx}{package,trace}}
- \file{xo-grid.sty}{\from{xo-grid.dtx}{package,trace}}
- \file{xo-here.sty}{\from{xo-here.dtx}{package,trace}}
- \file{xo-new.sty}{\from{xo-new.dtx}{package,trace}}
- \file{xo-or.sty}{\from{xo-or.dtx}{package,trace}}
- \file{xo-page.sty}{\from{xo-page.dtx}{package,trace}}
- \file{xo-place.sty}{\from{xo-place.dtx}{package,trace}}
- \file{xo-trace.sty}{\from{xo-trace.dtx}{package,trace}}
- \file{xoutput.sty}{\from{xoutput.dtx}{package,trace}}
-}
-
-\endbatchfile
-
-% \file{xo-implement.sty}{\from{xo-implement-generic-algorithm.dtx}{package,trace}}
diff --git a/Master/texmf-dist/source/latex3/xor/xoutput.drv b/Master/texmf-dist/source/latex3/xor/xoutput.drv
deleted file mode 100644
index ee33688cd25..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xoutput.drv
+++ /dev/null
@@ -1,144 +0,0 @@
-\def\rcsdata#1: #2,v #3${
- \def\rcsdata{#2 #3}}
-\rcsdata$Id: xoutput.drv,v 1.11 2000/08/04 16:42:11 latex3 Exp $
-
-\documentclass[a4paper]{ltxdoc}
-
-\usepackage{hyperref}
-
-%\usepackage{trace,xoutput}
-
-\CodelineIndex
-\EnableCrossrefs
-
-\setcounter{IndexColumns}{2}
-
-\DoNotIndex{\@elt,\@ne,\@tracepush,\@tracepop,\@empty,\@namedef}
-\DoNotIndex{\@spaces}
-\DoNotIndex{\advance,\aftergroup,\begingroup,\bgroup,\box,\chardef,\copy,\count,\countdef}
-\DoNotIndex{\count@,\csname,\def,\do,\dimen,\dimendef\endgroup,\egroup,\else,\endcsname,\expandafter}
-\DoNotIndex{\fi,\gdef,\global,\if,\ifdim,\ifeof,\ifnum,\iftrue,\ifx}
-\DoNotIndex{\immediate,\let,\long,\m@ne,\mathchardef,\meaning,\message,\multiply}
-\DoNotIndex{\noexpand,\read,\relax,\repeat,\setbox,\space,\string\the}
-\DoNotIndex{\toks,\tr@ce,\tw@,\unskip,\unvbox,\unvcopy,\vadjust}
-\DoNotIndex{\value,\vbox,\voidb@x,\vrule,\vskip,\vss,\wlog,\write,\z@}
-\DoNotIndex{\hbox,\hrule,\ht,\dp,\wd,\ifinner}
-\DoNotIndex{\RequirePackage,\typeout,\xdef,\tracingall}
-
-
-\begin{document}
-
-\title{A new output routine for \LaTeX\thanks{\rcsdata}}
-\author{\copyright\ Frank Mittelbach, David Carlisle and Chris Rowley}
-\date{Started in 1996--7; first real implementation in Feb 2000
-}
-
-\maketitle
-\tableofcontents
-
-
-\iffalse
-
-\section{What has been done}
-
-To get a rough estimate of the work involved (and make me feel good)
-look at the rcs change lines per file of the output routine
-(as of June 21 2000) using:
-\begin{verbatim}
- for f in xo*dtx xo*tex ; do rlog $f ; done | \
- awk -f get-changes.awk |sort
-\end{verbatim}
-
-\begin{scriptsize}
-\begin{verbatim}
-author: # changes # total lines # added lines # plus lines # minus lines
-car2; 4 1.84332% 1907 7.21065% 773 7.97977% 1340 7.41684% -567 6.76611%
-david; 51 23.5023% 3181 12.0278% 1935 19.9752% 2558 14.1584% -623 7.43437%
-frank; 162 74.6544% 21359 80.7615% 6979 72.045% 14169 78.4248%
--7190 85.7995%
-\end{verbatim}
-\end{scriptsize}
-
-\fi
-
-\section{xoutput}
-\DocInput{xoutput.dtx}
-
-\section{Output Routine Tracing}
-\DocInput{xo-trace.dtx}
-
-\newpage
-\section{Output Routines}
-\DocInput{xo-or.dtx}
-
-\newpage
-\section{Interfacing Here Points}
-\DocInput{xo-here.dtx}
-
-\newpage
-\section{Float Placement Algorithm}
-\DocInput{xo-place.dtx}
-
-\newpage
-\section{Page Makeup}
-\DocInput{xo-final.dtx}
-
-\newpage
-\section{Page Setup Templates}
-\DocInput{xo-page.dtx}
-
-\newpage
-\section{Float Environments}
-\DocInput{xo-float.dtx}
-
-\section{Captions}
-\DocInput{xo-capt.dtx}
-
-\section{Allocations}
-\DocInput{xo-alloc.dtx}
-
-\section{Redefinitions for Grid Design}
-\DocInput{xo-grid.dtx}
-
-\section{New stuff that needs merging (or cleanup)}
-\DocInput{xo-new.dtx}
-
-\newpage
-
-\PrintIndex
-
-\typeout{=====================================================================}
-\typeout{}
-\typeout{To get proper index run the document using:}
-\typeout{}
-\typeout{latex xoutput.drv ; makeindex -s gind.ist xoutput ; latex xoutput.drv}
-\typeout{}
-\typeout{=====================================================================}
-
-\end{document}
-
-% $Log: xoutput.drv,v $
-% Revision 1.11 2000/08/04 16:42:11 latex3
-% *** empty log message ***
-%
-% Revision 1.10 2000/07/30 18:06:52 latex3
-% added xo-grid.dtx
-%
-% Revision 1.9 2000/06/15 09:34:37 latex3
-% use .dtx not .sty
-%
-% Revision 1.8 2000/04/21 19:09:14 latex3
-% added xo-here
-%
-% Revision 1.7 2000/04/07 07:29:56 latex3
-% added index
-%
-% Revision 1.6 2000/03/16 10:28:29 latex3
-% adding index
-%
-% Revision 1.5 2000/03/09 14:44:31 latex3
-% *** empty log message ***
-%
-% Revision 1.4 2000/03/05 19:42:59 latex3
-% new sections
-%
diff --git a/Master/texmf-dist/source/latex3/xor/xoutput.dtx b/Master/texmf-dist/source/latex3/xor/xoutput.dtx
deleted file mode 100644
index 6f0467022cc..00000000000
--- a/Master/texmf-dist/source/latex3/xor/xoutput.dtx
+++ /dev/null
@@ -1,78 +0,0 @@
-% \iffalse
-%%
-%% (C) Copyright 1999-2000 Frank Mittelbach, David Carlisle, Chris Rowley
-%% All rights reserved.
-%%
-%% Not for general distribution. In its present form it is not allowed
-%% to put this package onto CD or an archive without consulting the
-%% the authors.
-%%
-% \fi
-%
-
-% \begin{macrocode}
-\def\@tempa#1: #2.dtx,v #3 #4 #5 #6 #7${
- \ProvidesPackage{#2}[#4 #3 #5 #6]}
-\@tempa$Id: xoutput.dtx,v 1.13 2000/08/11 07:14:49 latex3 Exp $
-% \end{macrocode}
-%
-% \begin{macrocode}
-\RequirePackage{
- ldcsetup,
- template,
- xmarks,
- xparse,
- xo-trace,xo-or,
- xo-here,
- xo-place,xo-page,xo-float,xo-capt,xo-final,
- xo-alloc,
- xo-new
-}
-% \end{macrocode}
-%
-
-
-% Ignore white space in this package.
-% \begin{macrocode}
-\IgnoreWhiteSpace
-% \end{macrocode}
-%
-%
-%
-%
-% \endinput
-\endinput
-%
-% $Log: xoutput.dtx,v $
-% Revision 1.13 2000/08/11 07:14:49 latex3
-% added header
-%
-% Revision 1.12 2000/07/18 21:05:43 latex3
-% removed initialisations
-%
-% Revision 1.11 2000/07/12 19:44:58 latex3
-% removed some commented out code
-%
-% Revision 1.10 2000/06/13 21:22:29 latex3
-% turned into a dtx file
-%
-% Revision 1.9 2000/04/21 19:06:01 latex3
-% removed old initialisation
-% added xo-here
-%
-% Revision 1.8 2000/03/31 17:00:18 latex3
-% fixed rcs log
-%
-% Revision 1.7 2000/03/22 15:53:39 latex3
-% added xparse
-%
-% Revision 1.6 2000/02/26 18:26:26 david
-% xo-alloc and xo-new added
-%
-% Revision 1.5 2000/02/13 21:58:07 latex3
-% oops, my rcs again (probably something that will only show up here
-% but to ensure that everything is fine I add an \endinput)
-%
-% Revision 1.4 2000/02/13 21:33:05 latex3
-% added xo-place (float trial placement tests)
-%