diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/sttools/cuted.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/sttools/cuted.dtx | 753 |
1 files changed, 753 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/sttools/cuted.dtx b/Master/texmf-dist/source/latex/sttools/cuted.dtx new file mode 100644 index 00000000000..453ba5d0511 --- /dev/null +++ b/Master/texmf-dist/source/latex/sttools/cuted.dtx @@ -0,0 +1,753 @@ +% \iffalse meta-comment +% +% Copyright (C) 2012 by Sigitas Tolu\v{s}is <sigitas@vtex.lt> +% --------------------------------------------------------------------------- +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Sigitas Tolu\v{s}is. +% +% This work consists of the files cuted.dtx and cuted.ins +% and the derived filebase cuted.sty. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{cuted.dtx} +%</driver> +%<*package> +%% Copyright (C) 1997-2012 by Sigitas Tolu\v{s}is <sigitas@vtex.lt> +%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania +%% http://www.vtex.lt/tex/download/macros/ +%% -------------------------------------------------------------------------- +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% PURPOSE: Insert some onecolumn material in full-width on double-column page. +%% +%</package> +%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%<package>\ProvidesPackage{cuted} +%<*package> + [2012/10/04 v1.5 Mixing onecolumn and twocolumn modes] +%</package> +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{cuted}[2012/10/04] +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{cuted.dtx} + \PrintChanges + \PrintIndex +\end{document} +%</driver> +% \fi +% +% \CheckSum{1136} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% +% \changes{}{1997/09/02}{improved column balancing} +% \changes{}{1997/09/03}{float control for \cs{@colroom} setting} +% \changes{}{1997/09/04}{improved \cs{@colroom} setting} +% \changes{}{1997/09/05}{checking for \cs{@viper} and \cs{hold@viper}} +% \changes{}{1997/09/09}{compatibility with flushend.sty} +% \changes{}{1997/09/22}{improved \cs{output} ir \cs{@specialoutput}} +% \changes{}{1997/10/01}{improved \cs{output} ir \cs{@addviper}} +% \changes{}{1998/10/23}{pakeistas koloneliu sujungimas} +% \changes{}{2000/01/18}{pakeistas \cs{@outputdblcol}} +% \changes{}{2002/06/11}{added options unskipbreak and autobase} +% \changes{v1.4}{2012/05/29}{Converted to DTX file} +% +% \DoNotIndex{\newcommand,\newenvironment} +% +% \providecommand*{\url}{\texttt} +% \GetFileInfo{cuted.dtx} +% \title{The \textsf{cuted} package} +% \author{Sigitas Tolu\v{s}is\\ \url{sigitas@vtex.lt}} +% \date{\fileversion~from \filedate} +% +% \maketitle +% +% \section{Introduction} +% +% 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). +% +% \section{Usage} +% +% +% \DescribeMacro{strip} +% Provides new environment: +% +% \begin{verbatim} +% \begin{strip} +% <wide onecolumn material> +% \end{strip} +% \end{verbatim} +% +% Puts |\vbox|\marg{wide onecolumn material} in full-width on +% double-column page. +% +% \medskip +% Adds |\stripsep| glue before and after +% (by default: |15pt plus2pt minus 2pt|). +% +% \medskip +% 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|. +% +% \medskip +% \DescribeMacro{\oldcolsbreak} +% \marg{adds} +% +% Adds \meta{adds} in place of original column break if strip is placed +% on the right column. +% +% \subsection{Package options} +% +% \DescribeMacro{unskipbreak} +% \indent It is used to change |\hbox{}| to |\unskip| after leftcolumn break on striped page. +% +% \medskip +% \DescribeMacro{autobase} +% It is used to guess |\baselineskip| value on original columns break. +% +% +% \StopEventually{} +% +% \section{Implementation} +% +% \iffalse +%<*package> +% \fi +% +% +% \begin{macro}{unskipbreak} +% \begin{macrocode} +\def\on@stripcols@break{\hbox{}} +\DeclareOption{unskipbreak}{\gdef\on@stripcols@break{\unskip}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{autobase} +% \begin{macrocode} +\newif\if@flushend@auto@baselineskip +\DeclareOption{autobase}{\global\@flushend@auto@baselineskiptrue} +\ProcessOptions + +\newtoks\At@ViperColsBreak \At@ViperColsBreak{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\oldcolsbreak} +% \begin{macrocode} +\def\oldcolsbreak#1{\global\At@ViperColsBreak{#1}} +\def\viper@top@hook{\splittopskip0pt plus 2pt} + +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\newbox\v@aaa +\newbox\v@ccc +\@ifundefined{lastskip@a}{\newskip\lastskip@a}{} +\@ifundefined{lastskip@b}{\newskip\lastskip@b}{} +\@ifundefined{lastskip@d}{\newskip\lastskip@d}{} +\@ifundefined{lastbox@a}{\newbox\lastbox@a}{} +\@ifundefined{stripsep}{\newskip\stripsep \stripsep 15pt plus 2pt minus 2pt}{} + +\@ifundefined{@viper}{\newbox\@viper}{} +\newif\if@lastviper \@lastviperfalse +% \end{macrocode} +% +% +% \begin{macro}{\@outputdblcol} +% \begin{macrocode} +\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 to\textheight{% + \box\hold@viper + \box\@outputbox + \vss + }% + \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 + } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\mathchardef\@Mv=10005 +\newcount\viper@penalty +% \end{macrocode} +% +% \begin{macro}{\strip} +% \begin{macrocode} +\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 width\z@ depth\z@ + } +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\endstrip} +% \begin{macrocode} +\def\endstrip{% + \egroup + \ifnum\viper@penalty <-\@Mii + \penalty -\@Miv + \ifvmode + \@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 + \else + \par + \penalty-\@Mv\relax + \noindent + \fi + \fi + } +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@viperoutput} +% \begin{macrocode} +\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 + } +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@specialoutput} +% \begin{macrocode} +\gdef\@specialoutput{% + \ifnum \outputpenalty>-\@Mii + \@doclearpage + \else + \ifnum \outputpenalty<-\@Miii + \ifnum \outputpenalty<-\@MM \deadcycles \z@ \fi + \ifnum \outputpenalty=-\@Mv + \@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 + } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\@ifundefined{hold@viper}{\newbox\hold@viper}{} +\newdimen\ht@viper +% \end{macrocode} +% +% \begin{macro}{\@addviper} +% \begin{macrocode} +\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{\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 + \if@flushend@auto@baselineskip + \setbox\@tempboxa\vbox{\unvcopy\@leftcolumn + \global\lastskip@d\lastskip + \global\lastskip@b\lastskip + \loop + \global\lastskip@a\lastskip@b + \unskip\unpenalty + \global\lastskip@b\lastskip + \global\advance\lastskip@d by\lastskip + \ifdim\lastskip@b=-\lastskip@a + \global\advance\lastskip@d by-\lastskip + \else + \repeat + \ifdim\lastskip@b=-\lastskip@a + \ifdim\lastskip@b=\z@ + \setbox\lastbox@a\lastbox + \global\advance\lastskip@d by\ht\lastbox@a + \global\advance\lastskip@d by\lastskip + \unskip\unpenalty + \setbox\lastbox@a\lastbox + \global\advance\lastskip@d by\dp\lastbox@a + \else + \global\lastskip@d\lastskip + \global\advance\lastskip@d by\topskip + \fi + \fi + \global\advance\lastskip@d by-\topskip + }% + \ifdim\ht\@holdpg>\@colht + \global\setbox\@holdpg\vbox{\unvbox\@leftcolumn\unskip\unpenalty + \par\eject + \vbox to \@colht{\unvbox\@holdpg\unskip}% + }% + \else + \global\setbox\@holdpg\vbox{% + \unvbox\@leftcolumn\unskip\unpenalty + \vskip\lastskip@d + \the\At@ViperColsBreak + \unvbox\@holdpg + \unskip + }% + \fi + \else + \global\setbox\@holdpg\vbox{% + \unvbox\@leftcolumn + \setbox\@tempboxa\lastbox + \on@stripcols@break + \the\At@ViperColsBreak + \unvbox\@holdpg + }% + \fi + \global\At@ViperColsBreak{}% + \ht@viper .5\ht\@holdpg + \ifdim \ht@viper>\@colht + \ht@viper \@colht + \fi + \ifvoid\hold@viper\@tempdima=\z@\else\@tempdima\ht\hold@viper\fi +% \end{macrocode} +%% +% \begin{macrocode} + \@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 1\p@ + \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}% +% \end{macrocode} +% +% \begin{macrocode} + \setbox\@tempboxa\vbox{% + \hb@xt@\textwidth {% + \hb@xt@\columnwidth{\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 + \csname viper@top@hook\endcsname + \vsplit\@viper to \@colht + \vss + }% + \vbox{}% + \global\@firstcolumnfalse + \newpage + \fi + } +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\check@floats} +% \begin{macrocode} + +\def\check@floats{% + \global\@tempdima\z@ + \let\@elt\ht@comflelt + \ifx\@toplist\@empty \else \@toplist \fi + \ifx\@botlist\@empty \else \@botlist \fi + } +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\ht@comflelt} +% \begin{macrocode} +\def\ht@comflelt#1{% + \setbox\@tempboxa\vbox{\copy #1\vskip\floatsep}% + \global\advance\@tempdima by\ht\@tempboxa + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{output} +% \begin{macrocode} +\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 + } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%\endinput +% \end{macrocode} +% +% \iffalse +%</package> +% \fi +% +% \Finale |