diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-13 00:07:56 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-13 00:07:56 +0000 |
commit | 90905949da34ee02fd885fc494a50360f00e296d (patch) | |
tree | 9c0b80cfc6dd9a35a268dfe3557341e496f97611 /Master/texmf-dist/tex/latex/sttools | |
parent | 6ecc8cbfd257eb7f97e87528164659d6c031ba07 (diff) |
sttools
git-svn-id: svn://tug.org/texlive/trunk@1351 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/sttools')
-rw-r--r-- | Master/texmf-dist/tex/latex/sttools/boundbox.sty | 85 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/sttools/cuted.sty | 474 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/sttools/floatpag.sty | 175 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/sttools/flushend.sty | 141 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/sttools/marginal.sty | 171 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/sttools/midfloat.sty | 226 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/sttools/stabular.sty | 116 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/sttools/stfloats.sty | 326 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/sttools/texsort.sty | 289 |
9 files changed, 2003 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/sttools/boundbox.sty b/Master/texmf-dist/tex/latex/sttools/boundbox.sty new file mode 100644 index 00000000000..a08ac801f9e --- /dev/null +++ b/Master/texmf-dist/tex/latex/sttools/boundbox.sty @@ -0,0 +1,85 @@ +%% boundbox.sty +%% Copyright 1997 Sigitas Tolu\v sis +%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania +%% e-mail sigitas@vtex.lt +%% http://www.vtex.lt/tex/download/macros/ +%% +% This program can redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or (at your option) any later version. +% +% PURPOSE: Calculate TeX Bounding Box in points (LaTeX2e) +% +% SHORT DESCRIPTION: +% +% \@calculate +% ----------- +% Internal macro \@calculate writes TeX box dimensions +% to the token list \bound in such format: +% +% \bound{left=x1 top=y1 right=x2 bottom=y2} +% +% x1 - distance in points from the left side of paper +% to the left side of TeX box +% y1 - distance in points from the top of paper +% to the top of TeX box (including head) +% x2 - distance in points from the left side of paper +% to the right side of TeX box +% y2 - distance in points from the top of paper +% to the bottom of TeX box +% (including foot; with option "nofoot" without foot) +% +% \topoint#1#2 +% ------------ +% Dimension #1 in any unit of measure converts to value in points +% and defines it to macro #2 +% +% This package writes such special to DVI: +% \special{mt:TeXBBox left=x1 top=y1 right=x2 bottom=y2} +% +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{boundbox}[1998/02/24] +% +\newif\if@withfoot \@withfoottrue +\DeclareOption{nofoot}{\global\@withfootfalse} +\ProcessOptions +% +\newtoks\bound \bound={}% +\def\@@to#1#2{\begingroup + \xdef\a@act{\global\noexpand#1{\the#1#2}}\a@act +\endgroup} +% +\def\topoint#1#2{% +\@tempdimb=#1 +\@tempcnta=\@tempdimb +\multiply\@tempcnta by10 +\divide\@tempcnta by18647 \advance\@tempcnta by1 +\multiply\@tempcnta by72 \divide\@tempcnta by2540 +\expandafter\def\expandafter#2\expandafter{\the\@tempcnta}} +% +\def\@calculate{% +\@tempdima=1in +\advance\@tempdima by\hoffset +\advance\@tempdima by\oddsidemargin +\topoint{\@tempdima}{\@a}% +\advance\@tempdima\textwidth +\topoint{\@tempdima}{\@c}% +\@tempdima=1in +\advance\@tempdima by\voffset +\advance\@tempdima by\topmargin +\topoint{\@tempdima}{\@b}% +\advance\@tempdima by\headheight +\advance\@tempdima by\headsep +\advance\@tempdima\textheight +\if@withfoot + \advance\@tempdima\footskip +\fi +\topoint{\@tempdima}{\@d}% +\@tempcnta=\@d +\expandafter\def\expandafter\@d\expandafter{\the\@tempcnta}% +\@@to\bound{left=\@a\space top=\@b\space right=\@c\space bottom=\@d}% +} +\AtBeginDocument{\@calculate\special{mt:TeXBBox \the\bound}} +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/sttools/cuted.sty b/Master/texmf-dist/tex/latex/sttools/cuted.sty new file mode 100644 index 00000000000..3b60c518455 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sttools/cuted.sty @@ -0,0 +1,474 @@ +%% cuted.sty +%% Copyright 1997 Sigitas Tolu\v sis +%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania +%% e-mail sigitas@vtex.lt +%% http://www.vtex.lt/tex/download/macros/ +%% +% This program can redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or (at your option) any later version. +% +% PURPOSE: Insert some onecolumn material in full-width on double-column page. +% +% SHORT DESCRIPTION: +% +% It is denoted to place some material in full-width at any place +% on double-column page (\twocolumn mode). The part of material +% can be placed on the next page. Existing text is placed +% under inserted material in two columns (it is reformatted). +% +% Provides new environment: +% +% \begin{strip} ... \end{strip} +% ----------------------------- +% +% Puts \vbox{...} in full-width on double-column page. +% Adds \stripsep glue before and after +% (By default \stripsep=15pt plus2pt minus 2pt). +% It can be problems with floats and footnotes. In the case of +% problems with footnotes it is possible to correct the situation +% using commands \footnotemark and \footnotetext. +% +% Provides new command: +% \oldcolsbreak{#1} +% +% Adds #1 in place of original column break if strip is placed +% on the right column. +% +% \changes{1997/09/02}{improved column balancing} +% \changes{1997/09/03}{float control for \@colroom setting} +% \changes{1997/09/04}{improved \@colroom setting} +% \changes{1997/09/05}{checking for \@viper and \hold@viper} +% \changes{1997/09/09}{compatibility with flushend.sty} +% \changes{1997/09/22}{improved \output ir \@specialoutput} +% \changes{1997/10/01}{improved \output ir \@addviper} +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{cuted}[1997/10/01] +% +\newtoks\At@ViperColsBreak \At@ViperColsBreak{} +\def\oldcolsbreak#1{\global\At@ViperColsBreak{#1}} +\newbox\v@aaa +\newbox\v@ccc +\@ifundefined{stripsep}{\newskip\stripsep\stripsep 15pt plus 2pt minus 2pt}{} +% +\@ifundefined{@viper}{\newbox\@viper}{} +\newif\if@lastviper \@lastviperfalse +\def\@outputdblcol{% + \if@firstcolumn + \global \@firstcolumnfalse + \global \setbox\@leftcolumn \box\@outputbox + \else + \global \@firstcolumntrue + \setbox\@outputbox \vbox {% + \hb@xt@\textwidth {% + \hb@xt@\columnwidth {% + \box\@leftcolumn \hss}% + \hfil + \vrule \@width\columnseprule + \hfil + \hb@xt@\columnwidth {% + \box\@outputbox \hss}% + }% + }% + \ifvoid\hold@viper + \else + \setbox\@outputbox \vbox{\box\hold@viper\box\@outputbox}% + \fi + \@combinedblfloats + \@outputpage + \begingroup + \@dblfloatplacement + \@startdblcolumn + \@whilesw\if@fcolmade \fi + {\@outputpage + \@startdblcolumn}% + \ifvoid\@viper + \else + \global\setbox\@viper\vbox{% + \vskip-\stripsep\unvbox\@viper}\@viperoutput + \fi + \endgroup + \fi +} +\mathchardef\@Mv=10005 +\newcount\viper@penalty +\def\strip{% + \ifinner + \@parmoderr\viper@penalty\z@ + \else + \viper@penalty=-\@Mv\relax + \fi + \global \setbox\@viper\vbox\bgroup% + \hsize\textwidth + \@parboxrestore + \col@number \@ne + \vrule height\topskip width0pt depth0pt +} +\def\endstrip{% + \egroup + \ifnum\viper@penalty <-\@Mii + \penalty -\@Miv + \@tempdima\prevdepth %% saving and restoring \prevdepth added + \vbox{}% %% 26 May 87 to prevent extra vertical + \prevdepth \@tempdima %% space when used in vertical mode + \penalty-\@Mv\relax + \fi +} +\gdef\@viperoutput{% + \global \setbox\@holdpg \vbox{% + \unvbox\@holdpg + \unvbox\@cclv + \setbox\@tempboxa \lastbox + \unskip + }% + \@pagedp \dp\@holdpg + \@pageht \ht\@holdpg + \ifvoid\@viper\else + \advance \@pageht \@pagedp + \ifvoid\footins \else + \advance \@pageht \ht\footins + \advance \@pageht \skip\footins + \advance \@pageht \dp\footins + \fi + \ifvbox \@kludgeins + \ifdim \wd\@kludgeins=\z@ + \advance \@pageht \ht\@kludgeins + \fi + \fi + \@reinserts + \@addviper + \fi +} +\gdef\@specialoutput{% + \ifnum \outputpenalty>-\@Mii + \@doclearpage + \else + \ifnum \outputpenalty<-\@Miii + \ifnum \outputpenalty<-\@MM \deadcycles \z@ \fi + \ifnum \outputpenalty=-10005 + \@viperoutput + \ifnum \outputpenalty<\z@ + \if@nobreak + \else + \addpenalty \interlinepenalty + \fi + \fi + \else + \global \setbox\@holdpg \vbox {\unvbox\@cclv}% + \fi + \else + \global \setbox\@holdpg \vbox{% + \unvbox\@holdpg + \unvbox\@cclv + \setbox\@tempboxa \lastbox + \unskip + }% + \@pagedp \dp\@holdpg + \@pageht \ht\@holdpg + \unvbox \@holdpg + \@next\@currbox\@currlist{% + \ifnum \count\@currbox>\z@ + \advance \@pageht \@pagedp + \ifvoid\footins \else + \advance \@pageht \ht\footins + \advance \@pageht \skip\footins + \advance \@pageht \dp\footins + \fi + \ifvbox \@kludgeins + \ifdim \wd\@kludgeins=\z@ + \advance \@pageht \ht\@kludgeins + \fi + \fi + \@reinserts + \@addtocurcol + \else + \@reinserts + \@addmarginpar + \fi + }\@latexbug + \ifnum \outputpenalty<\z@ + \if@nobreak + \else + \addpenalty \interlinepenalty + \fi + \fi + \fi + \fi +} +\@ifundefined{hold@viper}{\newbox\hold@viper}{} +\newdimen\ht@viper +\def \@addviper {% + \if@firstcolumn + \@insertfalse + \@reqcolroom .5\@pageht + \ht@viper\@reqcolroom + \advance \@reqcolroom \ht\@viper + \advance \@reqcolroom \stripsep + \ifvoid\hold@viper\@tempdima=\z@\else\@tempdima\ht\hold@viper\fi +% + \@tempdimb \ht@viper + \loop + \setbox\v@aaa\copy\@holdpg + \setbox\v@ccc\vbox to\@tempdimb{% + \vsplit\v@aaa to\@tempdimb\vss\vsplit\v@aaa to\@tempdimb}% + \wlog{Extra height:\the\ht\v@aaa\space when \the\@tempdimb}% + \ifvoid\v@aaa \else \advance\@tempdimb 1pt \repeat% + \loop + \setbox\v@aaa\copy\@holdpg + \setbox\v@ccc\vbox to\@tempdimb{% + \vsplit\v@aaa to\@tempdimb\vss}% + \wlog{(2)Left:\the\ht\v@ccc\space Right:\the\ht\v@aaa\space Output:\the\@tempdimb}% + \ifdim \ht\v@ccc<\ht\v@aaa \@tempdimb \the\ht\v@aaa \repeat% + \wlog{- LAST -^^JLeft:\the\ht\v@ccc^^JRight:\the\ht\v@aaa^^JOutput:\the\@tempdimb}% + \setbox\v@ccc\vbox to\@tempdimb{% + \vsplit\@holdpg to\@tempdimb\vss}% +% + \setbox\@tempboxa \vbox {% + \hb@xt@\textwidth {% + \hb@xt@\columnwidth {% +% \vbox to\ht@viper{\vsplit\@holdpg to\ht@viper\vss} \hss}% + \vbox to\ht@viper{\box\v@ccc\vss} \hss}% + \hfil + \vrule \@width\columnseprule + \hfil + \hb@xt@\columnwidth {% + \vbox to\ht@viper{\box\@holdpg\vss} \hss}% + }% + }% + \ifvoid\hold@viper + \global\setbox\hold@viper \vbox {% + \unvbox\@tempboxa + \penalty\interlinepenalty + \vskip\stripsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + }% + \else + \global\setbox\hold@viper \vbox {% + \unvbox\hold@viper + \unvbox\@tempboxa + \penalty\interlinepenalty + \vskip\stripsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + }% + \fi + \ifdim \@colroom>\@reqcolroom + \global\setbox\hold@viper \vbox {% + \unvbox\hold@viper + \box\@viper + \penalty\interlinepenalty + \vskip\stripsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + }% + \@inserttrue + \advance\@tempdima by-\ht\hold@viper + \global \advance \@colht \@tempdima + \ifdim \@colht<2.5\baselineskip + \@latex@warning@no@line {Optional argument of \noexpand\twocolumn + too tall on page \thepage (1 stulpelis)}% + \@emptycol + \if@firstcolumn + \else + \@emptycol + \fi + \global\@lastvipertrue + \else + \global \vsize \@colht + \global \@colroom \@colht + \check@floats + \ifdim\@tempdima>\z@ + \global\advance\@colroom by-\@tempdima + \fi + \ifdim\@colroom<\z@ + \global\@colroom 1pt + \ifdim\@tempdima>\@colht + \@latex@warning@no@line {TOP ir/ar BOT FLOAT's + netelpa lape \thepage (1 stulpelis)}% + \fi + \@emptycol + \if@firstcolumn + \else + \@emptycol + \fi + \global\@lastvipertrue + \fi + \fi + \fi + \else + \@insertfalse + \@reqcolroom\@colht + \advance\@reqcolroom \@pageht + \ht@viper.5\@reqcolroom + \@reqcolroom\ht@viper + \advance \@reqcolroom \ht\@viper + \advance \@reqcolroom \stripsep + \global\setbox\@holdpg\vbox{\unvbox\@leftcolumn + \setbox\@tempboxa\lastbox\unskip\the\At@ViperColsBreak\unvbox\@holdpg}% + \global\At@ViperColsBreak{}% + \ht@viper .5\ht\@holdpg + \ifvoid\hold@viper\@tempdima=\z@\else\@tempdima\ht\hold@viper\fi +% + \@tempdimb \ht@viper + \loop + \setbox\v@aaa\copy\@holdpg + \setbox\v@ccc\vbox to\@tempdimb{% + \vsplit\v@aaa to\@tempdimb\vss\vsplit\v@aaa to\@tempdimb}% + \wlog{Extra height:\the\ht\v@aaa\space when \the\@tempdimb}% + \ifvoid\v@aaa \else \advance\@tempdimb 1pt \repeat% + \loop + \setbox\v@aaa\copy\@holdpg + \setbox\v@ccc\vbox to\@tempdimb{% + \vsplit\v@aaa to\@tempdimb\vss}% + \wlog{(2)Left:\the\ht\v@ccc\space Right:\the\ht\v@aaa\space Output:\the\@tempdimb}% + \ifdim \ht\v@ccc<\ht\v@aaa \@tempdimb \the\ht\v@aaa \repeat% + \wlog{- LAST -^^JLeft:\the\ht\v@ccc^^JRight:\the\ht\v@aaa^^JOutput:\the\@tempdimb}% + \setbox\v@ccc\vbox to\@tempdimb{% + \vsplit\@holdpg to\@tempdimb\vss}% +% + \setbox\@tempboxa\vbox{% + \hb@xt@\textwidth {% + \hb@xt@\columnwidth {% +% \vbox to\ht@viper{\vsplit\@holdpg to \ht@viper\vss} \hss}% + \vbox to\ht@viper{\box\v@ccc\vss} \hss}% + \hfil + \vrule \@width\columnseprule + \hfil + \hb@xt@\columnwidth {% + \vbox to\ht@viper{\box\@holdpg\vss} \hss}% + }% + }% + \ifvoid\hold@viper + \global\setbox\hold@viper \vbox {% + \unvbox\@tempboxa + \penalty\interlinepenalty + \vskip\stripsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + }% + \else + \global\setbox\hold@viper \vbox {% + \unvbox\hold@viper + \unvbox\@tempboxa + \penalty\interlinepenalty + \vskip\stripsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + }% + \fi + \ifdim \@colht>\@reqcolroom + \global\setbox\hold@viper \vbox {% + \unvbox\hold@viper + \box\@viper + \penalty\interlinepenalty + \vskip\stripsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + }% + \@inserttrue + \global\@firstcolumntrue + \advance\@tempdima by-\ht\hold@viper + \global \advance \@colht \@tempdima + \ifdim \@colht<2.5\baselineskip + \@latex@warning@no@line {Optional argument of \noexpand\twocolumn + too tall on page \thepage (2 stulpelis)}% + \@emptycol + \if@firstcolumn + \else + \@emptycol + \fi + \global\@lastvipertrue + \else + \global \vsize \@colht + \global \@colroom \@colht + \check@floats + \ifdim\@tempdima>\z@ + \global\advance\@colroom by-\@tempdima + \fi + \ifdim\@colroom<\z@ + \global\@colroom 1pt + \ifdim\@tempdima>\@colht + \@latex@warning@no@line {TOP ir/ar BOT FLOAT's + netelpa lape \thepage (2 stulpelis)}% + \fi + \@emptycol + \if@firstcolumn + \else + \@emptycol + \fi + \global\@lastvipertrue + \fi + \fi + \fi + \fi + \if@insert + \else + \advance\@tempdima by-\ht\hold@viper + \global \advance \@colht \@tempdima + \global\setbox\hold@viper \vbox {% + \unvbox\hold@viper + \vsplit\@viper to \@colht + \vss + }% + \vbox{}% + \global\@firstcolumnfalse + \newpage + \fi +} + +\def \check@floats {% + \global\@tempdima\z@ + \let \@elt \ht@comflelt + \ifx \@toplist\@empty \else\@toplist \fi + \ifx \@botlist\@empty \else\@botlist \fi +} +\def\ht@comflelt#1{\setbox\@tempboxa\vbox{\copy #1\vskip\floatsep}% +\global\advance\@tempdima\ht\@tempboxa} + +\output {% + \let \par \@@par + \ifnum \outputpenalty<-\@M + \@specialoutput + \else + \@makecol + \@opcol + \@startcolumn + \@whilesw \if@fcolmade \fi + {% + \@opcol\@startcolumn}% + \fi + \ifnum \outputpenalty>-\@Miv + \ifdim \@colroom<1.5\baselineskip + \ifdim \@colroom<\textheight + \@latex@warning@no@line {Text page \thepage\space + contains only floats}% + \if@lastviper\else\@emptycol\fi + \if@twocolumn + \if@firstcolumn + \else + \@emptycol + \fi + \fi + \global\@lastviperfalse + \else + \global \vsize \@colroom + \fi + \else + \global \vsize \@colroom + \fi + \else + \ifnum\outputpenalty<-100005 + \global \vsize \maxdimen + \else + \global \vsize \@colroom + \fi + \fi +} +\endinput + + + + diff --git a/Master/texmf-dist/tex/latex/sttools/floatpag.sty b/Master/texmf-dist/tex/latex/sttools/floatpag.sty new file mode 100644 index 00000000000..9dbc540c484 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sttools/floatpag.sty @@ -0,0 +1,175 @@ +%% floatpag.sty +%% Copyright 1999 V. Statulevi\v cius +%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania +%% e-mail vytas@vtex.lt +%% http://www.vtex.lt/tex/download/macros/ +%% +% This program can redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or (at your option) any later version. +% +% PURPOSE: provides commands to apply different pagestyles +% to the full page floats. +% +% USAGE: +% \floatpagestyle{foo} will apply pagestyle 'foo' to all pages +% occupied by full page floats. +% +% \rotfloatpagestyle{foo} will apply pagestyle 'foo' to all pages +% occupied by sideways figures and tables +% produced with the help of 'rotating.sty' +% package (Sebastian Rahtz and Leonor Barroca) +% +% \thisfloatpagestyle{foo} will apply pagestyle 'foo' to a page where +% this command was used inside figure or table +% environment +% +% DEFAULT: +% \floatpagestyle{headings} +% \rotfloatpagestyle{plain} +% +% The macros, developed by Sigitas Tolusis <sigitas@vtex.lt>, +% were used in this package. +% +% The following commands from the LaTeX2e kernel were redefined: +% \@xfloat, \@vtryfc +% The following command from the rotating.sty was redefined: +% \@xrotfloat +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{floatpag} + [1999/04/29 + FLOAT PAGESTYLE] +\def\floatpagestyle#1{\gdef\at@float@page{\thispagestyle{#1}}} +\def\rotfloatpagestyle#1{\gdef\@r@f@pagestyle{#1}\gdef\at@rotfloat@page{\thispagestyle{#1}}} +\floatpagestyle{headings} +\rotfloatpagestyle{plain} +% +\def\thisfloatpagestyle#1{% + \expandafter\expandafter\expandafter\gdef\expandafter + \csname\number\@currbox @float\endcsname{\thispagestyle{#1}}\relax} +% +% Perrabibreziame \x@float - paprasti float'ai +\def\@xfloat #1[#2]{% + \@nodocument + \def \@captype {#1}% + \def \@fps {#2}% + \@onelevel@sanitize \@fps + \def \reserved@b {!}% + \ifx \reserved@b \@fps + \@fpsadddefault + \else + \ifx \@fps \@empty + \@fpsadddefault + \fi + \fi + \ifhmode + \@bsphack + \@floatpenalty -\@Mii + \else + \@floatpenalty-\@Miii + \fi + \ifinner + \@parmoderr\@floatpenalty\z@ + \else + \@next\@currbox\@freelist + {% + \@tempcnta \sixt@@n + \expandafter \@tfor \expandafter \reserved@a + \expandafter :\expandafter =\@fps + \do + {% + \if \reserved@a h% + \ifodd \@tempcnta + \else + \advance \@tempcnta \@ne + \fi + \fi + \if \reserved@a t% + \@setfpsbit \tw@ + \fi + \if \reserved@a b% + \@setfpsbit 4% + \fi + \if \reserved@a p% + \@setfpsbit 8% + \fi + \if \reserved@a !% + \ifnum \@tempcnta>15 + \advance\@tempcnta -\sixt@@n\relax + \fi + \fi + }% + \@tempcntb \csname ftype@\@captype \endcsname + \multiply \@tempcntb \@xxxii + \advance \@tempcnta \@tempcntb + \global \count\@currbox \@tempcnta + \expandafter\expandafter\expandafter\gdef\expandafter + \csname\number\@currbox @float\endcsname{\at@float@page}\relax + }% + \@fltovf + \fi + \global \setbox\@currbox + \color@vbox + \normalcolor + \vbox \bgroup + \hsize\columnwidth + \@parboxrestore + \@floatboxreset +}% +% +% 2e rotating.sty v. 2.10: +\def\e@xrotfloat#1[#2]{% + \@float{#1}[#2]% + \thisfloatpagestyle{\@r@f@pagestyle}% + \begin{lrbox}\rot@float@box + \begin{minipage}\textheight + } + +% 2.09 rotating.sty v. 1.6 +\def\n@xrotfloat#1[#2]{\ifhmode \@bsphack\@floatpenalty -\@Mii\else + \@floatpenalty-\@Miii\fi\def\@captype{#1}\ifinner + \@parmoderr\@floatpenalty\z@ + \else\@next\@currbox\@freelist{\@tempcnta\csname ftype@#1\endcsname + \multiply\@tempcnta\@xxxii\advance\@tempcnta\sixt@@n + \@tfor \@tempa :=#2\do + {\if\@tempa h\advance\@tempcnta \@ne\fi + \if\@tempa t\advance\@tempcnta \tw@\fi + \if\@tempa b\advance\@tempcnta 4\relax\fi + \if\@tempa p\advance\@tempcnta 8\relax\fi + }\global\count\@currbox\@tempcnta}\@fltovf\fi + \expandafter\expandafter\expandafter\gdef\expandafter\csname\number\@currbox + @float\endcsname{\at@rotfloat@page}\relax + \global\setbox\@currbox\vbox\bgroup + \hsize\textheight \@parboxrestore +}% +% +% Tikrinam, kokia rotating versija: 2e ar 209: +% 1999.02.08 Tikriname dokumento pradzioje, t.y. neaisku +% kada rotating stilius buvo pakrautas: +\AtBeginDocument{% +\@ifpackageloaded{rotating}% +{\let\@xrotfloat\e@xrotfloat\let\n@xrotfloat\relax}% +{\let\@xrotfloat\n@xrotfloat\let\e@xrotfloat\relax}}% +% +%% "Kablys" output proceduroje ivykdantis komanda +\def\spec@float #1{\expandafter\csname\number#1@float\endcsname + \expandafter\expandafter\expandafter\gdef\expandafter\csname\number#1@float\endcsname{}} + +\def\@vtryfc #1{% + \global\setbox\@outputbox\vbox{}% + \let\@elt\@wtryfc + \@flsucceed + \let\@elt\spec@float + \@flsucceed + \global\setbox\@outputbox \vbox to\@colht{% + \vskip \@fptop + \vskip -\@fpsep + \unvbox \@outputbox + \vskip \@fpbot}% + \let\@elt\relax + \xdef #1{\@failedlist\@flfail}% + \xdef\@freelist{\@freelist\@flsucceed}} + +\endinput diff --git a/Master/texmf-dist/tex/latex/sttools/flushend.sty b/Master/texmf-dist/tex/latex/sttools/flushend.sty new file mode 100644 index 00000000000..83e3186a6c6 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sttools/flushend.sty @@ -0,0 +1,141 @@ +%% flushend.sty +%% Copyright 1997 Sigitas Tolu\v sis +%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania +%% e-mail sigitas@vtex.lt +%% http://www.vtex.lt/tex/download/macros/ +%% +% This program can redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or (at your option) any later version. +% +% PURPOSE: Balanced columns on last page in twocolumn mode. +% +% SHORT DESCRIPTION: +% +% \flushend (loaded by default) +% --------- +% Switches on column balancing at last page +% +% \raggedend +% ---------- +% Switches off column balancing at last page +% +% \atColsBreak={#1} +% ------------------ +% Adds #1 in place of original column break (without balancing) +% Example: \atColsBreak{\vskip-2pt} +% +% \showcolsendrule +% ---------------- +% Adds rule to the bottom of columns (just for debugging) +% +% P.S. To stretch right column by #1 add command \vskip-#1 just before +% command \end{document}. +% TO shrink right column by #1 add command \vskip#1 just before +% command \end{document}. +% Example: \vskip-10pt +% \end{document} +% +% \changes{1997/05/16}{first version} +% \changes{1997/09/09}{support for compatibility with cuted.sty} +% \changes{1997/10/01}{\vipersep changed to \stripsep for compatibility with cuted.sty} +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{flushend}[1997/10/01] +% +\newbox\@aaa +\newbox\@ccc +\@ifundefined{@viper}{\newbox\@viper}{} +\@ifundefined{hold@viper}{\newbox\hold@viper}{} +\newtoks\atColsBreak \atColsBreak={} +\newdimen\@extra@skip \@extra@skip\z@ +\newdimen\@nd@page@rule \@nd@page@rule\z@ +\def\last@outputdblcol{% + \if@firstcolumn + \global \@firstcolumnfalse + \global \setbox\@leftcolumn \box\@outputbox + \else + \global \@firstcolumntrue + \if@lastpage + \@tempdima\ht\@leftcolumn + \splittopskip\topskip\splitmaxdepth\maxdepth + \setbox\@tempboxa\vbox{% + \unvbox\@leftcolumn\setbox0\lastbox\unskip% + \the\atColsBreak% + \unvbox\@outputbox\setbox0\lastbox\unskip}% + \@tempdimb .5\ht\@tempboxa% + \loop + \setbox\@aaa\copy\@tempboxa% + \setbox\@ccc\vbox to\@tempdimb{% + \vsplit\@aaa to\@tempdimb\vss\vsplit\@aaa to\@tempdimb}% + \wlog{Extra height:\the\ht\@aaa\space when \the\@tempdimb}% + \ifvoid\@aaa \else \advance\@tempdimb 1pt \repeat% + \loop + \setbox\@aaa\copy\@tempboxa% + \setbox\@ccc\vbox to\@tempdimb{% + \vsplit\@aaa to\@tempdimb\vss}% + \wlog{(2)Left:\the\ht\@ccc\space Right:\the\ht\@aaa\space Output:\the\@tempdimb}% + \ifdim \ht\@ccc<\ht\@aaa \@tempdimb \the\ht\@aaa \repeat% + \wlog{- LAST -^^JExtra skip:\the\@extra@skip^^JLeft:\the\ht\@ccc^^JRight:\the\ht\@aaa^^JOutput:\the\@tempdimb}% + \setbox\@ccc\vbox to\@tempdimb{% + \vsplit\@tempboxa to\@tempdimb\vss}% + \setbox\@leftcolumn\vbox to\@tempdima{% + \vbox to\@tempdimb{\unvbox\@ccc}% + \hrule\@height\@nd@page@rule% + \vss}% + \setbox\@outputbox\vbox to\@tempdima{% + \vbox to\@tempdimb{\unvbox\@tempboxa\vfilneg\vskip\@extra@skip}% + \hrule\@height\@nd@page@rule% + \vss}% + \setbox\@outputbox \vbox {% + \hb@xt@\textwidth {% + \hb@xt@\columnwidth {% + \box\@leftcolumn \hss}% + \hfil + \vrule \@width\columnseprule + \hfil + \hb@xt@\columnwidth {% + \box\@outputbox \hss}% + }% + }% + \else + \setbox\@outputbox \vbox {% + \hb@xt@\textwidth {% + \hb@xt@\columnwidth {% + \box\@leftcolumn \hss}% + \hfil + \vrule \@width\columnseprule + \hfil + \hb@xt@\columnwidth {% + \box\@outputbox \hss}% + }% + }% + \fi + \ifvoid\hold@viper + \else + \setbox\@outputbox \vbox{\box\hold@viper\box\@outputbox}% + \fi + \@combinedblfloats + \@outputpage + \begingroup + \@dblfloatplacement + \@startdblcolumn + \@whilesw\if@fcolmade \fi + {\@outputpage + \@startdblcolumn}% + \ifvoid\@viper + \else + \global\setbox\@viper\vbox{% + \vskip-\stripsep\unvbox\@viper}\@viperoutput + \fi + \endgroup + \fi +} +\let\prev@enddocument\enddocument +\newif\if@lastpage \@lastpagefalse +\def\enddocument{\global\@lastpagetrue\let\@outputdblcol\last@outputdblcol\prev@enddocument} +\def\raggedend{\global\let\enddocument\prev@enddocument} +\def\flushend{\gdef\enddocument{\global\@lastpagetrue\let\@outputdblcol\last@outputdblcol\prev@enddocument}} +\def\showcolsendrule{\global\@nd@page@rule=.4pt} +\endinput diff --git a/Master/texmf-dist/tex/latex/sttools/marginal.sty b/Master/texmf-dist/tex/latex/sttools/marginal.sty new file mode 100644 index 00000000000..58b2fb373ce --- /dev/null +++ b/Master/texmf-dist/tex/latex/sttools/marginal.sty @@ -0,0 +1,171 @@ +%% marginal.sty +%% Copyright 1997 Sigitas Tolu\v sis +%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania +%% e-mail sigitas@vtex.lt +%% http://www.vtex.lt/tex/download/macros/ +%% +% This program can redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or (at your option) any later version. +% +% PURPOSE: Enlarge free and show lost marginal inserts +% +% SHORT DESCRIPTION: +% +% \showlostmarginals +% ------------------ +% Outputs lost marginal notes at the left of page +% +% \enlargefreelist +% ---------------- +% Adds more(34) free inserts to freelist +% +% \onesidemarginals +% ----------------- +% Outputs marginal notes only on one side. It saves one half +% of the available free inserts. +% +\ProvidesPackage{marginal}[1997/04/01] +% +\newif\if@mparlost \@mparlostfalse +% +\newbox\@mparlostbox +\setbox\@mparlostbox\vbox{} +% +\gdef\@fltovfpar{\global\@mparlosttrue% + \@latex@warning{Too many unprocessed (marginal)floats}\relax} +\gdef\@fltovfmess{% + \@latex@error{Too many unprocessed floats}\@ehb} +% +\def\marginpar{\ifhmode \@bsphack\@floatpenalty -\@Mii\else + \@floatpenalty-\@Miii\fi\ifinner + \@parmoderr\@floatpenalty\z@ + \else\@next\@currbox\@freelist{}{}\@next\@marbox\@freelist{\global + \count\@marbox\m@ne}{\@floatpenalty\z@ \@fltovfmess + \def\@currbox{\@tempboxa}\def\@marbox{\@tempboxa}}\fi + \@ifnextchar [\@xmpar\@ympar} +% +\long\def \@savemarbox #1#2{% + \global\setbox #1% + \color@vbox + \vtop{% + \hsize\marginparwidth + \@parboxrestore + \@marginparreset + #2% + \global\@minipagefalse + \outer@nobreak + }% + \color@endbox% + \if@mparlost\global\setbox\@mparlostbox\vbox{\unvbox\@mparlostbox\copy#1}% + \global\@mparlostfalse\fi +} +% +% \showlostmarginals - outputs lost marginal notes at the left of the page +% +\def\showlostmarginals{% + \global\let\old@textbottom\@textbottom + \gdef\@textbottom{\vtop to\z@{\hbox to\z@{\kern-\wd\@mparlostbox\vbox + to\z@{\kern-\ht\@mparlostbox\box\@mparlostbox\vfill}}}\old@textbottom}% + \global\let\@fltovfmess\@fltovfpar} +% +% \enlargefreelist - Adds more(34) free inserts to freelist +% +\def\enlargefreelist{% +\newinsert\bx@S +\newinsert\bx@T +\newinsert\bx@U +\newinsert\bx@V +\newinsert\bx@W +\newinsert\bx@X +\newinsert\bx@Y +\newinsert\bx@Z +\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 +\newinsert\bx@s +\newinsert\bx@t +\newinsert\bx@u +\newinsert\bx@v +\newinsert\bx@w +\newinsert\bx@x +\newinsert\bx@y +\newinsert\bx@z +\gdef\@freelist{\@elt\bx@A\@elt\bx@B\@elt\bx@C\@elt\bx@D\@elt\bx@E + \@elt\bx@F\@elt\bx@G\@elt\bx@H\@elt\bx@I\@elt\bx@J + \@elt\bx@K\@elt\bx@L\@elt\bx@M\@elt\bx@N + \@elt\bx@O\@elt\bx@P\@elt\bx@Q\@elt\bx@R + \@elt\bx@S\@elt\bx@T\@elt\bx@U\@elt\bx@V + \@elt\bx@W\@elt\bx@X\@elt\bx@Y\@elt\bx@Z + \@elt\bx@a\@elt\bx@b\@elt\bx@c\@elt\bx@d\@elt\bx@e + \@elt\bx@f\@elt\bx@g\@elt\bx@h\@elt\bx@i\@elt\bx@j + \@elt\bx@k\@elt\bx@l\@elt\bx@m\@elt\bx@n + \@elt\bx@o\@elt\bx@p\@elt\bx@q\@elt\bx@r + \@elt\bx@s\@elt\bx@t\@elt\bx@u\@elt\bx@v + \@elt\bx@w\@elt\bx@x\@elt\bx@y\@elt\bx@z}% +} +% +% \onesidemarginals - outputs marginals only on one side +% +\def\onesidemarginals{% +\newbox\@marbox +\gdef\@addmarginpar{\@cons\@freelist\@currbox + \@tempdima\@mparbottom + \advance\@tempdima -\@pageht + \advance\@tempdima\ht\@currbox + \ifdim\@tempdima >\z@ + \@latex@warning@no@line {Marginpar on page \thepage\space moved}% + \else + \@tempdima\z@ + \fi + \global\@mparbottom\@pageht + \global\advance\@mparbottom\@tempdima + \global\advance\@mparbottom\dp\@currbox + \global\advance\@mparbottom\marginparpush + \advance\@tempdima -\ht\@currbox + \global\setbox \@currbox + \vbox {\vskip \@tempdima + \box \@currbox}% + \global \ht\@currbox \z@ + \global \dp\@currbox \z@ + \kern -\@pagedp + \nointerlineskip + \hb@xt@\columnwidth + {\hskip\columnwidth \hskip\marginparsep \box\@currbox \hss}% + \nointerlineskip + \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}}% +% +\gdef\marginpar{\ifhmode \@bsphack\@floatpenalty -\@Mii\else + \@floatpenalty-\@Miii\fi\ifinner\@parmoderr\@floatpenalty\z@ + \else\@next\@currbox\@freelist{\global + \count\@currbox\m@ne}{\@floatpenalty\z@ \@fltovfmess + \def\@currbox{\@tempboxa}}\fi + \@ifnextchar [\@xmpar\@ympar}% +% +\long\gdef\@xmpar[##1]##2{\@savemarbox\@currbox{##2}\@xympar}% +\long\gdef\@ympar##1{\@savemarbox\@currbox{##1}\@xympar}% +\def \@xympar{% +% \ifnum\@floatpenalty <\z@\@cons\@currlist\@marbox\fi + \setbox\@tempboxa + \color@vbox + \vbox \bgroup + \end@float + \global \@ignorefalse \@esphack}% +} +\endinput diff --git a/Master/texmf-dist/tex/latex/sttools/midfloat.sty b/Master/texmf-dist/tex/latex/sttools/midfloat.sty new file mode 100644 index 00000000000..d9d11129ee7 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sttools/midfloat.sty @@ -0,0 +1,226 @@ +%% midfloat.sty +%% Copyright 1997 Sigitas Tolu\v sis +%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania +%% e-mail sigitas@vtex.lt +%% http://www.vtex.lt/tex/download/macros/ +%% +% This program can redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or (at your option) any later version. +% +% PURPOSE: Insert some material in full-width on double-column page. +% +% SHORT DESCRIPTION: +% +% It is denoted to place some material (from the left column) +% in full-width at any place (but not at the top) on double-column +% page (\twocolumn mode). Existing text remains as it was before +% insert. Placement is restricted to one page. (It is some kind of +% dbfloat intext). +% +% Provides new environment: +% +% \begin{strip}[#1/#2] ... \end{strip} +% ----------------------------- +% +% Puts \vbox{...} in full-width on double-column page. +% Parameters #1 and #2 are optional. +% By default #1=0pt and #2=0pt. +% The material on the right column under strip is stretched down +% by #1 and below strip is moved down by #2. +% +% It can be problems with floats and footnotes. In the case of +% problems with footnotes it is possible to correct the situation +% using commands \footnotemark and \footnotetext. +% +% \changes{1997/10/01}{some names} +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{midfloat}[1997/10/01] +% +\newif\if@vihproof \@vihprooftrue +\newtoks\juo@sar \juo@sar={} +\def\@ca#1#2#3#4{} +\@ifundefined{stripsep}{\newskip\stripsep\stripsep 15pt}{} +% +\newskip\m@addvipersep +\m@addvipersep\z@ +\newskip\c@addvipersep +\c@addvipersep\z@ +\newdimen\ht@strip +\newdimen\right@cor +\newdimen\cor@height \cor@height=0pt +\newdimen\juo@pr +\newdimen\juo@ht +\newbox\@viper +\newcount\juo@sk +\newdimen\c@colht +\newbox\@rightcolumn + +\def\add@strip#1#2#3#4{\begingroup% + \xdef\ex@{\global\noexpand\juo@sar{\the\juo@sar\noexpand\@ca{#1}{#2}{#3}{#4}}}\ex@% +\endgroup} + +\def\remove@strip#1{\ifx#1\@empty\global\juo@sk=0\else + \global\advance\juo@sk by-1\expandafter\next@item\the #1\@@#1\fi} +\def\next@item \@ca #1#2#3#4#5\@@#6{\global #6={#5}\global\juo@pr=#1\global\juo@ht=#2% +\global\cor@height=#3\global\m@addvipersep=#4} + +\def\strip{\@ifnextsymb[{\@strip}{\@strip[0pt/0pt]}} +\def\@strip[#1/#2]{\global\@tempdima=#1\global\@tempdimb=#2% + \global \setbox\@viper\vbox\bgroup% + \hsize\textwidth + \@parboxrestore + \col@number \@ne + \vrule height\topskip width0pt depth0pt +} +\def\endstrip{% + \egroup + \if@firstcolumn + \ifdim\pagetotal>\z@ + \vskip\stripsep + \global\ht@strip\pagegoal + \global\advance\ht@strip by-\pagetotal + \global\advance\ht@strip by-\stripsep + \global\advance\ht@strip by-\ht\@viper + \global\advance\ht@strip by-\stripsep + \global\juo@ht=\ht\@viper + \else + \global\ht@strip\z@ + \fi + \ifdim\ht@strip>\z@ + \unvbox\@viper + \vskip\stripsep + \add@strip{\the\pagetotal}{\the\juo@ht}{\the\@tempdima}{\the\@tempdimb}% + \global\advance\juo@sk by1 + \else + \@latex@error{Strip needs more place!}\@ehc + \if@vihproof + \framebox[\columnwidth]{??? Strip ???}% + \fi + \fi + \else + \@latex@error{Strip is used only on left column!}\@ehc + \if@vihproof + \framebox[\columnwidth]{??? Strip ???}% + \fi + \fi +} +\def\@outputdblcol{% + \if@firstcolumn + \global \@firstcolumnfalse + \global \setbox\@leftcolumn \box\@outputbox + \global\c@colht\@colht\global\c@addvipersep\z@ + \ifnum\juo@sk>0 + \remove@strip\juo@sar + \global\@colht\the\juo@pr + \ifdim\right@cor>\z@ + \global\advance\@colht by\right@cor + \fi + \global\advance\@colht by\cor@height + \global\cor@height=0pt + \fi + \global \setbox\@rightcolumn \vbox{}% + \else + \ifdim\c@colht>\@colht + \@tempdima\@colht + \ifdim\@colht>\z@ + \global\setbox\@rightcolumn \vbox{% + \unvbox\@rightcolumn + \vbox to\@tempdima{% + \vskip\c@addvipersep\unvbox\@outputbox}% + \vskip\stripsep + \vrule height\the\juo@ht width 0pt depth 0pt + \vskip\stripsep + }% + \global\c@addvipersep\m@addvipersep + \else + \global\setbox\@rightcolumn \vbox{% + \unvbox\@rightcolumn + \vrule height\the\juo@ht width 0pt depth 0pt + \vskip\stripsep + }% + \fi + \ifnum\juo@sk>0 + \remove@strip\juo@sar + \global\@colht\the\juo@pr + \global\advance\@colht by -\ht\@rightcolumn + \global\advance\@colht by\cor@height + \global\cor@height=0pt + \else + \global\advance\c@colht by-\ht\@rightcolumn + \global\@colht\c@colht + \fi + \else + \global \@firstcolumntrue + \global\setbox\@outputbox\vbox to\ht\@leftcolumn{% + \unvbox\@rightcolumn + \vskip\c@addvipersep + \unvbox\@outputbox + }% + \setbox\@outputbox \vbox {% + \hb@xt@\textwidth {% + \hb@xt@\columnwidth {% + \box\@leftcolumn \hss}% + \hfil + \vrule \@width\columnseprule + \hfil + \hb@xt@\columnwidth {% + \box\@outputbox \hss}% + }% + }% + \@combinedblfloats + \@outputpage + \begingroup + \@dblfloatplacement + \@startdblcolumn + \@whilesw\if@fcolmade \fi + {\@outputpage + \@startdblcolumn}% + \endgroup + \global\juo@sk=0\global\juo@sar={}% + \global\cor@height\z@\global\c@addvipersep\z@ + \fi + \fi +} + +\def \@cflt{% + \let \@elt \@comflelt + \setbox\@tempboxa \vbox{}% + \@toplist + \global\right@cor\ht\@tempboxa + \ifdim\right@cor>\z@ + \global\advance\right@cor by-\floatsep + \global\advance\right@cor by\textfloatsep + \fi + \setbox\@outputbox \vbox{% + \boxmaxdepth \maxdepth + \unvbox\@tempboxa + \vskip -\floatsep + \topfigrule + \vskip \textfloatsep + \unvbox\@outputbox + }% + \let\@elt\relax + \xdef\@freelist{\@freelist\@toplist}% + \global\let\@toplist\@empty +} + +\def\@ifnextsymb#1#2#3{% + \let\reserved@d=#1% + \def\reserved@a{#2}\def\reserved@b{#3}% + \futurelet\@let@token\@ifnsymb} +\def\@ifnsymb{% + \ifx\@let@token\@sptoken + \let\reserved@c\reserved@b + \else + \ifx\@let@token\reserved@d + \let\reserved@c\reserved@a + \else + \let\reserved@c\reserved@b + \fi + \fi + \reserved@c} + +\endinput diff --git a/Master/texmf-dist/tex/latex/sttools/stabular.sty b/Master/texmf-dist/tex/latex/sttools/stabular.sty new file mode 100644 index 00000000000..a408878b419 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sttools/stabular.sty @@ -0,0 +1,116 @@ +%% stabular.sty +%% Copyright 1998 Sigitas Tolu\v sis +%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania +%% e-mail sigitas@vtex.lt +%% http://www.vtex.lt/tex/download/macros/ +%% +% This program can redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or (at your option) any later version. +% +% PURPOSE: Improve tabular environment. +% +% SHORT DESCRIPTION: +% +% Changed internal commands: \@mkpream, \@addamp, \@xhline +% +% Provides new commands in tabular (used after command \\): +% \emptyrow[#1] +% ------------- +% Adds empty row, #1 - height of the row +% +% \tabrow{#1}[#2] +% --------------- +% Adds row of natural height: #1\\[#2] +% +% Provides new environments: stabular and stabular* +% -------- --------- +% One more multi-page version of tabular +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{stabular}[1998/03/19] +% +\def\empty@finalstrut#1{% + \unskip\ifhmode\nobreak\fi\vrule\@width\z@\@height\z@\@depth\z@} +\def\no@strut{\global\setbox\@arstrutbox\hbox{% + \vrule \@height\z@ + \@depth\z@ + \@width\z@}% + \gdef\@endpbox{\empty@finalstrut\@arstrutbox\par\egroup\hfil}% +}% +\def\yes@strut{\global\setbox\@arstrutbox\hbox{% + \vrule \@height\arraystretch \ht\strutbox + \@depth\arraystretch \dp\strutbox + \@width\z@}% + \gdef\@endpbox{\@finalstrut\@arstrutbox\par\egroup\hfil}% +}% +\def\@mkpream#1{\@firstamptrue\@lastchclass6 + \let\@preamble\@empty\def\empty@preamble{\add@ins}% + \let\protect\@unexpandable@protect + \let\@sharp\relax\let\add@ins\relax + \let\@startpbox\relax\let\@endpbox\relax + \@expast{#1}% + \expandafter\@tfor \expandafter + \@nextchar \expandafter:\expandafter=\reserved@a\do + {\@testpach\@nextchar + \ifcase \@chclass \@classz \or \@classi \or \@classii \or \@classiii + \or \@classiv \or\@classv \fi\@lastchclass\@chclass}% + \ifcase \@lastchclass \@acol + \or \or \@preamerr \@ne\or \@preamerr \tw@\or \or \@acol \fi} +\def\@addamp{% + \if@firstamp + \@firstampfalse + \edef\empty@preamble{\add@ins}% + \else + \edef\@preamble{\@preamble &}% + \edef\empty@preamble{\expandafter\noexpand\empty@preamble &\add@ins}% + \fi} +\newif\iftw@hlines \tw@hlinesfalse +\def\@xhline{\ifx\reserved@a\hline + \tw@hlinestrue + \else\ifx\reserved@a\Hline + \tw@hlinestrue + \else + \tw@hlinesfalse + \fi\fi + \iftw@hlines + \aftergroup\do@after + \fi + \ifnum0=`{\fi}% +} +\def\do@after{\emptyrow[\the\doublerulesep]} +\def\emptyrow{\noalign\bgroup\@ifnextchar[\@emptyrow{\@emptyrow[\z@]}} +\def\@emptyrow[#1]{\no@strut\gdef\add@ins{\vrule \@height\z@ \@depth#1 \@width\z@}\egroup% +\empty@preamble\\ +\noalign{\yes@strut\gdef\add@ins{\vrule \@height\z@ \@depth\z@ \@width\z@}}% +} +\def\tabrow#1{\noalign\bgroup\@ifnextchar[{\@tabrow{#1}}{\@tabrow{#1}[]}} +\def\@tabrow#1[#2]{\no@strut\egroup#1\ifx.#2.\\\else\\[#2]\fi\noalign{\yes@strut}} +% +\def\endstabular{\crcr\egroup\egroup \egroup} +\expandafter \let \csname endstabular*\endcsname = \endstabular +\def\stabular{\let\@halignto\@empty\@stabular} +\@namedef{stabular*}#1{\def\@halignto{to#1}\@stabular} +\def\@stabular{\leavevmode \bgroup \let\@acol\@tabacol + \let\@classz\@tabclassz + \let\@classiv\@tabclassiv \let\\\@tabularcr\@stabarray} +\def\@stabarray{\m@th\@ifnextchar[\@sarray{\@sarray[c]}} +\def\@sarray[#1]#2{% + \bgroup + \setbox\@arstrutbox\hbox{% + \vrule \@height\arraystretch\ht\strutbox + \@depth\arraystretch \dp\strutbox + \@width\z@}% + \@mkpream{#2}% + \edef\@preamble{% + \ialign \noexpand\@halignto + \bgroup \@arstrut \@preamble \tabskip\z@skip \cr}% + \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox + \let\tabularnewline\\% +% \let\par\@empty + \let\@sharp##% + \set@typeset@protect + \lineskip\z@skip\baselineskip\z@skip + \@preamble} +\endinput diff --git a/Master/texmf-dist/tex/latex/sttools/stfloats.sty b/Master/texmf-dist/tex/latex/sttools/stfloats.sty new file mode 100644 index 00000000000..e13649e473d --- /dev/null +++ b/Master/texmf-dist/tex/latex/sttools/stfloats.sty @@ -0,0 +1,326 @@ +%% stfloats.sty +%% Copyright 1997, 1999 Sigitas Tolu\v sis +%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania +%% e-mail sigitas@vtex.lt +%% http://www.vtex.lt/tex/download/macros/ +%% +% This program can redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or (at your option) any later version. +% +% PURPOSE: Improve float mechanism and baselineskip settings +% +% SHORT DESCRIPTION: +% +% (It is rewritten version of stkernel package) +% +% Provides new commands: +% +% \dblfloatsatbottom, \dblfloatsattop (removed!) +% ----------------------------------- +% Use instead optional parameters [b] and [t] +% for dblfloat environments (default = [tbp]). +% +% \fnbelowfloat +% ------------- +% Puts footnotes below the bottom floats +% +% \fnunderfloat (default and standard) +% ------------- +% Puts footnotes under the bottom floats +% +% \setbaselinefloat +% ----------------- +% Allows baselineskip to stretch and shrink if \baselineskip +% is set with command \@setfontsize. +% Example: \@setfontsize\normalsize\@xpt{12pt plus .1pt minus .1pt}% +% +% \setbaselinefixed (default and standard) +% Disables baselineskip to stretch and shrink even if \baselineskip +% is set with command \@setfontsize. +% Example: \@setfontsize\normalsize\@xpt{12pt plus .1pt minus .1pt}% +% +% Allows to use optional parameters [t] or [b] for dblfloats. +% +% \changes{1997/08/25}{first version} +% \changes{1997/09/10}{standard LaTeX2e macros are used for dblfloats at top} +% \changes{1997/10/01}{new commands: \fnbelowfloat and \fnunderfloat} +% \changes{1998/09/21}{new commands: \setbaselinefloat and \setbaselinefixed} +% \changes{1999/10/04}{changed dblfloat's output} +% \changes{1999/10/22}{changed \output for older LaTeX distributions} +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{stfloats}[1999/10/22] + +\gdef\@dblbotlist{} +\newcount\@dblbotnum +\newcount\c@dblbotnumber +\setcounter{dblbotnumber}{2} +\def\@dbflt#1{\@ifnextchar[{\@xdblfloat{#1}}{\@xdblfloat{#1}[tbp]}} + +\def \@dblfloatplacement {% + \global \@dbltopnum \c@dbltopnumber + \global \@dblbotnum \c@dblbotnumber + \global \@dbltoproom \dbltopfraction\@colht + \@textmin \@colht + \advance \@textmin -\@dbltoproom + \@fpmin \dblfloatpagefraction\textheight + \@fptop \@dblfptop + \@fpsep \@dblfpsep + \@fpbot \@dblfpbot +} + + +\def\@addtodblcol{% + \begingroup + \@insertfalse + \@setfloattypecounts + \@getfpsbit \tw@ + \ifodd\@tempcnta + \@flsetnum \@dbltopnum + \ifnum \@dbltopnum>\z@ + \@tempswafalse + \ifdim \@dbltoproom>\ht\@currbox + \@tempswatrue + \else + \ifnum \@fpstype<\sixt@@n + \advance \@dbltoproom \@textmin + \ifdim \@dbltoproom>\ht\@currbox + \@tempswatrue + \fi + \advance \@dbltoproom -\@textmin + \fi + \fi + \if@tempswa + \@bitor \@currtype \@dbldeferlist + \if@test + \else + \@bitor \@currtype \@dblbotlist + \if@test + \else + \@tempdima -\ht\@currbox + \advance\@tempdima + -\ifx \@dbltoplist\@empty \dbltextfloatsep \else + \dblfloatsep \fi + \global \advance \@dbltoproom \@tempdima + \global \advance \@colht \@tempdima + \global \advance \@dbltopnum \m@ne + \@cons \@dbltoplist \@currbox + \@inserttrue + \fi + \fi + \fi + \fi + \fi + \if@insert + \else + \@getfpsbit 4\relax + \ifodd\@tempcnta + \@flsetnum \@dblbotnum + \ifnum \@dblbotnum>\z@ + \@tempswafalse + \ifdim \@dbltoproom>\ht\@currbox + \@tempswatrue + \else + \ifnum \@fpstype<\sixt@@n + \advance \@dbltoproom \@textmin + \ifdim \@dbltoproom>\ht\@currbox + \@tempswatrue + \fi + \advance \@dbltoproom -\@textmin + \fi + \fi + \if@tempswa + \@bitor \@currtype \@dbldeferlist + \if@test + \else + \@tempdima -\ht\@currbox + \advance\@tempdima + -\ifx \@dblbotlist\@empty \dbltextfloatsep \else + \dblfloatsep \fi + \global \advance \@dbltoproom \@tempdima + \global \advance \@colht \@tempdima + \global \advance \@dblbotnum \m@ne + \@cons \@dblbotlist \@currbox + \@inserttrue + \fi + \fi + \fi + \fi + \if@insert + \else + \@cons\@dbldeferlist\@currbox + \fi + \fi + \endgroup +} + +\def\@combinedblfloats{% + \ifx \@dbltoplist\@empty \else \@cdblflt \fi + \ifx \@dblbotlist\@empty \else \@cdblflb \fi +} + +\def\@cdblflt{% + \setbox\@tempboxa \vbox{}% + \let \@elt \@comdblflelt + \@dbltoplist + \let \@elt \relax + \xdef \@freelist {\@freelist\@dbltoplist}% + \global\let \@dbltoplist \@empty + \setbox\@outputbox \vbox% to\textheight + {%\boxmaxdepth\maxdepth %% probably not needed, CAR + \unvbox\@tempboxa\vskip-\dblfloatsep + \ifnum \@dbltopnum>\m@ne + \dblfigrule + \fi + \vskip \dbltextfloatsep + \unvbox \@outputbox + }% +} + +\def\@cdblflb{% + \setbox\@tempboxa \vbox{}% + \let \@elt \@comdblflelt + \@dblbotlist + \let \@elt \relax + \xdef \@freelist {\@freelist\@dblbotlist}% + \global\let \@dblbotlist \@empty + \setbox\@outputbox \vbox% to\textheight + {%\boxmaxdepth\maxdepth %% probably not needed, CAR + \unvbox\@outputbox + \vskip \dbltextfloatsep + \ifnum \@dblbotnum>\m@ne + \dblfigrule + \fi + \unvbox\@tempboxa + \vskip -\dblfloatsep + }% +} + +\def \@doclearpage {% + \ifvoid\footins + \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa + \setbox\@tempboxa\box\@cclv + \xdef\@deferlist{\@toplist\@botlist\@deferlist}% + \global \let \@toplist \@empty + \global \let \@botlist \@empty + \global \@colroom \@colht + \ifx \@currlist\@empty + \else + \@latexerr{Float(s) lost}\@ehb + \global \let \@currlist \@empty + \fi + \@makefcolumn\@deferlist + \@whilesw\if@fcolmade \fi{\@opcol\@makefcolumn\@deferlist}% + \if@twocolumn + \if@firstcolumn + \xdef\@dbldeferlist{\@dbltoplist\@dblbotlist\@dbldeferlist}% + \global \let \@dbltoplist \@empty + \global \let \@dblbotlist \@empty + \global \@colht \textheight + \begingroup + \@dblfloatplacement + \@makefcolumn\@dbldeferlist + \@whilesw\if@fcolmade \fi{\@outputpage + \@makefcolumn\@dbldeferlist}% + \endgroup + \else + \vbox{}\clearpage + \fi + \fi + \else + \setbox\@cclv\vbox{\box\@cclv\vfil}% + \@makecol\@opcol + \clearpage + \fi +} +\global\let\org@makecol\@makecol +\gdef \fn@makecol {% + \setbox\@outputbox \box\@cclv + \xdef\@freelist{\@freelist\@midlist}% + \global \let \@midlist \@empty + \@combinefloats + \ifvoid\footins + \else + \setbox\@outputbox \vbox {% + \boxmaxdepth \@maxdepth + \unvbox \@outputbox + \vskip \skip\footins + \color@begingroup + \normalcolor + \footnoterule + \unvbox \footins + \color@endgroup + }% + \fi + \ifvbox\@kludgeins + \@makespecialcolbox + \else + \setbox\@outputbox \vbox to\@colht {% + \@texttop + \dimen@ \dp\@outputbox + \unvbox \@outputbox + \vskip -\dimen@ + \@textbottom + }% + \fi + \global \maxdepth \@maxdepth +} +\def\fnbelowfloat{\global\let\@makecol\fn@makecol} +\def\fnunderfloat{\global\let\@makecol\org@makecol} + +\def\set@floatfontsize#1#2#3{% + \@defaultunits\@tempdimb#2pt\relax\@nnil + \edef\f@size{\strip@pt\@tempdimb}% + \@defaultunits\@tempskipa#3pt\relax\@nnil + \edef\f@baselineskip{\the\@tempskipa}% + \edef\f@linespread{#1}% + \let\baselinestretch\f@linespread + \def\size@update{% + \baselineskip\f@baselineskip + \@tempskipa\baselineskip\relax\baselineskip=1\baselineskip + \advance\@tempskipa by-\baselineskip\baselineskip\f@baselineskip + \baselineskip\f@linespread\baselineskip + \advance\@tempskipa by\baselineskip\baselineskip\@tempskipa + \normalbaselineskip\baselineskip + \setbox\strutbox\hbox{% + \vrule\@height.7\baselineskip + \@depth.3\baselineskip + \@width\z@}% + \let\size@update\relax + }% + } +\let\set@@@fontsize\set@fontsize +\def\setbaselinefloat{\let\set@fontsize\set@floatfontsize} +\def\setbaselinefixed{\@tempdima=\baselinestretch\p@ + \edef\baselinestretch{\strip@pt\@tempdima}\let\set@fontsize\set@@@fontsize} +\output {% + \let \par \@@par + \ifnum \outputpenalty<-\@M + \@specialoutput + \else + \@makecol + \@opcol + \@startcolumn + \@whilesw \if@fcolmade \fi + {% + \@opcol\@startcolumn}% + \fi + \ifnum \outputpenalty>-\@Miv + \ifdim \@colroom<1.5\baselineskip + \ifdim \@colroom<\textheight + \@latex@warning@no@line {Text page \thepage\space + contains only floats}% + \@emptycol + \else + \global \vsize \@colroom + \fi + \else + \global \vsize \@colroom + \fi + \else + \global \vsize \maxdimen + \fi +} +\endinput diff --git a/Master/texmf-dist/tex/latex/sttools/texsort.sty b/Master/texmf-dist/tex/latex/sttools/texsort.sty new file mode 100644 index 00000000000..ff54e804ffb --- /dev/null +++ b/Master/texmf-dist/tex/latex/sttools/texsort.sty @@ -0,0 +1,289 @@ +%% texsort.sty +%% Copyright 2000 Sigitas Tolu\v sis +%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania +%% e-mail sigitas@vtex.lt +%% http://www.vtex.lt/tex/download/macros/ +%% +% This program can redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or (at your option) any later version. +% +% PURPOSE: Sort/compress numerical lists +% +% SHORT DESCRIPTION: +% +% \initarray#1#2 +% -------------- +% Converts list #2 to array #1 +% +% \outarray#1\sep#2 +% ----------------- +% Outputs array #1 elements separated by #2 +% +% \getarrayitem#1#2\to#3 +% ---------------------- +% Gets #2'th element from array #1 to \csname#3\endcsname +% +% \setarrayitem#1#2#3 +% ------------------- +% Sets #2'th element from array #1 to numeric value #3 +% +% \getarraylenght#1 +% ----------------- +% Gets array #1 elements count +% +% \setarraylenght#1 +% ----------------- +% Sets array #1 elements count to value #2 +% +% \upheap#1#2; \insertheapelem#1#2; \downheap#1#2; \removetop#1\to#2 +% ------------------------------------------------------------------ +% Internal macros of sort algorithm +% +% \g@addto@macrobeg#1#2 +% --------------------- +% Adds defs #2 to macro #1 begining +% +% \add@zero#1 +% ----------- +% Adds 0 before #1 +% +% \sortlistarray#1\to#2 +% --------------------- +% Sorts array #1 to array #2 +% +% \sortlist#1\to#2\sep#3 +% ---------------------- +% Sorts list #1 and puts to macro #2; elements separated by #3 +% +% \compresslist#1\to#2\sep#3#4 +% ---------------------------- +% Compress list #1 and puts to macro #2; +% single elements separated by #3, multi by #4 +% +% Changes: +% \changes{2000/06/06}{alfa version} +% \changes{2000/06/08}{added compression} +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{texsort}[2000/06/08] +% +\newcount\t@mp@r@a +\newcount\t@mp@r@b +\newcount\t@mp@r@c + +\def\initarray#1#2{% + \bgroup + \@tempcnta=\z@ + \@for\@@refb:=#2\do{% + \advance\@tempcnta by\@ne + \bgroup + \setbox0\hbox{\expandafter\global\expandafter\t@mp@r@a\expandafter\add@zero\@@refb\relax}% + \ifdim\wd0>\z@\relax\@latex@warning{Negrynas skaicius \@@refb!}\fi + \expandafter\edef\csname @a@\endcsname{\expandafter\xdef\expandafter + \noexpand\csname#1@\the\@tempcnta\endcsname{\the\t@mp@r@a}}\@a@ + \egroup + }% + \expandafter\xdef\csname #1@lenght\endcsname{\the\@tempcnta}% + \egroup +} +\def\outarray#1\sep#2{% + \bgroup + \@tempcnta=\z@\relax + \@tempcntb=\getarraylenght{#1}% + \loop + \ifnum\@tempcnta<\@tempcntb + \advance\@tempcnta by1\relax + \ifnum\@tempcnta>1\relax#2\fi\csname#1@\the\@tempcnta\endcsname + \repeat + \egroup +} +\def\add@zero#1{0#1} +\def\getarrayitem#1#2\to#3{\expandafter\xdef\csname#3\endcsname{\csname#1@#2\endcsname}} +\def\setarrayitem#1#2#3{% + \bgroup + \setbox0\hbox{\expandafter\global\expandafter\t@mp@r@a\expandafter\add@zero#3\relax}% + \ifdim\wd0>\z@\relax\@latex@warning{Negrynas skaicius #3!}\fi + \expandafter\edef\csname @a@\endcsname{\expandafter\xdef\expandafter + \noexpand\csname#1@#2\endcsname{\the\t@mp@r@a}}\@a@ + \egroup +} +\def\getarraylenght#1{\@ifundefined{#1@lenght}{0}{\csname #1@lenght\endcsname}} +\def\setarraylenght#1#2{\expandafter\xdef\csname #1@lenght\endcsname{#2}} + +%#1 - masyvas, #2 - elemento nr. +\def\upheap#1#2{% + \bgroup + \getarrayitem{#1}{#2}\to{vara}% + \@namedef{#1@0}{\maxdimen}% + \@tempcntb=#2\relax + \loop + \@tempcnta=\@tempcntb + \divide\@tempcnta by2\getarrayitem{#1}{\the\@tempcnta}\to{varb}% + \ifnum\varb>\vara\relax\else + \getarrayitem{#1}{\the\@tempcnta}\to{varb}% + \setarrayitem{#1}{\the\@tempcntb}{\varb}% + \divide\@tempcntb by2\relax + \repeat + \setarrayitem{#1}{\the\@tempcntb}{\vara}% + \egroup +} + +%#1 - masyvas, #2 - dedama reiksme +\def\insertheapelem#1#2{% + \bgroup + \@tempcnta=\getarraylenght{#1}\relax + \advance\@tempcnta by1\relax + \setarraylenght{#1}{\the\@tempcnta}\relax + \setarrayitem{#1}{\the\@tempcnta}{#2}% + \upheap{#1}{\the\@tempcnta}% + \egroup +} + +%#1 - masyvas, #2 - elemento nr. +\newcount\@tempcntd +\def\downheap#1#2{% + \bgroup + \getarrayitem{#1}{#2}\to{vara}% + \@tempcntb=\getarraylenght{#1}% + \t@mp@r@c=\@tempcntb\relax + \divide\@tempcntb by2\relax + \t@mp@r@b=\@tempcntb\relax + \@tempcntb=#2\relax + \ifnum\@tempcntb>\t@mp@r@b\relax\else + \loop + \@tempcnta=\@tempcntb\advance\@tempcnta by\@tempcntb\relax + \@tempcntd=\@tempcnta \advance\@tempcntd by1\relax + \ifnum\@tempcnta<\t@mp@r@c\relax + \getarrayitem{#1}{\the\@tempcnta}\to{temp@@a}% + \getarrayitem{#1}{\the\@tempcntd}\to{temp@@b}% + \ifnum\temp@@a<\temp@@b\relax + \@tempcnta=\@tempcntd + \fi + \fi + \getarrayitem{#1}{\the\@tempcnta}\to{temp@@a}% + \ifnum\vara>\temp@@a\relax + \t@mp@r@b=-1\relax + \else + \getarrayitem{#1}{\the\@tempcnta}\to{temp@@a}% + \setarrayitem{#1}{\the\@tempcntb}{\temp@@a}% + \@tempcntb=\@tempcnta + \fi + \ifnum\@tempcntb>\t@mp@r@b\relax + \else + \repeat + \fi + \setarrayitem{#1}{\the\@tempcntb}{\vara}% + \egroup +} + +\def\removetop#1\to#2{% + \bgroup + \getarrayitem{#1}{1}\to{temp@@c}% + \expandafter\xdef\csname #2\endcsname{\temp@@c}% + \@tempcnta=\getarraylenght{#1}% + \getarrayitem{#1}{\the\@tempcnta}\to{temp@@a}% + \setarrayitem{#1}{1}{\temp@@a}% + \setarrayitem{#1}{\the\@tempcnta}{}% + \advance\@tempcnta by-1\relax + \setarraylenght{#1}{\the\@tempcnta}% + \downheap{#1}{1}% + \egroup +} +\long\def\g@addto@macrobeg#1#2{% + \begingroup + \def\@a@{#2}% + \toks@\expandafter\expandafter\expandafter{\expandafter\@a@#1}% + \xdef#1{\the\toks@}% + \endgroup} + +\def\sortlistarray#1\to#2{% + \bgroup + \@for\@@refb:=#1\do{% + \insertheapelem{@tempa@}{\@@refb}% + }% + \@tempcntb=\getarraylenght{@tempa@}% + \setarraylenght{#2}{\the\@tempcntb}% + \@for\@@refb:=#1\do{% + \removetop{@tempa@}\to{aka}% + \setarrayitem{#2}{\the\@tempcntb}{\aka}% + \advance\@tempcntb by-1\relax + }% + \egroup +} +\def\sortlist#1\to#2\sep#3{% + \bgroup + \@for\@@refb:=#1\do{% + \insertheapelem{@tempa@}{\@@refb}% + }% + \@tempcntb=\getarraylenght{@tempa@}% + \expandafter\def\csname#2\endcsname{}% + \expandafter\def\expandafter\@a@\expandafter{\csname#2\endcsname}% + \@for\@@refb:=#1\do{% + \removetop{@tempa@}\to{aka}% + \advance\@tempcntb by-1\relax + \expandafter\expandafter\expandafter\g@addto@macrobeg\expandafter\@a@\expandafter{\aka}% + \ifnum\@tempcntb>0\relax + \expandafter\expandafter\expandafter\g@addto@macrobeg\expandafter\@a@\expandafter{#3}% + \fi + }% + \egroup +} +\def\compresslist#1\to#2\sep#3#4{% + \bgroup + \expandafter\def\csname#2\endcsname{}% + \expandafter\def\expandafter\@a@\expandafter{\csname#2\endcsname}% + \t@mp@r@a=-1\relax + \@tempcnta=-2\relax + \expandafter\@for\expandafter\@@refb\expandafter:\expandafter=#1\do{% + \ifnum\t@mp@r@a=-1\relax + \t@mp@r@a=\@@refb\relax + \t@mp@r@b=\@@refb\relax + \t@mp@r@c=\@@refb\relax + \expandafter\expandafter\expandafter\g@addto@macro\expandafter\@a@\expandafter{\the\t@mp@r@a}% + \else + \t@mp@r@c=\@@refb\relax + \ifnum\t@mp@r@c=\t@mp@r@a\relax + \expandafter\expandafter\expandafter\g@addto@macro\expandafter\@a@\expandafter{#3}% + \expandafter\expandafter\expandafter\g@addto@macro\expandafter\@a@\expandafter{\the\t@mp@r@c}% + \t@mp@r@b=\t@mp@r@c\relax + \else + \@tempcnta=\t@mp@r@b\relax + \advance\@tempcnta by1\relax + \ifnum\@tempcnta=\t@mp@r@c\relax + \t@mp@r@b=\t@mp@r@c\relax + \else + \@tempcnta=\t@mp@r@a\relax + \advance\@tempcnta by-\t@mp@r@b\relax + \ifnum\@tempcnta<-1\relax + \expandafter\expandafter\expandafter\g@addto@macro\expandafter\@a@\expandafter{#4}% + \expandafter\expandafter\expandafter\g@addto@macro\expandafter\@a@\expandafter{\the\t@mp@r@b}% + \expandafter\expandafter\expandafter\g@addto@macro\expandafter\@a@\expandafter{#3}% + \expandafter\expandafter\expandafter\g@addto@macro\expandafter\@a@\expandafter{\the\t@mp@r@c}% + \else + \ifnum\t@mp@r@a<\t@mp@r@b + \expandafter\expandafter\expandafter\g@addto@macro\expandafter\@a@\expandafter{#3}% + \expandafter\expandafter\expandafter\g@addto@macro\expandafter\@a@\expandafter{\the\t@mp@r@b}% + \fi + \expandafter\expandafter\expandafter\g@addto@macro\expandafter\@a@\expandafter{#3}% + \expandafter\expandafter\expandafter\g@addto@macro\expandafter\@a@\expandafter{\the\t@mp@r@c}% + \fi + \t@mp@r@a=\t@mp@r@c\relax + \t@mp@r@b=\t@mp@r@c\relax + \fi + \fi + \fi + }% + \ifnum\t@mp@r@a<\t@mp@r@c\relax + \advance\t@mp@r@a by-\t@mp@r@c\relax + \ifnum\t@mp@r@a<-1\relax + \expandafter\expandafter\expandafter\g@addto@macro\expandafter\@a@\expandafter{#4}% + \else + \expandafter\expandafter\expandafter\g@addto@macro\expandafter\@a@\expandafter{#3}% + \fi + \expandafter\expandafter\expandafter\g@addto@macro\expandafter\@a@\expandafter{\the\t@mp@r@c}% + \fi + \egroup +} +\endinput |