summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex3/xor/xo-or.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex3/xor/xo-or.sty')
-rw-r--r--Master/texmf-dist/tex/latex3/xor/xo-or.sty1251
1 files changed, 1251 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex3/xor/xo-or.sty b/Master/texmf-dist/tex/latex3/xor/xo-or.sty
new file mode 100644
index 00000000000..418b9fbe118
--- /dev/null
+++ b/Master/texmf-dist/tex/latex3/xor/xo-or.sty
@@ -0,0 +1,1251 @@
+%%
+%% This is file `xo-or.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xo-or.dtx (with options: `package,progress')
+%%
+%% 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.
+%%
+%% (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.
+%%
+
+\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 $
+\IgnoreWhiteSpace
+\long\def\@gobblethree#1#2#3{}
+\def\xin@#1#2{%
+ \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@@}
+\def\gincrement@num#1 {
+ \begingroup
+ \count@#1
+ \advance\count@\@ne
+ \xdef#1{\the\count@}
+ \endgroup
+}
+\def\gdecrement@num#1 {
+ \begingroup
+ \count@#1
+ \advance\count@\m@ne
+ \xdef#1{\the\count@}
+ \endgroup
+}
+\begingroup
+\catcode`\M=12
+\catcode`\I=12
+\catcode`\N=12
+\catcode`\U=12
+\catcode`\S=12
+\catcode`\Z=12
+\lccode`\Z=`\p
+\catcode`\T=12
+\catcode`\L=12
+\catcode`\F=12
+\lccode`\V=`\V
+\lccode`\O=`\O
+\lowercase{
+\gdef\split@skip #1#2#3#4{
+ \@tempskipa#2\relax
+ \expandafter\check@for@fil \the\@tempskipa FIL\relax\check@for@fil
+ {\the\@tempskipa}{#3}{#4}{#1}
+ }
+\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
+ }
+\gdef\get@plus@part #1ZLUS#2ZT#3\get@plus@part#4{
+ #4=#2pt\relax
+ }
+\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
+\mathchardef\output@collect@penalty=20202
+\mathchardef\output@balance@penalty=10010
+\mathchardef\output@columnbreak@penalty=10005
+\mathchardef\output@flush@float@penalty=10006
+\mathchardef\output@here@float@penalty=10007
+\mathchardef\output@grid@align@penalty=10008
+\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
+}
+\def\add@guarded@penalty#1
+ {\guard@box{BUG:~\string#1}\penalty-#1\relax}
+\def\guard@box#1{
+ \dimen@\prevdepth
+ \nointerlineskip
+ \vbox to0pt{\vss \rlap{#1}\kern\z@}
+ \prevdepth\dimen@
+}
+\def\guard@box#1{
+ \dimen@\prevdepth
+ \nointerlineskip
+ \begingroup
+ \setbox\z@\vbox to\z@{\vss \rlap{#1}}
+ \dp\z@\dimen@
+ \box\z@
+ \endgroup
+}
+\def\remove@guard@box@from@cclv{
+ \global\setbox\@cclv \vbox{\boxmaxdepth\@maxdepth \unvbox\@cclv
+ \global\setbox\removed@guard@box\lastbox}
+}
+\def\readd@guarded@penalty#1 {
+ \box\removed@guard@box
+ \penalty-#1\relax}
+\newbox\removed@guard@box
+\let\col@count \col@number % reuse a register from LaTeX
+ % which is named differently there
+\newcount\curr@col@count
+
+\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
+\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
+\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
+}
+\def\initialise@column@data{
+ \global\let\best@trial\@empty
+
+ \forall@columns
+ {
+
+ \global\csname col@ht@ \the\curr@col@count\endcsname\textheight
+
+ \expandafter
+ \g@addto@macro\expandafter\best@trial\expandafter
+ {
+ \expandafter
+ \global
+ \csname col@ht@ \the\curr@col@count\endcsname
+ \textheight
+ }
+ \global\@namedef{col@t@floats@ \the\curr@col@count
+ @number}{0}
+ \global\@namedef{col@b@floats@ \the\curr@col@count
+ @number}{0}
+ \global\@namedef{col@t@delta@ \the\curr@col@count}{0pt}
+ \global\@namedef{col@b@delta@ \the\curr@col@count}{0pt}
+ }
+
+}
+\def\columnbreak{
+ \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}
+\def\known@areas{}
+\def\used@areas{ t11 b11 }
+\let\@activelist\@empty
+\let\@mvllist\@empty
+\let\area@ddd\@empty
+\def\pagesetup@ddd@class@close{\pagesetup@area@list}
+\let\pagesetup@ddd@all@close\@empty
+\let\this@open@areas\@empty
+\let\saved@this@open@areas\@empty
+\let\this@closed@areas\@empty
+\let\this@page@closed\@empty
+\expandafter\let\csname t11@float@count\endcsname \@topnum
+\expandafter\let\csname b11@float@count\endcsname \@botnum
+\expandafter\let\csname t12@float@count\endcsname \@dbltopnum
+\expandafter\let\csname b12@float@count\endcsname \@dblbotnum
+\newcount\ddd@float@count
+\newskip\pagesetup@float@area@sep
+\let\pagesetup@float@text@sep\textfloatsep % reuse register
+\let\textfloatsep\@undefined
+\let\pagesetup@float@float@sep\floatsep % reuse register
+\let\floatsep\@undefined
+\newdimen\pagesetup@float@text@shrink
+\let\pagesetup@float@inline@sep\intextsep % reuse register
+\let\intextsep\@undefined
+\newdimen\pagesetup@float@inline@shrink
+\def\initialise@areas{
+ \expandafter\initialise@areas@loop
+ \used@areas
+ \relax\relax\relax
+}
+\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}
+\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
+}
+\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}
+\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
+}
+\def\last@of@type@aux#1#2#3#4#5#6#7{
+ \def\@tempa{#6}
+ \ifx\@tempa\@tempb
+ \gdef\returned@sequence@number{#7}
+ \fi}
+\def\setup@this@area #1 {
+ \xdef\this@area{#1}
+ \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
+}
+\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
+ #1
+ \repeat
+ \endgroup
+}
+\def\setup@collection@or{
+ \global\holdinginserts\@ne
+ \global\vsize\textheight
+ \global\advance\vsize 5\baselineskip
+ \global\multiply\vsize \col@count
+ \@flushseenfalse
+ \@flushfailfalse
+ \xdef\saved@topskip{\the\topskip}
+ \global\output{\collection@or}
+}
+\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}
+\def\collection@or{
+ \@testfalse
+ \ifnum\outputpenalty < -\@M
+ \ifnum\outputpenalty > -\output@balance@penalty
+ \@testtrue
+ \fi
+ \fi
+ \if@test
+ \remove@guard@box@from@cclv
+ \dimen@\dp\@cclv
+ \global\advance\vsize-\ht\@cclv
+ \global\setbox\partial@galley@box
+ \vbox{\ifvoid\partial@galley@box
+ \else
+ \unvbox\partial@galley@box
+ \fi
+ \unvbox\@cclv
+ \setbox\z@\vbox to-\dimen@{}
+ \dp\z@\dimen@
+ \box\z@
+ \penalty\outputpenalty
+ }
+ \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
+ \ifnum\outputpenalty=-\output@flush@float@penalty
+ \@flushseentrue
+ \fi
+ \else
+ \ifnum\outputpenalty = -\output@collect@penalty
+ \remove@guard@box@from@cclv
+ \unvbox\@cclv
+ \ifnum\saved@outputpenalty > -\@M
+ \penalty
+ \ifnum\saved@outputpenalty=\@M
+ \z@
+ \else
+ \saved@outputpenalty\relax
+ \fi
+ \else
+ \fi
+ \@collecting@new@materialtrue
+ \else
+ \ifnum\outputpenalty = -\output@balance@penalty
+ \@balancetrue
+ \xdef\saved@outputpenalty{0}
+ \else
+ \xdef\saved@outputpenalty{\the\outputpenalty}
+ \fi
+ \ifvoid\partial@galley@box
+ \global \setbox\@holdpg\box\@cclv
+ \else
+ \global\setbox\@holdpg\vbox{
+ \unvbox\partial@galley@box
+ \unvbox\@cclv}
+ \fi
+
+
+ \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
+ }
+\newbox\partial@galley@box
+\def\initialise@float@class#1{
+ \count@0\LastMark{#1}
+ \global\expandafter\let\csname open@#1@areas\endcsname\used@areas
+ \global\expandafter\let\csname closed@#1@areas\endcsname\@empty
+ \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
+ \expandafter\xdef
+ \csname tfl@ \the\curr@col@count @#1\endcsname{0}
+ }
+ }
+\newif\if@fail
+\def\@failfalse{\global\let\if@fail\iffalse}
+\def\@failtrue{\global\let\if@fail\iftrue}
+\def\setup@float@placement {
+ \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@
+ \global\let\saved@herelist\@herelist
+ \tighten@float@placement@conditions
+ \run@with@floatsfalse
+ \float@placement@loop
+}
+\def\float@placement@loop{
+ \deadcycles\z@
+ \global\let\@activelist@empty@action\setup@best@column@or
+ \global\let\pretests@success@action\setup@grab@column@or
+ \mark@restore@state{
+ \unvcopy\@holdpg
+ \ifnum\saved@outputpenalty > -1073741824\relax
+ \add@badly@guarded@penalty\output@collect@penalty
+ \fi
+ \global\let\@herelist\saved@herelist
+ \ifrun@with@floats
+ \trial@inner@loop
+ \else
+ \setup@grab@column@or
+ \fi
+ }
+ }
+\def\trial@inner@loop{
+ \if@fail
+ \@failfalse
+ \@flushfailfalse
+ \global\advance\trial@count\@ne
+ \do@next\try@this@area
+ \else
+ \do@next\try@next@float
+ \fi
+ \do@continue
+ }
+\newcount\trial@count
+\let\try@this@area\ERROR
+\def\try@next@area{
+ \xdef\this@open@areas{\expandafter\@gobblethree\this@open@areas}
+ \global\advance\trial@count\@ne
+ \try@this@area
+}
+\def\try@next@float{
+ \@next\@currbox\@activelist{
+ \progress{Float:~ \@currbox}
+ \expandafter\update@this@float@structure\the\toks\@currbox
+ \global\let\saved@this@open@areas\this@open@areas
+ \global\advance\trial@count\@ne
+ \try@this@area
+ }
+ {
+ \progress@nl{STATS:~ trials~ =~ \the\trial@count}
+ \global\trial@count\z@
+ \@activelist@empty@action
+ }
+}
+\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}
+ \global\expandafter\let\expandafter
+ \this@class\csname sequence@class@#6\endcsname
+ \gdef\this@sequence@number{#7}
+ \global\let\this@open@areas\used@areas
+ \global\expandafter\let\expandafter\this@closed@areas
+ \csname closed@\this@class @areas\endcsname % FMi tmp
+ \global\let\this@float@box\@currbox
+\progress{~{#7}}
+\progress{~{#6}~(\this@class)}
+\progress{~{#4}}
+\toks@{#1}\progress@nl{~{\the\toks@}}
+}
+\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}
+ }
+\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@caption{#1}
+ \global\let\here@float@box\@currbox
+}
+\let\page@float@count\@colnum
+\newbox\this@captioned@float
+\def\setup@grab@column@or{
+ \ifnum\saved@outputpenalty = -1073741824\relax
+ \add@badly@guarded@penalty\output@collect@penalty
+ \fi
+ \@failfalse
+ \global\curr@col@count\z@
+ \gdef\trial@flush@seen@num{0}
+ \gdef\trial@here@seen@num{0}
+ \ifrun@with@floats
+ \calculate@target@fl@column
+ \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
+ \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
+ \fi
+ \fi
+ \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
+ }
+ \fi
+ \initialise@footins@action
+ \global\output{\grab@column@or}
+ \grab@column@loop
+}
+\let\calculate@target@fl@column \ERROR
+\def\calculate@target@fl@column@flexible {
+ \count@\this@area@col@number\relax
+ \advance\count@\this@area@span@number\relax
+ \advance\count@\m@ne
+}
+\def\calculate@target@fl@column@strict {
+ \count@\this@area@col@number\relax
+}
+\newif\ifrun@with@floats
+\def\run@with@floatsfalse{\global\let\ifrun@with@floats\iffalse}
+\def\run@with@floatstrue{\global\let\ifrun@with@floats\iftrue}
+\def\grab@column@loop{
+ \global\advance\curr@col@count\@ne
+ \global\vsize\csname col@ht@ \the\curr@col@count\endcsname
+}
+\def\some@column@or #1#2#3#4{
+ \handle@case@of@premature@ending
+ \handle@case@of@forced@pagebreak
+ \ifnum\outputpenalty=-\output@flush@float@penalty
+ \gincrement@num\trial@flush@seen@num
+ \remove@guard@box@from@cclv
+ \ifnum\csname flush@min@col@\trial@flush@seen@num\endcsname
+ > \curr@col@count
+ \gdecrement@num\trial@flush@seen@num
+ \readd@guarded@penalty\output@flush@float@penalty
+ #2
+ \else
+ #3
+ \fi
+ \else
+ \ifnum\outputpenalty=-\output@here@float@penalty
+ \gincrement@num\trial@here@seen@num
+ \remove@guard@box@from@cclv
+ \ifnum\csname here@min@col@\trial@here@seen@num\endcsname
+ > \curr@col@count
+ \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
+ \split@off@last@line
+ \gdecrement@num\trial@here@seen@num
+ \readd@guarded@penalty\output@here@float@penalty
+ #2
+ \else
+ \@reinserts
+ \unvbox\@cclv
+ \@next\@currbox\@herelist{
+ \expandafter\update@here@float@structure\the\toks\@currbox
+ \def\@tempa{mpar}
+ \ifx\@tempa\here@type
+ \typeset@a@marginpar
+ \else
+ \def\@tempa{rspace}
+ \ifx\@tempa\here@type
+ % do nothing
+ \else
+ #4
+ \fi
+ \fi
+ }
+ \ERROR
+ \fi
+ \fi
+ \else
+ \ifnum\outputpenalty=-\output@grid@align@penalty
+ \align@collected@galley@and@restart
+ \else
+ #2
+ \fi
+ \fi
+ \fi
+}
+\def\grab@column@or{\some@column@or{grab}
+ \grab@column@or@finish
+ \grab@column@or@flushcheck
+ \check@and@typeset@a@here@float
+}
+\def\grab@column@or@flushcheck{
+ \ifrun@with@floats
+ \expandafter\xin@\expandafter\this@class
+ \csname flush@classes@list@\trial@flush@seen@num\endcsname
+ \ifin@
+ \count@\csname flush@last@float@\trial@flush@seen@num\endcsname\relax
+ \ifnum\this@sequence@number>\count@
+ \else
+ \csname flush@fuzziness@\trial@flush@seen@num \endcsname
+ \fi
+ \fi
+ \fi
+ \if@fail
+ \@flushfailtrue
+ \global\setbox\@cclv\box\voidb@x
+ \global\setbox\footins\box\voidb@x
+ \global\curr@col@count\col@count
+ \grab@column@or@finish
+ \else
+ \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}
+ \fi
+ \@reinserts
+ \unvbox\@cclv
+ % will change again
+ \fi
+}
+\def\flushcheck@page {
+}
+\def\flushcheck@spread {
+}
+\def\flushcheck@strict {
+ \ifnum\this@area@col@number<\curr@col@count
+ \else
+ \ifnum\this@area@col@number=\curr@col@count
+ \if b \this@area@type
+ \@failtrue
+ \progress@failed{area~ below~ flush~ point~
+ (\this@area@col@number=\the\curr@col@count,~\this@area)}
+ \fi
+ \else
+ \@failtrue
+ \progress@failed{area~ after~ flush~ point~
+ (\this@area@col@number>\the\curr@col@count,~\this@area)}
+ \fi
+ \fi
+}
+\def\flushcheck@column {
+ \ifnum\this@area@col@number>\curr@col@count
+ \@failtrue
+ \progress@failed{area~ after~ flush~ point~ column~
+ (\this@area@col@number>\the\curr@col@count,~\this@area)}
+ \fi
+}
+\def\grab@column@or@finish{
+ \mark@update@structure
+ \deal@with@footins@action
+ \if@fail\else
+ \ifrun@with@floats
+ \check@some@constraints
+ \fi
+ \fi
+ \if@fail\else
+ \ifrun@with@floats
+ \let\@elt\check@callout@constraints
+ \float@classes@list
+ \fi
+ \fi
+ \global\setbox\@cclv\box\voidb@x
+ \global\setbox\footins\box\voidb@x
+ \ifnum\curr@col@count=\col@count
+ \evaluate@results@of@trial
+ \setup@cleanup@or
+ \else
+ \grab@column@loop
+ \fi
+}
+\def\handle@case@of@premature@ending{
+ \ifnum\outputpenalty=-\output@collect@penalty
+ \remove@guard@box@from@cclv
+ \readd@guarded@penalty\output@collect@penalty
+ \fi
+}
+\let\check@some@constraints\relax
+\def\evaluate@results@of@trial{
+ \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@
+ \progress@failed{area~ +~ here~ floats~ exceed~ max~ floats}
+ \@failtrue
+ \fi
+ \fi
+ \fi
+ \if@fail
+ \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
+ }
+ \fi
+
+ \if@flushfail
+ \ifx\try@this@area\relaxed@try@this@area
+
+ \expandafter\gincrement@num
+ \csname flush@min@col@\trial@flush@seen@num\endcsname
+ \progress@failed{flush~ point~ \trial@flush@seen@num\space
+ moved~ to~ column~
+ \csname flush@min@col@\trial@flush@seen@num\endcsname}
+ \else
+
+ \ifx\saved@this@open@areas\@empty
+ \ERROR
+ \else
+ \global\let\this@open@areas\saved@this@open@areas
+ \fi
+ \relax@float@placement@conditions
+ \fi
+ \else
+ \xdef\this@open@areas{\expandafter\@gobblethree\this@open@areas}
+ \fi
+
+ \calculate@target@fl@column
+ \global\expandafter\let
+ \csname fl@\the\count@ @\this@class\endcsname
+ \saved@fl@
+ \if t\this@area@type
+ \global\expandafter\let
+ \csname tfl@\the\count@ @\this@class\endcsname
+ \saved@tfl@
+ \fi
+ \update@this@area@columns
+ {
+ \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
+ }
+ \else
+ \let\progress@inform@later\@empty
+ \if@flushseen
+ \count@\flush@seq@num\relax
+ \loop
+ \ifnum \trial@flush@seen@num < \count@
+ \global\@namedef{flush@min@col@\the\count@}{\maxdimen}
+ \advance\count@\m@ne
+ \repeat
+ \let\progress@inform@later\@empty
+ \ifrun@with@floats
+ \ifnum \count@ > \z@
+ \ifnum \csname flush@last@float@\trial@flush@seen@num\endcsname =
+ \this@sequence@number \relax
+ \def\progress@inform@later{
+ \progress@nl{->~ past~ flush~ point:~ -->~
+ tighten~ conditions~ again}
+ \progress@nl{}
+ }
+ \partly@tighten@float@placement@conditions
+ \fi
+ \fi
+ \fi
+ \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
+ }
+ \repeat
+ \fi
+ \ifrun@with@floats
+ \update@best@trial
+ \progress@inform@later
+ \else
+ \run@with@floatstrue
+ \fi
+ \fi
+ }
+\let\best@trial\@empty
+\def\update@best@trial{
+ \progress@nl{->~ accepted}
+ \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
+ }
+ }
+ \expandafter\@cons\csname area@\this@area\expandafter\endcsname
+ \this@float@box
+ \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}
+ \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
+ \global\advance\page@float@count\@ne
+ \global\advance\csname \this@area @float@count\endcsname\@ne
+ \update@this@area@columns
+ {
+ \expandafter
+ \gincrement@num
+ \csname col@ \this@area@type
+ @floats@ \the\count@ @number\endcsname
+ }
+}
+
+\def\setup@best@column@or{
+ \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
+ \initialise@footins@action
+ \global\output{\best@column@or}
+ \best@column@loop
+}
+\def\best@column@loop{
+ \global\advance\curr@col@count\@ne
+ \global\vsize\csname col@ht@ \the\curr@col@count\endcsname
+}
+\def\best@column@or{\some@column@or{best}
+ \best@column@or@finish
+ {
+ \@reinserts
+ \unvbox\@cclv
+ }
+ {
+ \perhaps@write@to@fpl@file{
+ \@spaces Area:~hhh^^J
+ \expandafter\perhaps@write@placements@to@fpl@file@aux\the\toks\@currbox}
+ \typeset@a@here@float
+ }
+}
+\def\best@column@or@finish{
+ \mark@update@structure
+ \deal@with@footins@action
+ \produce@final@column
+ \ifnum\curr@col@count=\col@count
+ \produce@final@page
+ \initialise@next@page
+ \try@float@pages
+ \place@deferred@floats
+ \setup@collection@or
+ \else
+ \best@column@loop
+ \fi
+}
+\def\initialise@next@page{
+ \initialise@column@data
+ \initialise@areas
+ \global\page@float@count\z@
+ \initialise@flush@data
+ \initialise@here@data
+ \initialise@footins@action
+ \global\let\this@page@closed\@empty
+ \let\@elt\initialise@float@class
+ \float@classes@list
+ \let\@elt\relax
+ \global\let\this@float@box\@undefined
+ }
+\def \handle@case@of@forced@pagebreak{
+ \ifnum\curr@col@count<\col@count
+ \ifnum\outputpenalty=-\@M
+ \@emptycol
+ \fi
+ \fi
+
+ \ifnum\outputpenalty=-\output@balance@penalty
+ \remove@guard@box@from@cclv
+ \ifnum\curr@col@count<\col@count
+ \@emptycol
+ \fi
+ \fi
+}
+\def\setup@cleanup@or{
+ \global\vsize\maxdimen
+ \global\output{\cleanup@or}
+ }
+\def\cleanup@or{
+ \global\setbox\@cclv\box\voidb@x
+ \global\setbox\footins\box\voidb@x
+ \ifnum\outputpenalty=-\output@collect@penalty
+ \float@placement@loop
+ \fi
+}
+\def\try@float@pages {
+ \ifx\area@ddd\@empty
+ \else
+ \global\let\@activelist@empty@action\relax
+ \global\let\pretests@success@action\floatpage@pretests@success@action
+ \global\let\try@this@area\relaxed@try@this@area
+ \let\@elt\split@defer@list
+ \area@ddd
+ \let\@elt\relax
+ \global\let\area@ddd\@empty
+ \@floatpagetrue
+ \loop
+ \if@floatpage
+ \begingroup % no nesting of \loop without grouping ...
+ \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@
+ \try@float@page
+ \endgroup
+ \repeat
+ \global\let\try@this@area\std@try@this@area
+ \fi
+}
+\def\try@float@page {
+ \save@current@float@state
+ \trial@inner@loop
+ \dimen@\z@
+ \forall@columns{
+ \advance\dimen@ \csname
+ col@ht@ \the\curr@col@count \endcsname
+ }
+ \ifdim \dimen@ > 300pt \relax
+ \@floatpagefalse
+ \progress@failed{no~ float~ page~ made}
+ \progress@nl{}
+ \saved@float@state
+ \gdef\trial@flush@seen@num{0}
+ \gdef\trial@here@seen@num{0}
+ \initialise@next@page
+ \else
+ \progress@nl{succeeded}
+ \progress@nl{}
+ \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
+ \xdef\@activelist{\area@ddd\@activelist}
+ \global\let\area@ddd\@empty
+ \fi
+}
+\newif\if@floatpage
+\def\@floatpagefalse{\global\let\if@floatpage\iffalse}
+\def\@floatpagetrue{\global\let\if@floatpage\iftrue}
+\def\save@current@float@state {
+ \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
+ }
+ }
+ \expandafter\save@area@info\used@areas ddd\relax\relax\relax
+}
+\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
+ \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}
+\let\saved@float@state\@empty
+\def\split@defer@list #1 {
+ \def\@currbox{#1}
+ \expandafter\extract@this@float@actual@structure\the\toks #1
+ \ifnum 0\LastMark{\this@class} < \this@sequence@number
+ \@cons \@mvllist #1
+ \else
+ \@cons \@activelist #1
+ \fi
+}
+\def\place@deferred@floats {
+ \xdef\@activelist{\@activelist\@mvllist}
+ \global\let\@mvllist\@empty
+}
+\iffalse % we don't do it right now
+\def\place@deferred@floats {
+ \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
+}
+\fi
+\def\floatpage@pretests@success@action{
+ \update@best@trial
+ \trial@inner@loop
+ }
+\newif\if@balance
+\def\@balancefalse{\global\let\if@balance\iffalse}
+\def\@balancetrue{\global\let\if@balance\iftrue}
+\def\balancecolumns {
+ \add@badly@guarded@penalty\output@balance@penalty
+}
+\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}
+\DeclareDocumentCommand\flushfloats { o O{strict} }
+ { \flush@floats {#1} {#2} }
+\def\flush@floats #1 #2 {
+ \add@badly@guarded@penalty\output@flush@float@penalty
+ \gincrement@num\flush@seq@num
+ \global\@namedef{flush@min@col@\flush@seq@num}{1}
+ \expandafter\xdef
+ \csname flush@last@float@\flush@seq@num \endcsname
+ {\the\float@sequence@count}
+ \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
+ }
+ \@ifundefined {flushcheck@#2}
+ \userinputERROR
+ {\global\expandafter\let
+ \csname flush@fuzziness@\flush@seq@num \expandafter \endcsname
+ \csname flushcheck@#2\endcsname
+ }
+}
+\def\clearpage{ \flushfloats \newpage }
+\def\doubleclearpage{ \clearpage }
+\def\flush@seq@num{0}
+\def\trial@flush@seen@num{0}
+
+\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
+\let\flush@classes@list@max\@empty
+\def \initialise@flush@data{
+ \count@\flush@seq@num\relax
+ \advance\count@ -\trial@flush@seen@num
+ \xdef\flush@seq@num{\the\count@}
+ \@tempcnta\trial@flush@seen@num
+ \@tempcntb\z@
+ \loop
+ \ifnum \@tempcntb < \count@
+
+ \advance\@tempcnta\@ne
+ \advance\@tempcntb\@ne
+ \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
+ \global\let\flush@classes@list@max\@empty
+ \gdef\trial@flush@seen@num{0}
+}
+\def\here@seq@num{0}
+\def\trial@here@seen@num{0}
+\let\@herelist\@empty
+\let\saved@herelist\@empty
+\def\here@point #1#2{
+ \@cons\@herelist#1
+ \gincrement@num\here@seq@num
+ \global\@namedef{here@min@col@\here@seq@num}{1}
+ \setlength\dimen@{#2}
+ \expandafter\xdef
+ \csname here@required@space@\here@seq@num \endcsname
+ {\the\dimen@}
+ \add@badly@guarded@penalty\output@here@float@penalty
+}
+\def \initialise@here@data{
+ \count@\here@seq@num\relax
+ \advance\count@ -\trial@here@seen@num
+ \xdef\here@seq@num{\the\count@}
+ \@tempcnta\trial@here@seen@num
+ \@tempcntb\z@
+ \loop
+ \ifnum \@tempcntb < \count@
+
+ \advance\@tempcnta\@ne
+ \advance\@tempcntb\@ne
+ \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
+}
+\def \split@off@last@line{
+ \dimen@\ht\@cclv
+ \advance\dimen@-\pageshrink
+ \advance\dimen@-1sp
+ \splitmaxdepth\@maxdepth
+ \setbox\z@\vsplit\@cclv to\dimen@
+ \dimen@\csname
+ here@required@space@\trial@here@seen@num
+ \endcsname
+ \advance\dimen@\ht\@cclv
+ \advance\dimen@\dp\@cclv
+ \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
+ \unvbox\@cclv
+ \global\setbox\@cclv\box\z@
+}
+\def \align@collected@galley@and@restart {
+ \remove@guard@box@from@cclv
+ \snap@to@grid{\ht\@cclv}\pagesetup@grid@point@sep
+ \ifdim \returned@size > \pagegoal
+ % \csname col@ht@ \the\curr@col@count\endcsname % not!
+ \ifdim \returned@lower@delta@size < \pageshrink
+ \global\let \returned@size \returned@lower@size
+ \xdef \returned@delta@size {-\returned@lower@delta@size }
+ \else
+ \OuchERROR
+ \fi
+ \else
+ \ifdim \returned@lower@delta@size < \returned@delta@size \relax
+ \ifdim \returned@lower@delta@size < \pageshrink
+ \global\let \returned@size \returned@lower@size
+ \xdef \returned@delta@size {-\returned@lower@delta@size }
+ \fi
+ \fi
+ \fi
+ \vbox to\returned@size{\unvbox\@cclv}
+ \@reinserts
+}
+\def\OuchERROR{
+ \progress@failed{next~ possible~ grid~ point~ in~ column~
+ \the\curr@col@count\space outside~ page}
+}
+\def\std@AlignToGrid{
+ \add@badly@guarded@penalty\output@grid@align@penalty
+}
+\def\IgnoreAlignToGrid{
+ \global\let\AlignToGrid\relax
+}
+\def\ObeyAlignToGrid{
+ \global\let\AlignToGrid\std@AlignToGrid
+}
+\let\AlignToGrid\ERROR
+\def\TextAlignToGrid{ \leavevmode \AlignToGrid }
+\AtBeginDocument{
+ \begingroup
+ \col@count6\relax
+ \initialise@column@data
+ \forall@columns {
+ \def\@elt#1{
+ \global\@namedef{fl@\the\curr@col@count @#1}{0}
+ \global\@namedef{tfl@\the\curr@col@count @#1}{0}
+ }
+ \float@classes@list
+ }
+ \def\@elt#1{
+ \global\expandafter\let\csname fps@#1\endcsname\known@areas
+ \global\@namedef{fl@0@#1}{0}
+ }
+ \float@classes@list
+ \endgroup
+ \@collecting@new@materialtrue
+ \setup@collection@or
+}
+\endinput
+%%
+%% End of file `xo-or.sty'.