diff options
author | Karl Berry <karl@freefriends.org> | 2012-11-13 00:16:56 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-11-13 00:16:56 +0000 |
commit | b847625057328d18cbaff06505599203c8382a17 (patch) | |
tree | b040c624881b1af975180256f90173d440d284d7 /Master/texmf-dist/tex/latex/flowfram | |
parent | f5c4d1df6475f098e051b5c8a71ce506a2c0d802 (diff) |
flowfram 1.14 (12nov12)
git-svn-id: svn://tug.org/texlive/trunk@28238 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/flowfram')
-rw-r--r-- | Master/texmf-dist/tex/latex/flowfram/flowfram.sty | 10058 |
1 files changed, 6707 insertions, 3351 deletions
diff --git a/Master/texmf-dist/tex/latex/flowfram/flowfram.sty b/Master/texmf-dist/tex/latex/flowfram/flowfram.sty index 0dbc0e2a2dd..1671f879eda 100644 --- a/Master/texmf-dist/tex/latex/flowfram/flowfram.sty +++ b/Master/texmf-dist/tex/latex/flowfram/flowfram.sty @@ -7,7 +7,7 @@ %% flowfram.dtx (with options: `flowfram.sty,package') %% %% flowfram.dtx -%% Copyright 2010 Nicola Talbot +%% Copyright 2012 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -21,7 +21,7 @@ %% %% The Current Maintainer of this work is Nicola Talbot. %% -%% This work consists of the files flowfram.dtx and flowfram.ins and the derived file flowfram.sty. +%% This work consists of the files flowfram.dtx and flowfram.ins and the derived files flowfram.sty, sample-article.tex, sample-blanks.tex, sample-brochure.tex, sample-news.tex, sample-news2.tex, sample-pages.tex, sample-poster.tex, sample-rot.tex, sample.tex, sample1.tex, sample2.tex, sample3.tex, sampleRL.tex, flowfram.perl. %% %% \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 @@ -39,11 +39,13 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{flowfram}[2010/01/23 v1.13] +\ProvidesPackage{flowfram}[2012/11/10 v1.14 (NLCT)] \RequirePackage{ifthen} -\RequirePackage{keyval} +\RequirePackage{xkeyval} \RequirePackage{graphics} \RequirePackage{afterpage} +\RequirePackage{xfor} +\RequirePackage{etoolbox} \@ifundefined{@ldc@l@r}{\RequirePackage{color}}{} \newcommand{\setffdraftcolor}{\color[gray]{0.8}} \newcommand{\setffdrafttypeblockcolor}{\color[gray]{0.9}} @@ -54,100 +56,202 @@ \newif\ifshowmargins \newif\ifshowframebbox \newcommand*{\@ffdraft}{% -\showtypeblocktrue -\showmarginstrue -\showframebboxtrue + \showtypeblocktrue + \showmarginstrue + \showframebboxtrue } \newcommand*{\@ffnodraft}{% -\showtypeblockfalse -\showmarginsfalse -\showframebboxfalse + \showtypeblockfalse + \showmarginsfalse + \showframebboxfalse } \newcommand*{\@fr@meifdraft}[3][\setffdraftcolor]{% -\def\ff@backcol{{none}}% -\@ifundefined{color}{\frame{#2}}{#1\frame{#2}}% -\ifthenelse{\equal{#3}{}}{}{% -\makebox[0pt][l]{\hskip\fflabelsep\fflabelfont{[#3]}}}}% + \def\ff@backcol{{none}}% + \@ifundefined{color}{\frame{#2}}{#1\frame{#2}}% + \ifthenelse{\equal{#3}{}}{}% + {% + \makebox[0pt][l]{\hskip\fflabelsep\fflabelfont{[#3]}}% + }% +}% \newcommand*{\@s@tffcol}{} \newcommand*{\@s@tfftextcol}{} \newcommand*{\@ffbackground}[1]{#1} -\DeclareOption{draft}{\@ffdraft} -\DeclareOption{final}{\@ffnodraft} -\newif\if@ttb@rotate +\DeclareOptionX{draft}{\@ffdraft} +\DeclareOptionX{final}{\@ffnodraft} +\@ffnodraft +\define@choicekey{flowfram.sty}% + {verbose}[\val\nr]% + {true,false}[true]% + {% + \ifcase\nr\relax + \renewcommand*{\flf@doifverbose}[1]{##1}% + \renewcommand*{\flf@message}[1]{\PackageInfo{flowfram}{##1}}% + \or + \renewcommand*{\flf@doifverbose}[1]{}% + \renewcommand*{\flf@message}[1]{}% + \fi + } +\newcommand*{\flf@message}[1]{% + \flf@doifverbose + {% + \PackageInfo{flowfram}{##1}% + }% +} +\newcommand*{\flf@doifverbose}[1]{} +\define@boolkey{flowfram.sty}[@ttb@]{rotate}[true]{} \@ttb@rotatetrue -\DeclareOption{rotate}{\@ttb@rotatetrue} -\DeclareOption{norotate}{\@ttb@rotatefalse} -\newcommand{\rotateframe}[2]{\if@ttb@rotate -\rotatebox{#1}{#2}% -\else -#2\relax -\fi} +\DeclareOptionX{norotate}{\@ttb@rotatefalse} +\newcommand{\rotateframe}[2]{% + \if@ttb@rotate + \rotatebox{#1}{#2}% + \else + #2% + \fi +} \newif\if@ttb@num -\newif\if@ttb@title \@ttb@numfalse +\newif\if@ttb@title \@ttb@titletrue -\DeclareOption{ttbtitle}{\@ttb@titletrue} -\DeclareOption{ttbnotitle}{\@ttb@titlefalse} -\DeclareOption{ttbnum}{\@ttb@numtrue} -\DeclareOption{ttbnonum}{\@ttb@numfalse} -\DeclareOption{color}{% -\def\flowframecol{{black}}\def\flowframetextcol{{black}} -\renewcommand*\@s@tffcol{\ifthenelse{\equal{\ff@col}{}}{}{% -\expandafter\color\ff@col}} -\renewcommand*\@s@tfftextcol{\ifthenelse{\equal{\ff@txtcol}{}}{}{% -\expandafter\color\ff@txtcol}} -\renewcommand*{\@ffbackground}[1]{% -\ifthenelse{\equal{\ff@backcol}{{none}}}{% -#1}{{\fboxsep=0pt\expandafter\colorbox\ff@backcol{#1}}}} -} -\DeclareOption{nocolor}{% -\def\flowframetextcol{}% -\def\flowframecol{}% -\renewcommand{\@s@tffcol}{}\renewcommand{\@s@tfftextcol}{} -\renewcommand{\@ffbackground}[1]{#1} +\define@choicekey{flowfram.sty}% + {thumbtabs}[\val\nr]% + {title,number,both,none}[title]% + {% + \ifcase\nr\relax + \@ttb@numfalse + \@ttb@titletrue + \or + \@ttb@numtrue + \@ttb@titlefalse + \or + \@ttb@numtrue + \@ttb@titletrue + \or + \@ttb@numfalse + \@ttb@titlefalse + \fi + } +\DeclareOptionX{ttbtitle}{\@ttb@titletrue} +\DeclareOptionX{ttbnotitle}{\@ttb@titlefalse} +\DeclareOptionX{ttbnum}{\@ttb@numtrue} +\DeclareOptionX{ttbnonum}{\@ttb@numfalse} +\define@choicekey{flowfram.sty}{pages}[\val\nr]% + {relative,absolute}% + {% + \ifcase\nr\relax + \renewcommand*{\@ff@pages@countreg}{\c@page}% + \or + \renewcommand*{\@ff@pages@countreg}{\c@absolutepage}% + \fi + } +\newcommand*{\@ff@pages@countreg}{\c@page} +\newcounter{absolutepage} +\define@choicekey{flowfram.sty}{color}[\val\nr]{true,false}[true]{% + \ifcase\nr\relax + \@ff@enablecolor + \or + \@ff@disablecolor + \fi +} +\DeclareOptionX{nocolor}{% + \@ff@disablecolor +} +\newcommand*{\@ff@enablecolor}{% + \def\flowframecol{{black}}% + \def\flowframetextcol{{black}}% + \renewcommand*\@s@tffcol{% + \ifthenelse{\equal{\ff@col}{}}% + {}% + {% + \expandafter\color\ff@col}% + }% + \renewcommand*\@s@tfftextcol{% + \ifthenelse{\equal{\ff@txtcol}{}}% + {}% + {% + \expandafter\color\ff@txtcol + }% + }% + \renewcommand*{\@ffbackground}[1]{% + \ifthenelse{\equal{\ff@backcol}{{none}}}% + {% + ##1% + }% + {% + {\fboxsep=0pt\expandafter\colorbox\ff@backcol{##1}}% + }% + }% +} +\newcommand*{\@ff@disablecolor}{% + \def\flowframetextcol{}% + \def\flowframecol{}% + \renewcommand{\@s@tffcol}{}\renewcommand{\@s@tfftextcol}{}% + \renewcommand{\@ffbackground}[1]{##1}% } \newif\iflefttorightcolumns \lefttorightcolumnstrue -\DeclareOption{LR}{\lefttorightcolumnstrue} -\DeclareOption{RL}{\lefttorightcolumnsfalse} -\ifdim\overfullrule=0pt -\ExecuteOptions{final} -\else -\ExecuteOptions{draft} -\fi +\DeclareOptionX{LR}{\lefttorightcolumnstrue} +\DeclareOptionX{RL}{\lefttorightcolumnsfalse} \ifx\normalcolor\relax -\ExecuteOptions{nocolor} + \@ff@disablecolor \else -\ExecuteOptions{color} + \@ff@enablecolor \fi -\ProcessOptions +\ProcessOptionsX \ifx\normalcolor\relax -\ifthenelse{\equal{\flowframetextcol}{}}{}{% -\RequirePackage{color}} + \ifthenelse{\equal{\flowframetextcol}{}}% + {}% + {% + \RequirePackage{color}% + } \fi -\@ifundefined{chapter}{}{% -\newcommand*{\chapterfirstpagestyle}{plain} -\let\@ff@OLD@chapter\@chapter -\let\@ff@OLD@schapter\@schapter -\renewcommand{\@chapter}{% -\thispagestyle{\chapterfirstpagestyle}\@ff@OLD@chapter} -\renewcommand{\@schapter}{% -\thispagestyle{\chapterfirstpagestyle}\@ff@OLD@schapter} +\@ifundefined{chapter}{}% +{% + \newcommand*{\chapterfirstpagestyle}{plain}% + \let\@ff@OLD@chapter\@chapter + \let\@ff@OLD@schapter\@schapter + \renewcommand{\@chapter}{% + \thispagestyle{\chapterfirstpagestyle}% + \@ff@OLD@chapter + }% + \renewcommand{\@schapter}{% + \thispagestyle{\chapterfirstpagestyle}% + \@ff@OLD@schapter + }% + \newcommand*{\ffprechapterhook}{} + \let\@ff@OLD@ch@pter\chapter + \renewcommand{\chapter}{% + \ffprechapterhook + \@ff@OLD@ch@pter + } } \newcounter{maxflow} \c@maxflow=0\relax \newcounter{thisframe} \c@thisframe=0\relax -\@ifpackageloaded{hyperref}{% -\def\theHthisframe{\thepage.\arabic{thisframe}}}{} +\@ifpackageloaded{hyperref} +{% + \def\theHthisframe{\thepage.\arabic{thisframe}}% +}% +{} \newcommand*{\labelflowidn}[1]{% -{\def\@currentlabel{\thethisframe}\label{#1}}} + {% + \def\@currentlabel{\thethisframe}% + \label{#1}% + }% +} \newcounter{displayedframe} \c@displayedframe=0 -\@ifpackageloaded{hyperref}{% -\def\theHdisplayedframe{\thepage.\arabic{displayedframe}}}{} +\@ifpackageloaded{hyperref}% +{% + \def\theHdisplayedframe{\thepage.\arabic{displayedframe}}% +}% +{} \newcommand*{\labelflow}[1]{% -{\def\@currentlabel{\thedisplayedframe}\label{#1}}} + {% + \def\@currentlabel{\thedisplayedframe}% + \label{#1}% + }% +} \newcounter{maxstatic} \c@maxstatic=0\relax \newcounter{maxdynamic} @@ -165,1224 +269,2000 @@ \newlength\flowframerule \flowframerule=\fboxrule \newcommand*{\flowframeshowlayout}{% -\finishthispage -{\@ffdraft\mbox{}\finishthispage\clearpage}} + \finishthispage + {% + \@ffdraft\mbox{}\finishthispage\clearpage + }% +} \newif\ifusedframebreak \newcommand{\framebreak}[1][4]{% -\usedframebreaktrue -{\parfillskip=0pt\pagebreak[#1]\parskip=0pt\par\noindent}} + \global\usedframebreaktrue + {% + \parfillskip=0pt\pagebreak[#1]\parskip=0pt\par\noindent + }% +} \newcommand{\finishthispage}{% -\@colN=\c@thisframe -\newpage -\whiledo{\@colN<\c@maxflow}{\advance\@colN by 1\relax -\@ff@chckifthispg{\c@page}{\@colN}% -\if@notthiscol\else -\mbox{}\newpage% -\fi -}} -\def\cleardoublepage{\finishthispage -\if@twoside -\ifodd\c@page -\else -\hbox{}\finishthispage -\fi -\fi} + \ifvmode + \@colN=\c@thisframe\relax + \count@=\c@absolutepage\relax + \ifdim \pagetotal<\topskip + \hbox{}% + \fi + \newpage \write \m@ne {}\vbox {}\penalty -\@Mi + \ifnum\count@=\c@absolutepage\relax + \whiledo{\@colN<\c@maxflow \OR \@colN=\c@maxflow}% + {% + \@ff@chckifthispg{\@ff@pages@countreg}{\@colN}% + \if@notthiscol + \else + \c@thisframe=\@colN\relax + \hbox{}\newpage + \fi + \advance\@colN by 1\relax + }% + \fi + \fi +} +\def\cleardoublepage{% + \clearpage + \if@twoside + \ifodd\c@page + \else + \hbox{}% + \clearpage + \fi + \fi +} +\preto\newpage{\global\usedframebreaktrue} \@twocolumnfalse \@mparswitchfalse \newcommand{\globalreversemargin}{% -\global\@mparbottom\z@\global\@reversemargintrue} + \global\@mparbottom\z@ + \global\@reversemargintrue +} \newcommand{\globalnormalmargin}{% -\global\@mparbottom\z@\global\@reversemarginfalse} + \global\@mparbottom\z@\global + \@reversemarginfalse +} \newcommand{\@getmarginpos}[1]{% -\ifthenelse{\equal{#1}{inner}}{% -\if@twoside -\ifodd\c@page\def\ff@margin{left}\else\def\ff@margin{right}\fi -\else -\def\ff@margin{left}% -\fi -}{% -\ifthenelse{\equal{#1}{outer}}{% -\if@twoside -\ifodd\c@page\def\ff@margin{right}\else\def\ff@margin{left}\fi -\else -\def\ff@margin{right}% -\fi -}{% -\def\ff@margin{#1}}}% + \ifthenelse{\equal{#1}{inner}}% + {% + \if@twoside + \ifodd\c@page\def\ff@margin{left}\else\def\ff@margin{right}\fi + \else + \def\ff@margin{left}% + \fi + }% + {% + \ifthenelse{\equal{#1}{outer}}% + {% + \if@twoside + \ifodd\c@page\def\ff@margin{right}\else\def\ff@margin{left}\fi + \else + \def\ff@margin{right}% + \fi + }% + {% + \def\ff@margin{#1}% + }% + }% } \newcommand{\setmargin}{% -\@getmarginpos{% -\csname @ff@margin@\romannumeral\c@thisframe\endcsname}% -\ifthenelse{\equal{\ff@margin}{left}}% -{\globalreversemargin}{\globalnormalmargin}% + \@getmarginpos + {% + \csname @ff@margin@\romannumeral\c@thisframe\endcsname + }% + \ifthenelse{\equal{\ff@margin}{left}}% + {\globalreversemargin}% + {\globalnormalmargin}% } \newcommand{\newflowframe}{\@n@wflowframe} \@onlypreamble{\newflowframe} \newcommand{\@n@wflowframe}{% -\global\advance\c@maxflow by 1\relax -\expandafter\global\expandafter -\newif\csname ifcolumnframe\romannumeral\c@maxflow\endcsname -\@ifstar\@snewflowframe\@newflowframe + \global\advance\c@maxflow by 1\relax + \expandafter\global\expandafter + \newif\csname ifcolumnframe\romannumeral\c@maxflow\endcsname + \@ifstar\@snewflowframe\@newflowframe } \newcommand{\@snewflowframe}{% -\expandafter\global\expandafter -\let\csname ifcolumnframe\romannumeral\c@maxflow\endcsname\iftrue -\@@newflowframe} + \expandafter\global\expandafter + \let\csname ifcolumnframe\romannumeral\c@maxflow\endcsname\iftrue + \@@newflowframe +} \newcommand{\@newflowframe}{% -\expandafter\global\expandafter -\let\csname ifcolumnframe\romannumeral\c@maxflow\endcsname\iffalse -\@@newflowframe} + \expandafter\global\expandafter + \let\csname ifcolumnframe\romannumeral\c@maxflow\endcsname\iffalse + \@@newflowframe +} \newcommand{\@@newflowframe}[5][all]{% -\expandafter\global\expandafter -\newbox\csname column\romannumeral\c@maxflow\endcsname -\expandafter\global\expandafter -\newlength\csname colwidth\romannumeral\c@maxflow\endcsname -\expandafter\global\expandafter -\newlength\csname colheight\romannumeral\c@maxflow\endcsname -\expandafter\global\expandafter -\newlength\csname col@\romannumeral\c@maxflow @posx\endcsname -\expandafter\global\expandafter -\newlength\csname col@\romannumeral\c@maxflow @posy\endcsname -\expandafter\global\expandafter -\setlength\csname colwidth\romannumeral\c@maxflow\endcsname{#2} -\expandafter\global\expandafter -\setlength\csname colheight\romannumeral\c@maxflow\endcsname{#3} -\expandafter\global\expandafter -\setlength\csname col@\romannumeral\c@maxflow @posx\endcsname{#4} -\expandafter\global\expandafter -\setlength\csname col@\romannumeral\c@maxflow @posy\endcsname{#5} -\expandafter\global\expandafter -\newlength\csname col@\romannumeral\c@maxflow @evenx\endcsname -\expandafter\global\expandafter -\newlength\csname col@\romannumeral\c@maxflow @eveny\endcsname -\expandafter\global\expandafter -\setlength\csname col@\romannumeral\c@maxflow @evenx\endcsname{#4} -\expandafter\global\expandafter -\setlength\csname col@\romannumeral\c@maxflow @eveny\endcsname{#5} -\expandafter -\gdef\csname @ff@frametype@\romannumeral\c@maxflow\endcsname{fbox}% -\expandafter -\gdef\csname @ff@col@\romannumeral\c@maxflow\endcsname{\flowframecol} -\expandafter -\gdef\csname @ff@txtcol@\romannumeral\c@maxflow\endcsname{% -\flowframetextcol} -\expandafter -\gdef\csname @ff@backcol@\romannumeral\c@maxflow\endcsname{{none}} -\expandafter -\gdef\csname @ff@pages@\romannumeral\c@maxflow\endcsname{#1} -\expandafter -\gdef\csname @ff@offset@\romannumeral\c@maxflow\endcsname{compute} -\expandafter -\gdef\csname @ff@angle@\romannumeral\c@maxflow\endcsname{0}% -\expandafter -\gdef\csname @ff@margin@\romannumeral\c@maxflow\endcsname{right} -\ifnum\c@thisframe=0\relax -\ifthenelse{\equal{#1}{all}\TE@or\equal{#1}{odd}}{% -\c@thisframe=\c@maxflow -\global\setlength{\hsize}{#2}% -\global\usedframebreaktrue -}{\ifthenelse{\equal{#1}{even}\TE@or\equal{#1}{none}}{}{% -\def\ff@pages{#1}% -\@for\@ff@pp:=\ff@pages\do{% -\def\@ff@numstart{0}\def\@ff@numend{0}% -\@ff@getrange{\@ff@pp}% -\ifnum\@ff@numstart=0\def\@ff@numstart{1}\fi -\ifnum\@ff@numstart=1\relax -\c@thisframe=\c@maxflow -\global\setlength{\hsize}{#2}% -\global\usedframebreaktrue -\fi -}}}% -\fi -\@ifnextchar[{\@s@tflowframeid{\c@maxflow}}{% -\@s@tflowframeid{\c@maxflow}[\number\c@maxflow]}} + \expandafter\global\expandafter + \newbox\csname column\romannumeral\c@maxflow\endcsname + \expandafter\global\expandafter + \newlength\csname colwidth\romannumeral\c@maxflow\endcsname + \expandafter\global\expandafter + \newlength\csname colheight\romannumeral\c@maxflow\endcsname + \expandafter\global\expandafter + \newlength\csname col@\romannumeral\c@maxflow @posx\endcsname + \expandafter\global\expandafter + \newlength\csname col@\romannumeral\c@maxflow @posy\endcsname + \expandafter\global\expandafter + \setlength\csname colwidth\romannumeral\c@maxflow\endcsname{#2} + \expandafter\global\expandafter + \setlength\csname colheight\romannumeral\c@maxflow\endcsname{#3} + \expandafter\global\expandafter + \setlength\csname col@\romannumeral\c@maxflow @posx\endcsname{#4} + \expandafter\global\expandafter + \setlength\csname col@\romannumeral\c@maxflow @posy\endcsname{#5} + \expandafter\global\expandafter + \newlength\csname col@\romannumeral\c@maxflow @evenx\endcsname + \expandafter\global\expandafter + \newlength\csname col@\romannumeral\c@maxflow @eveny\endcsname + \expandafter\global\expandafter + \setlength\csname col@\romannumeral\c@maxflow @evenx\endcsname{#4} + \expandafter\global\expandafter + \setlength\csname col@\romannumeral\c@maxflow @eveny\endcsname{#5} + \expandafter + \gdef\csname @ff@frametype@\romannumeral\c@maxflow\endcsname{fbox}% + \expandafter + \gdef\csname @ff@col@\romannumeral\c@maxflow\endcsname{\flowframecol} + \expandafter + \gdef\csname @ff@txtcol@\romannumeral\c@maxflow\endcsname{% + \flowframetextcol + } + \expandafter + \gdef\csname @ff@backcol@\romannumeral\c@maxflow\endcsname{{none}} + \expandafter + \gdef\csname @ff@pages@\romannumeral\c@maxflow\endcsname{#1}% + \expandafter + \gdef\csname @ff@xpages@\romannumeral\c@maxflow\endcsname{}% + \expandafter + \gdef\csname @ff@offset@\romannumeral\c@maxflow\endcsname{compute} + \expandafter + \gdef\csname @ff@angle@\romannumeral\c@maxflow\endcsname{0}% + \expandafter + \gdef\csname @ff@margin@\romannumeral\c@maxflow\endcsname{right} + \ifnum\c@thisframe=0\relax + \ifthenelse{\equal{#1}{all}\TE@or\equal{#1}{odd}}% + {% + \c@thisframe=\c@maxflow + \global\setlength{\hsize}{#2}% + \global\usedframebreaktrue + }% + {% + \ifthenelse{\equal{#1}{even}\TE@or\equal{#1}{none}}% + {}% + {% + \def\ff@pages{#1}% + \@for\@ff@pp:=\ff@pages\do + {% + \def\@ff@numstart{0}\def\@ff@numend{0}% + \@ff@getrange{\@ff@pp}% + \ifnum\@ff@numstart=0\relax + \def\@ff@numstart{1}% + \fi + \ifnum\@ff@numstart=1\relax + \c@thisframe=\c@maxflow + \global\setlength{\hsize}{#2}% + \global\usedframebreaktrue + \fi + }% + }% + }% + \fi + \@ifnextchar[% + {\@s@tflowframeid{\c@maxflow}}% + {% + \@s@tflowframeid{\c@maxflow}[\number\c@maxflow]% + }% +} \def\@s@tflowframeid#1[#2]{% -\edef\ff@label{#2}% -\@ff@checkuniqueidl{#1}{\ff@label}% -\expandafter -\xdef\csname @col@id@\romannumeral#1\endcsname{\ff@label}% + \edef\ff@label{#2}% + \@ff@checkuniqueidl{#1}{\ff@label}% + \expandafter + \xdef\csname @col@id@\romannumeral#1\endcsname{\ff@label}% } \newcommand*{\@ff@checkuniqueidl}[2]{% -{\@colN=0\relax -\whiledo{\@colN<\c@maxflow}{% -\advance\@colN by 1\relax -\ifnum\@colN=#1\relax -\else -\ifthenelse{\equal{#2}{% -\csname @col@id@\romannumeral\@colN\endcsname}}{% -\PackageError{flowfram}{Flow frame IDL '#2' already defined}{% -You can't assign this label, as it is already defined -for flow frame \number\@colN}}{}% -\fi -}}} + {% + \@colN=0\relax + \whiledo{\@colN<\c@maxflow}% + {% + \advance\@colN by 1\relax + \ifnum\@colN=#1\relax + \else + \ifthenelse + {% + \equal{#2}% + {% + \csname @col@id@\romannumeral\@colN\endcsname + }% + }% + {% + \PackageError{flowfram}% + {Flow frame IDL '#2' already defined}% + {% + You can't assign this label, as it is already defined + for flow frame \number\@colN + }% + }% + {}% + \fi + }% + }% +} \newcommand*{\getflowlabel}[1]{% -\csname @col@id@\romannumeral#1\endcsname} + \csname @col@id@\romannumeral#1\endcsname +} \newcommand*{\getflowid}[2]{% -\@flowframeid{#2}\edef#1{\number\ff@id}} -\newcommand*{\@flowframeid}[1]{\@colN=0\relax -\ff@id=0\relax -\whiledo{\@colN<\c@maxflow}{\advance\@colN by 1\relax -\ifthenelse{% -\equal{#1}{\csname @col@id@\romannumeral\@colN\endcsname}}{% -\ff@id=\@colN\relax -\@colN=\c@maxflow}{}}% -\ifnum\ff@id=0\relax -\PackageError{flowfram}{Can't find flow frame id '#1'}{}\fi} -\define@key{flowframe}{width}{\ifthenelse{\equal{#1}{}}{% -\PackageError{flowfram}{Missing value for 'width' key}{}}{}% -\def\ff@width{#1}} -\define@key{flowframe}{height}{\ifthenelse{\equal{#1}{}}{% -\PackageError{flowfram}{Missing value for 'height' key}{}}{}% -\def\ff@height{#1}} -\define@key{flowframe}{x}{\ifthenelse{\equal{#1}{}}{% -\PackageError{flowfram}{Missing value for 'x' key}{}}{}% -\def\ff@x{#1}} -\define@key{flowframe}{y}{\ifthenelse{\equal{#1}{}}{% -\PackageError{flowfram}{Missing value for 'y' key}{}}{}% -\def\ff@y{#1}} -\define@key{flowframe}{evenx}{\ifthenelse{\equal{#1}{}}{% -\PackageError{flowfram}{Missing value for 'evenx' key}{}}{}% -\def\ff@evenx{#1}} -\define@key{flowframe}{eveny}{\ifthenelse{\equal{#1}{}}{% -\PackageError{flowfram}{Missing value for 'eveny' key}{}}{}% -\def\ff@eveny{#1}} -\define@key{flowframe}{oddx}{\ifthenelse{\equal{#1}{}}{% -\PackageError{flowfram}{Missing value for 'oddx' key}{}}{}% -\def\ff@oddx{#1}} -\define@key{flowframe}{oddy}{\ifthenelse{\equal{#1}{}}{% -\PackageError{flowfram}{Missing value for 'oddy' key}{}}{}% -\def\ff@oddy{#1}} -\define@key{flowframe}{label}{\ifthenelse{\equal{#1}{}}{% -\PackageError{flowfram}{Missing value for 'label' key}{}}{}% -\def\ff@label{#1}} -\define@key{flowframe}{border}[plain]{\ifthenelse{\equal{#1}{}}{% -\PackageError{flowfram}{Missing value for 'border' key - use -'none' for no border}{}}{}% -\ifthenelse{\equal{#1}{none}}{% -\def\ff@frame{false}}{\def\ff@frame{true}% -\ifthenelse{\equal{#1}{plain}}{\def\ff@frametype{fbox}}{% -\def\ff@frametype{#1}}}} -\define@key{flowframe}{bordercolor}{\ifthenelse{\equal{#1}{}}{% -\PackageError{flowfram}{Missing value for 'bordercolor' key}{}}{}% -\def\ff@col{#1}} -\define@key{flowframe}{textcolor}{\ifthenelse{\equal{#1}{}}{% -\PackageError{flowfram}{Missing value for 'textcolor' key}{}}{}% -\def\ff@txtcol{#1}} -\define@key{flowframe}{backcolor}{\ifthenelse{\equal{#1}{}}{% -\PackageError{flowfram}{Missing value for 'backcolor' key}{}}{}% -\def\ff@backcol{#1}} -\define@key{flowframe}{pages}{\ifthenelse{\equal{#1}{}}{% -\PackageError{flowfram}{Missing value for 'pages' key}{}}{}% -\def\ff@pages{#1}} -\define@key{flowframe}{offset}{\def\ff@offset{#1}% -\ifthenelse{\equal{#1}{}}{\PackageError{flowframe}{% -Invalid value for key 'offset'}{% -'offset' can either be 'compute' (to compute it according -to certain pre-defined rules) or a length}}{}} + \@flowframeid{#2}% + \edef#1{\number\ff@id}% +} +\newcommand*{\@flowframeid}[1]{% + \@colN=0\relax + \ff@id=0\relax + \whiledo{\@colN<\c@maxflow}% + {% + \advance\@colN by 1\relax + \ifthenelse + {% + \equal{#1}{\csname @col@id@\romannumeral\@colN\endcsname}% + }% + {% + \ff@id=\@colN\relax + \@colN=\c@maxflow + }% + {}% + }% + \ifnum\ff@id=0\relax + \PackageError{flowfram}{Can't find flow frame id '#1'}{}% + \fi +} +\define@key{flowframe}{width}% +{% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowfram}{Missing value for 'width' key}{}% + }% + {}% + \def\ff@width{#1}% +} +\define@key{flowframe}{height}% +{% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowfram}{Missing value for 'height' key}{}% + }% + {}% + \def\ff@height{#1}% +} +\define@key{flowframe}{x}% +{% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowfram}{Missing value for 'x' key}{}% + }% + {}% + \def\ff@x{#1}% +} +\define@key{flowframe}{y}% +{% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowfram}{Missing value for 'y' key}{}% + }% + {}% + \def\ff@y{#1}% +} +\define@key{flowframe}{evenx}% +{% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowfram}{Missing value for 'evenx' key}{}% + }% + {}% + \def\ff@evenx{#1}% +} +\define@key{flowframe}{eveny}% +{% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowfram}{Missing value for 'eveny' key}{}% + }% + {}% + \def\ff@eveny{#1}% +} +\define@key{flowframe}{oddx}% +{% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowfram}{Missing value for 'oddx' key}{}% + }% + {}% + \def\ff@oddx{#1}% +} +\define@key{flowframe}{oddy}% +{% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowfram}{Missing value for 'oddy' key}{}% + }% + {}% + \def\ff@oddy{#1}% +} +\define@key{flowframe}{label}% +{% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowfram}{Missing value for 'label' key}{}% + }% + {}% + \def\ff@label{#1}% +} +\define@key{flowframe}{border}[plain]% +{% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowfram}% + {% + Missing value for 'border' key - use + 'none' for no border% + }% + {}% + }% + {}% + \ifthenelse{\equal{#1}{none}}% + {% + \def\ff@frame{false}% + }% + {% + \def\ff@frame{true}% + \ifthenelse{\equal{#1}{plain}}% + {% + \def\ff@frametype{fbox}% + }% + {% + \def\ff@frametype{#1}% + }% + }% +} +\define@key{flowframe}{bordercolor}% +{% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowfram}{Missing value for 'bordercolor' key}{}% + }% + {}% + \def\ff@col{#1}% +} +\define@key{flowframe}{textcolor}% +{% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowfram}{Missing value for 'textcolor' key}{}% + }% + {}% + \def\ff@txtcol{#1}% +} +\define@key{flowframe}{backcolor}% +{% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowfram}{Missing value for 'backcolor' key}{}% + }% + {}% + \def\ff@backcol{#1}% +} +\define@key{flowframe}{pages}% +{% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowfram}{Missing value for 'pages' key}{}% + }% + {}% + \def\ff@pages{#1}% +} +\define@key{flowframe}{excludepages}% +{% + \def\ff@xpages{#1}% +} +\define@key{flowframe}{offset}% +{% + \def\ff@offset{#1}% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowframe}% + {% + Invalid value for key 'offset'% + }% + {% + 'offset' can either be 'compute' (to compute it according + to certain pre-defined rules) or a length% + }% + }% + {}% +} \define@key{flowframe}{angle}{\def\ff@angle{#1}% } -\define@key{flowframe}{margin}{% -\ifthenelse{\equal{#1}{left} \or \equal{#1}{right} -\or \equal{#1}{inner} \or \equal{#1}{outer}}{% -\def\ff@margin{#1}}{\PackageError{flowfram}{invalid value of -'margin' key}{Key 'margin' can only take the values -'left' or 'right'}}} -\define@key{flowframe}{clear}[true]{% -\ifthenelse{\equal{#1}{true}\or\equal{#1}{false}}{% -\def\ff@clear{#1}}{\PackageError{flowfram}{Key 'clear' is -boolean}{You can only specify the values 'true' or 'false'}}} -\define@key{flowframe}{style}{\ifthenelse{\equal{#1}{}}{% -\PackageError{flowfram}{Missing value for 'style' key}{}}{}% -\ifthenelse{\equal{#1}{none}}{\def\ff@style{relax}}{\def\ff@style{#1}}} -\define@key{flowframe}{shape}{\def\ff@shape{#1}% -} -\define@key{flowframe}{valign}{\ifthenelse{\equal{#1}{c} \or -\equal{#1}{t} \or \equal{#1}{b}}{\def\ff@valign{#1}}{% -\PackageError{flowfram}{Invalid value for 'valign' key}{You -may only specify 'c', 't' or 'b'}}} +\define@choicekey{flowframe}{margin}{left,right,inner,outer}% +{% + \def\ff@margin{#1}% +} +\define@choicekey{flowframe}{clear}{true,false}[true]{% + \def\ff@clear{#1}% +} +\define@key{flowframe}{style}% +{% + \ifthenelse{\equal{#1}{}}% + {% + \PackageError{flowfram}{Missing value for 'style' key}{}% + }% + {}% + \ifthenelse{\equal{#1}{none}}% + {% + \def\ff@style{relax}% + }% + {% + \def\ff@style{#1}% + }% +} +\define@key{flowframe}{shape}% +{% + \def\ff@shape{#1}% +} +\define@choicekey{flowframe}{valign}{c,t,b}% +{% + \def\ff@valign{#1}% +} \newcommand*{\setallflowframes}[1]{% -\@colN=0\whiledo{\@colN<\c@maxflow}{\advance\@colN by 1\relax -\@@setflowframe{\@colN}{#1}}} + \@colN=0\relax + \whiledo{\@colN<\c@maxflow}% + {% + \advance\@colN by 1\relax + \@@setflowframe{\@colN}{#1}% + }% +} \newcommand*{\setflowframe}{\@ifstar\@ssetflowframe\@setflowframe} \newcommand{\@ssetflowframe}[2]{% -\@for\@ff@id:=#1\do{% -\@flowframeid{\@ff@id}% -\@@setflowframe{\ff@id}{#2}}} + \@for\@ff@id:=#1\do{% + \@flowframeid{\@ff@id}% + \@@setflowframe{\ff@id}{#2}% + }% +} \newcommand*{\@setflowframe}[2]{% -\ifthenelse{\equal{#1}{all}}{% -\setallflowframes{#2}}{% -\ifthenelse{\equal{#1}{odd} \TE@or \equal{#1}{even}}{% -\ifthenelse{\equal{#1}{odd}}{\@colN=1}{\@colN=2}% -\whiledo{\@colN<\c@maxflow\TE@or\@colN=\c@maxflow}{% -\@@setflowframe{\@colN}{#2}% -\advance\@colN by 2\relax}% -}{% -\@for\@ff@id:=#1\do{% -\def\@ff@numstart{0}\def\@ff@numend{10000}% -\@ff@getrange{\@ff@id}% -\ifnum\@ff@numstart=0\relax - \def\@ff@numstart{1}% -\fi -\ifnum\@ff@numend>\c@maxflow\relax - \def\@ff@numend{\c@maxflow}% -\fi -\@colN=\@ff@numstart\relax -\whiledo{\@colN<\@ff@numend \TE@or \@colN=\@ff@numend}{% -\@@setflowframe{\@colN}{#2}% -\advance\@colN by 1\relax -}}}}} + \ifthenelse{\equal{#1}{all}}% + {% + \setallflowframes{#2}% + }% + {% + \ifthenelse{\equal{#1}{odd} \TE@or \equal{#1}{even}}% + {% + \ifthenelse{\equal{#1}{odd}}% + {% + \@colN=1\relax + }% + {% + \@colN=2\relax + }% + \whiledo{\@colN<\c@maxflow\TE@or\@colN=\c@maxflow}% + {% + \@@setflowframe{\@colN}{#2}% + \advance\@colN by 2\relax + }% + }% + {% + \@for\@ff@id:=#1\do + {% + \def\@ff@numstart{0}% + \def\@ff@numend{10000}% + \@ff@getrange{\@ff@id}% + \ifnum\@ff@numstart=0\relax + \def\@ff@numstart{1}% + \fi + \ifnum\@ff@numend>\c@maxflow\relax + \def\@ff@numend{\c@maxflow}% + \fi + \@colN=\@ff@numstart\relax + \whiledo{\@colN<\@ff@numend \TE@or \@colN=\@ff@numend}% + {% + \@@setflowframe{\@colN}{#2}% + \advance\@colN by 1\relax + }% + }% + }% + }% +} \newcommand*{\@@setflowframe}[2]{% -\def\ff@frame{}\def\ff@width{}\def\ff@height{}\def\ff@margin{}% -\def\ff@x{}\def\ff@y{}\def\ff@frametype{}\def\ff@col{}% -\def\ff@valign{}\def\ff@style{}% -\def\ff@txtcol{}\def\ff@clear{}\def\ff@offset{}\def\ff@pages{}% -\def\ff@label{}\def\ff@backcol{}\def\ff@evenx{}\def\ff@eveny{}% -\def\ff@oddx{}\def\ff@oddy{}\def\ff@angle{}\def\ff@shape{\empty}% -\setkeys{flowframe}{#2}% -\ifthenelse{\equal{\ff@frame}{}}{}{% -\setboolean{columnframe\romannumeral#1}{\ff@frame}}% -\ifthenelse{\equal{\ff@width}{}}{}{% -\expandafter\setlength\csname colwidth\romannumeral#1\endcsname -{\ff@width}}% -\ifthenelse{\equal{\ff@height}{}}{}{% -\expandafter\setlength\csname colheight\romannumeral#1\endcsname -{\ff@height}}% -\ifthenelse{\equal{\ff@x}{}}{}{% -\expandafter\setlength\csname col@\romannumeral#1@posx\endcsname -{\ff@x}% -\expandafter\setlength\csname col@\romannumeral#1@evenx\endcsname -{\ff@x}} -\ifthenelse{\equal{\ff@y}{}}{}{% -\expandafter\setlength\csname col@\romannumeral#1@posy\endcsname -{\ff@y}% -\expandafter\setlength\csname col@\romannumeral#1@eveny\endcsname -{\ff@y}}% -\ifthenelse{\equal{\ff@evenx}{}}{}{% -\expandafter\setlength\csname col@\romannumeral#1@evenx\endcsname -{\ff@evenx}}% -\ifthenelse{\equal{\ff@eveny}{}}{}{% -\expandafter\setlength\csname col@\romannumeral#1@eveny\endcsname -{\ff@eveny}}% -\ifthenelse{\equal{\ff@oddx}{}}{}{% -\expandafter\setlength\csname col@\romannumeral#1@posx\endcsname -{\ff@oddx}}% -\ifthenelse{\equal{\ff@oddy}{}}{}{% -\expandafter\setlength\csname col@\romannumeral#1@posy\endcsname -{\ff@oddy}}% -\ifthenelse{\equal{\ff@label}{}}{}{% -\@s@tflowframeid{#1}[\ff@label]}% -\ifthenelse{\equal{\ff@frametype}{}}{}{% -\expandafter\edef\csname @ff@frametype@\romannumeral#1\endcsname -{\ff@frametype}}% -\ifthenelse{\equal{\ff@col}{}}{}{% -\expandafter\@setframecol\ff@col\end{#1}{col}{ff}}% -\ifthenelse{\equal{\ff@txtcol}{}}{}{% -\expandafter\@setframecol\ff@txtcol\end{#1}{txtcol}{ff}}% -\ifthenelse{\equal{\ff@backcol}{}}{}{% -\expandafter\@setframecol\ff@backcol\end{#1}{backcol}{ff}}% -\ifthenelse{\equal{\ff@margin}{}}{}{% -\expandafter\xdef\csname @ff@margin@\romannumeral#1\endcsname -{\ff@margin}}% -\ifthenelse{\equal{\ff@pages}{}}{}{% -\expandafter\xdef\csname @ff@pages@\romannumeral#1\endcsname -{\ff@pages}}% -\ifthenelse{\equal{\ff@offset}{}}{}{% -\expandafter\xdef\csname @ff@offset@\romannumeral#1\endcsname -{\ff@offset}}% -\ifthenelse{\equal{\ff@angle}{}}{}{% -\expandafter\xdef\csname @ff@angle@\romannumeral#1\endcsname -{\ff@angle}}% -\ifthenelse{\equal{\ff@clear}{}}{}{% -\PackageError{flowfram}% -{Key 'clear' not available for flow frames}{}}% -\ifthenelse{\equal{\ff@style}{}}{}{% -\PackageError{flowfram}% -{Key 'style' not available for flow frames}{}}% -\if\ff@shape\empty -\else -\PackageError{flowfram}% -{Key 'shape' not available for flow frames}{}% -\fi -\ifthenelse{\equal{\ff@valign}{}}{}{% -\PackageError{flowfram}% -{Key 'valign' not available for flow frames}{}}% + \def\ff@frame{}\def\ff@width{}\def\ff@height{}\def\ff@margin{}% + \def\ff@x{}\def\ff@y{}\def\ff@frametype{}\def\ff@col{}% + \def\ff@valign{}\def\ff@style{}% + \def\ff@txtcol{}\def\ff@clear{}\def\ff@offset{}\def\ff@pages{}% + \def\ff@label{}\def\ff@backcol{}\def\ff@evenx{}\def\ff@eveny{}% + \def\ff@oddx{}\def\ff@oddy{}\def\ff@angle{}% + \let\ff@xpages\undefined + \let\ff@shape\undefined + \setkeys{flowframe}{#2}% + \ifdefempty{\ff@frame}{}% + {% + \setboolean{columnframe\romannumeral#1}{\ff@frame}% + }% + \ifdefempty{\ff@width}{}% + {% + \expandafter + \setlength\csname colwidth\romannumeral#1\endcsname + {\ff@width}% + }% + \ifdefempty{\ff@height}{}% + {% + \expandafter + \setlength\csname colheight\romannumeral#1\endcsname + {\ff@height}% + }% + \ifdefempty{\ff@x}{}% + {% + \expandafter + \setlength\csname col@\romannumeral#1@posx\endcsname + {\ff@x}% + \expandafter + \setlength\csname col@\romannumeral#1@evenx\endcsname + {\ff@x}% + } + \ifdefempty{\ff@y}{}% + {% + \expandafter + \setlength\csname col@\romannumeral#1@posy\endcsname + {\ff@y}% + \expandafter + \setlength\csname col@\romannumeral#1@eveny\endcsname + {\ff@y}% + }% + \ifdefempty{\ff@evenx}{}% + {% + \expandafter + \setlength\csname col@\romannumeral#1@evenx\endcsname + {\ff@evenx}% + }% + \ifdefempty{\ff@eveny}{}% + {% + \expandafter + \setlength\csname col@\romannumeral#1@eveny\endcsname + {\ff@eveny}% + }% + \ifdefempty{\ff@oddx}{}% + {% + \expandafter + \setlength\csname col@\romannumeral#1@posx\endcsname + {\ff@oddx}% + }% + \ifdefempty{\ff@oddy}{}% + {% + \expandafter + \setlength\csname col@\romannumeral#1@posy\endcsname + {\ff@oddy}% + }% + \ifdefempty{\ff@label}{}% + {% + \@s@tflowframeid{#1}[\ff@label]% + }% + \ifdefempty{\ff@frametype}{}% + {% + \expandafter + \edef\csname @ff@frametype@\romannumeral#1\endcsname{% + \ff@frametype}% + }% + \ifdefempty{\ff@col}{}% + {% + \expandafter\@setframecol\ff@col\end{#1}{col}{ff}% + }% + \ifdefempty{\ff@txtcol}{}% + {% + \expandafter\@setframecol\ff@txtcol\end{#1}{txtcol}{ff}% + }% + \ifdefempty{\ff@backcol}{}% + {% + \expandafter\@setframecol\ff@backcol\end{#1}{backcol}{ff}% + }% + \ifdefempty{\ff@margin}{}% + {% + \expandafter + \xdef\csname @ff@margin@\romannumeral#1\endcsname{% + \ff@margin}% + }% + \ifdefempty{\ff@pages}{}% + {% + \flowsetpagelist{#1}{\ff@pages}% + }% + \ifundef{\ff@xpages}{}% + {% + \flowsetexclusion{#1}{\ff@xpages}% + }% + \ifdefempty{\ff@offset}{}% + {% + \expandafter + \xdef\csname @ff@offset@\romannumeral#1\endcsname{% + \ff@offset}% + }% + \ifdefempty{\ff@angle}{}% + {% + \expandafter + \xdef\csname @ff@angle@\romannumeral#1\endcsname{% + \ff@angle}% + }% + \ifdefempty{\ff@clear}{}% + {% + \PackageError{flowfram}% + {Key 'clear' not available for flow frames}{}% + }% + \ifdefempty{\ff@style}{}% + {% + \PackageError{flowfram}% + {Key 'style' not available for flow frames}{}% + }% + \ifundef{\ff@shape}{}% + {% + \PackageError{flowfram}% + {Key 'shape' not available for flow frames}{}% + }% + \ifdefempty{\ff@valign}{}% + {% + \PackageError{flowfram}% + {Key 'valign' not available for flow frames}{}% + }% +} +\newcommand*{\flowsetpagelist}[2]{% + \expandafter + \xdef\csname @ff@pages@\romannumeral#1\endcsname{#2}% + \flf@message{Setting page range for flow frame + \number#1\space\space to "#2"}% +} +\newcommand*{\flowsetexclusion}[2]{% + \expandafter + \xdef\csname @ff@xpages@\romannumeral#1\endcsname{#2}% + \flf@message{Setting exclusion for flow frame + \number#1\space\space to "#2"}% +} +\newcommand*{\flowaddexclusion}[2]{% + \ifcsempty{@ff@xpages@\romannumeral#1} + {% + \expandafter + \xdef\csname @ff@xpages@\romannumeral#1\endcsname{#2}% + }% + {% + \expandafter + \xdef\csname @ff@xpages@\romannumeral#1\endcsname{% + \csname @ff@xpages@\romannumeral#1\endcsname,#2}% + }% + \flf@message{Setting exclusion for flow frame + \number#1\space\space to + "\csname @ff@xpages@\romannumeral#1\endcsname"}% } \newcommand*{\@@flowframeswapcoords}[1]{% -\setlength{\@ff@tmp@x}% -{\csname col@\romannumeral#1@evenx\endcsname} -\expandafter\setlength\csname col@\romannumeral#1@evenx\endcsname -{\csname col@\romannumeral#1@posx\endcsname}% -\expandafter\setlength\csname col@\romannumeral#1@posx\endcsname -{\@ff@tmp@x}% -\setlength{\@ff@tmp@y}% -{\csname col@\romannumeral#1@eveny\endcsname} -\expandafter\setlength\csname col@\romannumeral#1@eveny\endcsname -{\csname col@\romannumeral#1@posy\endcsname}% -\expandafter\setlength\csname col@\romannumeral#1@posy\endcsname -{\@ff@tmp@y}% + \setlength{\@ff@tmp@x}% + {\csname col@\romannumeral#1@evenx\endcsname} + \expandafter\setlength\csname col@\romannumeral#1@evenx\endcsname + {\csname col@\romannumeral#1@posx\endcsname}% + \expandafter\setlength\csname col@\romannumeral#1@posx\endcsname + {\@ff@tmp@x}% + \setlength{\@ff@tmp@y}% + {\csname col@\romannumeral#1@eveny\endcsname} + \expandafter\setlength\csname col@\romannumeral#1@eveny\endcsname + {\csname col@\romannumeral#1@posy\endcsname}% + \expandafter\setlength\csname col@\romannumeral#1@posy\endcsname + {\@ff@tmp@y}% } \newcommand*{\ffswapoddeven}{% -\@ifstar\@sflowframeswapcoords\@flowframeswapcoords} + \@ifstar\@sflowframeswapcoords\@flowframeswapcoords +} \newcommand*{\@sflowframeswapcoords}[1]{% -\@for\@ff@id:=#1\do{% -\@flowframeid{\@ff@id}% -\@@flowframeswapcoords{\ff@id}}} + \@for\@ff@id:=#1\do + {% + \@flowframeid{\@ff@id}% + \@@flowframeswapcoords{\ff@id}% + }% +} \newcommand*{\@flowframeswapcoords}[1]{% -\ifthenelse{\equal{#1}{all}}{% -\ff@id=0\relax -\whiledo{\ff@id<\c@maxflow}{\advance\ff@id by 1\relax -\@@flowframeswapcoords{\ff@id}}% -}{% -\ifthenelse{\equal{#1}{odd} \TE@or \equal{#1}{even}}{% -\ifthenelse{\equal{#1}{odd}}{\@colN=1}{\@colN=2}% -\whiledo{\@colN<\c@maxflow\TE@or\@colN=\c@maxflow}{% -\@@flowframeswapcoords{\@colN}% -\advance\@colN by 2\relax}% -}{% -\@for\@ff@id:=#1\do{% -\def\@ff@numstart{0}\def\@ff@numend{10000}% -\@ff@getrange{\@ff@id}% -\ifnum\@ff@numstart=0\relax - \def\@ff@numstart{1}% -\fi -\ifnum\@ff@numend>\c@maxflow - \def\@ff@numend{\c@maxflow}% -\fi -\@colN=\@ff@numstart -\whiledo{\@colN<\@ff@numend \TE@or \@colN=\@ff@numend}{% -\@@flowframeswapcoords{\@colN}% -\advance\@colN by 1\relax -}}}}} + \ifthenelse{\equal{#1}{all}}% + {% + \ff@id=0\relax + \whiledo{\ff@id<\c@maxflow}% + {% + \advance\ff@id by 1\relax + \@@flowframeswapcoords{\ff@id}% + }% + }% + {% + \ifthenelse{\equal{#1}{odd} \TE@or \equal{#1}{even}}% + {% + \ifthenelse{\equal{#1}{odd}}{\@colN=1}{\@colN=2}% + \whiledo{\@colN<\c@maxflow\TE@or\@colN=\c@maxflow}% + {% + \@@flowframeswapcoords{\@colN}% + \advance\@colN by 2\relax + }% + }% + {% + \@for\@ff@id:=#1\do + {% + \def\@ff@numstart{0}% + \def\@ff@numend{100000}% + \@ff@getrange{\@ff@id}% + \ifnum\@ff@numstart=0\relax + \def\@ff@numstart{1}% + \fi + \ifnum\@ff@numend>\c@maxflow + \def\@ff@numend{\c@maxflow}% + \fi + \@colN=\@ff@numstart + \whiledo{\@colN<\@ff@numend \TE@or \@colN=\@ff@numend}% + {% + \@@flowframeswapcoords{\@colN}% + \advance\@colN by 1\relax + }% + }% + }% + }% +} \newcommand*{\flowframex}[1]{% -\csname col@\romannumeral#1@posx\endcsname} + \csname col@\romannumeral#1@posx\endcsname +} \newcommand*{\flowframey}[1]{% -\csname col@\romannumeral#1@posy\endcsname} + \csname col@\romannumeral#1@posy\endcsname +} \newcommand*{\flowframeevenx}[1]{% -\csname col@\romannumeral#1@evenx\endcsname} + \csname col@\romannumeral#1@evenx\endcsname +} \newcommand*{\flowframeeveny}[1]{% -\csname col@\romannumeral#1@eveny\endcsname} + \csname col@\romannumeral#1@eveny\endcsname +} \newcommand{\flowframewidth}[1]{% -\csname colwidth\romannumeral#1\endcsname} + \csname colwidth\romannumeral#1\endcsname +} \newcommand*{\flowframeheight}[1]{% -\csname colheight\romannumeral#1\endcsname} + \csname colheight\romannumeral#1\endcsname +} \def\@setframecol{\@ifnextchar[\@@setframecol\@@setfr@mecol} \def\@@setframecol[#1]#2\end#3#4#5{% -\expandafter\edef\csname @#5@#4@\romannumeral#3\endcsname{% -[#1]{#2}}} + \expandafter\edef\csname @#5@#4@\romannumeral#3\endcsname{% + [#1]{#2}}% +} \def\@@setfr@mecol#1\end#2#3#4{% -\expandafter\edef\csname @#4@#3@\romannumeral#2\endcsname{{#1}}} + \expandafter\edef\csname @#4@#3@\romannumeral#2\endcsname{{#1}}% +} \newcommand*{\newstaticframe}{\@n@wstaticframe} \newcommand*{\@n@wstaticframe}{% -\global\advance\c@maxstatic by 1\relax -\newboolean{staticframe\romannumeral\c@maxstatic}% -\@ifstar\@snewstaticframe\@newstaticframe + \global\advance\c@maxstatic by 1\relax + \newboolean{staticframe\romannumeral\c@maxstatic}% + \@ifstar\@snewstaticframe\@newstaticframe } \newcommand{\@snewstaticframe}{% -\setboolean{staticframe\romannumeral\c@maxstatic}{true}% -\@@newstaticframe} + \setboolean{staticframe\romannumeral\c@maxstatic}{true}% + \@@newstaticframe +} \newcommand{\@newstaticframe}{% -\setboolean{staticframe\romannumeral\c@maxstatic}{false}% -\@@newstaticframe} + \setboolean{staticframe\romannumeral\c@maxstatic}{false}% + \@@newstaticframe +} \newcommand*{\@@newstaticframe}[5][all]{% -\expandafter -\newbox\csname @staticframe@\romannumeral\c@maxstatic\endcsname -\expandafter -\newlength\csname @sf@\romannumeral\c@maxstatic @posx\endcsname -\expandafter -\newlength\csname @sf@\romannumeral\c@maxstatic @posy\endcsname -\expandafter\setlength -\csname @sf@\romannumeral\c@maxstatic @posx\endcsname{#4}% -\expandafter\setlength -\csname @sf@\romannumeral\c@maxstatic @posy\endcsname{#5}% -\expandafter\newlength -\csname @sf@\romannumeral\c@maxstatic @evenx\endcsname -\expandafter\newlength -\csname @sf@\romannumeral\c@maxstatic @eveny\endcsname -\expandafter\setlength -\csname @sf@\romannumeral\c@maxstatic @evenx\endcsname{#4}% -\expandafter\setlength -\csname @sf@\romannumeral\c@maxstatic @eveny\endcsname{#5}% -{\@ff@tmp@x=#2\relax -\@ff@tmp@y=#3\relax -\expandafter -\xdef\csname @sf@dim@\romannumeral\c@maxstatic\endcsname{% -[c][\the\@ff@tmp@y][c]{\the\@ff@tmp@x}}}% -\expandafter -\def\csname @sf@col@\romannumeral\c@maxstatic\endcsname{% -\flowframecol}% -\expandafter -\def\csname @sf@txtcol@\romannumeral\c@maxstatic\endcsname{% -\flowframetextcol}% -\expandafter -\def\csname @sf@backcol@\romannumeral\c@maxstatic\endcsname{% -{none}}% -\expandafter -\xdef\csname @sf@pages@\romannumeral\c@maxstatic\endcsname{#1}% -\expandafter -\gdef\csname @sf@offset@\romannumeral\c@maxstatic\endcsname{% -compute}% -\expandafter -\gdef\csname @sf@angle@\romannumeral\c@maxstatic\endcsname{0}% -\expandafter -\gdef\csname @sf@shape@\romannumeral\c@maxstatic\endcsname{\relax}% -\expandafter -\def\csname @sf@frametype@\romannumeral\c@maxstatic\endcsname{% -fbox}% -\newboolean{@sf@clear@\romannumeral\c@maxstatic}% -\setboolean{@sf@clear@\romannumeral\c@maxstatic}{false} -\@ifnextchar[{\@s@tstaticframeid{\c@maxstatic}}% -{\@s@tstaticframeid{\c@maxstatic}[\number\c@maxstatic]}} + \expandafter + \newbox\csname @staticframe@\romannumeral\c@maxstatic\endcsname + \expandafter + \newlength\csname @sf@\romannumeral\c@maxstatic @posx\endcsname + \expandafter + \newlength\csname @sf@\romannumeral\c@maxstatic @posy\endcsname + \expandafter\setlength + \csname @sf@\romannumeral\c@maxstatic @posx\endcsname{#4}% + \expandafter\setlength + \csname @sf@\romannumeral\c@maxstatic @posy\endcsname{#5}% + \expandafter\newlength + \csname @sf@\romannumeral\c@maxstatic @evenx\endcsname + \expandafter\newlength + \csname @sf@\romannumeral\c@maxstatic @eveny\endcsname + \expandafter\setlength + \csname @sf@\romannumeral\c@maxstatic @evenx\endcsname{#4}% + \expandafter\setlength + \csname @sf@\romannumeral\c@maxstatic @eveny\endcsname{#5}% + {\@ff@tmp@x=#2\relax + \@ff@tmp@y=#3\relax + \expandafter + \xdef\csname @sf@dim@\romannumeral\c@maxstatic\endcsname{% + [c][\the\@ff@tmp@y][c]{\the\@ff@tmp@x}}}% + \expandafter + \def\csname @sf@col@\romannumeral\c@maxstatic\endcsname{% + \flowframecol}% + \expandafter + \def\csname @sf@txtcol@\romannumeral\c@maxstatic\endcsname{% + \flowframetextcol}% + \expandafter + \def\csname @sf@backcol@\romannumeral\c@maxstatic\endcsname{% + {none}}% + \expandafter + \xdef\csname @sf@pages@\romannumeral\c@maxstatic\endcsname{#1}% + \expandafter + \gdef\csname @sf@xpages@\romannumeral\c@maxflow\endcsname{}% + \expandafter + \gdef\csname @sf@offset@\romannumeral\c@maxstatic\endcsname{% + compute}% + \expandafter + \gdef\csname @sf@angle@\romannumeral\c@maxstatic\endcsname{0}% + \expandafter + \gdef\csname @sf@shape@\romannumeral\c@maxstatic\endcsname{\relax}% + \expandafter + \def\csname @sf@frametype@\romannumeral\c@maxstatic\endcsname{% + fbox}% + \newboolean{@sf@clear@\romannumeral\c@maxstatic}% + \setboolean{@sf@clear@\romannumeral\c@maxstatic}{false} + \@ifnextchar[{\@s@tstaticframeid{\c@maxstatic}}% + {\@s@tstaticframeid{\c@maxstatic}[\number\c@maxstatic]}% +} \def\@s@tstaticframeid#1[#2]{% -\edef\ff@label{#2}% -\@sf@checkuniqueidl{#1}{\ff@label}% -\expandafter -\xdef\csname @sf@id@\romannumeral#1\endcsname{\ff@label}} + \edef\ff@label{#2}% + \@sf@checkuniqueidl{#1}{\ff@label}% + \expandafter + \xdef\csname @sf@id@\romannumeral#1\endcsname{\ff@label}% +} \newcommand*{\@sf@checkuniqueidl}[2]{% -\@colN=0\relax -\whiledo{\@colN<\c@maxstatic}{% -\advance\@colN by 1\relax -\ifnum\@colN=#1\relax -\else -\ifthenelse{% -\equal{#2}{\csname @sf@id@\romannumeral\@colN\endcsname}}{% -\PackageError{flowfram}{Static frame IDL '#2' already defined}{% -You can't assign this label, as it is already defined -for static frame \number\@colN}}{}% -\fi -}} + \@colN=0\relax + \whiledo{\@colN<\c@maxstatic}% + {% + \advance\@colN by 1\relax + \ifnum\@colN=#1\relax + \else + \ifthenelse + {% + \equal{#2}{\csname @sf@id@\romannumeral\@colN\endcsname}% + }% + {% + \PackageError{flowfram}% + {Static frame IDL '#2' already defined}% + {% + You can't assign this label, as it is already defined + for static frame \number\@colN + }% + }% + {}% + \fi + }% +} \newcommand*{\getstaticlabel}[1]{% -\csname @sf@id@\romannumeral#1\endcsname} + \csname @sf@id@\romannumeral#1\endcsname +} \newcommand*{\getstaticid}[2]{% -\@staticframeid{#2}\edef#1{\number\ff@id}} -\newcommand*{\@staticframeid}[1]{\@colN=0\relax -\ff@id=0\relax -\whiledo{\@colN<\c@maxstatic}{\advance\@colN by 1\relax -\ifthenelse{% -\equal{#1}{\csname @sf@id@\romannumeral\@colN\endcsname}}{% -\ff@id=\@colN\relax -\@colN=\c@maxstatic}{}}% -\ifnum\ff@id=0\PackageError{flowfram}{Can't find static frame -id '#1'}{}\fi} + \@staticframeid{#2}\edef#1{\number\ff@id}% +} +\newcommand*{\@staticframeid}[1]{% + \@colN=0\relax + \ff@id=0\relax + \whiledo{\@colN<\c@maxstatic}% + {% + \advance\@colN by 1\relax + \ifthenelse + {% + \equal{#1}{\csname @sf@id@\romannumeral\@colN\endcsname}% + }% + {% + \ff@id=\@colN\relax + \@colN=\c@maxstatic + }% + {}% + }% + \ifnum\ff@id=0\relax + \PackageError{flowfram}% + {Can't find static frame id '#1'}{}% + \fi +} \newcommand*{\staticframex}[1]{% -\csname @sf@\romannumeral#1@posx\endcsname} + \csname @sf@\romannumeral#1@posx\endcsname +} \newcommand*{\staticframey}[1]{% -\csname @sf@\romannumeral#1@posy\endcsname} + \csname @sf@\romannumeral#1@posy\endcsname +} \newcommand*{\staticframeevenx}[1]{% -\csname @sf@\romannumeral#1@evenx\endcsname} + \csname @sf@\romannumeral#1@evenx\endcsname +} \newcommand*{\staticframeeveny}[1]{% -\csname @sf@\romannumeral#1@eveny\endcsname} + \csname @sf@\romannumeral#1@eveny\endcsname +} \newcommand*{\setallstaticframes}[1]{% -\@colN=0\whiledo{\@colN<\c@maxstatic}{\advance\@colN by 1\relax -\@@setstaticframe{\@colN}{#1}}} + \@colN=0\relax + \whiledo{\@colN<\c@maxstatic}% + {% + \advance\@colN by 1\relax + \@@setstaticframe{\@colN}{#1}% + }% +} \newcommand*{\setstaticframe}{% -\@ifstar\@ssetstaticframe\@setstaticframe} + \@ifstar\@ssetstaticframe\@setstaticframe +} \newcommand*{\@ssetstaticframe}[2]{% -\@for\@ff@id:=#1\do{% -\@staticframeid{\@ff@id}% -\@@setstaticframe{\ff@id}{#2}}} + \@for\@ff@id:=#1\do + {% + \@staticframeid{\@ff@id}% + \@@setstaticframe{\ff@id}{#2}% + }% +} \newcommand*{\@setstaticframe}[2]{% -\ifthenelse{\equal{#1}{all}}{% -\setallstaticframes{#2}}{% -\ifthenelse{\equal{#1}{odd} \TE@or \equal{#1}{even}}{% -\ifthenelse{\equal{#1}{odd}}{\@colN=1}{\@colN=2}% -\whiledo{\@colN<\c@maxstatic\TE@or\@colN=\c@maxstatic}{% -\@@setstaticframe{\@colN}{#2}% -\advance\@colN by 2\relax}% -}{% -\@for\@ff@id:=#1\do{% -\def\@ff@numstart{0}\def\@ff@numend{10000}% -\@ff@getrange{\@ff@id}% -\ifnum\@ff@numstart=0\relax - \def\@ff@numstart{1}% -\fi -\ifnum\@ff@numend>\c@maxstatic\relax - \def\@ff@numend{\c@maxstatic}% -\fi -\@colN=\@ff@numstart\relax -\whiledo{\@colN<\@ff@numend \TE@or \@colN=\@ff@numend}{% -\@@setstaticframe{\@colN}{#2}% -\advance\@colN by 1\relax -}}}}} + \ifthenelse{\equal{#1}{all}}% + {% + \setallstaticframes{#2}% + }% + {% + \ifthenelse{\equal{#1}{odd} \TE@or \equal{#1}{even}}% + {% + \ifthenelse{\equal{#1}{odd}}{\@colN=1}{\@colN=2}% + \whiledo{\@colN<\c@maxstatic\TE@or\@colN=\c@maxstatic}% + {% + \@@setstaticframe{\@colN}{#2}% + \advance\@colN by 2\relax + }% + }% + {% + \@for\@ff@id:=#1\do + {% + \def\@ff@numstart{0}% + \def\@ff@numend{10000}% + \@ff@getrange{\@ff@id}% + \ifnum\@ff@numstart=0\relax + \def\@ff@numstart{1}% + \fi + \ifnum\@ff@numend>\c@maxstatic\relax + \def\@ff@numend{\c@maxstatic}% + \fi + \@colN=\@ff@numstart\relax + \whiledo{\@colN<\@ff@numend \TE@or \@colN=\@ff@numend}% + {% + \@@setstaticframe{\@colN}{#2}% + \advance\@colN by 1\relax + }% + }% + }% + }% +} \newcommand*{\@@setstaticframe}[2]{% -\expandafter\expandafter\expandafter -\@ff@getstaticpos\csname @sf@dim@\romannumeral#1\endcsname -\def\ff@frame{}\edef\ff@width{\the\@ff@tmp@x}\def\ff@angle{}% -\edef\ff@height{\the\@ff@tmp@y}\def\ff@style{}\def\ff@frametype{}% -\def\ff@x{}\def\ff@y{}\def\ff@col{}\def\ff@txtcol{}% -\def\ff@backcol{}\def\ff@shape{0}% -\def\ff@clear{}\def\ff@margin{}\def\ff@offset{}\def\ff@pages{}% -\def\ff@label{}\def\ff@evenx{}\def\ff@eveny{}% -\def\ff@oddx{}\def\ff@oddy{}% -\setkeys{flowframe}{#2}% -\ifthenelse{\equal{\ff@frame}{}}{}{% -\setboolean{staticframe\romannumeral#1}{\ff@frame}}% -\ifthenelse{\equal{\ff@x}{}}{}{% -\expandafter\global -\expandafter\setlength\csname @sf@\romannumeral#1@posx\endcsname -{\ff@x}% -\expandafter\global -\expandafter\setlength\csname @sf@\romannumeral#1@evenx\endcsname -{\ff@x}}% -\ifthenelse{\equal{\ff@y}{}}{}{% -\expandafter\global -\expandafter\setlength\csname @sf@\romannumeral#1@posy\endcsname -{\ff@y}% -\expandafter\global -\expandafter\setlength\csname @sf@\romannumeral#1@eveny\endcsname -{\ff@y}}% -\ifthenelse{\equal{\ff@evenx}{}}{}{% -\expandafter\global -\expandafter\setlength\csname @sf@\romannumeral#1@evenx\endcsname -{\ff@evenx}}% -\ifthenelse{\equal{\ff@eveny}{}}{}{% -\expandafter\global -\expandafter\setlength\csname @sf@\romannumeral#1@eveny\endcsname -{\ff@eveny}}% -\ifthenelse{\equal{\ff@oddx}{}}{}{% -\expandafter\global -\expandafter\setlength\csname @sf@\romannumeral#1@posx\endcsname -{\ff@oddx}}% -\ifthenelse{\equal{\ff@oddy}{}}{}{% -\expandafter\global -\expandafter\setlength\csname @sf@\romannumeral#1@posy\endcsname -{\ff@oddy}}% -\expandafter -\xdef\csname @sf@dim@\romannumeral#1\endcsname{% -[c][\ff@height][\ff@valign]{\ff@width}}% -\ifthenelse{\equal{\ff@frametype}{}}{}{% -\expandafter -\xdef\csname @sf@frametype@\romannumeral#1\endcsname{% -\ff@frametype}}% -\ifthenelse{\equal{\ff@label}{}}{}{% -\@s@tstaticframeid{#1}[\ff@label]} -\ifthenelse{\equal{\ff@col}{}}{}{% -\expandafter\@setframecol\ff@col\end{#1}{col}{sf}}% -\ifthenelse{\equal{\ff@txtcol}{}}{}{% -\expandafter\@setframecol\ff@txtcol\end{#1}{txtcol}{sf}}% -\ifthenelse{\equal{\ff@backcol}{}}{}{% -\expandafter\@setframecol\ff@backcol\end{#1}{backcol}{sf}}% -\ifthenelse{\equal{\ff@offset}{}}{}{% -\expandafter -\xdef\csname @sf@offset@\romannumeral#1\endcsname{\ff@offset}}% -\ifthenelse{\equal{\ff@angle}{}}{}{% -\expandafter -\xdef\csname @sf@angle@\romannumeral#1\endcsname{\ff@angle}}% -\if0\ff@shape -\else -\expandafter\global\expandafter -\let\csname @sf@shape@\romannumeral#1\endcsname\ff@shape -\fi -\ifthenelse{\equal{\ff@pages}{}}{}{% -\expandafter -\xdef\csname @sf@pages@\romannumeral#1\endcsname{\ff@pages}}% -\ifthenelse{\equal{\ff@clear}{}}{}{% -\setboolean{@sf@clear@\romannumeral#1}{\ff@clear}}% -\ifthenelse{\equal{\ff@margin}{}}{}{% -\PackageError{flowfram}{Key 'margin' not available for -static frames}{Static frames don't have marginal notes}}% -\ifthenelse{\equal{\ff@style}{}}{}{% -\PackageError{flowfram}{Key 'style' not available for -static frames}{}}% + \expandafter\expandafter\expandafter + \@ff@getstaticpos\csname @sf@dim@\romannumeral#1\endcsname + \def\ff@frame{}\edef\ff@width{\the\@ff@tmp@x}\def\ff@angle{}% + \edef\ff@height{\the\@ff@tmp@y}\def\ff@style{}\def\ff@frametype{}% + \def\ff@x{}\def\ff@y{}\def\ff@col{}\def\ff@txtcol{}% + \def\ff@backcol{}% + \def\ff@clear{}\def\ff@margin{}\def\ff@offset{}\def\ff@pages{}% + \def\ff@label{}\def\ff@evenx{}\def\ff@eveny{}% + \def\ff@oddx{}\def\ff@oddy{}% + \let\ff@shape\undefined + \let\ff@xpages\undefined + \setkeys{flowframe}{#2}% + \ifdefempty{\ff@frame}{}% + {% + \setboolean{staticframe\romannumeral#1}{\ff@frame}% + }% + \ifdefempty{\ff@x}{}% + {% + \expandafter\global\expandafter + \setlength\csname @sf@\romannumeral#1@posx\endcsname + {\ff@x}% + \expandafter\global\expandafter + \setlength\csname @sf@\romannumeral#1@evenx\endcsname + {\ff@x}% + }% + \ifdefempty{\ff@y}{}% + {% + \expandafter\global\expandafter + \setlength\csname @sf@\romannumeral#1@posy\endcsname + {\ff@y}% + \expandafter\global\expandafter + \setlength\csname @sf@\romannumeral#1@eveny\endcsname + {\ff@y}% + }% + \ifdefempty{\ff@evenx}{}% + {% + \expandafter\global\expandafter + \setlength\csname @sf@\romannumeral#1@evenx\endcsname + {\ff@evenx}% + }% + \ifdefempty{\ff@eveny}{}% + {% + \expandafter\global\expandafter + \setlength\csname @sf@\romannumeral#1@eveny\endcsname + {\ff@eveny}% + }% + \ifdefempty{\ff@oddx}{}% + {% + \expandafter\global\expandafter + \setlength\csname @sf@\romannumeral#1@posx\endcsname + {\ff@oddx}% + }% + \ifdefempty{\ff@oddy}{}% + {% + \expandafter\global\expandafter + \setlength\csname @sf@\romannumeral#1@posy\endcsname + {\ff@oddy}% + }% + \expandafter + \xdef\csname @sf@dim@\romannumeral#1\endcsname{% + [c][\ff@height][\ff@valign]{\ff@width}}% + \ifdefempty{\ff@frametype}{}% + {% + \expandafter + \xdef\csname @sf@frametype@\romannumeral#1\endcsname{% + \ff@frametype}% + }% + \ifdefempty{\ff@label}{}% + {% + \@s@tstaticframeid{#1}[\ff@label]% + } + \ifdefempty{\ff@col}{}% + {% + \expandafter\@setframecol\ff@col\end{#1}{col}{sf}% + }% + \ifdefempty{\ff@txtcol}{}% + {% + \expandafter\@setframecol\ff@txtcol\end{#1}{txtcol}{sf}% + }% + \ifdefempty{\ff@backcol}{}% + {% + \expandafter\@setframecol\ff@backcol\end{#1}{backcol}{sf}% + }% + \ifdefempty{\ff@offset}{}% + {% + \expandafter + \xdef\csname @sf@offset@\romannumeral#1\endcsname{\ff@offset}% + }% + \ifdefempty{\ff@angle}{}% + {% + \expandafter + \xdef\csname @sf@angle@\romannumeral#1\endcsname{\ff@angle}% + }% + \ifundef{\ff@shape}{}% + {% + \expandafter\global\expandafter + \let\csname @sf@shape@\romannumeral#1\endcsname\ff@shape + }% + \ifdefempty{\ff@pages}{}% + {% + \staticsetpagelist{#1}{\ff@pages}% + }% + \ifundef{\ff@xpages}{}% + {% + \staticsetexclusion{#1}{\ff@xpages}% + }% + \ifdefempty{\ff@clear}{}% + {% + \setboolean{@sf@clear@\romannumeral#1}{\ff@clear}% + }% + \ifdefempty{\ff@margin}{}% + {% + \PackageError{flowfram}% + {Key 'margin' not available for static frames}% + {Static frames don't have marginal notes}% + }% + \ifdefempty{\ff@style}{}% + {% + \PackageError{flowfram}% + {Key 'style' not available for static frames}{}% + }% } %\newcommand*{\simpar}{\hfil\vadjust{\vskip\parskip}\break\indent} \newcommand*{\simpar}{\hfill\\\indent\mbox{}} \let\FLForgpar\par -\newcommand{\ffpshpar}{\edef\flf@next{\hangafter=\the\hangafter -\hangindent=\the\hangindent}\FLForgpar\flf@next -\edef\flf@next{\prevgraf=\the\prevgraf}\@ff@parshape\indent\mbox{}\flf@next} +\newcommand{\ffpshpar}{% + \edef\flf@next{\hangafter=\the\hangafter + \hangindent=\the\hangindent}% + \FLForgpar\flf@next + \edef\flf@next{\prevgraf=\the\prevgraf}% + \@ff@parshape\indent\mbox{}\flf@next +} \def\@ff@parshape{\parshape=0} \newcommand*{\@ff@sectionhead}[1]{% -\def\ff@sechead{#1}% -\ffpshpar -\@ifstar{\@s@ff@heading}{\@dblarg\@ff@heading}} + \def\ff@sechead{#1}% + \ffpshpar + \@ifstar{\@s@ff@heading}{\@dblarg\@ff@heading}% +} \def\@s@ff@heading#1{% -\@ifundefined{@ff@old\ff@sechead}{\PackageError{flowfram}{Unknown -heading command '\ff@sechead'}{}}{% -\begingroup -\edef\flf@next{\hangafter=\the\hangafter -\hangindent=\the\hangindent}\FLForgpar\flf@next -\let\par=\FLForgpar -\edef\flf@next{\prevgraf=\the\prevgraf}% -\csname @ff@old\ff@sechead\endcsname*{\@ff@parshape\flf@next -#1}% -\xdef\flf@next{\@ff@parshape -\prevgraf=\the\prevgraf}% -\endgroup -}% -\mbox{}\flf@next\let\flf@next\undefined} + \@ifundefined{@ff@old\ff@sechead}% + {% + \PackageError{flowfram}% + {Unknown heading command '\ff@sechead'}{}% + }% + {% + \begingroup + \edef\flf@next{\hangafter=\the\hangafter + \hangindent=\the\hangindent}% + \FLForgpar\flf@next + \let\par=\FLForgpar + \edef\flf@next{\prevgraf=\the\prevgraf}% + \csname @ff@old\ff@sechead\endcsname*{% + \@ff@parshape\flf@next #1}% + \xdef\flf@next{% + \@ff@parshape + \prevgraf=\the\prevgraf}% + \endgroup + }% + \mbox{}\flf@next + \let\flf@next\undefined +} \def\@ff@heading[#1]#2{% -\@ifundefined{@ff@old\ff@sechead}{\PackageError{flowfram}{Unknown -heading command '\ff@sechead'}{}}{% -\begingroup -\edef\flf@next{\hangafter=\the\hangafter -\hangindent=\the\hangindent}\FLForgpar\flf@next -\let\par=\FLForgpar -\edef\flf@next{\prevgraf=\the\prevgraf}% -\csname @ff@old\ff@sechead\endcsname[#1]{\@ff@parshape\flf@next -#2}% -\xdef\flf@next{\@ff@parshape -\prevgraf=\the\prevgraf}% -\endgroup}% -\mbox{}\flf@next\let\flf@next\undefined} + \@ifundefined{@ff@old\ff@sechead}% + {% + \PackageError{flowfram}% + {Unknown heading command '\ff@sechead'}{}% + }% + {% + \begingroup + \edef\flf@next{% + \hangafter=\the\hangafter + \hangindent=\the\hangindent}% + \FLForgpar\flf@next + \let\par=\FLForgpar + \edef\flf@next{\prevgraf=\the\prevgraf}% + \csname @ff@old\ff@sechead\endcsname[#1]{% + \@ff@parshape\flf@next #2}% + \xdef\flf@next{\@ff@parshape + \prevgraf=\the\prevgraf}% + \endgroup + }% + \mbox{}\flf@next + \let\flf@next\undefined +} \newcommand*{\@ff@setsecthead}{% -\let\@ff@oldsection=\section -\let\@ff@oldsubsection=\subsection -\let\@ff@oldsubsubsection=\subsubsection -\let\@ff@oldparagraph=\paragraph -\let\@ff@oldsubparagraph=\subparagraph -\def\section{\@ff@sectionhead{section}}% -\def\subsection{\@ff@sectionhead{subsection}}% -\def\subsubsection{\@ff@sectionhead{subsubsection}}% -\def\paragraph{\@ff@sectionhead{paragraph}}% -\def\subparagraph{\@ff@sectionhead{subparagraph}}% + \let\@ff@oldsection=\section + \let\@ff@oldsubsection=\subsection + \let\@ff@oldsubsubsection=\subsubsection + \let\@ff@oldparagraph=\paragraph + \let\@ff@oldsubparagraph=\subparagraph + \def\section{\@ff@sectionhead{section}}% + \def\subsection{\@ff@sectionhead{subsection}}% + \def\subsubsection{\@ff@sectionhead{subsubsection}}% + \def\paragraph{\@ff@sectionhead{paragraph}}% + \def\subparagraph{\@ff@sectionhead{subparagraph}}% } \def\@ff@getshape#1#2\relax{% -\ifx#1\parshape -\def\ff@shape{1}% -\else -\ifx#1\shapepar -\def\ff@shape{2}% -\else -\ifx#1\relax -\def\ff@shape{0}% -\else -\PackageError{flowfram}{Unknown shape \string#1}{}% -\def\ff@shape{2}% -\fi -\fi -\fi} + \ifdefequal{#1}{\parshape}% + {% + \def\ff@shape{1}% + }% + {% + \ifdefequal{#1}{\shapepar}% + {% + \def\ff@shape{2}% + }% + {% + \ifx#1\relax + \def\ff@shape{0}% + \else + \PackageError{flowfram}{Unknown shape \string#1}{}% + \def\ff@shape{2}% + \fi + }% + }% +} \newcommand*{\@ff@disablesec}{% -\def\section{\PackageError{flowfram}{You can't have -sectioning commands within a \string\shapepar}{}}% -\def\subsection{\PackageError{flowfram}{You can't have -sectioning commands within a \string\shapepar}{}}% -\def\subsubsection{\PackageError{flowfram}{You can't have -sectioning commands within a \string\shapepar}{}}% -\def\paragraph{\PackageError{flowfram}{You can't have -sectioning commands within a \string\shapepar}{}}% -\def\subparagraph{\PackageError{flowfram}{You can't have -sectioning commands within a \string\shapepar}{}}% + \def\section{% + \PackageError{flowfram}% + {You can't have sectioning commands within a \string\shapepar}{}% + }% + \def\subsection{% + \PackageError{flowfram}% + {You can't have sectioning commands within a \string\shapepar}{}% + }% + \def\subsubsection{% + \PackageError{flowfram}% + {You can't have sectioning commands within a \string\shapepar}{}% + }% + \def\paragraph{% + \PackageError{flowfram}% + {You can't have sectioning commands within a \string\shapepar}{}% + }% + \def\subparagraph{% + \PackageError{flowfram}% + {You can't have sectioning commands within a \string\shapepar}{}% + }% } \newbox\staticframe \newenvironment{staticcontents}[1]{% -\let\continueonframe=\@staticcontinueonframe -\@beginstaticcontents{#1}% -}{% -\@endstaticcontents -\ignorespaces} -\newenvironment{staticcontents*}[1]{\@staticframeid{#1}% -\let\continueonframe=\@staticscontinueonframe -\@beginstaticcontents{\ff@id}% -}{% -\@endstaticcontents -\ignorespaces} -\newcommand{\@beginstaticcontents}[1]{% -\@ifundefined{@staticframe@\romannumeral#1}{% -\PackageError{flowfram}{Static frame '#1' not defined}{}}{}% -\expandafter\let\expandafter\@ff@parshape\csname @sf@shape@\romannumeral#1\endcsname -\expandafter\@ff@getshape\@ff@parshape\relax -\ifcase\ff@shape -\edef\@sf@mpg{% -\noexpand -\begin{minipage}\csname @sf@dim@\romannumeral#1\endcsname -\noexpand\begingroup -\noexpand\let\noexpand\FLForgpar=\noexpand\par + \let\continueonframe=\@staticcontinueonframe + \@beginstaticcontents{#1}% }% -\or -\edef\@sf@mpg{% -\noexpand -\begin{minipage}\csname @sf@dim@\romannumeral#1\endcsname -\@ff@parshape -\noexpand\begingroup -\noexpand\let\noexpand\FLForgpar=\noexpand\par -\noexpand\let\noexpand\par=\noexpand\ffpshpar -\noexpand\@ff@setsecthead -}% -\or -\edef\@sf@mpg{% -\noexpand -\begin{minipage}\csname @sf@dim@\romannumeral#1\endcsname -\noexpand\begingroup -\noexpand\@ff@disablesec -\noexpand\@ff@parshape +{% + \@endstaticcontents + \ignorespaces +} +\newenvironment{staticcontents*}[1]{% + \@staticframeid{#1}% + \let\continueonframe=\@staticscontinueonframe + \@beginstaticcontents{\ff@id}% }% -\fi -\edef\@sf@thisframe{\csname @staticframe@\romannumeral#1\endcsname}% -\begin{lrbox}{\staticframe}% -\edef\ff@txtcol{\csname @sf@txtcol@\romannumeral#1\endcsname}% -\@s@tfftextcol\noindent -\@sf@mpg -\setlength\parindent\sdfparindent +{% + \@endstaticcontents + \ignorespaces +} +\newcommand{\@beginstaticcontents}[1]{% + \@ifundefined{@staticframe@\romannumeral#1}% + {% + \PackageError{flowfram}{Static frame '#1' not defined}{}% + }% + {}% + \expandafter\let\expandafter\@ff@parshape\csname @sf@shape@\romannumeral#1\endcsname + \expandafter\@ff@getshape\@ff@parshape\relax + \ifcase\ff@shape + \edef\@sf@mpg{% + \noexpand + \begin{minipage}\csname @sf@dim@\romannumeral#1\endcsname + \noexpand\begingroup + \noexpand\let\noexpand\FLForgpar=\noexpand\par + }% + \or + \edef\@sf@mpg{% + \noexpand + \begin{minipage}\csname @sf@dim@\romannumeral#1\endcsname + \@ff@parshape + \noexpand\begingroup + \noexpand\let\noexpand\FLForgpar=\noexpand\par + \noexpand\let\noexpand\par=\noexpand\ffpshpar + \noexpand\@ff@setsecthead + }% + \or + \edef\@sf@mpg{% + \noexpand + \begin{minipage}\csname @sf@dim@\romannumeral#1\endcsname + \noexpand\begingroup + \noexpand\@ff@disablesec + \noexpand\@ff@parshape + }% + \fi + \edef\@sf@thisframe{\csname @staticframe@\romannumeral#1\endcsname}% + \begin{lrbox}{\staticframe}% + \edef\ff@txtcol{\csname @sf@txtcol@\romannumeral#1\endcsname}% + \@s@tfftextcol\noindent + \@sf@mpg + \setlength\parindent\sdfparindent } \newcommand*{\@endstaticcontents}{% -\ifnum\ff@shape=2\par -\else\FLForgpar\fi\endgroup\end{minipage}\end{lrbox}% -\expandafter\global\expandafter\sbox\@sf@thisframe{% -\usebox\staticframe}} + \ifnum\ff@shape=2\relax + \par + \else + \FLForgpar + \fi + \endgroup + \end{minipage}% + \end{lrbox}% + \expandafter\global\expandafter + \sbox\@sf@thisframe{\usebox\staticframe}% +} \newcommand{\setstaticcontents}{% -\@ifstar\@sstaticconts\@staticconts} -\newcommand{\@sstaticconts}[2]{\begin{staticcontents*}{#1}% -#2\end{staticcontents*}} -\newcommand{\@staticconts}[2]{\begin{staticcontents}{#1}% -#2\end{staticcontents}} + \@ifstar\@sstaticconts\@staticconts +} +\newcommand{\@sstaticconts}[2]{% + \begin{staticcontents*}{#1}% + #2% + \end{staticcontents*}% +} +\newcommand{\@staticconts}[2]{% + \begin{staticcontents}{#1}% + #2% + \end{staticcontents}% +} +\newcommand*{\staticsetpagelist}[2]{% + \expandafter + \xdef\csname @sf@pages@\romannumeral#1\endcsname{#2}% + \flf@message{Setting page range for static frame + \number#1\space\space to "#2"}% +} +\newcommand*{\staticsetexclusion}[2]{% + \expandafter + \xdef\csname @sf@xpages@\romannumeral#1\endcsname{#2}% + \flf@message{Setting exclusion for static frame + \number#1\space\space to "#2"}% +} +\newcommand*{\staticaddexclusion}[2]{% + \ifcsempty{@sf@xpages@\romannumeral#1} + {% + \expandafter + \xdef\csname @sf@xpages@\romannumeral#1\endcsname{#2}% + }% + {% + \expandafter + \xdef\csname @sf@xpages@\romannumeral#1\endcsname{% + \csname @sf@xpages@\romannumeral#1\endcsname,#2}% + }% + \flf@message{Setting exclusion for static frame + \number#1\space\space to + "\csname @sf@xpages@\romannumeral#1\endcsname"}% +} \newcommand*{\@@staticframeswapcoords}[1]{% -\setlength{\@ff@tmp@x}% -{\csname @sf@\romannumeral#1@evenx\endcsname} -\expandafter\setlength\csname @sf@\romannumeral#1@evenx\endcsname -{\csname @sf@\romannumeral#1@posx\endcsname}% -\expandafter\setlength\csname @sf@\romannumeral#1@posx\endcsname -{\@ff@tmp@x}% -\setlength{\@ff@tmp@y}% -{\csname @sf@\romannumeral#1@eveny\endcsname} -\expandafter\setlength\csname @sf@\romannumeral#1@eveny\endcsname -{\csname @sf@\romannumeral#1@posy\endcsname}% -\expandafter\setlength\csname @sf@\romannumeral#1@posy\endcsname -{\@ff@tmp@y}% + \setlength{\@ff@tmp@x}% + {\csname @sf@\romannumeral#1@evenx\endcsname} + \expandafter\setlength\csname @sf@\romannumeral#1@evenx\endcsname + {\csname @sf@\romannumeral#1@posx\endcsname}% + \expandafter\setlength\csname @sf@\romannumeral#1@posx\endcsname + {\@ff@tmp@x}% + \setlength{\@ff@tmp@y}% + {\csname @sf@\romannumeral#1@eveny\endcsname} + \expandafter\setlength\csname @sf@\romannumeral#1@eveny\endcsname + {\csname @sf@\romannumeral#1@posy\endcsname}% + \expandafter\setlength\csname @sf@\romannumeral#1@posy\endcsname + {\@ff@tmp@y}% } \newcommand*{\sfswapoddeven}{% -\@ifstar\@sstaticframeswapcoords\@staticframeswapcoords} + \@ifstar\@sstaticframeswapcoords\@staticframeswapcoords +} \newcommand*{\@sstaticframeswapcoords}[1]{% -\@for\@ff@id:=#1\do{% -\@staticframeid{\@ff@id}% -\@@staticframeswapcoords{\ff@id}}} + \@for\@ff@id:=#1\do + {% + \@staticframeid{\@ff@id}% + \@@staticframeswapcoords{\ff@id}% + }% +} \newcommand*{\@staticframeswapcoords}[1]{% -\ifthenelse{\equal{#1}{all}}{% -\ff@id=0\relax -\whiledo{\ff@id<\c@maxflow}{\advance\ff@id by 1\relax -\@@staticframeswapcoords{\ff@id}}% -}{% -\ifthenelse{\equal{#1}{odd} \TE@or \equal{#1}{even}}{% -\ifthenelse{\equal{#1}{odd}}{\@colN=1}{\@colN=2}% -\whiledo{\@colN<\c@maxflow\TE@or\@colN=\c@maxflow}{% -\@@staticframeswapcoords{\@colN}% -\advance\@colN by 2\relax}% -}{% -\@for\@ff@id:=#1\do{% -\def\@ff@numstart{0}\def\@ff@numend{10000}% -\@ff@getrange{\@ff@id}% -\ifnum\@ff@numstart=0\relax - \def\@ff@numstart{1}% -\fi -\ifnum\@ff@numend>\c@maxflow - \def\@ff@numend{\c@maxflow}% -\fi -\@colN=\@ff@numstart -\whiledo{\@colN<\@ff@numend \TE@or \@colN=\@ff@numend}{% -\@@staticframeswapcoords{\@colN}% -\advance\@colN by 1\relax -}}}}} + \ifthenelse{\equal{#1}{all}}% + {% + \ff@id=0\relax + \whiledo{\ff@id<\c@maxflow}% + {% + \advance\ff@id by 1\relax + \@@staticframeswapcoords{\ff@id}% + }% + }% + {% + \ifthenelse{\equal{#1}{odd} \TE@or \equal{#1}{even}}% + {% + \ifthenelse{\equal{#1}{odd}}{\@colN=1}{\@colN=2}% + \whiledo{\@colN<\c@maxflow\TE@or\@colN=\c@maxflow}% + {% + \@@staticframeswapcoords{\@colN}% + \advance\@colN by 2\relax + }% + }% + {% + \@for\@ff@id:=#1\do + {% + \def\@ff@numstart{0}\def\@ff@numend{100000}% + \@ff@getrange{\@ff@id}% + \ifnum\@ff@numstart=0\relax + \def\@ff@numstart{1}% + \fi + \ifnum\@ff@numend>\c@maxflow + \def\@ff@numend{\c@maxflow}% + \fi + \@colN=\@ff@numstart + \whiledo{\@colN<\@ff@numend \TE@or \@colN=\@ff@numend}% + {% + \@@staticframeswapcoords{\@colN}% + \advance\@colN by 1\relax + }% + }% + }% + }% +} \newcommand*{\newdynamicframe}{% -\@n@wdynamicframe} + \@n@wdynamicframe +} \newcommand*{\@n@wdynamicframe}{% -\global\advance\c@maxdynamic by 1\relax -\newboolean{dynamicframe\romannumeral\c@maxdynamic} -\@ifstar\@snewdynamicframe\@newdynamicframe + \global\advance\c@maxdynamic by 1\relax + \newboolean{dynamicframe\romannumeral\c@maxdynamic} + \@ifstar\@snewdynamicframe\@newdynamicframe } \newcommand*{\@snewdynamicframe}{% -\setboolean{dynamicframe\romannumeral\c@maxdynamic}{true}% -\@@newdynamicframe} + \setboolean{dynamicframe\romannumeral\c@maxdynamic}{true}% + \@@newdynamicframe +} \newcommand*{\@newdynamicframe}{% -\setboolean{dynamicframe\romannumeral\c@maxdynamic}{false}% -\@@newdynamicframe} + \setboolean{dynamicframe\romannumeral\c@maxdynamic}{false}% + \@@newdynamicframe +} \newcommand*{\@@newdynamicframe}[5][all]{% -\expandafter -\gdef\csname @dynamicframe@\romannumeral\c@maxdynamic\endcsname{}% -\expandafter -\newlength\csname @df@\romannumeral\c@maxdynamic @posx\endcsname -\expandafter -\newlength\csname @df@\romannumeral\c@maxdynamic @posy\endcsname -\expandafter\setlength -\csname @df@\romannumeral\c@maxdynamic @posx\endcsname{#4}% -\expandafter\setlength -\csname @df@\romannumeral\c@maxdynamic @posy\endcsname{#5}% -\expandafter\newlength -\csname @df@\romannumeral\c@maxdynamic @evenx\endcsname -\expandafter\newlength -\csname @df@\romannumeral\c@maxdynamic @eveny\endcsname -\expandafter\setlength -\csname @df@\romannumeral\c@maxdynamic @evenx\endcsname{#4}% -\expandafter\setlength -\csname @df@\romannumeral\c@maxdynamic @eveny\endcsname{#5}% -{\@ff@tmp@x=#2\relax -\@ff@tmp@y=#3\relax -\expandafter -\xdef\csname @df@dim@\romannumeral\c@maxdynamic\endcsname{% -[c][\the\@ff@tmp@y][t]{\the\@ff@tmp@x}}}% -\expandafter -\gdef\csname @df@col@\romannumeral\c@maxdynamic\endcsname{% -\flowframecol}% -\expandafter -\gdef\csname @df@txtcol@\romannumeral\c@maxdynamic\endcsname{% -\flowframetextcol}% -\expandafter -\gdef\csname @df@backcol@\romannumeral\c@maxdynamic\endcsname{% -{none}}% -\expandafter -\gdef\csname @df@pages@\romannumeral\c@maxdynamic\endcsname{#1}% -\expandafter -\gdef\csname @df@frametype@\romannumeral\c@maxdynamic\endcsname{% -fbox}% -\expandafter -\gdef\csname @df@style@\romannumeral\c@maxdynamic\endcsname{relax}% -\expandafter -\gdef\csname @df@offset@\romannumeral\c@maxdynamic\endcsname{compute}% -\expandafter -\gdef\csname @df@angle@\romannumeral\c@maxdynamic\endcsname{0}% -\expandafter -\gdef\csname @df@shape@\romannumeral\c@maxdynamic\endcsname{\relax}% -\newboolean{@df@clear@\romannumeral\c@maxdynamic}% -\setboolean{@df@clear@\romannumeral\c@maxdynamic}{false}% -\@ifnextchar[{\@s@tdynamicframeid{\c@maxdynamic}}% -{\@s@tdynamicframeid{\c@maxdynamic}[\number\c@maxdynamic]}} + \expandafter + \gdef\csname @dynamicframe@\romannumeral\c@maxdynamic\endcsname{}% + \expandafter + \newlength\csname @df@\romannumeral\c@maxdynamic @posx\endcsname + \expandafter + \newlength\csname @df@\romannumeral\c@maxdynamic @posy\endcsname + \expandafter\setlength + \csname @df@\romannumeral\c@maxdynamic @posx\endcsname{#4}% + \expandafter\setlength + \csname @df@\romannumeral\c@maxdynamic @posy\endcsname{#5}% + \expandafter\newlength + \csname @df@\romannumeral\c@maxdynamic @evenx\endcsname + \expandafter\newlength + \csname @df@\romannumeral\c@maxdynamic @eveny\endcsname + \expandafter\setlength + \csname @df@\romannumeral\c@maxdynamic @evenx\endcsname{#4}% + \expandafter\setlength + \csname @df@\romannumeral\c@maxdynamic @eveny\endcsname{#5}% + {% + \@ff@tmp@x=#2\relax + \@ff@tmp@y=#3\relax + \expandafter + \xdef\csname @df@dim@\romannumeral\c@maxdynamic\endcsname{% + [c][\the\@ff@tmp@y][t]{\the\@ff@tmp@x}% + }% + }% + \expandafter + \gdef\csname @df@col@\romannumeral\c@maxdynamic\endcsname{% + \flowframecol + }% + \expandafter + \gdef\csname @df@txtcol@\romannumeral\c@maxdynamic\endcsname{% + \flowframetextcol + }% + \expandafter + \gdef\csname @df@backcol@\romannumeral\c@maxdynamic\endcsname{% + {none}}% + \expandafter + \gdef\csname @df@pages@\romannumeral\c@maxdynamic\endcsname{#1}% + \expandafter + \gdef\csname @df@xpages@\romannumeral\c@maxflow\endcsname{}% + \expandafter + \gdef\csname @df@frametype@\romannumeral\c@maxdynamic\endcsname{% + fbox}% + \expandafter + \gdef\csname @df@style@\romannumeral\c@maxdynamic\endcsname{relax}% + \expandafter + \gdef\csname @df@offset@\romannumeral\c@maxdynamic\endcsname{compute}% + \expandafter + \gdef\csname @df@angle@\romannumeral\c@maxdynamic\endcsname{0}% + \expandafter + \gdef\csname @df@shape@\romannumeral\c@maxdynamic\endcsname{\relax}% + \newboolean{@df@clear@\romannumeral\c@maxdynamic}% + \setboolean{@df@clear@\romannumeral\c@maxdynamic}{false}% + \@ifnextchar[{\@s@tdynamicframeid{\c@maxdynamic}}% + {\@s@tdynamicframeid{\c@maxdynamic}[\number\c@maxdynamic]}% +} \def\@s@tdynamicframeid#1[#2]{% -\edef\ff@label{#2}% -\@df@checkuniqueidl{#1}{\ff@label}% -\expandafter -\xdef\csname @df@id@\romannumeral#1\endcsname{\ff@label}} + \edef\ff@label{#2}% + \@df@checkuniqueidl{#1}{\ff@label}% + \expandafter + \xdef\csname @df@id@\romannumeral#1\endcsname{\ff@label}% +} \newcommand*{\@df@checkuniqueidl}[2]{% -\@colN=0\relax -\whiledo{\@colN<\c@maxdynamic}{% -\advance\@colN by 1\relax -\ifnum\@colN=#1\relax -\else -\ifthenelse{\equal{#2}% -{\csname @df@id@\romannumeral\@colN\endcsname}}{% -\PackageError{flowfram}{Dynamic frame IDL '#2' already defined}{% -You can't assign this label, as it is already defined -for dynamic frame \number\@colN}}{}% -\fi -}} + \@colN=0\relax + \whiledo{\@colN<\c@maxdynamic}% + {% + \advance\@colN by 1\relax + \ifnum\@colN=#1\relax + \else + \ifthenelse + {% + \equal{#2}% + {\csname @df@id@\romannumeral\@colN\endcsname}% + }% + {% + \PackageError{flowfram}% + {Dynamic frame IDL '#2' already defined}% + {% + You can't assign this label, as it is already defined + for dynamic frame \number\@colN + }% + }% + {}% + \fi + }% +} \newcommand*{\getdynamiclabel}[1]{% -\csname @df@id@\romannumeral#1\endcsname} + \csname @df@id@\romannumeral#1\endcsname +} \newcommand*{\getdynamicid}[2]{% -\@dynamicframeid{#2}\edef#1{\number\ff@id}} -\newcommand*{\@dynamicframeid}[1]{\@colN=0\relax -\ff@id=0\relax -\whiledo{\@colN<\c@maxdynamic}{\advance\@colN by 1\relax -\ifthenelse{% -\equal{#1}{\csname @df@id@\romannumeral\@colN\endcsname}}{% -\ff@id=\@colN\relax -\@colN=\c@maxdynamic}{}}% -\ifnum\ff@id=0\PackageError{flowfram}{Can't find dynamic frame -id '#1'}{}\fi} + \@dynamicframeid{#2}\edef#1{\number\ff@id}% +} +\newcommand*{\@dynamicframeid}[1]{% + \@colN=0\relax + \ff@id=0\relax + \whiledo{\@colN<\c@maxdynamic}% + {% + \advance\@colN by 1\relax + \ifthenelse + {% + \equal{#1}{\csname @df@id@\romannumeral\@colN\endcsname}% + }% + {% + \ff@id=\@colN\relax + \@colN=\c@maxdynamic + }% + {}% + }% + \ifnum\ff@id=0\relax + \PackageError{flowfram}% + {Can't find dynamic frame id '#1'}{}% + \fi +} \newcommand*{\@getframeid}[2]{% -\@ifdefined{@#1frameid}{\csname @#1frameid\endcsname{#2}}{% -\PackageError{flowfram}{Unknown frame type `#1'}{Frame types can -be one of: flow, static or dynamic}}} + \@ifdefined{@#1frameid}% + {\csname @#1frameid\endcsname{#2}}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {Frame types can be one of: flow, static or dynamic}% + }% +} \newcommand*{\dynamicframex}[1]{% -\csname @df@\romannumeral#1@posx\endcsname} + \csname @df@\romannumeral#1@posx\endcsname +} \newcommand*{\dynamicframey}[1]{% -\csname @df@\romannumeral#1@posy\endcsname} + \csname @df@\romannumeral#1@posy\endcsname +} \newcommand*{\dynamicframeevenx}[1]{% -\csname @df@\romannumeral#1@evenx\endcsname} + \csname @df@\romannumeral#1@evenx\endcsname +} \newcommand*{\dynamicframeeveny}[1]{% -\csname @df@\romannumeral#1@eveny\endcsname} + \csname @df@\romannumeral#1@eveny\endcsname +} \newcommand*{\setalldynamicframes}[1]{% -\@colN=0\whiledo{\@colN<\c@maxdynamic}{\advance\@colN by 1\relax -\@@setdynamicframe{\@colN}{#1}}} + \@colN=0\relax + \whiledo{\@colN<\c@maxdynamic}% + {% + \advance\@colN by 1\relax + \@@setdynamicframe{\@colN}{#1}% + }% +} \newcommand*{\setdynamicframe}{% -\@ifstar\@ssetdynamicframe\@setdynamicframe} + \@ifstar\@ssetdynamicframe\@setdynamicframe +} \newcommand*{\@ssetdynamicframe}[2]{% -\@for\@ff@id:=#1\do{% -\@dynamicframeid{\@ff@id}% -\@@setdynamicframe{\ff@id}{#2}}} + \@for\@ff@id:=#1\do{% + \@dynamicframeid{\@ff@id}% + \@@setdynamicframe{\ff@id}{#2}% + }% +} \newcommand*{\@setdynamicframe}[2]{% -\ifthenelse{\equal{#1}{all}}{% -\setalldynamicframes{#2}}{% -\ifthenelse{\equal{#1}{odd} \TE@or \equal{#1}{even}}{% -\ifthenelse{\equal{#1}{odd}}{\@colN=1}{\@colN=2}% -\whiledo{\@colN<\c@maxdynamic\TE@or\@colN=\c@maxdynamic}{% -\@@setdynamicframe{\@colN}{#2}% -\advance\@colN by 2\relax}% -}{% -\@for\@ff@id:=#1\do{% -\def\@ff@numstart{0}\def\@ff@numend{10000}% -\@ff@getrange{\@ff@id}% -\ifnum\@ff@numstart=0\relax - \def\@ff@numstart{1}% -\fi -\ifnum\@ff@numend>\c@maxdynamic\relax - \def\@ff@numend{\c@maxdynamic}% -\fi -\@colN=\@ff@numstart\relax -\whiledo{\@colN<\@ff@numend \TE@or \@colN=\@ff@numend}{% -\@@setdynamicframe{\@colN}{#2}% -\advance\@colN by 1\relax -}}}}} + \ifthenelse{\equal{#1}{all}}% + {% + \setalldynamicframes{#2}% + }% + {% + \ifthenelse{\equal{#1}{odd} \TE@or \equal{#1}{even}}% + {% + \ifthenelse{\equal{#1}{odd}}% + {\@colN=1}% + {\@colN=2}% + \whiledo{\@colN<\c@maxdynamic\TE@or\@colN=\c@maxdynamic}% + {% + \@@setdynamicframe{\@colN}{#2}% + \advance\@colN by 2\relax + }% + }% + {% + \@for\@ff@id:=#1\do{% + \def\@ff@numstart{0}% + \def\@ff@numend{10000}% + \@ff@getrange{\@ff@id}% + \ifnum\@ff@numstart=0\relax + \def\@ff@numstart{1}% + \fi + \ifnum\@ff@numend>\c@maxdynamic\relax + \def\@ff@numend{\c@maxdynamic}% + \fi + \@colN=\@ff@numstart\relax + \whiledo{\@colN<\@ff@numend \TE@or \@colN=\@ff@numend}% + {% + \@@setdynamicframe{\@colN}{#2}% + \advance\@colN by 1\relax + }% + }% + }% + }% +} \newcommand*{\@@setdynamicframe}[2]{% -\expandafter\expandafter\expandafter -\@ff@getstaticpos\csname @df@dim@\romannumeral#1\endcsname -\def\ff@frame{}\edef\ff@width{\the\@ff@tmp@x}% -\edef\ff@height{\the\@ff@tmp@y}\def\ff@style{}\def\ff@frametype{}% -\def\ff@x{}\def\ff@y{}\def\ff@col{}\def\ff@txtcol{}\def\ff@backcol{}% -\def\ff@clear{}\def\ff@margin{}\def\ff@offset{}\def\ff@pages{}% -\def\ff@label{}\def\ff@evenx{}\def\ff@eveny{}% -\def\ff@oddx{}\def\ff@oddy{}\def\ff@angle{}\def\ff@shape{0}% -\setkeys{flowframe}{#2}% -\ifthenelse{\equal{\ff@frame}{}}{}{% -\setboolean{dynamicframe\romannumeral#1}{\ff@frame}}% -\ifthenelse{\equal{\ff@x}{}}{}{% -\expandafter\global\expandafter\setlength -\csname @df@\romannumeral#1@posx\endcsname{\ff@x}% -\expandafter\global\expandafter\setlength -\csname @df@\romannumeral#1@evenx\endcsname{\ff@x}}% -\ifthenelse{\equal{\ff@y}{}}{}{% -\expandafter\global\expandafter\setlength -\csname @df@\romannumeral#1@posy\endcsname{\ff@y}% -\expandafter\global\expandafter\setlength -\csname @df@\romannumeral#1@eveny\endcsname{\ff@y}}% -\ifthenelse{\equal{\ff@evenx}{}}{}{% -\expandafter\global\expandafter\setlength -\csname @df@\romannumeral#1@evenx\endcsname{\ff@evenx}}% -\ifthenelse{\equal{\ff@eveny}{}}{}{% -\expandafter\global\expandafter\setlength -\csname @df@\romannumeral#1@eveny\endcsname{\ff@eveny}}% -\ifthenelse{\equal{\ff@oddx}{}}{}{% -\expandafter\global\expandafter\setlength -\csname @df@\romannumeral#1@posx\endcsname{\ff@oddx}}% -\ifthenelse{\equal{\ff@oddy}{}}{}{% -\expandafter\global\expandafter\setlength -\csname @df@\romannumeral#1@posy\endcsname{\ff@oddy}}% -\expandafter\xdef\csname @df@dim@\romannumeral#1\endcsname{% -[c][\ff@height][\ff@valign]{\ff@width}}% -\ifthenelse{\equal{\ff@label}{}}{}{% -\@s@tdynamicframeid{#1}[\ff@label]}% -\ifthenelse{\equal{\ff@frametype}{}}{}{% -\expandafter -\xdef\csname @df@frametype@\romannumeral#1\endcsname{% -\ff@frametype}}% -\ifthenelse{\equal{\ff@col}{}}{}{% -\expandafter\@setframecol\ff@col\end{#1}{col}{df}}% -\ifthenelse{\equal{\ff@txtcol}{}}{}{% -\expandafter\@setframecol\ff@txtcol\end{#1}{txtcol}{df}}% -\ifthenelse{\equal{\ff@backcol}{}}{}{% -\expandafter\@setframecol\ff@backcol\end{#1}{backcol}{df}}% -\ifthenelse{\equal{\ff@offset}{}}{}{% -\expandafter -\xdef\csname @df@offset@\romannumeral#1\endcsname{\ff@offset}}% -\ifthenelse{\equal{\ff@angle}{}}{}{% -\expandafter -\xdef\csname @df@angle@\romannumeral#1\endcsname{\ff@angle}}% -\if0\ff@shape -\else -\expandafter\global\expandafter -\let\csname @df@shape@\romannumeral#1\endcsname\ff@shape -\fi -\ifthenelse{\equal{\ff@pages}{}}{}{% -\expandafter\xdef\csname @df@pages@\romannumeral#1\endcsname{% -\ff@pages}}% -\ifthenelse{\equal{\ff@style}{}}{}{% -\@ifundefined{\ff@style}{\PackageError{flowfram}% -{Unknown style '\ff@style'}{The command \expandafter -\string\csname\ff@style\endcsname\space has not been defined}}{% -\expandafter -\xdef\csname @df@style@\romannumeral#1\endcsname{\ff@style}}}% -\ifthenelse{\equal{\ff@clear}{}}{}{% -\setboolean{@df@clear@\romannumeral#1}{\ff@clear}% -}% -\ifthenelse{\equal{\ff@margin}{}}{}{% -\PackageError{flowfram}{Key 'margin' not available for dynamic -frames}{dynamic frames don't have marginal notes}}% + \expandafter\expandafter\expandafter + \@ff@getstaticpos\csname @df@dim@\romannumeral#1\endcsname + \def\ff@frame{}\edef\ff@width{\the\@ff@tmp@x}% + \edef\ff@height{\the\@ff@tmp@y}\def\ff@style{}\def\ff@frametype{}% + \def\ff@x{}\def\ff@y{}\def\ff@col{}\def\ff@txtcol{}\def\ff@backcol{}% + \def\ff@clear{}\def\ff@margin{}\def\ff@offset{}\def\ff@pages{}% + \def\ff@label{}\def\ff@evenx{}\def\ff@eveny{}% + \def\ff@oddx{}\def\ff@oddy{}\def\ff@angle{}% + \let\ff@shape\undefined + \let\ff@xpages\undefined + \setkeys{flowframe}{#2}% + \ifdefempty{\ff@frame}% + {}% + {% + \setboolean{dynamicframe\romannumeral#1}{\ff@frame}% + }% + \ifdefempty{\ff@x}% + {}% + {% + \expandafter\global\expandafter\setlength + \csname @df@\romannumeral#1@posx\endcsname{\ff@x}% + \expandafter\global\expandafter\setlength + \csname @df@\romannumeral#1@evenx\endcsname{\ff@x}% + }% + \ifdefempty{\ff@y}% + {}% + {% + \expandafter\global\expandafter\setlength + \csname @df@\romannumeral#1@posy\endcsname{\ff@y}% + \expandafter\global\expandafter\setlength + \csname @df@\romannumeral#1@eveny\endcsname{\ff@y}% + }% + \ifdefempty{\ff@evenx}% + {}% + {% + \expandafter\global\expandafter\setlength + \csname @df@\romannumeral#1@evenx\endcsname{\ff@evenx}% + }% + \ifdefempty{\ff@eveny}% + {}% + {% + \expandafter\global\expandafter\setlength + \csname @df@\romannumeral#1@eveny\endcsname{\ff@eveny}% + }% + \ifdefempty{\ff@oddx}% + {}% + {% + \expandafter\global\expandafter\setlength + \csname @df@\romannumeral#1@posx\endcsname{\ff@oddx}% + }% + \ifdefempty{\ff@oddy}% + {}% + {% + \expandafter\global\expandafter\setlength + \csname @df@\romannumeral#1@posy\endcsname{\ff@oddy}% + }% + \expandafter\xdef\csname @df@dim@\romannumeral#1\endcsname{% + [c][\ff@height][\ff@valign]{\ff@width}% + }% + \ifdefempty{\ff@label}% + {}% + {% + \@s@tdynamicframeid{#1}[\ff@label]% + }% + \ifdefempty{\ff@frametype}% + {}% + {% + \expandafter + \xdef\csname @df@frametype@\romannumeral#1\endcsname{% + \ff@frametype + }% + }% + \ifdefempty{\ff@col}% + {}% + {% + \expandafter\@setframecol\ff@col\end{#1}{col}{df}% + }% + \ifdefempty{\ff@txtcol}% + {}% + {% + \expandafter\@setframecol\ff@txtcol\end{#1}{txtcol}{df}% + }% + \ifdefempty{\ff@backcol}% + {}% + {% + \expandafter\@setframecol\ff@backcol\end{#1}{backcol}{df}% + }% + \ifdefempty{\ff@offset}% + {}% + {% + \expandafter + \xdef\csname @df@offset@\romannumeral#1\endcsname{\ff@offset}% + }% + \ifdefempty{\ff@angle}% + {}% + {% + \expandafter + \xdef\csname @df@angle@\romannumeral#1\endcsname{\ff@angle}% + }% + \ifundef{\ff@shape}{}% + {% + \expandafter\global\expandafter + \let\csname @df@shape@\romannumeral#1\endcsname\ff@shape + }% + \ifdefempty{\ff@pages}% + {}% + {% + \dynamicsetpagelist{#1}{\ff@pages}% + }% + \ifundef{\ff@xpages}{}% + {% + \dynamicsetexclusion{#1}{\ff@xpages}% + }% + \ifdefempty{\ff@style}% + {}% + {% + \ifcsundef{\ff@style}% + {% + \PackageError{flowfram}% + {Unknown style '\ff@style'}% + {% + The command \expandafter\@gobble\string\\\ff@style + \space has not been defined% + }% + }% + {% + \expandafter + \xdef\csname @df@style@\romannumeral#1\endcsname{\ff@style}% + }% + }% + \ifdefempty{\ff@clear}% + {}% + {% + \setboolean{@df@clear@\romannumeral#1}{\ff@clear}% + }% + \ifdefempty{\ff@margin}% + {}% + {% + \PackageError{flowfram}% + {% + Key 'margin' not available for dynamic frames% + }% + {dynamic frames don't have marginal notes}% + }% +} +\newcommand*{\dynamicsetpagelist}[2]{% + \expandafter + \xdef\csname @df@pages@\romannumeral#1\endcsname{#2}% + \flf@message{Setting page range for dynamic frame + \number#1\space\space to "#2"}% +} +\newcommand*{\dynamicsetexclusion}[2]{% + \expandafter + \xdef\csname @df@xpages@\romannumeral#1\endcsname{#2}% + \flf@message{Setting exclusion for dynamic frame + \number#1\space\space to "#2"}% +} +\newcommand*{\dynamicaddexclusion}[2]{% + \ifcsempty{@df@xpages@\romannumeral#1} + {% + \expandafter + \xdef\csname @df@xpages@\romannumeral#1\endcsname{#2}% + }% + {% + \expandafter + \xdef\csname @df@xpages@\romannumeral#1\endcsname{% + \csname @df@xpages@\romannumeral#1\endcsname,#2}% + }% + \flf@message{Setting exclusion for dynamic frame + \number#1\space\space to + "\csname @df@xpages@\romannumeral#1\endcsname"}% } \newcommand*{\@@dynamicframeswapcoords}[1]{% -\setlength{\@ff@tmp@x}% -{\csname @df@\romannumeral#1@evenx\endcsname}% -\expandafter\setlength -\csname @df@\romannumeral#1@evenx\endcsname -{\csname @df@\romannumeral#1@posx\endcsname}% -\expandafter\setlength -\csname @df@\romannumeral#1@posx\endcsname{\@ff@tmp@x}% -\setlength{\@ff@tmp@y}% -{\csname @df@\romannumeral#1@eveny\endcsname}% -\expandafter\setlength -\csname @df@\romannumeral#1@eveny\endcsname -{\csname @df@\romannumeral#1@posy\endcsname}% -\expandafter\setlength\csname @df@\romannumeral#1@posy\endcsname -{\@ff@tmp@y}% + \setlength{\@ff@tmp@x}% + {\csname @df@\romannumeral#1@evenx\endcsname}% + \expandafter\setlength + \csname @df@\romannumeral#1@evenx\endcsname + {\csname @df@\romannumeral#1@posx\endcsname}% + \expandafter\setlength + \csname @df@\romannumeral#1@posx\endcsname{\@ff@tmp@x}% + \setlength{\@ff@tmp@y}% + {\csname @df@\romannumeral#1@eveny\endcsname}% + \expandafter\setlength + \csname @df@\romannumeral#1@eveny\endcsname + {\csname @df@\romannumeral#1@posy\endcsname}% + \expandafter\setlength\csname @df@\romannumeral#1@posy\endcsname + {\@ff@tmp@y}% } \newcommand*{\dfswapoddeven}{% \@ifstar\@sdynamicframeswapcoords\@dynamicframeswapcoords} \newcommand*{\@sdynamicframeswapcoords}[1]{% -\@for\@ff@id:=#1\do{% -\@dynamicframeid{\@ff@id}% -\@@dynamicframeswapcoords{\ff@id}}} + \@for\@ff@id:=#1\do{% + \@dynamicframeid{\@ff@id}% + \@@dynamicframeswapcoords{\ff@id}}% +} \newcommand*{\@dynamicframeswapcoords}[1]{% -\ifthenelse{\equal{#1}{all}}{% -\ff@id=0\relax -\whiledo{\ff@id<\c@maxflow}{\advance\ff@id by 1\relax -\@@dynamicframeswapcoords{\ff@id}}% -}{% -\ifthenelse{\equal{#1}{odd} \TE@or \equal{#1}{even}}{% -\ifthenelse{\equal{#1}{odd}}{\@colN=1}{\@colN=2}% -\whiledo{\@colN<\c@maxflow\TE@or\@colN=\c@maxflow}{% -\@@dynamicframeswapcoords{\@colN}% -\advance\@colN by 2\relax}% -}{% -\@for\@ff@id:=#1\do{% -\def\@ff@numstart{0}\def\@ff@numend{10000}% -\@ff@getrange{\@ff@id}% -\ifnum\@ff@numstart=0\relax - \def\@ff@numstart{1}% -\fi -\ifnum\@ff@numend>\c@maxflow - \def\@ff@numend{\c@maxflow}% -\fi -\@colN=\@ff@numstart -\whiledo{\@colN<\@ff@numend \TE@or \@colN=\@ff@numend}{% -\@@dynamicframeswapcoords{\@colN}% -\advance\@colN by 1\relax -}}}}} + \ifthenelse{\equal{#1}{all}}% + {% + \ff@id=0\relax + \whiledo{\ff@id<\c@maxflow}% + {% + \advance\ff@id by 1\relax + \@@dynamicframeswapcoords{\ff@id}% + }% + }% + {% + \ifthenelse{\equal{#1}{odd} \TE@or \equal{#1}{even}}% + {% + \ifthenelse{\equal{#1}{odd}}% + {\@colN=1}% + {\@colN=2}% + \whiledo{\@colN<\c@maxflow\TE@or\@colN=\c@maxflow}% + {% + \@@dynamicframeswapcoords{\@colN}% + \advance\@colN by 2\relax + }% + }% + {% + \@for\@ff@id:=#1\do{% + \def\@ff@numstart{0}% + \def\@ff@numend{10000}% + \@ff@getrange{\@ff@id}% + \ifnum\@ff@numstart=0\relax + \def\@ff@numstart{1}% + \fi + \ifnum\@ff@numend>\c@maxflow + \def\@ff@numend{\c@maxflow}% + \fi + \@colN=\@ff@numstart + \whiledo{\@colN<\@ff@numend \TE@or \@colN=\@ff@numend}% + {% + \@@dynamicframeswapcoords{\@colN}% + \advance\@colN by 1\relax + }% + }% + }% + }% +} \newenvironment{dynamiccontents}[1]{% -\def\@flf@{dynamiccontents}% -\xdynamiccontents{#1}}{% -\endxdynamiccontents + \def\@flf@{dynamiccontents}% + \xdynamiccontents{#1}}{% + \endxdynamiccontents } \newtoks\@dynamictok \def\xdynamiccontents#1{% -\def\@flf@idn{#1}% -\@dynamictok{}\@flf@get@body + \def\@flf@idn{#1}% + \@dynamictok{}\@flf@get@body } \long\def\@flf@get@body#1\end{% -\@flf@checkcontinued#1\continueonframe\@nil -\ifdfcontinued - \expandafter\flf@ta\expandafter{\@flf@tmpa}% - \edef\@flf@tmp{\the\@dynamictok\the\flf@ta}% - \@dynamictok\expandafter{\@flf@tmp}% -\else - \@dynamictok\expandafter{\the\@dynamictok#1}% -\fi -\@flf@find@end} + \@flf@checkcontinued#1\continueonframe\@nil + \ifdfcontinued + \expandafter\flf@ta\expandafter{\@flf@tmpa}% + \edef\@flf@tmp{\the\@dynamictok\the\flf@ta}% + \@dynamictok\expandafter{\@flf@tmp}% + \else + \@dynamictok\expandafter{\the\@dynamictok#1}% + \fi + \@flf@find@end +} \newif\ifdfcontinued \long\def\@flf@checkcontinued#1\continueonframe#2\@nil{% -\long\def\@flf@tmpa{#1}\long\def\@flf@tmpb{#2}% -\ifx\@flf@tmpb\@lempty - \dfcontinuedfalse -\else - \dfcontinuedtrue - \flf@getcontargs#2\@ff@text\@ff@nextid\@ff@rest -\fi + \long\def\@flf@tmpa{#1}\long\def\@flf@tmpb{#2}% + \ifx\@flf@tmpb\@lempty + \dfcontinuedfalse + \else + \dfcontinuedtrue + \flf@getcontargs#2\@ff@text\@ff@nextid\@ff@rest + \fi } \long\def\@lempty{} \def\flf@getcontargs{% -\@ifnextchar[{\@flf@getcontargs}{\@flf@getcontargs[]}} + \@ifnextchar[{\@flf@getcontargs}{\@flf@getcontargs[]}% +} \long\def\@flf@getcontargs[#1]#2#3\continueonframe#4#5#6{% -\def#4{#1}\def#5{#2}\def#6{#3}% + \def#4{#1}\def#5{#2}\def#6{#3}% } \def\@flf@find@end#1{% -\def\@tempa{#1}% -\global\let\flf@next=\relax -\ifdfcontinued - \@dynamictok\expandafter - {\the\@dynamictok\ffcontinuedtextlayout}% - \protected@edef\@tmpa{\the\@dynamictok{\@ff@text}}% - \@dynamictok\expandafter{\@tmpa}% - \toks@\expandafter{\@ff@rest}% - \edef\flf@next{\noexpand\@flf@get@body\noexpand\end{#1}% - \noexpand\begin{#1}{\@ff@nextid}\noexpand\par - \noexpand\noindent\noexpand\ignorespaces - \the\toks@\noexpand\end{#1}}% -\else - \ifx\@tempa\@flf@ - \let\flf@next=\@flf@endxdynamiccontents - \else + \def\@tempa{#1}% + \global\let\flf@next=\relax + \ifdfcontinued \@dynamictok\expandafter - {\the\@dynamictok\end{#1}}% - \let\flf@next=\@flf@get@body + {\the\@dynamictok\ffcontinuedtextlayout}% + \protected@edef\@tmpa{\the\@dynamictok{\@ff@text}}% + \@dynamictok\expandafter{\@tmpa}% + \toks@\expandafter{\@ff@rest}% + \edef\flf@next{\noexpand\@flf@get@body\noexpand\end{#1}% + \noexpand\begin{#1}{\@ff@nextid}\noexpand\par + \noexpand\noindent\noexpand\ignorespaces + \the\toks@\noexpand\end{#1}}% + \else + \ifx\@tempa\@flf@ + \let\flf@next=\@flf@endxdynamiccontents + \else + \@dynamictok\expandafter + {\the\@dynamictok\end{#1}}% + \let\flf@next=\@flf@get@body + \fi \fi -\fi -\flf@next + \flf@next } \let\endxdynamiccontents\relax \def\@flf@endxdynamiccontents{% -\ifnum\@flf@idn>\c@maxdynamic - \PackageError{flowfram}{Dynamic frame \number\@flf@idn\ does not exist}{% - You have specified dynamic frame number \number\@flf@idn, but there are - only \number\c@maxdynamic\space dynamic frames currently defined}% -\else - \expandafter - \xdef\csname @dynamicframe@\romannumeral\@flf@idn\endcsname{% - \the\@dynamictok}% - \expandafter -\fi -\expandafter\end\expandafter{\@flf@}% + \ifnum\@flf@idn>\c@maxdynamic + \PackageError{flowfram}% + {Dynamic frame \number\@flf@idn\ does not exist}% + {% + You have specified dynamic frame number \number\@flf@idn, + but there are only \number\c@maxdynamic\space dynamic + frames currently defined% + }% + \else + \expandafter + \xdef\csname @dynamicframe@\romannumeral\@flf@idn\endcsname{% + \the\@dynamictok}% + \expandafter + \fi + \expandafter\end\expandafter{\@flf@}% } \newenvironment{dynamiccontents*}[1]{% -\def\@flf@{dynamiccontents*}% -\@dynamicframeid{#1}% -\xdynamiccontents{\ff@id}}{% -\enddynamiccontents + \def\@flf@{dynamiccontents*}% + \@dynamicframeid{#1}% + \xdynamiccontents{\ff@id}}{% + \enddynamiccontents } \newcommand{\setdynamiccontents}{% -\@ifstar\@ssetdynamiccontents\@setdynamiccontents} + \@ifstar\@ssetdynamiccontents\@setdynamiccontents +} \newcommand{\@ssetdynamiccontents}[2]{% -\@dynamicframeid{#1}\@setdynamiccontents{\ff@id}{#2}} + \@dynamicframeid{#1}\@setdynamiccontents{\ff@id}{#2}% +} \newcommand{\@setdynamiccontents}[2]{% -\ifnum#1>\c@maxdynamic -\PackageError{flowfram}{Dynamic frame \number#1\ does not exist}{% -You have specified dynamic frame number \number#1, but there are -only \number\c@maxdynamic\space dynamic frames currently defined}% -\else -\expandafter -\gdef\csname @dynamicframe@\romannumeral#1\endcsname{#2}% -\fi} + \ifnum#1>\c@maxdynamic + \PackageError{flowfram}% + {Dynamic frame \number#1\ does not exist}% + {% + You have specified dynamic frame number \number#1, but there are + only \number\c@maxdynamic\space dynamic frames currently defined% + }% + \else + \expandafter + \gdef\csname @dynamicframe@\romannumeral#1\endcsname{#2}% + \fi +} \newcommand{\appenddynamiccontents}{% -\@ifstar\@sappenddynamic\@appenddynamic} + \@ifstar\@sappenddynamic\@appenddynamic +} \newcommand{\@sappenddynamic}[2]{% -\@dynamicframeid{#1}\@appenddynamic{\ff@id}{#2}} + \@dynamicframeid{#1}\@appenddynamic{\ff@id}{#2}% +} \newcommand{\@appenddynamic}[2]{% -\ifnum#1>\c@maxdynamic - \PackageError{flowfram}{Dynamic frame \number#1 does not exist}{% - You have specified dynamic frame number \number#1, - but there are only - \number\c@maxdynamic\space dynamic frames currently defined}% -\else - \expandafter\@ff@addtolist - \csname @dynamicframe@\romannumeral#1\endcsname\entry{#2}% -\fi} + \ifnum#1>\c@maxdynamic + \PackageError{flowfram}% + {Dynamic frame \number#1 does not exist}% + {% + You have specified dynamic frame number \number#1, + but there are only + \number\c@maxdynamic\space dynamic frames currently defined% + }% + \else + \expandafter\@ff@addtolist + \csname @dynamicframe@\romannumeral#1\endcsname\entry{#2}% + \fi +} \newtoks\flf@ta \newtoks\flf@tb -\long\def\@ff@addtolist#1\entry#2{\flf@ta={{#2}}% -\flf@tb=\expandafter{#1}% -\xdef#1{\the\flf@tb\the\flf@ta}} -\newcommand{\continueonframe}{\PackageError{flowfram}{Can't continue -to new frame: not in static or dynamic frame}{% -\string\continueonframe\space may only -be used inside `staticcontents' or `dynamiccontents' environments -(of their starred versions)}} +\long\def\@ff@addtolist#1\entry#2{% + \flf@ta={{#2}}% + \flf@tb=\expandafter{#1}% + \xdef#1{\the\flf@tb\the\flf@ta}% +} +\newcommand{\continueonframe}{% + \PackageError{flowfram}% + {% + Can't continue to new frame: not in static or dynamic frame% + }% + {% + \string\continueonframe\space may only + be used inside `staticcontents' or `dynamiccontents' + environments (or their starred versions)% + }% +} \newcommand*{\@staticscontinueonframe}[2][]{% -\ffcontinuedtextlayout{#1}% -\end{staticcontents*}% -\begin{staticcontents*}{#2}\par\noindent\ignorespaces} + \ffcontinuedtextlayout{#1}% + \end{staticcontents*}% + \begin{staticcontents*}{#2}\par\noindent\ignorespaces +} \newcommand*{\@staticcontinueonframe}[2][]{% -\ffcontinuedtextlayout{#1}% -\end{staticcontents}% -\begin{staticcontents}{#2}\par\noindent\ignorespaces} + \ffcontinuedtextlayout{#1}% + \end{staticcontents}% + \begin{staticcontents}{#2}\par\noindent\ignorespaces +} \newcommand{\ffcontinuedtextlayout}[1]{% -\parfillskip=0pt\par\hfill\ffcontinuedtextfont{#1}} + \parfillskip=0pt\par\hfill + \ffcontinuedtextfont{#1}% +} \newcommand*{\ffcontinuedtextfont}[1]{\emph{\small #1}} \newcommand*{\computeleftedgeodd}[1]{% -\setlength{#1}{-1in}% -\addtolength{#1}{-\hoffset}% -\addtolength{#1}{-\oddsidemargin}} + \setlength{#1}{-1in}% + \addtolength{#1}{-\hoffset}% + \addtolength{#1}{-\oddsidemargin}% +} \newcommand*{\computeleftedgeeven}[1]{% -\setlength{#1}{-1in}% -\addtolength{#1}{-\hoffset}% -\addtolength{#1}{-\evensidemargin}} + \setlength{#1}{-1in}% + \addtolength{#1}{-\hoffset}% + \addtolength{#1}{-\evensidemargin}% +} \newcommand*{\computetopedge}[1]{% -\setlength{#1}{\textheight}% -\addtolength{#1}{\headheight}% -\addtolength{#1}{\headsep}% -\addtolength{#1}{1in}% -\addtolength{#1}{\voffset}% -\addtolength{#1}{\topmargin}} + \setlength{#1}{\textheight}% + \addtolength{#1}{\headheight}% + \addtolength{#1}{\headsep}% + \addtolength{#1}{1in}% + \addtolength{#1}{\voffset}% + \addtolength{#1}{\topmargin}% +} \newcommand*{\computebottomedge}[1]{% -\computetopedge{#1}% -\addtolength{#1}{-\paperheight}} + \computetopedge{#1}% + \addtolength{#1}{-\paperheight}% +} \newcommand*{\computerightedgeodd}[1]{% -\computeleftedgeodd{#1}% -\addtolength{#1}{\paperwidth}} + \computeleftedgeodd{#1}% + \addtolength{#1}{\paperwidth}% +} \newcommand*{\computerightedgeeven}[1]{% -\computeleftedgeeven{#1}% -\addtolength{#1}{\paperwidth}} + \computeleftedgeeven{#1}% + \addtolength{#1}{\paperwidth}% +} \newlength\ffareawidth \newlength\ffareaheight \newlength\ffareax @@ -1390,549 +2270,840 @@ be used inside `staticcontents' or `dynamiccontents' environments \newlength\ffareaevenx \newlength\ffareaeveny \newcommand*{\computeflowframearea}{% -\@ifstar\@scomputeffarea\@computeffarea} + \@ifstar\@scomputeffarea\@computeffarea +} \newcommand*{\@scomputeffarea}[1]{% -\setlength{\ffareax}{\paperwidth}% -\setlength{\ffareay}{\paperheight}% -\setlength{\@ff@tmp@x}{0pt}% -\setlength{\@ff@tmp@y}{0pt}% -\@for\@ff@id:=#1\do{\@flowframeid{\@ff@id}% -\ifnum\ffareax>\flowframex{\ff@id}% -\setlength{\ffareax}{\flowframex{\ff@id}}% -\fi -\ifnum\ffareay>\flowframey{\ff@id}% -\setlength{\ffareay}{\flowframey{\ff@id}}% -\fi -\setlength{\@ff@offset}{\flowframex{\ff@id}}% -\addtolength{@ff@offset}{\flowframewidth{\ff@id}}% -\ifnum\@ff@tmp@x<\@ff@offset -\setlength{\@ff@tmp@x}{\@ff@offset}% -\fi -\setlength{\@ff@offset}{\flowframey{\ff@id}}% -\addtolength{@ff@offset}{\flowframeheight{\ff@id}}% -\ifnum\@ff@tmp@y<\@ff@offset -\setlength{\@ff@tmp@y}{\@ff@offset}% -\fi -}% -\setlength{\ffareawidth}{\@ff@tmp@x}% -\addtolength{\ffareawidth}{-\ffareax}% -\setlength{\ffareaheight}{\@ff@tmp@y}% -\addtolength{\ffareaheight}{-\ffareay}} + \setlength{\ffareax}{\paperwidth}% + \setlength{\ffareay}{\paperheight}% + \setlength{\@ff@tmp@x}{0pt}% + \setlength{\@ff@tmp@y}{0pt}% + \@for\@ff@id:=#1\do{% + \@flowframeid{\@ff@id}% + \ifnum\ffareax>\flowframex{\ff@id}% + \setlength{\ffareax}{\flowframex{\ff@id}}% + \fi + \ifnum\ffareay>\flowframey{\ff@id}% + \setlength{\ffareay}{\flowframey{\ff@id}}% + \fi + \setlength{\@ff@offset}{\flowframex{\ff@id}}% + \addtolength{@ff@offset}{\flowframewidth{\ff@id}}% + \ifnum\@ff@tmp@x<\@ff@offset + \setlength{\@ff@tmp@x}{\@ff@offset}% + \fi + \setlength{\@ff@offset}{\flowframey{\ff@id}}% + \addtolength{@ff@offset}{\flowframeheight{\ff@id}}% + \ifnum\@ff@tmp@y<\@ff@offset + \setlength{\@ff@tmp@y}{\@ff@offset}% + \fi + }% + \setlength{\ffareawidth}{\@ff@tmp@x}% + \addtolength{\ffareawidth}{-\ffareax}% + \setlength{\ffareaheight}{\@ff@tmp@y}% + \addtolength{\ffareaheight}{-\ffareay}% +} \newcommand*{\@computeffarea}[1]{% -\setlength{\ffareax}{\paperwidth}% -\setlength{\ffareay}{\paperheight}% -\setlength{\@ff@tmp@x}{0pt}% -\setlength{\@ff@tmp@y}{0pt}% -\@for\@ff@id:=#1\do{% -\ff@id=\@ff@id\relax -\setlength{\@ff@offset}{\flowframex{\ff@id}}% -\ifdim\ffareax>\@ff@offset -\setlength{\ffareax}{\@ff@offset}% -\fi -\setlength{\@ff@offset}{\flowframey{\ff@id}}% -\ifdim\ffareay>\@ff@offset -\setlength{\ffareay}{\@ff@offset}% -\fi -\setlength{\@ff@offset}{\flowframex{\ff@id}}% -\addtolength{\@ff@offset}{\flowframewidth{\ff@id}}% -\ifdim\@ff@tmp@x<\@ff@offset -\setlength{\@ff@tmp@x}{\@ff@offset}% -\fi -\setlength{\@ff@offset}{\flowframey{\ff@id}}% -\addtolength{\@ff@offset}{\flowframeheight{\ff@id}}% -\ifdim\@ff@tmp@y<\@ff@offset -\setlength{\@ff@tmp@y}{\@ff@offset}% -\fi -}% -\setlength{\ffareawidth}{\@ff@tmp@x}% -\addtolength{\ffareawidth}{-\ffareax}% -\setlength{\ffareaheight}{\@ff@tmp@y}% -\addtolength{\ffareaheight}{-\ffareay}} + \setlength{\ffareax}{\paperwidth}% + \setlength{\ffareay}{\paperheight}% + \setlength{\@ff@tmp@x}{0pt}% + \setlength{\@ff@tmp@y}{0pt}% + \@for\@ff@id:=#1\do{% + \ff@id=\@ff@id\relax + \setlength{\@ff@offset}{\flowframex{\ff@id}}% + \ifdim\ffareax>\@ff@offset + \setlength{\ffareax}{\@ff@offset}% + \fi + \setlength{\@ff@offset}{\flowframey{\ff@id}}% + \ifdim\ffareay>\@ff@offset + \setlength{\ffareay}{\@ff@offset}% + \fi + \setlength{\@ff@offset}{\flowframex{\ff@id}}% + \addtolength{\@ff@offset}{\flowframewidth{\ff@id}}% + \ifdim\@ff@tmp@x<\@ff@offset + \setlength{\@ff@tmp@x}{\@ff@offset}% + \fi + \setlength{\@ff@offset}{\flowframey{\ff@id}}% + \addtolength{\@ff@offset}{\flowframeheight{\ff@id}}% + \ifdim\@ff@tmp@y<\@ff@offset + \setlength{\@ff@tmp@y}{\@ff@offset}% + \fi + }% + \setlength{\ffareawidth}{\@ff@tmp@x}% + \addtolength{\ffareawidth}{-\ffareax}% + \setlength{\ffareaheight}{\@ff@tmp@y}% + \addtolength{\ffareaheight}{-\ffareay}% +} \newcommand*{\@ff@swaplen}[2]{% -\setlength{\@ff@tmp@x}{#1}% -\setlength{#1}{#2}% -\setlength{#2}{\@ff@tmp@x}} + \setlength{\@ff@tmp@x}{#1}% + \setlength{#1}{#2}% + \setlength{#2}{\@ff@tmp@x}% +} \newcommand*{\@ff@getdim}[2]{% -\ifnum#2<1\relax - \PackageError{flowfram}{Frame IDNs start from 1}{% - You have specified a frame IDN of '\number#2'}% -\fi -\ifcase#1\relax - \PackageError{flowfram}{Unknown frame ID type '#1'}{% - Frame ID types are: 1 (flow), 2 (static) and 3 (dynamic)}% -\or - \ifnum#2>\c@maxflow\relax - \PackageError{flowfram}{Invalid flow frame IDN '\number#2'}{% - Flow frame IDNs go from 1 to \number\c@maxflow}% - \else - \setlength{\ffareax}{\flowframex{#2}}% - \setlength{\ffareay}{\flowframey{#2}}% - \setlength{\ffareaevenx}{\flowframeevenx{#2}}% - \setlength{\ffareaeveny}{\flowframeeveny{#2}}% - \setlength{\ffareawidth}{\flowframewidth{#2}}% - \setlength{\ffareaheight}{\flowframeheight{#2}}% - \fi -\or - \ifnum#2>\c@maxstatic\relax - \PackageError{flowfram}{Invalid static frame IDN '\number#2'}{% - Static frame IDNs go from 1 to \number\c@maxstatic}% - \else - \setlength{\ffareax}{\staticframex{#2}}% - \setlength{\ffareay}{\staticframey{#2}}% - \setlength{\ffareaevenx}{\staticframeevenx{#2}}% - \setlength{\ffareaeveny}{\staticframeeveny{#2}}% - \expandafter\expandafter\expandafter - \@ff@getstaticpos - \csname @sf@dim@\romannumeral#2\endcsname - \setlength{\ffareawidth}{\@ff@tmp@x}% - \setlength{\ffareaheight}{\@ff@tmp@y}% - \fi -\or - \ifnum#2>\c@maxdynamic\relax - \PackageError{flowfram}{Invalid dynamic frame IDN '\number#2'}{% - Dynamic frame IDNs go from 1 to \number\c@maxdynamic}% + \ifnum#2<1\relax + \PackageError{flowfram}% + {Frame IDNs start from 1}% + {% + You have specified a frame IDN of '\number#2'% + }% + \fi + \ifcase#1\relax + \PackageError{flowfram}% + {Unknown frame ID type '#1'}% + {% + Frame ID types are: 1 (flow), 2 (static) and 3 (dynamic)% + }% + \or + \ifnum#2>\c@maxflow\relax + \PackageError{flowfram}{Invalid flow frame IDN '\number#2'}{% + Flow frame IDNs go from 1 to \number\c@maxflow}% + \else + \setlength{\ffareax}{\flowframex{#2}}% + \setlength{\ffareay}{\flowframey{#2}}% + \setlength{\ffareaevenx}{\flowframeevenx{#2}}% + \setlength{\ffareaeveny}{\flowframeeveny{#2}}% + \setlength{\ffareawidth}{\flowframewidth{#2}}% + \setlength{\ffareaheight}{\flowframeheight{#2}}% + \fi + \or + \ifnum#2>\c@maxstatic\relax + \PackageError{flowfram}% + {Invalid static frame IDN '\number#2'}% + {% + Static frame IDNs go from 1 to \number\c@maxstatic + }% + \else + \setlength{\ffareax}{\staticframex{#2}}% + \setlength{\ffareay}{\staticframey{#2}}% + \setlength{\ffareaevenx}{\staticframeevenx{#2}}% + \setlength{\ffareaeveny}{\staticframeeveny{#2}}% + \expandafter\expandafter\expandafter + \@ff@getstaticpos + \csname @sf@dim@\romannumeral#2\endcsname + \setlength{\ffareawidth}{\@ff@tmp@x}% + \setlength{\ffareaheight}{\@ff@tmp@y}% + \fi + \or + \ifnum#2>\c@maxdynamic\relax + \PackageError{flowfram}% + {Invalid dynamic frame IDN '\number#2'}% + {% + Dynamic frame IDNs go from 1 to \number\c@maxdynamic + }% + \else + \setlength{\ffareax}{\dynamicframex{#2}}% + \setlength{\ffareay}{\dynamicframey{#2}}% + \setlength{\ffareaevenx}{\dynamicframeevenx{#2}}% + \setlength{\ffareaeveny}{\dynamicframeeveny{#2}}% + \expandafter\expandafter\expandafter + \@ff@getstaticpos + \csname @df@dim@\romannumeral#2\endcsname + \setlength{\ffareawidth}{\@ff@tmp@x}% + \setlength{\ffareaheight}{\@ff@tmp@y}% + \fi \else - \setlength{\ffareax}{\dynamicframex{#2}}% - \setlength{\ffareay}{\dynamicframey{#2}}% - \setlength{\ffareaevenx}{\dynamicframeevenx{#2}}% - \setlength{\ffareaeveny}{\dynamicframeeveny{#2}}% - \expandafter\expandafter\expandafter - \@ff@getstaticpos - \csname @df@dim@\romannumeral#2\endcsname - \setlength{\ffareawidth}{\@ff@tmp@x}% - \setlength{\ffareaheight}{\@ff@tmp@y}% - \fi -\else - \PackageError{flowfram}{Unknown frame ID type '#1'}{% - Frame ID types are: 1 (flow), 2 (static) and 3 (dynamic)}% -\fi + \PackageError{flowfram}% + {Unknown frame ID type '#1'}% + {% + Frame ID types are: 1 (flow), 2 (static) and 3 (dynamic)% + }% + \fi } \newcommand*{\@ff@getevendim}[2]{% -\ifnum#2<1\relax - \PackageError{flowfram}{Frame IDNs start from 1}{% - You have specified a frame IDN of '\number#2'}% -\fi -\ifcase#1\relax - \PackageError{flowfram}{Unknown frame ID type '#1'}{% - Frame ID types are: 1 (flow), 2 (static) and 3 (dynamic)} -\or - \ifnum#2>\c@maxflow - \PackageError{flowfram}{Invalid flow frame IDN '\number#2'}{% - Flow frame IDNs go from 1 to \number\c@maxflow}% - \else - \setlength{\ffareax}{\flowframeevenx{#2}}% - \setlength{\ffareay}{\flowframeeveny{#2}}% - \setlength{\ffareawidth}{\flowframewidth{#2}}% - \setlength{\ffareaheight}{\flowframeheight{#2}}% - \fi -\or - \ifnum#2>\c@maxstatic\relax - \PackageError{flowfram}{Invalid static frame IDN '\number#2'}{% - Static frame IDNs go from 1 to \number\c@maxstatic}% - \else - \setlength{\ffareax}{\staticframeevenx{#2}}% - \setlength{\ffareay}{\staticframeeveny{#2}}% - \expandafter\expandafter\expandafter - \@ff@getstaticpos - \csname @sf@dim@\romannumeral#2\endcsname - \setlength{\ffareawidth}{\@ff@tmp@x}% - \setlength{\ffareaheight}{\@ff@tmp@y}% - \fi -\or - \ifnum#2>\c@maxdynamic\relax - \PackageError{flowfram}{Invalid dynamic frame IDN '\number#2'}{% - Dynamic frame IDNs go from 1 to \number\c@maxdynamic}% + \ifnum#2<1\relax + \PackageError{flowfram}% + {Frame IDNs start from 1}% + {% + You have specified a frame IDN of '\number#2'% + }% + \fi + \ifcase#1\relax + \PackageError{flowfram}% + {Unknown frame ID type '#1'}% + {% + Frame ID types are: 1 (flow), 2 (static) and 3 (dynamic)% + } + \or + \ifnum#2>\c@maxflow + \PackageError{flowfram}% + {Invalid flow frame IDN '\number#2'}% + {% + Flow frame IDNs go from 1 to \number\c@maxflow + }% + \else + \setlength{\ffareax}{\flowframeevenx{#2}}% + \setlength{\ffareay}{\flowframeeveny{#2}}% + \setlength{\ffareawidth}{\flowframewidth{#2}}% + \setlength{\ffareaheight}{\flowframeheight{#2}}% + \fi + \or + \ifnum#2>\c@maxstatic\relax + \PackageError{flowfram}% + {Invalid static frame IDN '\number#2'}% + {% + Static frame IDNs go from 1 to \number\c@maxstatic + }% + \else + \setlength{\ffareax}{\staticframeevenx{#2}}% + \setlength{\ffareay}{\staticframeeveny{#2}}% + \expandafter\expandafter\expandafter + \@ff@getstaticpos + \csname @sf@dim@\romannumeral#2\endcsname + \setlength{\ffareawidth}{\@ff@tmp@x}% + \setlength{\ffareaheight}{\@ff@tmp@y}% + \fi + \or + \ifnum#2>\c@maxdynamic\relax + \PackageError{flowfram}% + {Invalid dynamic frame IDN '\number#2'}% + {% + Dynamic frame IDNs go from 1 to \number\c@maxdynamic + }% + \else + \setlength{\ffareax}{\dynamicframeevenx{#2}}% + \setlength{\ffareay}{\dynamicframeeveny{#2}}% + \expandafter\expandafter\expandafter + \@ff@getstaticpos + \csname @df@dim@\romannumeral#2\endcsname + \setlength{\ffareawidth}{\@ff@tmp@x}% + \setlength{\ffareaheight}{\@ff@tmp@y}% + \fi \else - \setlength{\ffareax}{\dynamicframeevenx{#2}}% - \setlength{\ffareay}{\dynamicframeeveny{#2}}% - \expandafter\expandafter\expandafter - \@ff@getstaticpos - \csname @df@dim@\romannumeral#2\endcsname - \setlength{\ffareawidth}{\@ff@tmp@x}% - \setlength{\ffareaheight}{\@ff@tmp@y}% + \PackageError{flowfram}% + {Unknown frame ID type '#1'}% + {% + Frame ID types are: 1 (flow), 2 (static) and 3 (dynamic)% + }% \fi -\else - \PackageError{flowfram}{Unknown frame ID type '#1'}{% - Frame ID types are: 1 (flow), 2 (static) and 3 (dynamic)} -\fi } \newcommand*{\getstaticbounds}{% -\@ifstar\@sgetstaticbounds\@getstaticbounds} + \@ifstar\@sgetstaticbounds\@getstaticbounds +} \newcommand*{\@sgetstaticbounds}[1]{% -\@staticframeid{#1}\@getstaticbounds{\ff@id}} + \@staticframeid{#1}\@getstaticbounds{\ff@id}% +} \newcommand*{\@getstaticbounds}[1]{\@ff@getdim{2}{#1}} \newcommand*{\getstaticevenbounds}{% -\@ifstar\@sgetstaticevenbounds\@getstaticevenbounds} + \@ifstar\@sgetstaticevenbounds\@getstaticevenbounds +} \newcommand*{\@sgetstaticevenbounds}[1]{% -\@staticframeid{#1}\@getstaticevenbounds{\ff@id}} + \@staticframeid{#1}\@getstaticevenbounds{\ff@id}% +} \newcommand*{\@getstaticevenbounds}[1]{\@ff@getevendim{2}{#1}} \newcommand*{\getflowbounds}{% -\@ifstar\@sgetflowbounds\@getflowbounds} + \@ifstar\@sgetflowbounds\@getflowbounds +} \newcommand*{\@sgetflowbounds}[1]{% -\@flowframeid{#1}\@getflowbounds{\ff@id}} + \@flowframeid{#1}\@getflowbounds{\ff@id}% +} \newcommand*{\@getflowbounds}[1]{\@ff@getdim{1}{#1}} \newcommand*{\getflowevenbounds}{% -\@ifstar\@sgetflowevenbounds\@getflowevenbounds} + \@ifstar\@sgetflowevenbounds\@getflowevenbounds +} \newcommand*{\@sgetflowevenbounds}[1]{% -\@flowframeid{#1}\@getflowevenbounds{\ff@id}} + \@flowframeid{#1}\@getflowevenbounds{\ff@id}% +} \newcommand*{\@getflowevenbounds}[1]{\@ff@getevendim{1}{#1}} \newcommand*{\getdynamicbounds}{% -\@ifstar\@sgetdynamicbounds\@getdynamicbounds} + \@ifstar\@sgetdynamicbounds\@getdynamicbounds +} \newcommand*{\@sgetdynamicbounds}[1]{% -\@dynamicframeid{#1}\@getdynamicbounds{\ff@id}} + \@dynamicframeid{#1}\@getdynamicbounds{\ff@id}% +} \newcommand*{\@getdynamicbounds}[1]{\@ff@getdim{3}{#1}} \newcommand*{\getdynamicevenbounds}{% -\@ifstar\@sgetdynamicevenbounds\@getdynamicevenbounds} + \@ifstar\@sgetdynamicevenbounds\@getdynamicevenbounds +} \newcommand*{\@sgetdynamicevenbounds}[1]{% -\@dynamicframeid{#1}\@getdynamicevenbounds{\ff@id}} + \@dynamicframeid{#1}\@getdynamicevenbounds{\ff@id}% +} \newcommand*{\@getdynamicevenbounds}[1]{\@ff@getevendim{3}{#1}} \newif\ifFLFabove \newif\ifFLFbelow \newif\ifFLFleft \newif\ifFLFright \newcommand*{\checkifframeabove}{% -\@ifstar\@scheckifframeabove\@checkifframeabove} + \@ifstar\@scheckifframeabove\@checkifframeabove +} \newcommand*{\@scheckifframeabove}[4]{% -\ifodd\c@page - \@soddcheckifframeabove{#1}{#2}{#3}{#4}% -\else - \@sevencheckifframeabove{#1}{#2}{#3}{#4}% -\fi} + \ifodd\c@page + \@soddcheckifframeabove{#1}{#2}{#3}{#4}% + \else + \@sevencheckifframeabove{#1}{#2}{#3}{#4}% + \fi +} \newcommand*{\@checkifframeabove}[4]{% -\ifodd\c@page - \@oddcheckifframeabove{#1}{#2}{#3}{#4}% -\else - \@evencheckifframeabove{#1}{#2}{#3}{#4}% -\fi} + \ifodd\c@page + \@oddcheckifframeabove{#1}{#2}{#3}{#4}% + \else + \@evencheckifframeabove{#1}{#2}{#3}{#4}% + \fi +} \newcommand*{\oddcheckifframeabove}{% -\@ifstar\@soddcheckifframeabove\@oddcheckifframeabove} + \@ifstar\@soddcheckifframeabove\@oddcheckifframeabove +} \newcommand*{\@soddcheckifframeabove}[4]{% -\@ifundefined{@sget#1bounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#1bounds\endcsname{#2}% -\edef\@ff@check{\the\ffareay}% -\@ifundefined{@sget#3bounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#3bounds\endcsname{#4}% -\advance\ffareay by \ffareaheight\relax -\expandafter\ifdim\@ff@check>\ffareay - \FLFabovetrue -\else - \FLFabovefalse -\fi + \@ifundefined{@sget#1bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or flow% + }% + }% + {}% + \csname @sget#1bounds\endcsname{#2}% + \edef\@ff@check{\the\ffareay}% + \@ifundefined{@sget#3bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or flow% + }% + }% + {}% + \csname @sget#3bounds\endcsname{#4}% + \advance\ffareay by \ffareaheight\relax + \expandafter\ifdim\@ff@check>\ffareay + \FLFabovetrue + \else + \FLFabovefalse + \fi } \newcommand*{\@oddcheckifframeabove}[4]{% -\@ifundefined{@get#1bounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#1bounds\endcsname{#2}% -\edef\@ff@check{\the\ffareay}% -\@ifundefined{@get#3bounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#3bounds\endcsname{#4}% -\advance\ffareay by \ffareaheight\relax -\expandafter\ifdim\@ff@check>\ffareay - \FLFabovetrue -\else - \FLFabovefalse -\fi + \@ifundefined{@get#1bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @get#1bounds\endcsname{#2}% + \edef\@ff@check{\the\ffareay}% + \@ifundefined{@get#3bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @get#3bounds\endcsname{#4}% + \advance\ffareay by \ffareaheight\relax + \expandafter\ifdim\@ff@check>\ffareay + \FLFabovetrue + \else + \FLFabovefalse + \fi } \newcommand*{\checkifframebelow}{% -\@ifstar\@scheckifframebelow\@checkifframebelow} + \@ifstar\@scheckifframebelow\@checkifframebelow +} \newcommand*{\@scheckifframebelow}[4]{% -\ifodd\c@page - \@soddcheckifframebelow{#1}{#2}{#3}{#4}% -\else - \@sevencheckifframebelow{#1}{#2}{#3}{#4}% -\fi} + \ifodd\c@page + \@soddcheckifframebelow{#1}{#2}{#3}{#4}% + \else + \@sevencheckifframebelow{#1}{#2}{#3}{#4}% + \fi +} \newcommand*{\@checkifframebelow}[4]{% -\ifodd\c@page - \@oddcheckifframebelow{#1}{#2}{#3}{#4}% -\else - \@evencheckifframebelow{#1}{#2}{#3}{#4}% -\fi} + \ifodd\c@page + \@oddcheckifframebelow{#1}{#2}{#3}{#4}% + \else + \@evencheckifframebelow{#1}{#2}{#3}{#4}% + \fi +} \newcommand*{\oddcheckifframebelow}{% -\@ifstar\@soddcheckifframebelow\@oddcheckifframebelow} + \@ifstar\@soddcheckifframebelow\@oddcheckifframebelow +} \newcommand*{\@soddcheckifframebelow}[4]{% -\@ifundefined{@sget#1bounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#1bounds\endcsname{#2}% -\advance\ffareay by \ffareaheight\relax -\edef\@ff@check{\the\ffareay}% -\@ifundefined{@sget#3bounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#3bounds\endcsname{#4}% -\expandafter\ifdim\@ff@check<\ffareay - \FLFbelowtrue -\else - \FLFbelowfalse -\fi + \@ifundefined{@sget#1bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @sget#1bounds\endcsname{#2}% + \advance\ffareay by \ffareaheight\relax + \edef\@ff@check{\the\ffareay}% + \@ifundefined{@sget#3bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @sget#3bounds\endcsname{#4}% + \expandafter\ifdim\@ff@check<\ffareay + \FLFbelowtrue + \else + \FLFbelowfalse + \fi } \newcommand*{\@oddcheckifframebelow}[4]{% -\@ifundefined{@get#1bounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#1bounds\endcsname{#2}% -\advance\ffareay by \ffareaheight\relax -\edef\@ff@check{\the\ffareay}% -\@ifundefined{@get#3bounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#3bounds\endcsname{#4}% -\expandafter\ifdim\@ff@check<\ffareay - \FLFbelowtrue -\else - \FLFbelowfalse -\fi + \@ifundefined{@get#1bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @get#1bounds\endcsname{#2}% + \advance\ffareay by \ffareaheight\relax + \edef\@ff@check{\the\ffareay}% + \@ifundefined{@get#3bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @get#3bounds\endcsname{#4}% + \expandafter\ifdim\@ff@check<\ffareay + \FLFbelowtrue + \else + \FLFbelowfalse + \fi } \newcommand*{\checkifframeleft}{% -\@ifstar\@scheckifframeleft\@checkifframeleft} + \@ifstar\@scheckifframeleft\@checkifframeleft +} \newcommand*{\@scheckifframeleft}[4]{% -\ifodd\c@page - \@soddcheckifframeleft{#1}{#2}{#3}{#4}% -\else - \@sevencheckifframeleft{#1}{#2}{#3}{#4}% -\fi} + \ifodd\c@page + \@soddcheckifframeleft{#1}{#2}{#3}{#4}% + \else + \@sevencheckifframeleft{#1}{#2}{#3}{#4}% + \fi +} \newcommand*{\@checkifframeleft}[4]{% -\ifodd\c@page - \@oddcheckifframeleft{#1}{#2}{#3}{#4}% -\else - \@evencheckifframeleft{#1}{#2}{#3}{#4}% -\fi} + \ifodd\c@page + \@oddcheckifframeleft{#1}{#2}{#3}{#4}% + \else + \@evencheckifframeleft{#1}{#2}{#3}{#4}% + \fi +} \newcommand*{\oddcheckifframeleft}{% -\@ifstar\@soddcheckifframeleft\@oddcheckifframeleft} + \@ifstar\@soddcheckifframeleft\@oddcheckifframeleft +} \newcommand*{\@soddcheckifframeleft}[4]{% -\@ifundefined{@sget#1bounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#1bounds\endcsname{#2}% -\advance\ffareax by \ffareawidth\relax -\edef\@ff@check{\the\ffareax}% -\@ifundefined{@sget#3bounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#3bounds\endcsname{#4}% -\expandafter\ifdim\@ff@check<\ffareax - \FLFlefttrue -\else - \FLFleftfalse -\fi + \@ifundefined{@sget#1bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @sget#1bounds\endcsname{#2}% + \advance\ffareax by \ffareawidth\relax + \edef\@ff@check{\the\ffareax}% + \@ifundefined{@sget#3bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @sget#3bounds\endcsname{#4}% + \expandafter\ifdim\@ff@check<\ffareax + \FLFlefttrue + \else + \FLFleftfalse + \fi } \newcommand*{\@oddcheckifframeleft}[4]{% -\@ifundefined{@get#1bounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#1bounds\endcsname{#2}% -\advance\ffareax by \ffareawidth\relax -\edef\@ff@check{\the\ffareax}% -\@ifundefined{@get#3bounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#3bounds\endcsname{#4}% -\expandafter\ifdim\@ff@check<\ffareax - \FLFlefttrue -\else - \FLFleftfalse -\fi + \@ifundefined{@get#1bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @get#1bounds\endcsname{#2}% + \advance\ffareax by \ffareawidth\relax + \edef\@ff@check{\the\ffareax}% + \@ifundefined{@get#3bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @get#3bounds\endcsname{#4}% + \expandafter\ifdim\@ff@check<\ffareax + \FLFlefttrue + \else + \FLFleftfalse + \fi } \newcommand*{\checkifframeright}{% -\@ifstar\@scheckifframeright\@checkifframeright} + \@ifstar\@scheckifframeright\@checkifframeright +} \newcommand*{\@scheckifframeright}[4]{% -\ifodd\c@page - \@soddcheckifframeright{#1}{#2}{#3}{#4}% -\else - \@sevencheckifframeright{#1}{#2}{#3}{#4}% -\fi} + \ifodd\c@page + \@soddcheckifframeright{#1}{#2}{#3}{#4}% + \else + \@sevencheckifframeright{#1}{#2}{#3}{#4}% + \fi +} \newcommand*{\@checkifframeright}[4]{% -\ifodd\c@page - \@oddcheckifframeright{#1}{#2}{#3}{#4}% -\else - \@evencheckifframeright{#1}{#2}{#3}{#4}% -\fi} + \ifodd\c@page + \@oddcheckifframeright{#1}{#2}{#3}{#4}% + \else + \@evencheckifframeright{#1}{#2}{#3}{#4}% + \fi +} \newcommand*{\oddcheckifframeright}{% -\@ifstar\@soddcheckifframeright\@oddcheckifframeright} + \@ifstar\@soddcheckifframeright\@oddcheckifframeright +} \newcommand*{\@soddcheckifframeright}[4]{% -\@ifundefined{@sget#1bounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#1bounds\endcsname{#2}% -\edef\@ff@check{\the\ffareax}% -\@ifundefined{@sget#3bounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#3bounds\endcsname{#4}% -\advance\ffareax by \ffareawidth\relax -\expandafter\ifdim\@ff@check>\ffareax - \FLFrighttrue -\else - \FLFrightfalse -\fi + \@ifundefined{@sget#1bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @sget#1bounds\endcsname{#2}% + \edef\@ff@check{\the\ffareax}% + \@ifundefined{@sget#3bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @sget#3bounds\endcsname{#4}% + \advance\ffareax by \ffareawidth\relax + \expandafter\ifdim\@ff@check>\ffareax + \FLFrighttrue + \else + \FLFrightfalse + \fi } \newcommand*{\@oddcheckifframeright}[4]{% -\@ifundefined{@get#1bounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#1bounds\endcsname{#2}% -\edef\@ff@check{\the\ffareax}% -\@ifundefined{@get#3bounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#3bounds\endcsname{#4}% -\advance\ffareax by \ffareawidth\relax -\expandafter\ifdim\@ff@check>\ffareax - \FLFrighttrue -\else - \FLFrightfalse -\fi + \@ifundefined{@get#1bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @get#1bounds\endcsname{#2}% + \edef\@ff@check{\the\ffareax}% + \@ifundefined{@get#3bounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @get#3bounds\endcsname{#4}% + \advance\ffareax by \ffareawidth\relax + \expandafter\ifdim\@ff@check>\ffareax + \FLFrighttrue + \else + \FLFrightfalse + \fi } \newcommand*{\evencheckifframeabove}{% -\@ifstar\@sevencheckifframeabove\@evencheckifframeabove} + \@ifstar\@sevencheckifframeabove\@evencheckifframeabove +} \newcommand*{\@sevencheckifframeabove}[4]{% -\@ifundefined{@sget#1evenbounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#1evenbounds\endcsname{#2}% -\edef\@ff@check{\the\ffareay}% -\@ifundefined{@sget#3evenbounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#3evenbounds\endcsname{#4}% -\advance\ffareay by \ffareaheight\relax -\expandafter\ifdim\@ff@check>\ffareay - \FLFabovetrue -\else - \FLFabovefalse -\fi + \@ifundefined{@sget#1evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @sget#1evenbounds\endcsname{#2}% + \edef\@ff@check{\the\ffareay}% + \@ifundefined{@sget#3evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @sget#3evenbounds\endcsname{#4}% + \advance\ffareay by \ffareaheight\relax + \expandafter\ifdim\@ff@check>\ffareay + \FLFabovetrue + \else + \FLFabovefalse + \fi } \newcommand*{\@evencheckifframeabove}[4]{% -\@ifundefined{@get#1evenbounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#1evenbounds\endcsname{#2}% -\edef\@ff@check{\the\ffareay}% -\@ifundefined{@get#3evenbounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#3evenbounds\endcsname{#4}% -\advance\ffareay by \ffareaheight\relax -\expandafter\ifdim\@ff@check>\ffareay - \FLFabovetrue -\else - \FLFabovefalse -\fi + \@ifundefined{@get#1evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @get#1evenbounds\endcsname{#2}% + \edef\@ff@check{\the\ffareay}% + \@ifundefined{@get#3evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @get#3evenbounds\endcsname{#4}% + \advance\ffareay by \ffareaheight\relax + \expandafter\ifdim\@ff@check>\ffareay + \FLFabovetrue + \else + \FLFabovefalse + \fi } \newcommand*{\evencheckifframebelow}{% -\@ifstar\@sevencheckifframebelow\@evencheckifframebelow} + \@ifstar\@sevencheckifframebelow\@evencheckifframebelow +} \newcommand*{\@sevencheckifframebelow}[4]{% -\@ifundefined{@sget#1evenbounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#1evenbounds\endcsname{#2}% -\advance\ffareay by \ffareaheight\relax -\edef\@ff@check{\the\ffareay}% -\@ifundefined{@sget#3evenbounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#3evenbounds\endcsname{#4}% -\expandafter\ifdim\@ff@check<\ffareay - \FLFbelowtrue -\else - \FLFbelowfalse -\fi + \@ifundefined{@sget#1evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @sget#1evenbounds\endcsname{#2}% + \advance\ffareay by \ffareaheight\relax + \edef\@ff@check{\the\ffareay}% + \@ifundefined{@sget#3evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @sget#3evenbounds\endcsname{#4}% + \expandafter\ifdim\@ff@check<\ffareay + \FLFbelowtrue + \else + \FLFbelowfalse + \fi } \newcommand*{\@evencheckifframebelow}[4]{% -\@ifundefined{@get#1evenbounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#1evenbounds\endcsname{#2}% -\advance\ffareay by \ffareaheight\relax -\edef\@ff@check{\the\ffareay}% -\@ifundefined{@get#3evenbounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#3evenbounds\endcsname{#4}% -\expandafter\ifdim\@ff@check<\ffareay - \FLFbelowtrue -\else - \FLFbelowfalse -\fi + \@ifundefined{@get#1evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }{}% + \csname @get#1evenbounds\endcsname{#2}% + \advance\ffareay by \ffareaheight\relax + \edef\@ff@check{\the\ffareay}% + \@ifundefined{@get#3evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @get#3evenbounds\endcsname{#4}% + \expandafter\ifdim\@ff@check<\ffareay + \FLFbelowtrue + \else + \FLFbelowfalse + \fi } \newcommand*{\evencheckifframeleft}{% -\@ifstar\@sevencheckifframeleft\@evencheckifframeleft} + \@ifstar\@sevencheckifframeleft\@evencheckifframeleft +} \newcommand*{\@sevencheckifframeleft}[4]{% -\@ifundefined{@sget#1evenbounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#1evenbounds\endcsname{#2}% -\advance\ffareax by \ffareawidth\relax -\edef\@ff@check{\the\ffareax}% -\@ifundefined{@sget#3evenbounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#3evenbounds\endcsname{#4}% -\expandafter\ifdim\@ff@check<\ffareax - \FLFlefttrue -\else - \FLFleftfalse -\fi + \@ifundefined{@sget#1evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @sget#1evenbounds\endcsname{#2}% + \advance\ffareax by \ffareawidth\relax + \edef\@ff@check{\the\ffareax}% + \@ifundefined{@sget#3evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @sget#3evenbounds\endcsname{#4}% + \expandafter\ifdim\@ff@check<\ffareax + \FLFlefttrue + \else + \FLFleftfalse + \fi } \newcommand*{\@evencheckifframeleft}[4]{% -\@ifundefined{@get#1evenbounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#1evenbounds\endcsname{#2}% -\advance\ffareax by \ffareawidth\relax -\edef\@ff@check{\the\ffareax}% -\@ifundefined{@get#3evenbounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#3evenbounds\endcsname{#4}% -\expandafter\ifdim\@ff@check<\ffareax - \FLFlefttrue -\else - \FLFleftfalse -\fi + \@ifundefined{@get#1evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @get#1evenbounds\endcsname{#2}% + \advance\ffareax by \ffareawidth\relax + \edef\@ff@check{\the\ffareax}% + \@ifundefined{@get#3evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @get#3evenbounds\endcsname{#4}% + \expandafter\ifdim\@ff@check<\ffareax + \FLFlefttrue + \else + \FLFleftfalse + \fi } \newcommand*{\evencheckifframeright}{% -\@ifstar\@sevencheckifframeright\@evencheckifframeright} + \@ifstar\@sevencheckifframeright\@evencheckifframeright +} \newcommand*{\@sevencheckifframeright}[4]{% -\@ifundefined{@sget#1evenbounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#1evenbounds\endcsname{#2}% -\edef\@ff@check{\the\ffareax}% -\@ifundefined{@sget#3evenbounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @sget#3evenbounds\endcsname{#4}% -\advance\ffareax by \ffareawidth\relax -\expandafter\ifdim\@ff@check>\ffareax - \FLFrighttrue -\else - \FLFrightfalse -\fi + \@ifundefined{@sget#1evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @sget#1evenbounds\endcsname{#2}% + \edef\@ff@check{\the\ffareax}% + \@ifundefined{@sget#3evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @sget#3evenbounds\endcsname{#4}% + \advance\ffareax by \ffareawidth\relax + \expandafter\ifdim\@ff@check>\ffareax + \FLFrighttrue + \else + \FLFrightfalse + \fi } \newcommand*{\@evencheckifframeright}[4]{% -\@ifundefined{@get#1evenbounds}{\PackageError{flowfram}{Unknown frame -type `#1'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#1evenbounds\endcsname{#2}% -\edef\@ff@check{\the\ffareax}% -\@ifundefined{@get#3evenbounds}{\PackageError{flowfram}{Unknown frame -type `#3'}{Frame types may only be one of: static, dynamic or -flow}}{}% -\csname @get#3evenbounds\endcsname{#4}% -\advance\ffareax by \ffareawidth\relax -\expandafter\ifdim\@ff@check>\ffareax - \FLFrighttrue -\else - \FLFrightfalse -\fi + \@ifundefined{@get#1evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#1'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @get#1evenbounds\endcsname{#2}% + \edef\@ff@check{\the\ffareax}% + \@ifundefined{@get#3evenbounds}% + {% + \PackageError{flowfram}% + {Unknown frame type `#3'}% + {% + Frame types may only be one of: static, dynamic or + flow% + }% + }% + {}% + \csname @get#3evenbounds\endcsname{#4}% + \advance\ffareax by \ffareawidth\relax + \expandafter\ifdim\@ff@check>\ffareax + \FLFrighttrue + \else + \FLFrightfalse + \fi } \newcommand*{\FFaboveleft}{above left} \newcommand*{\FFaboveright}{above right} @@ -1944,1078 +3115,2773 @@ flow}}{}% \newcommand*{\FFbelow}{below} \newcommand*{\FFoverlap}{overlap} \DeclareRobustCommand*{\relativeframelocation}{% -\@ifstar\@srelativeframelocation\@relativeframelocation} + \@ifstar\@srelativeframelocation\@relativeframelocation +} \newcommand*{\@srelativeframelocation}[4]{% -\@scheckifframeabove{#1}{#2}{#3}{#4}% -\@scheckifframebelow{#1}{#2}{#3}{#4}% -\@scheckifframeleft{#1}{#2}{#3}{#4}% -\@scheckifframeright{#1}{#2}{#3}{#4}% -\ifFLFabove - \ifFLFleft - \FFaboveleft - \else - \ifFLFright - \FFaboveright - \else - \FFabove - \fi - \fi -\else - \ifFLFbelow + \@scheckifframeabove{#1}{#2}{#3}{#4}% + \@scheckifframebelow{#1}{#2}{#3}{#4}% + \@scheckifframeleft{#1}{#2}{#3}{#4}% + \@scheckifframeright{#1}{#2}{#3}{#4}% + \ifFLFabove \ifFLFleft - \FFbelowleft + \FFaboveleft \else \ifFLFright - \FFbelowright + \FFaboveright \else - \FFbelow + \FFabove \fi \fi \else - \ifFLFleft - \FFleft + \ifFLFbelow + \ifFLFleft + \FFbelowleft + \else + \ifFLFright + \FFbelowright + \else + \FFbelow + \fi + \fi \else - \ifFLFright - \FFright + \ifFLFleft + \FFleft \else - \FFoverlap + \ifFLFright + \FFright + \else + \FFoverlap + \fi \fi \fi \fi -\fi } \newcommand*{\@relativeframelocation}[4]{% -\@checkifframeabove{#1}{#2}{#3}{#4}% -\@checkifframebelow{#1}{#2}{#3}{#4}% -\@checkifframeleft{#1}{#2}{#3}{#4}% -\@checkifframeright{#1}{#2}{#3}{#4}% -\ifFLFabove - \ifFLFleft - \FFaboveleft - \else - \ifFLFright - \FFaboveright - \else - \FFabove - \fi - \fi -\else - \ifFLFbelow + \@checkifframeabove{#1}{#2}{#3}{#4}% + \@checkifframebelow{#1}{#2}{#3}{#4}% + \@checkifframeleft{#1}{#2}{#3}{#4}% + \@checkifframeright{#1}{#2}{#3}{#4}% + \ifFLFabove \ifFLFleft - \FFbelowleft + \FFaboveleft \else \ifFLFright - \FFbelowright + \FFaboveright \else - \FFbelow + \FFabove \fi \fi \else - \ifFLFleft - \FFleft + \ifFLFbelow + \ifFLFleft + \FFbelowleft + \else + \ifFLFright + \FFbelowright + \else + \FFbelow + \fi + \fi \else - \ifFLFright - \FFright + \ifFLFleft + \FFleft \else - \FFoverlap + \ifFLFright + \FFright + \else + \FFoverlap + \fi \fi \fi \fi -\fi } \DeclareRobustCommand*{\reldynamicloc}{% -\@ifstar\@sreldynamicloc\@reldynamicloc} -\newcommand*{\@sreldynamicloc}[2]{ -\@srelativeframelocation{dynamic}{#1}{dynamic}{#2}} -\newcommand*{\@reldynamicloc}[2]{ -\@relativeframelocation{dynamic}{#1}{dynamic}{#2}} + \@ifstar\@sreldynamicloc\@reldynamicloc +} +\newcommand*{\@sreldynamicloc}[2]{% + \@srelativeframelocation{dynamic}{#1}{dynamic}{#2}% +} +\newcommand*{\@reldynamicloc}[2]{% + \@relativeframelocation{dynamic}{#1}{dynamic}{#2}% +} \DeclareRobustCommand*{\relstaticloc}{% -\@ifstar\@srelstaticloc\@relstaticloc} -\newcommand*{\@srelstaticloc}[2]{ -\@srelativeframelocation{static}{#1}{static}{#2}} -\newcommand*{\@relstaticloc}[2]{ -\@relativeframelocation{static}{#1}{static}{#2}} + \@ifstar\@srelstaticloc\@relstaticloc +} +\newcommand*{\@srelstaticloc}[2]{% + \@srelativeframelocation{static}{#1}{static}{#2}% +} +\newcommand*{\@relstaticloc}[2]{% + \@relativeframelocation{static}{#1}{static}{#2}% +} \DeclareRobustCommand*{\relflowloc}{% -\@ifstar\@srelflowloc\@relflowloc} -\newcommand*{\@srelflowloc}[2]{ -\@srelativeframelocation{flow}{#1}{flow}{#2}} -\newcommand*{\@relflowloc}[2]{ -\@relativeframelocation{flow}{#1}{flow}{#2}} -\newcommand*{\setinitialframe}[1]{\c@thisframe=#1% -\global\usedframebreaktrue -\global\setlength{\hsize}{% -\csname colwidth\romannumeral\c@thisframe\endcsname}} + \@ifstar\@srelflowloc\@relflowloc +} +\newcommand*{\@srelflowloc}[2]{% + \@srelativeframelocation{flow}{#1}{flow}{#2}% +} +\newcommand*{\@relflowloc}[2]{% + \@relativeframelocation{flow}{#1}{flow}{#2}% +} +\newcommand*{\setinitialframe}[1]{% + \c@thisframe=#1% + \global\usedframebreaktrue + \global\setlength{\hsize} + {% + \csname colwidth\romannumeral\c@thisframe\endcsname + }% +} \newif\if@setfr@mes \@setfr@mesfalse \newcommand*{\setframes}{% -\ifnum\c@thisframe=0\relax -\PackageWarning{flowfram}{Can't find a flow frame on page 1. -\MessageBreak -Attempting to find the first page with a flow frame}% -\@nxtcol=1\relax -\c@curpg=1\relax -\@g@tnextcol{\@nxtcol}% -\advance\c@curpg by -1\relax - \whiledo{\c@curpg>0}{\advance\c@curpg by -1\relax - \setbox\@outputbox\vbox{\hbox to \textwidth{\@ff@do@allframes}}% -\@outputpage}% -\c@thisframe=\@nxtcol -\fi -\@setcol{\c@thisframe}\relax -\@setfr@mestrue -\edef\ff@txtcol{% -\csname @ff@txtcol@\romannumeral\c@thisframe\endcsname}% -\@s@tfftextcol + \ifnum\c@thisframe=0\relax + \PackageWarning{flowfram}% + {Can't find a flow frame on page 1. + \MessageBreak + Attempting to find the first page with a flow frame% + }% + \@nxtcol=1\relax + \c@curpg=1\relax + \@g@tnextcol{\@nxtcol}% + \advance\c@curpg by -1\relax + \whiledo{\c@curpg>0}% + {% + \advance\c@curpg by -1\relax + \setbox\@outputbox\vbox{\hbox to \textwidth{\@ff@do@allframes}}% + \@outputpage + }% + \c@thisframe=\@nxtcol + \fi + \@setcol{\c@thisframe}\relax + \@setfr@mestrue + \edef\ff@txtcol{% + \csname @ff@txtcol@\romannumeral\c@thisframe\endcsname}% + \@s@tfftextcol } \newcommand{\emulatetwocolumn}[1][]{% -\finishthispage -\setallflowframes{pages=none}% -\settoheight{\@ff@staticH}{#1}% -\settodepth{\@ff@tmp@y}{#1}% -\addtolength{\@ff@staticH}{\@ff@tmp@y}% -\ifdim\@ff@staticH>0pt\relax -\twocolumnStop[\c@page]{\@ff@staticH}% -\c@thisframe=\c@maxflow -\advance\c@thisframe by -1\relax -\@twocolumn[>\c@page]% -\setstaticcontents{\c@maxstatic}{#1}% -\else -\@twocolumn -\c@thisframe=\c@maxflow -\advance\c@thisframe by -1\relax -\fi -\@setcol{\c@thisframe}\relax + \finishthispage + \setallflowframes{pages=none}% + \settoheight{\@ff@staticH}{#1}% + \settodepth{\@ff@tmp@y}{#1}% + \addtolength{\@ff@staticH}{\@ff@tmp@y}% + \ifdim\@ff@staticH>0pt\relax + \twocolumnStop[\@ff@pages@countreg]{\@ff@staticH}% + \c@thisframe=\c@maxflow + \advance\c@thisframe by -1\relax + \@twocolumn[>\@ff@pages@countreg]% + \setstaticcontents{\c@maxstatic}{#1}% + \else + \@twocolumn + \c@thisframe=\c@maxflow + \advance\c@thisframe by -1\relax + \fi + \@setcol{\c@thisframe}% + \relax } \newcommand{\emulateonecolumn}[1][]{% -\finishthispage -\setallflowframes{pages=none}% -\settoheight{\@ff@staticH}{#1}% -\settodepth{\@ff@tmp@y}{#1}% -\addtolength{\@ff@staticH}{\@ff@tmp@y}% -\ifdim\@ff@staticH>0pt\relax -\onecolumnStop[\c@page]{\@ff@staticH}% -\c@thisframe=\c@maxflow -\advance\c@thisframe by -1\relax -\@onecolumn[>\c@page]% -\setstaticcontents{\c@maxstatic}{#1}% -\else -\@twocolumn -\c@thisframe=\c@maxflow -\advance\c@thisframe by -1\relax -\fi -\@setcol{\c@thisframe}\relax + \finishthispage + \setallflowframes{pages=none}% + \settoheight{\@ff@staticH}{#1}% + \settodepth{\@ff@tmp@y}{#1}% + \addtolength{\@ff@staticH}{\@ff@tmp@y}% + \ifdim\@ff@staticH>0pt\relax + \onecolumnStop[\@ff@pages@countreg]{\@ff@staticH}% + \c@thisframe=\c@maxflow + \advance\c@thisframe by -1\relax + \@onecolumn[>\@ff@pages@countreg]% + \setstaticcontents{\c@maxstatic}{#1}% + \else + \@twocolumn + \c@thisframe=\c@maxflow + \advance\c@thisframe by -1\relax + \fi + \@setcol{\c@thisframe}% + \relax } \AtBeginDocument{% -\ifnum\c@maxflow=0\relax -\PackageWarning{flowfram}{No flow frames, adding one}% -\@onecolumn -\fi -\setframes -\renewcommand{\onecolumn}[1][]{\PackageWarning{flowfram}{% -Ignoring \string\onecolumn\space found in document environment. -Frames must be defined in the preamble}#1}% -\renewcommand{\twocolumn}[1][]{\PackageWarning{flowfram}{% -Ignoring \string\twocolumn\space found in document environment. -Frames must be defined in the preamble}#1}% + \c@absolutepage=1\relax + \ifnum\c@maxflow=0\relax + \PackageWarning{flowfram}{No flow frames, adding one}% + \@onecolumn + \fi + \setframes + \renewcommand{\onecolumn}[1][]{% + \PackageWarning{flowfram}% + {% + Ignoring \string\onecolumn\space found in document environment. + Frames must be defined in the preamble% + }% + #1% + }% + \renewcommand{\twocolumn}[1][]{% + \PackageWarning{flowfram}% + {% + Ignoring \string\twocolumn\space found in document environment. + Frames must be defined in the preamble}% + #1% + }% } +\newlength\fftolerance +\setlength\fftolerance{2pt} \newcommand{\@setcol}[1]{% -\ifnum\c@maxflow<#1\relax - \PackageError{flowfram}{Can't set frame '\number#1', doesn't - exist}{}% -\else - \expandafter\global\expandafter\columnwidth - \csname colwidth\romannumeral#1\endcsname - \ifdim\hsize=\columnwidth + \ifnum\c@maxflow<#1\relax + \PackageError{flowfram}% + {Can't set frame '\number#1', doesn't exist}{}% \else - \ifusedframebreak - \else - \PackageWarning{flowfram}{Moving to flow frame of unequal - width,\MessageBreak use of \string\framebreak\space advised, - or text might not appear correctly}% + \flf@message{Switching to flow frame \number#1\space on page + \number\@ff@pages@countreg}% + \expandafter\global\expandafter\columnwidth + \csname colwidth\romannumeral#1\endcsname + \dimen@\columnwidth + \advance\dimen@ by -\hsize\relax + \ifdim\dimen@<0pt\relax + \dimen@=-\dimen@ \fi + \ifdim\dimen@>\fftolerance + \ifusedframebreak + \else + \PackageWarning{flowfram}% + {Moving to flow frame of unequal + width,\MessageBreak use of \string\framebreak\space advised, + or text might not appear correctly (difference = + \the\dimen@, tolerance = \the\fftolerance)}% + \fi + \fi + \global\usedframebreakfalse + \global\hsize\columnwidth + \expandafter\global + \expandafter\vsize\csname colheight\romannumeral#1\endcsname + \global\@colht\vsize + \global\@colroom\@colht + \global\linewidth\columnwidth + \setmargin \fi - \global\usedframebreakfalse - \global\hsize\columnwidth - \expandafter\global - \expandafter\vsize\csname colheight\romannumeral#1\endcsname - \global\@colht\vsize - \global\@colroom\@colht - \global\linewidth\columnwidth - \setmargin -\fi -\stepcounter{displayedframe}% + \stepcounter{displayedframe}% } -\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<\vsize - \@latex@warning@no@line{Text page \thepage \space - contains only floats}\@emptycol +\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<\vsize + \@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\@colroom + \global\vsize\maxdimen \fi -\else - \global\vsize\maxdimen -\fi } \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@firstcolumn + \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@firstcolumn \xdef\@dbldeferlist{\@dbltoplist\@dbldeferlist}% -\global\let\@dbltoplist\@empty -\global\@colht\vsize -\begingroup - \@dblfloatplacement - \@makefcolumn - \@dbldeferlist - \@whilesw \if@fcolmade \fi {\@outputpage -\@makefcolumn\@dbldeferlist}% -\endgroup -\else - \vbox{}\clearpage -\fi -\else - \setbox\@cclv\vbox{\box\@cclv\vfil}% -\@makecol\@opcol\clearpage\fi} -\newcommand{\@dothehead}{\vbox to \headheight{% -\color@hbox\normalcolor\hbox to \textwidth{% -\@thehead}\color@endbox}} + \global\let\@dbltoplist\@empty + \global\@colht\vsize + \begingroup + \@dblfloatplacement + \@makefcolumn\@dbldeferlist + \@whilesw \if@fcolmade \fi + {% + \@outputpage + \@makefcolumn\@dbldeferlist + }% + \endgroup + \else + \vbox{}% + \clearpage + \fi + \else + \setbox\@cclv\vbox{\box\@cclv\vfil}% + \@makecol\@opcol + \clearpage + \fi +} +\newcommand{\@dothehead}{% + \vbox to \headheight + {% + \color@hbox\normalcolor\hbox to \textwidth{\@thehead}% + \color@endbox + }% +} \newcommand{\@dothefoot}{% -\color@hbox\normalcolor\hbox to \textwidth{% -\@thefoot}\color@endbox} + \color@hbox\normalcolor\hbox to \textwidth{\@thefoot}% + \color@endbox +} \newcommand{\@dodynamicthehead}{} \newcommand{\@dodynamicthefoot}{} \def\@outputpage{% -\begingroup - \let\protect\noexpand - \@resetactivechars - \global\let\@@if@newlist\if@newlist - \global\@newlistfalse\@parboxrestore - \shipout\vbox{\set@typeset@protect - \aftergroup - \endgroup - \aftergroup - \set@typeset@protect - \reset@font\normalsize\normalsfcodes - \let\label\@gobble - \let\index\@gobble - \let\glossary\@gobble - \baselineskip\z@skip - \lineskip\z@skip - \lineskiplimit\z@ - \vskip\topmargin\moveright\@themargin - \vbox{% - \vskip\headheight - \vskip\headsep - \box\@outputbox - }}% - \global\let\if@newlist\@@if@newlist - \stepcounter{page}% - \setcounter{displayedframe}{0}% - \let\firstmark\botmark} + \begingroup + \let\protect\noexpand + \@resetactivechars + \global\let\@@if@newlist\if@newlist + \global\@newlistfalse\@parboxrestore + \shipout\vbox + {% + \set@typeset@protect + \aftergroup + \endgroup + \aftergroup + \set@typeset@protect + \reset@font\normalsize\normalsfcodes + \let\label\@gobble + \let\index\@gobble + \let\glossary\@gobble + \baselineskip\z@skip + \lineskip\z@skip + \lineskiplimit\z@ + \vskip\topmargin\moveright\@themargin + \vbox + {% + \vskip\headheight + \vskip\headsep + \box\@outputbox + }% + }% + \global\let\if@newlist\@@if@newlist + \stepcounter{page}% + \stepcounter{absolutepage}% + \setcounter{displayedframe}{0}% + \let\firstmark\botmark +} \newcommand*{\makedfheaderfooter}{% -\setlength{\@ff@tmp@y}{\textheight}% -\addtolength{\@ff@tmp@y}{\headsep}% -\newdynamicframe{\textwidth}{\headheight}{0pt}{\@ff@tmp@y}[header]% -\newdynamicframe{\textwidth}{\headheight}{0pt}{-\footskip}[footer]% -\renewcommand{\@dothehead}{}% -\renewcommand{\@dothefoot}{}% -\renewcommand{\@dodynamicthehead}{% -\@dynamicframeid{header}% -\expandafter -\def\csname @dynamicframe@\romannumeral\ff@id\endcsname{% -\vfill\@thehead\vfill}% -}% -\renewcommand{\@dodynamicthefoot}{% -\@dynamicframeid{footer}% -\expandafter -\def\csname @dynamicframe@\romannumeral\ff@id\endcsname{% -\vfill\@thefoot\vfill}% -}% + \setlength{\@ff@tmp@y}{\textheight}% + \addtolength{\@ff@tmp@y}{\headsep}% + \newdynamicframe{\textwidth}{\headheight}{0pt}{\@ff@tmp@y}[header]% + \newdynamicframe{\textwidth}{\headheight}{0pt}{-\footskip}[footer]% + \renewcommand{\@dothehead}{}% + \renewcommand{\@dothefoot}{}% + \renewcommand{\@dodynamicthehead}{% + \@dynamicframeid{header}% + \expandafter + \def\csname @dynamicframe@\romannumeral\ff@id\endcsname{% + \vfill\@thehead\vfill + }% + }% + \renewcommand{\@dodynamicthefoot}{% + \@dynamicframeid{footer}% + \expandafter + \def\csname @dynamicframe@\romannumeral\ff@id\endcsname{% + \vfill\@thefoot\vfill + }% + }% } \@onlypreamble{\makedfheaderfooter} \newcommand{\footnotecolor}{% -\@ifundefined{@ff@txtcol@\romannumeral\c@thisframe}{% -\normalcolor}{% -\edef\ff@txtcol{% -\csname @ff@txtcol@\romannumeral\c@thisframe\endcsname}% -\@s@tfftextcol}} + \@ifundefined{@ff@txtcol@\romannumeral\c@thisframe}% + {% + \normalcolor + }% + {% + \edef\ff@txtcol{% + \csname @ff@txtcol@\romannumeral\c@thisframe\endcsname + }% + \@s@tfftextcol + }% +} \renewcommand{\@makecol}{% -\ifvoid\footins - \setbox\@outputbox\box\@cclv -\else - \setbox\@outputbox\vbox{% -\boxmaxdepth\@maxdepth\@tempdima\dp\@cclv - \unvbox\@cclv - \vskip\skip\footins - \color@begingroup - \footnotecolor - \footnoterule - \unvbox\footins - \color@endgroup -}\fi -\xdef\@freelist{\@freelist \@midlist }% -\global\let\@midlist\@empty -\@combinefloats -\ifvbox\@kludgeins - \@makespecialcolbox -\else - \setbox\@outputbox\vbox to\@colht{% -\@texttop\dimen@\dp\@outputbox - \unvbox \@outputbox - \vskip -\dimen@\@textbottom -}\fi -\global\maxdepth\@maxdepth} -\def\@opcol{\@outputdblcol -\global\@mparbottom\z@ -\global\@textfloatsheight\z@ -\@floatplacement + \ifvoid\footins + \setbox\@outputbox\box\@cclv + \else + \setbox\@outputbox\vbox + {% + \boxmaxdepth\@maxdepth\@tempdima\dp\@cclv + \unvbox\@cclv + \vskip\skip\footins + \color@begingroup + \footnotecolor + \footnoterule + \unvbox\footins + \color@endgroup + }% + \fi + \xdef\@freelist{\@freelist\@midlist}% + \global\let\@midlist\@empty + \@combinefloats + \ifvbox\@kludgeins + \@makespecialcolbox + \else + \setbox\@outputbox\vbox to\@colht{% + \@texttop\dimen@\dp\@outputbox + \unvbox \@outputbox + \vskip -\dimen@\@textbottom + }% + \fi + \global\maxdepth\@maxdepth +} +\def\@opcol{% + \@outputdblcol + \global\@mparbottom\z@ + \global\@textfloatsheight\z@ + \@floatplacement } \newif\if@ff@moreframes \newcommand*{\@ff@checkifmoreframes}{% -\@ff@moreframesfalse -\@colN=\c@thisframe -\whiledo{\@colN<\c@maxflow}{% -\advance\@colN by 1\relax -\edef\ff@pages{\csname @ff@pages@\romannumeral\@colN\endcsname}% -\@ff@checkpages{\ff@pages}% -}% -\if@ff@moreframes -\else -\@ff@tmpN=\c@page -\advance\@ff@tmpN by 1\relax -\@colN=0\relax -\whiledo{\@colN<\c@thisframe}{% -\advance\@colN by 1\relax -\edef\ff@pages{\csname @ff@pages@\romannumeral\@colN\endcsname}% -\@ff@checkpages[\@ff@tmpN]{\ff@pages}% -}% -\fi + \@ff@moreframesfalse + \@colN=\c@thisframe + \whiledo{\@colN<\c@maxflow}% + {% + \advance\@colN by 1\relax + \edef\ff@xpages{\csname @ff@xpages@\romannumeral\@colN\endcsname}% + \@for\@ff@pp:=\ff@xpages\do + {% + \ifnum0\@ff@pp=\@ff@pages@countreg\relax + \@endfortrue + \fi + }% + \if@endfor + \else + \edef\ff@pages{\csname @ff@pages@\romannumeral\@colN\endcsname}% + \@ff@checkpages{\ff@pages}% + \if@ff@moreframes + \@colN=\c@maxflow\relax + \fi + \fi + }% + \if@ff@moreframes + \else + \@ff@tmpN=\@ff@pages@countreg + \count@=0\relax + \loop + \advance\@ff@tmpN by 1\relax + \@colN=0\relax + \whiledo{\@colN<\c@maxflow}% + {% + \advance\@colN by 1\relax + \edef\ff@xpages{\csname @ff@xpages@\romannumeral\@colN\endcsname}% + \@for\@ff@pp:=\ff@xpages\do + {% + \ifnum0\@ff@pp=\@ff@tmpN\relax + \@endfortrue + \fi + }% + \if@endfor + \else + \edef\ff@pages{\csname @ff@pages@\romannumeral\@colN\endcsname}% + \@ff@checkpages[\@ff@tmpN]{\ff@pages}% + \if@ff@moreframes + \@colN=\c@maxflow\relax + \fi + \fi + }% + \if@ff@moreframes + \count@=4\relax + \else + \advance\count@ by 1\relax + \fi + \ifnum\count@<4 + \repeat + \fi +} +\newcommand*{\@ff@checkpages}[2][\@ff@pages@countreg]{% + \@for\@ff@pp:=#2\do{% + \@ff@checkthispage{#1}{\@ff@pp}% + }% } -\newcommand*{\@ff@checkpages}[2][\c@page]{% -\@for\@ff@pp:=#2\do{% -\@ff@checkthispage{#1}{\@ff@pp}}} \newcommand*{\@ff@checkthispage}[2]{% -\ifthenelse{\equal{#2}{all}\or\equal{#2}{even}\or\equal{#2}{odd}}{% -\@ff@moreframestrue}{% -\ifthenelse{\equal{#2}{none}}{}{% -\@ff@checknumrange{#1}{#2}}}} + \ifthenelse{\equal{#2}{all}\or\equal{#2}{even}\or\equal{#2}{odd}}% + {% + \@ff@moreframestrue + }% + {% + \ifthenelse{\equal{#2}{none}}% + {}% + {% + \@ff@checknumrange{#1}{#2}% + }% + }% +} \newcommand*{\@ff@checknumrange}[2]{% -\def\@ff@numstart{0}\def\@ff@numend{10000}% -\@ff@getrange{#2}% -\ifnum\@ff@numend>#1\relax -\@ff@moreframestrue -\else -\ifnum\@ff@numend=#1\relax -\@ff@moreframestrue -\fi -\fi + \def\@ff@numstart{0}% + \def\@ff@numend{100000}% + \@ff@getrange{#2}% + \ifnum\@ff@numend>#1\relax + \@ff@moreframestrue + \else + \ifnum\@ff@numend=#1\relax + \@ff@moreframestrue + \fi + \fi } \newcount\c@ffrangenum \newcommand*{\@ff@getrange}[1]{% -\expandafter\@ff@@getrange#1-\relax\end} + \expandafter\@ff@@getrange#1-\relax\end +} \def\@ff@@getrange#1#2\end{% -\ifx#1<\relax - \@ff@getrangeless#1#2\end -\else - \ifx#1>\relax - \@ff@getrangegreater#1#2\end + \ifx#1<\relax + \@ff@getrangeless#1#2\end \else - \@@ff@getrange#1#2\end + \ifx#1>\relax + \@ff@getrangegreater#1#2\end + \else + \@@ff@getrange#1#2\end + \fi \fi -\fi } \def\@ff@getrangeless<#1-\relax\end{% -\c@ffrangenum=#1\relax -\advance\c@ffrangenum by -1\relax -\def\@ff@numstart{0}% -\edef\@ff@numend{\number\c@ffrangenum}} + \c@ffrangenum=#1\relax + \advance\c@ffrangenum by -1\relax + \def\@ff@numstart{0}% + \edef\@ff@numend{\number\c@ffrangenum}% +} \def\@ff@getrangegreater>#1-\relax\end{% -\c@ffrangenum=#1\relax -\advance\c@ffrangenum by 1\relax -\edef\@ff@numstart{\number\c@ffrangenum}% -\def\@ff@numend{10000}} + \c@ffrangenum=#1\relax + \advance\c@ffrangenum by 1\relax + \edef\@ff@numstart{\number\c@ffrangenum}% + \def\@ff@numend{100000}% +} \def\@@ff@getrange#1-#2\end{% -\ifx\relax#2\relax -\def\@ff@numstart{#1}\def\@ff@numend{#1}% -\else -\def\@ff@numstart{#1}% -\@@@ff@getrange#2\end -\fi + \ifx\relax#2\relax + \def\@ff@numstart{#1}% + \def\@ff@numend{#1}% + \else + \def\@ff@numstart{#1}% + \@@@ff@getrange#2\end + \fi } \def\@@@ff@getrange#1-\relax\end{% -\def\@ff@numend{#1}} + \def\@ff@numend{#1}% +} +\newcommand*{\@ff@output@adjustframes}{} +\newcommand*{\flowswitchonnext}{% + \@ifstar\@sflowswitchonnext\@flowswitchonnext +} +\newcommand{\@sflowswitchonnext}[1]{% + \@for\@ff@id:=#1\do{% + \@flowframeid{\@ff@id}% + \@ff@chckifthispg{\@ff@pages@countreg}{\ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \if@notthiscol + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\ff@id}{>\number\@ff@pages@countreg}% + }% + \else + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\ff@id}% + {\number\@ff@pages@countreg,>\number\@ff@pages@countreg}% + }% + \fi + }% +} +\newcommand{\@flowswitchonnext}[1]{% + \@for\@ff@id:=#1\do{% + \@ff@chckifthispg{\@ff@pages@countreg}{\@ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \if@notthiscol + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\@ff@id}{>\number\@ff@pages@countreg}% + }% + \else + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\@ff@id}% + {\number\@ff@pages@countreg,>\number\@ff@pages@countreg}% + }% + \fi + }% +} +\newcommand*{\flowswitchonnextodd}{% + \@ifstar\@sflowswitchonnextodd\@flowswitchonnextodd +} +\newcommand{\@sflowswitchonnextodd}[1]{% + \count@=\@ff@pages@countreg\relax + \ifodd\count@\relax + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \@flowframeid{\@ff@id}% + \@ff@chckifthispg{\@ff@pages@countreg}{\ff@id}% + \def\@ff@prepages{}% + \if@notthiscol + \else + \def\@ff@prepages{\number\@ff@pages@countreg,}% + \fi + \@ff@chckifthispg{\count@}{\ff@id}% + \ifnum\count@=\@ff@pages@countreg\relax + \else + \if@notthiscol + \else + \edef\@ff@prepages{\@ff@prepages\number\count@,}% + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\ff@id}% + {\@ff@prepages>\number\count@}% + }% + }% +} +\newcommand{\@flowswitchonnextodd}[1]{% + \count@=\@ff@pages@countreg\relax + \ifodd\count@\relax + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \@ff@chckifthispg{\@ff@pages@countreg}{\@ff@id}% + \def\@ff@prepages{}% + \if@notthiscol + \else + \def\@ff@prepages{\number\@ff@pages@countreg,}% + \fi + \@ff@chckifthispg{\count@}{\@ff@id}% + \ifnum\count@=\@ff@pages@countreg\relax + \else + \if@notthiscol + \else + \edef\@ff@prepages{\@ff@prepages\number\count@,}% + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\@ff@id}% + {\@ff@prepages>\number\count@}% + }% + }% +} +\newcommand*{\flowswitchoffnext}{% + \@ifstar\@sflowswitchoffnext\@flowswitchoffnext +} +\newcommand{\@sflowswitchoffnext}[1]{% + \@for\@ff@id:=#1\do{% + \@flowframeid{\@ff@id}% + \@ff@chckifthispg{\@ff@pages@countreg}{\ff@id}% + \if@notthiscol + \def\@ff@pages{none}% + \else + \def\@ff@pages{\number\@ff@pages@countreg}% + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\ff@id}{\@ff@pages}% + }% + }% +} +\newcommand{\@flowswitchoffnext}[1]{% + \@for\@ff@id:=#1\do{% + \@ff@chckifthispg{\@ff@pages@countreg}{\@ff@id}% + \if@notthiscol + \def\@ff@pages{none}% + \else + \def\@ff@pages{\number\@ff@pages@countreg}% + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\@ff@id}{\@ff@pages}% + }% + }% +} +\newcommand*{\flowswitchoffnextodd}{% + \@ifstar\@sflowswitchoffnextodd\@flowswitchoffnextodd +} +\newcommand{\@sflowswitchoffnextodd}[1]{% + \count@=\@ff@pages@countreg\relax + \ifodd\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \@flowframeid{\@ff@id}% + \@ff@chckifthispg{\@ff@pages@countreg}{\ff@id}% + \if@notthiscol + \ifnum\@ff@pages@countreg=\count@\relax + \def\@ff@nextpages{none}% + \else + \@ff@chckifthispg{\count@}{\ff@id}% + \if@notthiscol + \def\@ff@nextpages{none}% + \else + \def\@ff@nextpages{\number\count@}% + \fi + \fi + \else + \ifnum\@ff@pages@countreg=\count@\relax + \def\@ff@nextpages{\number\@ff@pages@countreg}% + \else + \@ff@chckifthispg{\count@}{\ff@id}% + \if@notthiscol + \def\@ff@nextpages{\number\@ff@pages@countreg}% + \else + \def\@ff@nextpages{\number\@ff@pages@countreg,\number\count@}% + \fi + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\ff@id}{\@ff@nextpages}% + }% + }% +} +\newcommand{\@flowswitchoffnextodd}[1]{% + \count@=\@ff@pages@countreg\relax + \ifodd\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \@ff@chckifthispg{\@ff@pages@countreg}{\@ff@id}% + \if@notthiscol + \ifnum\@ff@pages@countreg=\count@\relax + \def\@ff@nextpages{none}% + \else + \@ff@chckifthispg{\count@}{\@ff@id}% + \if@notthiscol + \def\@ff@nextpages{none}% + \else + \def\@ff@nextpages{\number\count@}% + \fi + \fi + \else + \ifnum\@ff@pages@countreg=\count@\relax + \def\@ff@nextpages{\number\@ff@pages@countreg}% + \else + \@ff@chckifthispg{\count@}{\@ff@id}% + \if@notthiscol + \def\@ff@nextpages{\number\@ff@pages@countreg}% + \else + \def\@ff@nextpages{\number\@ff@pages@countreg,\number\count@}% + \fi + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\@ff@id}{\@ff@nextpages}% + }% + }% +} +\newcommand*{\flowswitchonnextonly}{% + \@ifstar\@sflowswitchonnextonly\@flowswitchonnextonly +} +\newcommand{\@sflowswitchonnextonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@for\@ff@id:=#1\do{% + \@flowframeid{\@ff@id}% + \@ff@chckifthispg{\@ff@pages@countreg}{\ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \if@notthiscol + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\ff@id}{\number\count@}% + }% + \else + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\ff@id}% + {\number\@ff@pages@countreg,\number\count@}% + }% + \fi + }% +} +\newcommand{\@flowswitchonnextonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@for\@ff@id:=#1\do{% + \@ff@chckifthispg{\@ff@pages@countreg}{\@ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \if@notthiscol + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\@ff@id}{\number\count@}% + }% + \else + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\@ff@id}% + {\number\@ff@pages@countreg,\number\count@}% + }% + \fi + }% +} +\newcommand*{\flowswitchonnextoddonly}{% + \@ifstar\@sflowswitchonnextoddonly\@flowswitchonnextoddonly +} +\newcommand{\@sflowswitchonnextoddonly}[1]{% + \@for\@ff@id:=#1\do{% + \@flowframeid{\@ff@id}% + \@ff@chckifthispg{\@ff@pages@countreg}{\ff@id}% + \if@notthiscol + \ifodd\@ff@pages@countreg + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@ff@chckifthispg{\count@}{\ff@id}% + \if@notthiscol + \advance\count@ by 1\relax + \edef\@ff@pages{\number\count@}% + \else + \edef\@ff@pages{\number\count@}% + \advance\count@ by 1\relax + \edef\@ff@pages{\@ff@pages,\number\count@}% + \fi + \else + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \edef\@ff@pages{\number\count@}% + \fi + \else + \ifodd\@ff@pages@countreg + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@ff@chckifthispg{\count@}{\ff@id}% + \if@notthiscol + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg,\number\count@}% + \else + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg-\number\count@}% + \fi + \else + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg,\number\count@}% + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\ff@id}{\@ff@pages}% + }% + }% +} +\newcommand{\@flowswitchonnextoddonly}[1]{% + \@for\@ff@id:=#1\do{% + \@ff@chckifthispg{\@ff@pages@countreg}{\@ff@id}% + \if@notthiscol + \ifodd\@ff@pages@countreg + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@ff@chckifthispg{\count@}{\@ff@id}% + \if@notthiscol + \advance\count@ by 1\relax + \edef\@ff@pages{\number\count@}% + \else + \edef\@ff@pages{\number\count@}% + \advance\count@ by 1\relax + \edef\@ff@pages{\@ff@pages,\number\count@}% + \fi + \else + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \edef\@ff@pages{\number\count@}% + \fi + \else + \ifodd\@ff@pages@countreg + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@ff@chckifthispg{\count@}{\@ff@id}% + \if@notthiscol + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg,\number\count@}% + \else + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg-\number\count@}% + \fi + \else + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg,\number\count@}% + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowsetpagelist{\number\@ff@id}{\@ff@pages}% + }% + }% +} +\newcommand*{\flowswitchoffnextonly}{% + \@ifstar\@sflowswitchoffnextonly\@flowswitchoffnextonly +} +\newcommand{\@sflowswitchoffnextonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@for\@ff@id:=#1\do{% + \@flowframeid{\@ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowaddexclusion{\number\ff@id}{\number\count@}% + }% + }% +} +\newcommand{\@flowswitchoffnextonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@for\@ff@id:=#1\do{% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowaddexclusion{\number\@ff@id}{\number\count@}% + }% + }% +} +\newcommand*{\flowswitchoffnextoddonly}{% + \@ifstar\@sflowswitchoffnextoddonly\@flowswitchoffnextoddonly +} +\newcommand{\@sflowswitchoffnextoddonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \ifodd\count@\relax + \else + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \@flowframeid{\@ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowaddexclusion{\number\ff@id}{\number\count@}% + }% + }% +} +\newcommand{\@flowswitchoffnextoddonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \ifodd\count@\relax + \else + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\flowaddexclusion{\number\@ff@id}{\number\count@}% + }% + }% +} +\newcommand*{\dynamicswitchonnext}{% + \@ifstar\@sdynamicswitchonnext\@dynamicswitchonnext +} +\newcommand{\@sdynamicswitchonnext}[1]{% + \@for\@ff@id:=#1\do{% + \@dynamicframeid{\@ff@id}% + \@df@chckifthispg[\@ff@pages@countreg]{\ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \if@notthiscol + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\ff@id}{>\number\@ff@pages@countreg}% + }% + \else + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\ff@id}% + {\number\@ff@pages@countreg,>\number\@ff@pages@countreg}% + }% + \fi + }% +} +\newcommand{\@dynamicswitchonnext}[1]{% + \@for\@ff@id:=#1\do{% + \@df@chckifthispg[\@ff@pages@countreg]{\@ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \if@notthiscol + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\@ff@id}{>\number\@ff@pages@countreg}% + }% + \else + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\@ff@id}% + {\number\@ff@pages@countreg,>\number\@ff@pages@countreg}% + }% + \fi + }% +} +\newcommand*{\dynamicswitchonnextodd}{% + \@ifstar\@sdynamicswitchonnextodd\@dynamicswitchonnextodd +} +\newcommand{\@sdynamicswitchonnextodd}[1]{% + \count@=\@ff@pages@countreg\relax + \ifodd\count@\relax + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \@dynamicframeid{\@ff@id}% + \@df@chckifthispg[\@ff@pages@countreg]{\ff@id}% + \def\@ff@prepages{}% + \if@notthiscol + \else + \def\@ff@prepages{\number\@ff@pages@countreg,}% + \fi + \@df@chckifthispg[\count@]{\ff@id}% + \ifnum\count@=\@ff@pages@countreg\relax + \else + \if@notthiscol + \else + \edef\@ff@prepages{\@ff@prepages\number\count@,}% + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\ff@id}% + {\@ff@prepages>\number\count@}% + }% + }% +} +\newcommand{\@dynamicswitchonnextodd}[1]{% + \count@=\@ff@pages@countreg\relax + \ifodd\count@\relax + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \@df@chckifthispg[\@ff@pages@countreg]{\@ff@id}% + \def\@ff@prepages{}% + \if@notthiscol + \else + \def\@ff@prepages{\number\@ff@pages@countreg,}% + \fi + \@df@chckifthispg[\count@]{\@ff@id}% + \ifnum\count@=\@ff@pages@countreg\relax + \else + \if@notthiscol + \else + \edef\@ff@prepages{\@ff@prepages\number\count@,}% + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\@ff@id}% + {\@ff@prepages>\number\count@}% + }% + }% +} +\newcommand*{\dynamicswitchoffnext}{% + \@ifstar\@sdynamicswitchoffnext\@dynamicswitchoffnext +} +\newcommand{\@sdynamicswitchoffnext}[1]{% + \@for\@ff@id:=#1\do{% + \@dynamicframeid{\@ff@id}% + \@df@chckifthispg[\@ff@pages@countreg]{\ff@id}% + \if@notthiscol + \def\@ff@pages{none}% + \else + \def\@ff@pages{\number\@ff@pages@countreg}% + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\ff@id}{\@ff@pages}% + }% + }% +} +\newcommand{\@dynamicswitchoffnext}[1]{% + \@for\@ff@id:=#1\do{% + \@df@chckifthispg[\@ff@pages@countreg]{\@ff@id}% + \if@notthiscol + \def\@ff@pages{none}% + \else + \def\@ff@pages{\number\@ff@pages@countreg}% + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\@ff@id}{\@ff@pages}% + }% + }% +} +\newcommand*{\dynamicswitchoffnextodd}{% + \@ifstar\@sdynamicswitchoffnextodd\@dynamicswitchoffnextodd +} +\newcommand{\@sdynamicswitchoffnextodd}[1]{% + \count@=\@ff@pages@countreg\relax + \ifodd\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \@dynamicframeid{\@ff@id}% + \@df@chckifthispg[\@ff@pages@countreg]{\ff@id}% + \if@notthiscol + \ifnum\@ff@pages@countreg=\count@\relax + \def\@ff@nextpages{none}% + \else + \@df@chckifthispg[\count@]{\ff@id}% + \if@notthiscol + \def\@ff@nextpages{none}% + \else + \def\@ff@nextpages{\number\count@}% + \fi + \fi + \else + \ifnum\@ff@pages@countreg=\count@\relax + \def\@ff@nextpages{\number\@ff@pages@countreg}% + \else + \@df@chckifthispg[\count@]{\ff@id}% + \if@notthiscol + \def\@ff@nextpages{\number\@ff@pages@countreg}% + \else + \def\@ff@nextpages{\number\@ff@pages@countreg,\number\count@}% + \fi + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\ff@id}{\@ff@nextpages}% + }% + }% +} +\newcommand{\@dynamicswitchoffnextodd}[1]{% + \count@=\@ff@pages@countreg\relax + \ifodd\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \@df@chckifthispg[\@ff@pages@countreg]{\@ff@id}% + \if@notthiscol + \ifnum\@ff@pages@countreg=\count@\relax + \def\@ff@nextpages{none}% + \else + \@df@chckifthispg[\count@]{\@ff@id}% + \if@notthiscol + \def\@ff@nextpages{none}% + \else + \def\@ff@nextpages{\number\count@}% + \fi + \fi + \else + \ifnum\@ff@pages@countreg=\count@\relax + \def\@ff@nextpages{\number\@ff@pages@countreg}% + \else + \@df@chckifthispg[\count@]{\@ff@id}% + \if@notthiscol + \def\@ff@nextpages{\number\@ff@pages@countreg}% + \else + \def\@ff@nextpages{\number\@ff@pages@countreg,\number\count@}% + \fi + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\@ff@id}{\@ff@nextpages}% + }% + }% +} +\newcommand*{\dynamicswitchonnextonly}{% + \@ifstar\@sdynamicswitchonnextonly\@dynamicswitchonnextonly +} +\newcommand{\@sdynamicswitchonnextonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@for\@ff@id:=#1\do{% + \@dynamicframeid{\@ff@id}% + \@df@chckifthispg[\@ff@pages@countreg]{\ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \if@notthiscol + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\ff@id}{\number\count@}% + }% + \else + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\ff@id}% + {\number\@ff@pages@countreg,\number\count@}% + }% + \fi + }% +} +\newcommand{\@dynamicswitchonnextonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@for\@ff@id:=#1\do{% + \@df@chckifthispg[\@ff@pages@countreg]{\@ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \if@notthiscol + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\@ff@id}{\number\count@}% + }% + \else + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\@ff@id}% + {\number\@ff@pages@countreg,\number\count@}% + }% + \fi + }% +} +\newcommand*{\dynamicswitchonnextoddonly}{% + \@ifstar\@sdynamicswitchonnextoddonly\@dynamicswitchonnextoddonly +} +\newcommand{\@sdynamicswitchonnextoddonly}[1]{% + \@for\@ff@id:=#1\do{% + \@dynamicframeid{\@ff@id}% + \@df@chckifthispg[\@ff@pages@countreg]{\ff@id}% + \if@notthiscol + \ifodd\@ff@pages@countreg + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@df@chckifthispg[\count@]{\ff@id}% + \if@notthiscol + \advance\count@ by 1\relax + \edef\@ff@pages{\number\count@}% + \else + \edef\@ff@pages{\number\count@}% + \advance\count@ by 1\relax + \edef\@ff@pages{\@ff@pages,\number\count@}% + \fi + \else + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \edef\@ff@pages{\number\count@}% + \fi + \else + \ifodd\@ff@pages@countreg + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@df@chckifthispg[\count@]{\ff@id}% + \if@notthiscol + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg,\number\count@}% + \else + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg-\number\count@}% + \fi + \else + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg,\number\count@}% + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\ff@id}{\@ff@pages}% + }% + }% +} +\newcommand{\@dynamicswitchonnextoddonly}[1]{% + \@for\@ff@id:=#1\do{% + \@df@chckifthispg[\@ff@pages@countreg]{\@ff@id}% + \if@notthiscol + \ifodd\@ff@pages@countreg + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@df@chckifthispg[\count@]{\@ff@id}% + \if@notthiscol + \advance\count@ by 1\relax + \edef\@ff@pages{\number\count@}% + \else + \edef\@ff@pages{\number\count@}% + \advance\count@ by 1\relax + \edef\@ff@pages{\@ff@pages,\number\count@}% + \fi + \else + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \edef\@ff@pages{\number\count@}% + \fi + \else + \ifodd\@ff@pages@countreg + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@df@chckifthispg[\count@]{\@ff@id}% + \if@notthiscol + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg,\number\count@}% + \else + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg-\number\count@}% + \fi + \else + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg,\number\count@}% + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicsetpagelist{\number\@ff@id}{\@ff@pages}% + }% + }% +} +\newcommand*{\dynamicswitchoffnextonly}{% + \@ifstar\@sdynamicswitchoffnextonly\@dynamicswitchoffnextonly +} +\newcommand{\@sdynamicswitchoffnextonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@for\@ff@id:=#1\do{% + \@dynamicframeid{\@ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicaddexclusion{\number\ff@id}{\number\count@}% + }% + }% +} +\newcommand{\@dynamicswitchoffnextonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@for\@ff@id:=#1\do{% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicaddexclusion{\number\@ff@id}{\number\count@}% + }% + }% +} +\newcommand*{\dynamicswitchoffnextoddonly}{% + \@ifstar\@sdynamicswitchoffnextoddonly\@dynamicswitchoffnextoddonly +} +\newcommand{\@sdynamicswitchoffnextoddonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \ifodd\count@\relax + \else + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \@dynamicframeid{\@ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicaddexclusion{\number\ff@id}{\number\count@}% + }% + }% +} +\newcommand{\@dynamicswitchoffnextoddonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \ifodd\count@\relax + \else + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\dynamicaddexclusion{\number\@ff@id}{\number\count@}% + }% + }% +} +\newcommand*{\staticswitchonnext}{% + \@ifstar\@sstaticswitchonnext\@staticswitchonnext +} +\newcommand{\@sstaticswitchonnext}[1]{% + \@for\@ff@id:=#1\do{% + \@staticframeid{\@ff@id}% + \@sf@chckifthispg[\@ff@pages@countreg]{\ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \if@notthiscol + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\ff@id}{>\number\@ff@pages@countreg}% + }% + \else + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\ff@id}% + {\number\@ff@pages@countreg,>\number\@ff@pages@countreg}% + }% + \fi + }% +} +\newcommand{\@staticswitchonnext}[1]{% + \@for\@ff@id:=#1\do{% + \@sf@chckifthispg[\@ff@pages@countreg]{\@ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \if@notthiscol + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\@ff@id}{>\number\@ff@pages@countreg}% + }% + \else + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\@ff@id}% + {\number\@ff@pages@countreg,>\number\@ff@pages@countreg}% + }% + \fi + }% +} +\newcommand*{\staticswitchonnextodd}{% + \@ifstar\@sstaticswitchonnextodd\@staticswitchonnextodd +} +\newcommand{\@sstaticswitchonnextodd}[1]{% + \count@=\@ff@pages@countreg\relax + \ifodd\count@\relax + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \@staticframeid{\@ff@id}% + \@sf@chckifthispg[\@ff@pages@countreg]{\ff@id}% + \def\@ff@prepages{}% + \if@notthiscol + \else + \def\@ff@prepages{\number\@ff@pages@countreg,}% + \fi + \@sf@chckifthispg[\count@]{\ff@id}% + \ifnum\count@=\@ff@pages@countreg\relax + \else + \if@notthiscol + \else + \edef\@ff@prepages{\@ff@prepages\number\count@,}% + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\ff@id}% + {\@ff@prepages>\number\count@}% + }% + }% +} +\newcommand{\@staticswitchonnextodd}[1]{% + \count@=\@ff@pages@countreg\relax + \ifodd\count@\relax + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \@sf@chckifthispg[\@ff@pages@countreg]{\@ff@id}% + \def\@ff@prepages{}% + \if@notthiscol + \else + \def\@ff@prepages{\number\@ff@pages@countreg,}% + \fi + \@sf@chckifthispg[\count@]{\@ff@id}% + \ifnum\count@=\@ff@pages@countreg\relax + \else + \if@notthiscol + \else + \edef\@ff@prepages{\@ff@prepages\number\count@,}% + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\@ff@id}% + {\@ff@prepages>\number\count@}% + }% + }% +} +\newcommand*{\staticswitchoffnext}{% + \@ifstar\@sstaticswitchoffnext\@staticswitchoffnext +} +\newcommand{\@sstaticswitchoffnext}[1]{% + \@for\@ff@id:=#1\do{% + \@staticframeid{\@ff@id}% + \@sf@chckifthispg[\@ff@pages@countreg]{\ff@id}% + \if@notthiscol + \def\@ff@pages{none}% + \else + \def\@ff@pages{\number\@ff@pages@countreg}% + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\ff@id}{\@ff@pages}% + }% + }% +} +\newcommand{\@staticswitchoffnext}[1]{% + \@for\@ff@id:=#1\do{% + \@sf@chckifthispg[\@ff@pages@countreg]{\@ff@id}% + \if@notthiscol + \def\@ff@pages{none}% + \else + \def\@ff@pages{\number\@ff@pages@countreg}% + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\@ff@id}{\@ff@pages}% + }% + }% +} +\newcommand*{\staticswitchoffnextodd}{% + \@ifstar\@sstaticswitchoffnextodd\@staticswitchoffnextodd +} +\newcommand{\@sstaticswitchoffnextodd}[1]{% + \count@=\@ff@pages@countreg\relax + \ifodd\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \@staticframeid{\@ff@id}% + \@sf@chckifthispg[\@ff@pages@countreg]{\ff@id}% + \if@notthiscol + \ifnum\@ff@pages@countreg=\count@\relax + \def\@ff@nextpages{none}% + \else + \@sf@chckifthispg[\count@]{\ff@id}% + \if@notthiscol + \def\@ff@nextpages{none}% + \else + \def\@ff@nextpages{\number\count@}% + \fi + \fi + \else + \ifnum\@ff@pages@countreg=\count@\relax + \def\@ff@nextpages{\number\@ff@pages@countreg}% + \else + \@sf@chckifthispg[\count@]{\ff@id}% + \if@notthiscol + \def\@ff@nextpages{\number\@ff@pages@countreg}% + \else + \def\@ff@nextpages{\number\@ff@pages@countreg,\number\count@}% + \fi + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\ff@id}{\@ff@nextpages}% + }% + }% +} +\newcommand{\@staticswitchoffnextodd}[1]{% + \count@=\@ff@pages@countreg\relax + \ifodd\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \@sf@chckifthispg[\@ff@pages@countreg]{\@ff@id}% + \if@notthiscol + \ifnum\@ff@pages@countreg=\count@\relax + \def\@ff@nextpages{none}% + \else + \@sf@chckifthispg[\count@]{\@ff@id}% + \if@notthiscol + \def\@ff@nextpages{none}% + \else + \def\@ff@nextpages{\number\count@}% + \fi + \fi + \else + \ifnum\@ff@pages@countreg=\count@\relax + \def\@ff@nextpages{\number\@ff@pages@countreg}% + \else + \@sf@chckifthispg[\count@]{\@ff@id}% + \if@notthiscol + \def\@ff@nextpages{\number\@ff@pages@countreg}% + \else + \def\@ff@nextpages{\number\@ff@pages@countreg,\number\count@}% + \fi + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\@ff@id}{\@ff@nextpages}% + }% + }% +} +\newcommand*{\staticswitchonnextonly}{% + \@ifstar\@sstaticswitchonnextonly\@staticswitchonnextonly +} +\newcommand{\@sstaticswitchonnextonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@for\@ff@id:=#1\do{% + \@staticframeid{\@ff@id}% + \@sf@chckifthispg[\@ff@pages@countreg]{\ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \if@notthiscol + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\ff@id}{\number\count@}% + }% + \else + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\ff@id}% + {\number\@ff@pages@countreg,\number\count@}% + }% + \fi + }% +} +\newcommand{\@staticswitchonnextonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@for\@ff@id:=#1\do{% + \@sf@chckifthispg[\@ff@pages@countreg]{\@ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \if@notthiscol + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\@ff@id}{\number\count@}% + }% + \else + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\@ff@id}% + {\number\@ff@pages@countreg,\number\count@}% + }% + \fi + }% +} +\newcommand*{\staticswitchonnextoddonly}{% + \@ifstar\@sstaticswitchonnextoddonly\@staticswitchonnextoddonly +} +\newcommand{\@sstaticswitchonnextoddonly}[1]{% + \@for\@ff@id:=#1\do{% + \@staticframeid{\@ff@id}% + \@sf@chckifthispg[\@ff@pages@countreg]{\ff@id}% + \if@notthiscol + \ifodd\@ff@pages@countreg + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@sf@chckifthispg[\count@]{\ff@id}% + \if@notthiscol + \advance\count@ by 1\relax + \edef\@ff@pages{\number\count@}% + \else + \edef\@ff@pages{\number\count@}% + \advance\count@ by 1\relax + \edef\@ff@pages{\@ff@pages,\number\count@}% + \fi + \else + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \edef\@ff@pages{\number\count@}% + \fi + \else + \ifodd\@ff@pages@countreg + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@sf@chckifthispg[\count@]{\ff@id}% + \if@notthiscol + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg,\number\count@}% + \else + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg-\number\count@}% + \fi + \else + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg,\number\count@}% + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\ff@id}{\@ff@pages}% + }% + }% +} +\newcommand{\@staticswitchonnextoddonly}[1]{% + \@for\@ff@id:=#1\do{% + \@sf@chckifthispg[\@ff@pages@countreg]{\@ff@id}% + \if@notthiscol + \ifodd\@ff@pages@countreg + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@sf@chckifthispg[\count@]{\@ff@id}% + \if@notthiscol + \advance\count@ by 1\relax + \edef\@ff@pages{\number\count@}% + \else + \edef\@ff@pages{\number\count@}% + \advance\count@ by 1\relax + \edef\@ff@pages{\@ff@pages,\number\count@}% + \fi + \else + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \edef\@ff@pages{\number\count@}% + \fi + \else + \ifodd\@ff@pages@countreg + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@sf@chckifthispg[\count@]{\@ff@id}% + \if@notthiscol + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg,\number\count@}% + \else + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg-\number\count@}% + \fi + \else + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \edef\@ff@pages{\number\@ff@pages@countreg,\number\count@}% + \fi + \fi + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticsetpagelist{\number\@ff@id}{\@ff@pages}% + }% + }% +} +\newcommand*{\staticswitchoffnextonly}{% + \@ifstar\@sstaticswitchoffnextonly\@staticswitchoffnextonly +} +\newcommand{\@sstaticswitchoffnextonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@for\@ff@id:=#1\do{% + \@staticframeid{\@ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticaddexclusion{\number\ff@id}{\number\count@}% + }% + }% +} +\newcommand{\@staticswitchoffnextonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \@for\@ff@id:=#1\do{% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticaddexclusion{\number\@ff@id}{\number\count@}% + }% + }% +} +\newcommand*{\staticswitchoffnextoddonly}{% + \@ifstar\@sstaticswitchoffnextoddonly\@staticswitchoffnextoddonly +} +\newcommand{\@sstaticswitchoffnextoddonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \ifodd\count@\relax + \else + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \@staticframeid{\@ff@id}% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticaddexclusion{\number\ff@id}{\number\count@}% + }% + }% +} +\newcommand{\@staticswitchoffnextoddonly}[1]{% + \count@=\@ff@pages@countreg\relax + \advance\count@ by 1\relax + \ifodd\count@\relax + \else + \advance\count@ by 1\relax + \fi + \@for\@ff@id:=#1\do{% + \expandafter\toks@\expandafter{\@ff@output@adjustframes}% + \xdef\@ff@output@adjustframes{% + \the\toks@ + \noexpand\staticaddexclusion{\number\@ff@id}{\number\count@}% + }% + }% +} +\newcommand*{\ffaddtoadjustframeshook}[1]{% + \@ff@addtolist\@ff@output@adjustframes\entry{#1}% +} \newif\if@notthiscol \newif\if@ff@nwpg \newcount\c@curpg \newcommand*{\@g@tnextcol}[1]{% -\@ff@checkifmoreframes -\if@ff@moreframes -\else -\PackageWarning{flowfram}{Run out of flows frames, -adding new one}% -\@onecolumn -#1=\c@maxflow -\fi -\@notthiscoltrue -\@ff@nwpgfalse -\@colN=#1\relax -\c@curpg=\c@page -\loop -\ifnum\@colN=\c@maxflow - \@colN=1\@ff@nwpgtrue - \advance\c@curpg by 1\relax -\else - \advance\@colN by 1\relax -\fi -\@ff@chckifthispg{\c@curpg}{\@colN}% -\if@notthiscol -\repeat -#1=\@colN + \@ff@output@adjustframes + \global\let\@ff@output@adjustframes\@empty + \@ff@checkifmoreframes + \if@ff@moreframes + \else + \PackageWarning{flowfram}% + {Run out of flows frames on page \number\@ff@pages@countreg, adding new one}% + \flf@doifverbose + {% + \def\flf@messinfo{Here's the list of flow frames:}% + \count@=0\relax + \loop + \advance\count@ by 1\relax + \expandafter\toks@\expandafter{\flf@messinfo\MessageBreak}% + \edef\flf@messinfo{\the\toks@ + \number\count@. + Pages: \csname @ff@pages@\romannumeral\count@\endcsname. + Exclusions: \csname @ff@xpages@\romannumeral\count@\endcsname. + }% + \ifnum\count@<\c@maxflow + \repeat + \PackageInfo{flowfram}{\flf@messinfo\@gobbletwo}% + }% + \@onecolumn + #1=\c@maxflow + \fi + \@notthiscoltrue + \@ff@nwpgfalse + \@colN=#1\relax + \c@curpg=\@ff@pages@countreg + \loop + \ifnum\@colN=\c@maxflow + \@colN=1\relax + \@ff@nwpgtrue + \advance\c@curpg by 1\relax + \else + \advance\@colN by 1\relax + \fi + \@ff@chckifthispg{\c@curpg}{\@colN}% + \if@notthiscol + \repeat + #1=\@colN\relax } \newcommand*{\@ff@chckifthispg}[2]{% -\@notthiscoltrue -\edef\ff@pages{\csname @ff@pages@\romannumeral#2\endcsname}% -\@@ff@chckifthispg{#1}% + \@notthiscolfalse + \edef\ff@xpages{\csname @ff@xpages@\romannumeral#2\endcsname}% + \@for\@ff@pp:=\ff@xpages\do + {% + \ifnum0\@ff@pp=#1\relax + \@notthiscoltrue + \@endfortrue + \fi + }% + \if@notthiscol + \else + \@notthiscoltrue + \edef\ff@pages{\csname @ff@pages@\romannumeral#2\endcsname}% + \@@ff@chckifthispg{#1}% + \fi } \newcommand*{\@@ff@chckifthispg}[1]{% -\ifthenelse{\equal{\ff@pages}{none}}{}{% -\ifthenelse{\equal{\ff@pages}{all}}{\@notthiscolfalse}{% -\ifthenelse{\equal{\ff@pages}{odd}}{% -\ifodd#1\@notthiscolfalse\fi}{% -\ifthenelse{\equal{\ff@pages}{even}}{% -\ifodd#1\else\@notthiscolfalse\fi}{% -\@for\@ff@pp:=\ff@pages\do{% -\def\@ff@numstart{0}\def\@ff@numend{0}% -\@ff@getrange{\@ff@pp}% -\ifthenelse{#1<\@ff@numstart \or #1>\@ff@numend}{}{% -\@notthiscolfalse}% -}% -}}}}% + \ifthenelse{\equal{\ff@pages}{none}}% + {}% + {% + \ifthenelse{\equal{\ff@pages}{all}}% + {% + \@notthiscolfalse + }% + {% + \ifthenelse{\equal{\ff@pages}{odd}}% + {% + \ifodd#1\@notthiscolfalse\fi + }% + {% + \ifthenelse{\equal{\ff@pages}{even}}% + {% + \ifodd#1\else\@notthiscolfalse\fi + }% + {% + \@for\@ff@pp:=\ff@pages\do{% + \def\@ff@numstart{0}% + \def\@ff@numend{0}% + \@ff@getrange{\@ff@pp}% + \ifthenelse{#1<\@ff@numstart \or #1>\@ff@numend}% + {}% + {% + \@notthiscolfalse + }% + }% + }% + }% + }% + }% } -\newcommand*{\@sf@chckifthispg}[1]{% -\@notthiscoltrue -\edef\ff@pages{\csname @sf@pages@\romannumeral#1\endcsname}% -\@@ff@chckifthispg{\c@page}% +\newcommand*{\@sf@chckifthispg}[2][\@ff@pages@countreg]{% + \@notthiscoltrue + \edef\ff@pages{\csname @sf@pages@\romannumeral#2\endcsname}% + \@@ff@chckifthispg{#1}% } -\newcommand*{\@df@chckifthispg}[1]{% -\@notthiscoltrue -\edef\ff@pages{\csname @df@pages@\romannumeral#1\endcsname}% -\@@ff@chckifthispg{\c@page}% +\newcommand*{\@df@chckifthispg}[2][\@ff@pages@countreg]{% + \@notthiscoltrue + \edef\ff@pages{\csname @df@pages@\romannumeral#2\endcsname}% + \@@ff@chckifthispg{#1}% } \newcommand*{\@setcolbox}[1]{% -\expandafter\global\expandafter\setbox -\csname column\romannumeral#1\endcsname\box\@outputbox + \flf@message{Setting contents of box for flow frame \number#1}% + \expandafter\global\expandafter\setbox + \csname column\romannumeral#1\endcsname\box\@outputbox } \newcommand*{\@docolbox}[1]{% -\edef\ff@frametype{% -\csname @ff@frametype@\romannumeral#1\endcsname}% -\edef\ff@col{\csname @ff@col@\romannumeral#1\endcsname}% -\edef\ff@txtcol{\csname @ff@txtcol@\romannumeral#1\endcsname}% -\edef\ff@backcol{\csname @ff@backcol@\romannumeral#1\endcsname}% -\@ff@setoffset{#1}% -\rotateframe{\csname @ff@angle@\romannumeral#1\endcsname}{% -\ifthenelse{\boolean{columnframe\romannumeral#1}}{% -\@ff@fbox{\csname colwidth\romannumeral#1\endcsname}% -{\csname colheight\romannumeral#1\endcsname}{% -\expandafter\box\csname column\romannumeral#1\endcsname}{% -\csname\ff@frametype\endcsname}% -}{% -\@ff@box{\csname colwidth\romannumeral#1\endcsname}% -{\csname colheight\romannumeral#1\endcsname}{% -\expandafter\box\csname column\romannumeral#1\endcsname}% -}}} + \flf@message{Doing flow frame \number#1\space + (page \number\@ff@pages@countreg)}% + \edef\ff@frametype{% + \csname @ff@frametype@\romannumeral#1\endcsname}% + \edef\ff@col{\csname @ff@col@\romannumeral#1\endcsname}% + \edef\ff@txtcol{\csname @ff@txtcol@\romannumeral#1\endcsname}% + \edef\ff@backcol{\csname @ff@backcol@\romannumeral#1\endcsname}% + \@ff@setoffset{#1}% + \rotateframe{\csname @ff@angle@\romannumeral#1\endcsname}% + {% + \ifthenelse{\boolean{columnframe\romannumeral#1}}% + {% + \@ff@fbox + {\csname colwidth\romannumeral#1\endcsname}% + {\csname colheight\romannumeral#1\endcsname}% + {% + \expandafter\box\csname column\romannumeral#1\endcsname + }% + {% + \csname\ff@frametype\endcsname + }% + }% + {% + \@ff@box + {\csname colwidth\romannumeral#1\endcsname}% + {\csname colheight\romannumeral#1\endcsname}% + {% + \expandafter\box\csname column\romannumeral#1\endcsname + }% + }% + }% +} \newcommand*{\@docolbbox}[1]{% -\@ff@setoffset{#1}% -\def\ff@col{}\def\ff@txtcol{}% -\@fr@meifdraft{% -\@ff@box{\csname colwidth\romannumeral#1\endcsname}% -{\csname colheight\romannumeral#1\endcsname}{% -\expandafter\box\csname column\romannumeral#1\endcsname}}% -{F:\number#1;\csname @col@id@\romannumeral#1\endcsname}} -\newcommand{\@ff@fbox}[4]{{% -\fboxsep=\flowframesep\fboxrule=\flowframerule\@s@tffcol -\kern\@ff@offset -#4{\@ff@box{#1}{#2}{#3}}}} -\newcommand{\@ff@box}[3]{{\@ffbackground{\vbox to#2 -{\hb@xt@ #1{\hss{\@s@tfftextcol #3}\hss}\vss\kern\z@}}}} + \@ff@setoffset{#1}% + \def\ff@col{}\def\ff@txtcol{}% + \@fr@meifdraft + {% + \@ff@box + {\csname colwidth\romannumeral#1\endcsname}% + {\csname colheight\romannumeral#1\endcsname}% + {% + \expandafter\box\csname column\romannumeral#1\endcsname + }% + }% + {F:\number#1;\csname @col@id@\romannumeral#1\endcsname}% +} +\newcommand{\@ff@fbox}[4]{% + {% + \fboxsep=\flowframesep + \fboxrule=\flowframerule + \@s@tffcol + \kern\@ff@offset + #4{\@ff@box{#1}{#2}{#3}}% + }% +} +\newcommand{\@ff@box}[3]{% + {% + \@ffbackground + {% + \vbox to#2 {\hb@xt@ #1{\hss{\@s@tfftextcol #3}\hss}\vss\kern\z@}% + }% + }% +} \newcommand*{\@putcolbox}[1]{% -\@ff@chckifthispg{\c@page}{#1}% -\if@notthiscol -\else -\@killglue -\if@twoside -\ifodd\c@page -\expandafter\raise\csname col@\romannumeral#1@posy\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname col@\romannumeral#1@posx\endcsname -\@docolbox{#1}\hss}% -\else -\expandafter\raise\csname col@\romannumeral#1@eveny\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname col@\romannumeral#1@evenx\endcsname -\@docolbox{#1}\hss}% -\fi -\else -\expandafter\raise\csname col@\romannumeral#1@posy\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname col@\romannumeral#1@posx\endcsname -\@docolbox{#1}\hss}% -\fi -\fi + \@ff@chckifthispg{\@ff@pages@countreg}{#1}% + \if@notthiscol + \expandafter\ifvoid\csname column\romannumeral#1\endcsname + \else + \PackageWarning{flowfram}{Box \number#1\space is not void. + Dumping. This page: \number\@ff@pages@countreg. + Page list: "\csname @ff@pages@\romannumeral#1\endcsname". + Exclusion list: "\csname @ff@xpages@\romannumeral#1\endcsname". + (Maybe the page list was changed after this frame was + selected or maybe you should use package option pages=absolute)}% + \@notthiscolfalse + \fi + \fi + \if@notthiscol + \flf@message{Flow frame \number#1\space is not required on page + \number\@ff@pages@countreg}% + \else + \@killglue + \if@twoside + \ifodd\c@page + \expandafter\raise\csname col@\romannumeral#1@posy\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname col@\romannumeral#1@posx\endcsname + \@docolbox{#1}\hss + }% + \else + \expandafter\raise\csname col@\romannumeral#1@eveny\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname col@\romannumeral#1@evenx\endcsname + \@docolbox{#1}\hss + }% + \fi + \else + \expandafter\raise\csname col@\romannumeral#1@posy\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname col@\romannumeral#1@posx\endcsname + \@docolbox{#1}\hss + }% + \fi + \fi } \newcommand*{\@putcolbbox}[1]{% -\@ff@chckifthispg{\c@page}{#1}% -\if@notthiscol -\else -\@killglue -\if@twoside -\ifodd\c@page -\expandafter\raise\csname col@\romannumeral#1@posy\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname col@\romannumeral#1@posx\endcsname -\@docolbbox{#1}\hss}% -\else -\expandafter\raise\csname col@\romannumeral#1@eveny\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname col@\romannumeral#1@evenx\endcsname -\@docolbbox{#1}\hss}% -\fi -\else -\expandafter\raise\csname col@\romannumeral#1@posy\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname col@\romannumeral#1@posx\endcsname -\@docolbbox{#1}\hss}% -\fi -\fi + \@ff@chckifthispg{\@ff@pages@countreg}{#1}% + \if@notthiscol + \else + \@killglue + \if@twoside + \ifodd\c@page + \expandafter\raise\csname col@\romannumeral#1@posy\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname col@\romannumeral#1@posx\endcsname + \@docolbbox{#1}\hss + }% + \else + \expandafter\raise\csname col@\romannumeral#1@eveny\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname col@\romannumeral#1@evenx\endcsname + \@docolbbox{#1}\hss + }% + \fi + \else + \expandafter\raise\csname col@\romannumeral#1@posy\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname col@\romannumeral#1@posx\endcsname + \@docolbbox{#1}\hss + }% + \fi + \fi } \newcommand*{\@ff@s@t@doubleboxoffset}{% -\setlength{\@ff@offset}{-\flowframesep}% -\addtolength{\@ff@offset}{-3.75\flowframerule}% -\addtolength{\@ff@offset}{-.5pt}% + \setlength{\@ff@offset}{-\flowframesep}% + \addtolength{\@ff@offset}{-3.75\flowframerule}% + \addtolength{\@ff@offset}{-.5pt}% } \newcommand*{\@ff@s@t@ovalboxoffset}{% -\@ff@offset=-\fontdimen 8\tenln\relax -\advance\@ff@offset by -\flowframesep\relax + \@ff@offset=-\fontdimen 8\tenln\relax + \advance\@ff@offset by -\flowframesep\relax } \newcommand*{\@ff@s@t@Ovalboxoffset}{% -\@ff@offset=-\fontdimen 8\tenlnw\relax -\advance\@ff@offset by -\flowframesep\relax + \@ff@offset=-\fontdimen 8\tenlnw\relax + \advance\@ff@offset by -\flowframesep\relax } \newcommand*{\@ff@s@t@defaultoffset}{% -\@ff@offset=-\flowframesep\relax -\addtolength{\@ff@offset}{-\flowframerule}% + \@ff@offset=-\flowframesep\relax + \addtolength{\@ff@offset}{-\flowframerule}% } \newcommand*{\@ff@setoffset}[1]{% -\ifthenelse{\equal{\csname @ff@offset@\romannumeral#1\endcsname}% -{compute}}{% -\ifthenelse{\boolean{columnframe\romannumeral#1}}{% -\ifthenelse{% -\equal{\csname @ff@frametype@\romannumeral#1\endcsname}% -{doublebox}}{% -\@ff@s@t@doubleboxoffset -}{% -\ifthenelse{% -\equal{\csname @ff@frametype@\romannumeral#1\endcsname}% -{ovalbox}}{% -\@ff@s@t@ovalboxoffset -}{% -\ifthenelse{% -\equal{\csname @ff@frametype@\romannumeral#1\endcsname}% -{Ovalbox}}{% -\@ff@s@t@Ovalboxoffset}{% -\@ff@s@t@defaultoffset -}}}% -}{}% -}{% -\setlength{\@ff@offset}% -{\csname @ff@offset@\romannumeral#1\endcsname}}% + \ifthenelse + {\equal{\csname @ff@offset@\romannumeral#1\endcsname}{compute}}% + {% + \ifthenelse{\boolean{columnframe\romannumeral#1}}% + {% + \ifthenelse + {% + \equal{\csname @ff@frametype@\romannumeral#1\endcsname}% + {doublebox}% + }% + {% + \@ff@s@t@doubleboxoffset + }% + {% + \ifthenelse + {% + \equal{\csname @ff@frametype@\romannumeral#1\endcsname}% + {ovalbox}% + }% + {% + \@ff@s@t@ovalboxoffset + }% + {% + \ifthenelse + {% + \equal{\csname @ff@frametype@\romannumeral#1\endcsname}% + {Ovalbox}% + }% + {% + \@ff@s@t@Ovalboxoffset + }% + {% + \@ff@s@t@defaultoffset + }% + }% + }% + }% + {}% + }% + {% + \setlength{\@ff@offset}% + {\csname @ff@offset@\romannumeral#1\endcsname}% + }% } \newcommand*{\@sf@setoffset}[1]{% -\ifthenelse{% -\equal{\csname @sf@offset@\romannumeral#1\endcsname}% -{compute}}{% -\ifthenelse{\boolean{staticframe\romannumeral#1}}{% -\ifthenelse{% -\equal{\csname @sf@frametype@\romannumeral#1\endcsname}% -{doublebox}}{% -\@ff@s@t@doubleboxoffset -}{% -\ifthenelse{% -\equal{\csname @sf@frametype@\romannumeral#1\endcsname}% -{ovalbox}}{% -\@ff@s@t@ovalboxoffset -}{% -\ifthenelse{% -\equal{\csname @sf@frametype@\romannumeral#1\endcsname}% -{Ovalbox}}{% -\@ff@s@t@Ovalboxoffset -}{% -\@ff@s@t@defaultoffset -}}}% -}{}% -}{% -\setlength{\@ff@offset}% -{\csname @sf@offset@\romannumeral#1\endcsname}}% + \ifthenelse + {% + \equal{\csname @sf@offset@\romannumeral#1\endcsname}% + {compute}% + }% + {% + \ifthenelse{\boolean{staticframe\romannumeral#1}}% + {% + \ifthenelse + {% + \equal{\csname @sf@frametype@\romannumeral#1\endcsname}% + {doublebox}% + }% + {% + \@ff@s@t@doubleboxoffset + }% + {% + \ifthenelse + {% + \equal{\csname @sf@frametype@\romannumeral#1\endcsname}% + {ovalbox}% + }% + {% + \@ff@s@t@ovalboxoffset + }% + {% + \ifthenelse + {% + \equal{\csname @sf@frametype@\romannumeral#1\endcsname}% + {Ovalbox}% + }% + {% + \@ff@s@t@Ovalboxoffset + }% + {% + \@ff@s@t@defaultoffset + }% + }% + }% + }% + {}% + }% + {% + \setlength{\@ff@offset}% + {\csname @sf@offset@\romannumeral#1\endcsname}% + }% } \newcommand*{\@df@setoffset}[1]{% -\ifthenelse{% -\equal{\csname @df@offset@\romannumeral#1\endcsname}% -{compute}}{% -\setlength{\@ff@offset}{0pt}% -\ifthenelse{\boolean{dynamicframe\romannumeral#1}}{% -\ifthenelse{% -\equal{\csname @df@frametype@\romannumeral#1\endcsname}% -{doublebox}}{% -\@ff@s@t@doubleboxoffset -}{% -\ifthenelse{% -\equal{\csname @df@frametype@\romannumeral#1\endcsname}% -{ovalbox}}{% -\@ff@s@t@ovalboxoffset -}{% -\ifthenelse{% -\equal{\csname @df@frametype@\romannumeral#1\endcsname}% -{Ovalbox}}{% -\@ff@s@t@Ovalboxoffset}{% -\@ff@s@t@defaultoffset -}}}% -}{}% -}{% -\setlength{\@ff@offset}% -{\csname @df@offset@\romannumeral#1\endcsname}}% + \ifthenelse + {% + \equal{\csname @df@offset@\romannumeral#1\endcsname}% + {compute}% + }% + {% + \setlength{\@ff@offset}{0pt}% + \ifthenelse{\boolean{dynamicframe\romannumeral#1}}% + {% + \ifthenelse + {% + \equal{\csname @df@frametype@\romannumeral#1\endcsname}% + {doublebox}% + }% + {% + \@ff@s@t@doubleboxoffset + }% + {% + \ifthenelse + {% + \equal{\csname @df@frametype@\romannumeral#1\endcsname}% + {ovalbox}% + }% + {% + \@ff@s@t@ovalboxoffset + }% + {% + \ifthenelse + {% + \equal{\csname @df@frametype@\romannumeral#1\endcsname}% + {Ovalbox}% + }% + {% + \@ff@s@t@Ovalboxoffset + }% + {% + \@ff@s@t@defaultoffset + }% + }% + }% + }% + {}% + }% + {% + \setlength{\@ff@offset}% + {\csname @df@offset@\romannumeral#1\endcsname}% + }% } \newcommand*{\@putmarginbox}[1]{% -\@ff@chckifthispg{\c@page}{#1}% -\if@notthiscol -\else -\@killglue -\if@twoside -\ifodd\c@page -\edef\ff@x{\csname col@\romannumeral#1@posx\endcsname}% -\edef\ff@y{\csname col@\romannumeral#1@posy\endcsname}% -\else -\edef\ff@x{\csname col@\romannumeral#1@evenx\endcsname}% -\edef\ff@y{\csname col@\romannumeral#1@eveny\endcsname}% -\fi -\else -\edef\ff@x{\csname col@\romannumeral#1@posx\endcsname}% -\edef\ff@y{\csname col@\romannumeral#1@posy\endcsname}% -\fi -\setlength{\@ff@tmp@x}{\ff@x}% -\setlength{\@ff@tmp@y}{\ff@y}% -\@getmarginpos{\csname @ff@margin@\romannumeral#1\endcsname}% -\ifthenelse{\equal{\ff@margin}{left}}{% -\addtolength{\@ff@tmp@x}{-\marginparwidth}% -\addtolength{\@ff@tmp@x}{-\marginparsep}% -\ifthenelse{\boolean{columnframe\romannumeral#1}}{% -}{}% -}{% -\addtolength{\@ff@tmp@x}% -{\csname colwidth\romannumeral#1\endcsname}% -\addtolength{\@ff@tmp@x}{\marginparsep}% -\ifthenelse{\boolean{columnframe\romannumeral#1}}{% -}{}% -}% -\raise\@ff@tmp@y -\hb@xt@\z@{% -\expandafter\kern\@ff@tmp@x -\@fr@meifdraft{\@ff@box{\marginparwidth}% -{\csname colheight\romannumeral#1\endcsname}{}}% -{M:\number#1}\hss}\fi -\ignorespaces} + \@ff@chckifthispg{\@ff@pages@countreg}{#1}% + \if@notthiscol + \else + \@killglue + \if@twoside + \ifodd\c@page + \edef\ff@x{\csname col@\romannumeral#1@posx\endcsname}% + \edef\ff@y{\csname col@\romannumeral#1@posy\endcsname}% + \else + \edef\ff@x{\csname col@\romannumeral#1@evenx\endcsname}% + \edef\ff@y{\csname col@\romannumeral#1@eveny\endcsname}% + \fi + \else + \edef\ff@x{\csname col@\romannumeral#1@posx\endcsname}% + \edef\ff@y{\csname col@\romannumeral#1@posy\endcsname}% + \fi + \setlength{\@ff@tmp@x}{\ff@x}% + \setlength{\@ff@tmp@y}{\ff@y}% + \@getmarginpos{\csname @ff@margin@\romannumeral#1\endcsname}% + \ifthenelse{\equal{\ff@margin}{left}}% + {% + \addtolength{\@ff@tmp@x}{-\marginparwidth}% + \addtolength{\@ff@tmp@x}{-\marginparsep}% + \ifthenelse{\boolean{columnframe\romannumeral#1}}% + {}% + {}% + }% + {% + \addtolength{\@ff@tmp@x}% + {\csname colwidth\romannumeral#1\endcsname}% + \addtolength{\@ff@tmp@x}{\marginparsep}% + \ifthenelse{\boolean{columnframe\romannumeral#1}}% + {}% + {}% + }% + \raise\@ff@tmp@y + \hb@xt@\z@ + {% + \expandafter\kern\@ff@tmp@x + \@fr@meifdraft{\@ff@box{\marginparwidth}% + {\csname colheight\romannumeral#1\endcsname}{}}% + {M:\number#1}\hss + }% + \fi + \ignorespaces +} \newcommand*{\@ff@drawmargins}{% -\@colN=0\relax -\whiledo{\@colN<\c@maxflow}{% -\advance\@colN by 1\relax -\makebox[0pt][l]{\@putmarginbox{\@colN}}% -}% + \@colN=0\relax + \whiledo{\@colN<\c@maxflow}% + {% + \advance\@colN by 1\relax + \makebox[0pt][l]{\@putmarginbox{\@colN}}% + }% +} +\def\@ff@getstaticpos[#1][#2][#3]#4{% + \@ff@tmp@x=#4\relax + \@ff@tmp@y=#2\relax + \def\ff@valign{#3}% } -\def\@ff@getstaticpos[#1][#2][#3]#4{\@ff@tmp@x=#4\relax -\@ff@tmp@y=#2\relax -\def\ff@valign{#3}} \newcommand*{\@dostaticbox}[1]{% -\edef\ff@frametype{% -\csname @sf@frametype@\romannumeral#1\endcsname}% -\edef\ff@col{\csname @sf@col@\romannumeral#1\endcsname}% -\edef\ff@backcol{\csname @sf@backcol@\romannumeral#1\endcsname}% -\@sf@setoffset{#1}% -\expandafter\expandafter\expandafter -\@ff@getstaticpos\csname @sf@dim@\romannumeral#1\endcsname -\rotateframe{\csname @sf@angle@\romannumeral#1\endcsname}{% -\ifthenelse{\boolean{staticframe\romannumeral#1}}{% -\@ff@fbox{\@ff@tmp@x}{\@ff@tmp@y}{% -\expandafter\usebox\csname @staticframe@\romannumeral#1\endcsname} -{\csname\ff@frametype\endcsname}% -}{% -\@ff@box{\@ff@tmp@x}{\@ff@tmp@y}% -{\expandafter\usebox\csname @staticframe@\romannumeral#1\endcsname}% -}}} + \edef\ff@frametype{% + \csname @sf@frametype@\romannumeral#1\endcsname + }% + \edef\ff@col{\csname @sf@col@\romannumeral#1\endcsname}% + \edef\ff@backcol{\csname @sf@backcol@\romannumeral#1\endcsname}% + \@sf@setoffset{#1}% + \expandafter\expandafter\expandafter + \@ff@getstaticpos\csname @sf@dim@\romannumeral#1\endcsname + \rotateframe + {\csname @sf@angle@\romannumeral#1\endcsname}% + {% + \ifthenelse{\boolean{staticframe\romannumeral#1}}% + {% + \@ff@fbox{\@ff@tmp@x}{\@ff@tmp@y}% + {% + \expandafter\usebox\csname @staticframe@\romannumeral#1\endcsname + } + {\csname\ff@frametype\endcsname}% + }% + {% + \@ff@box{\@ff@tmp@x}{\@ff@tmp@y}% + {% + \expandafter\usebox\csname @staticframe@\romannumeral#1\endcsname + }% + }% + }% +} \newcommand*{\@dostaticbbox}[1]{% -\edef\ff@col{}% -\@sf@setoffset{#1}% -\expandafter\expandafter\expandafter -\@ff@getstaticpos\csname @sf@dim@\romannumeral#1\endcsname -\@fr@meifdraft{% -\@ff@box{\@ff@tmp@x}{\@ff@tmp@y}% -{\expandafter\usebox\csname @staticframe@\romannumeral#1\endcsname}% -}{S:\number#1;\csname @sf@id@\romannumeral#1\endcsname}} + \edef\ff@col{}% + \@sf@setoffset{#1}% + \expandafter\expandafter\expandafter + \@ff@getstaticpos\csname @sf@dim@\romannumeral#1\endcsname + \@fr@meifdraft + {% + \@ff@box{\@ff@tmp@x}{\@ff@tmp@y}% + {% + \expandafter\usebox\csname @staticframe@\romannumeral#1\endcsname + }% + }% + {S:\number#1;\csname @sf@id@\romannumeral#1\endcsname}% +} \newcommand*{\@putstaticbox}[1]{% -\@sf@chckifthispg{#1}% -\if@notthiscol\else -\@killglue -\if@twoside -\ifodd\c@page -\expandafter\raise\csname @sf@\romannumeral#1@posy\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname @sf@\romannumeral#1@posx\endcsname -\@dostaticbox{#1}\hss}% -\else -\expandafter\raise\csname @sf@\romannumeral#1@eveny\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname @sf@\romannumeral#1@evenx\endcsname -\@dostaticbox{#1}\hss}% -\fi -\else -\expandafter\raise\csname @sf@\romannumeral#1@posy\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname @sf@\romannumeral#1@posx\endcsname -\@dostaticbox{#1}\hss}% + \@sf@chckifthispg{#1}% + \if@notthiscol + \else + \@killglue + \if@twoside + \ifodd\c@page + \expandafter\raise\csname @sf@\romannumeral#1@posy\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname @sf@\romannumeral#1@posx\endcsname + \@dostaticbox{#1}\hss + }% + \else + \expandafter\raise\csname @sf@\romannumeral#1@eveny\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname @sf@\romannumeral#1@evenx\endcsname + \@dostaticbox{#1}\hss + }% + \fi + \else + \expandafter\raise\csname @sf@\romannumeral#1@posy\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname @sf@\romannumeral#1@posx\endcsname + \@dostaticbox{#1}\hss + }% + \fi \fi -\fi} +} \newcommand*{\@putstaticbbox}[1]{% -\@sf@chckifthispg{#1}% -\if@notthiscol\else -\@killglue -\if@twoside -\ifodd\c@page -\expandafter\raise\csname @sf@\romannumeral#1@posy\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname @sf@\romannumeral#1@posx\endcsname -\@dostaticbbox{#1}\hss}\ignorespaces -\else -\expandafter\raise\csname @sf@\romannumeral#1@eveny\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname @sf@\romannumeral#1@evenx\endcsname -\@dostaticbbox{#1}\hss}\ignorespaces -\fi -\else -\expandafter\raise\csname @sf@\romannumeral#1@posy\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname @sf@\romannumeral#1@posx\endcsname -\@dostaticbbox{#1}\hss}\ignorespaces -\fi -\fi} + \@sf@chckifthispg{#1}% + \if@notthiscol + \else + \@killglue + \if@twoside + \ifodd\c@page + \expandafter\raise\csname @sf@\romannumeral#1@posy\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname @sf@\romannumeral#1@posx\endcsname + \@dostaticbbox{#1}\hss + }% + \ignorespaces + \else + \expandafter\raise\csname @sf@\romannumeral#1@eveny\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname @sf@\romannumeral#1@evenx\endcsname + \@dostaticbbox{#1}\hss + }% + \ignorespaces + \fi + \else + \expandafter\raise\csname @sf@\romannumeral#1@posy\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname @sf@\romannumeral#1@posx\endcsname + \@dostaticbbox{#1}\hss + }% + \ignorespaces + \fi + \fi +} \newcommand*{\@resetst@tics}{% -\@colN=0\relax -\whiledo{\@colN<\c@maxstatic}{\advance\@colN by 1\relax -\ifthenelse{\boolean{@sf@clear@\romannumeral\@colN}}{% -\global\sbox{% -\csname @staticframe@\romannumeral\@colN\endcsname}{}}{}}} + \@colN=0\relax + \whiledo{\@colN<\c@maxstatic}% + {% + \advance\@colN by 1\relax + \ifthenelse{\boolean{@sf@clear@\romannumeral\@colN}}% + {% + \global\sbox + {% + \csname @staticframe@\romannumeral\@colN\endcsname + }% + {}% + }% + {}% + }% +} \newcommand*{\@resetdyn@mics}{% -\@colN=0\relax -\whiledo{\@colN<\c@maxdynamic}{\advance\@colN by 1\relax -\ifthenelse{\boolean{@df@clear@\romannumeral\@colN}}{% -\expandafter\global\expandafter -\gdef\csname @dynamicframe@\romannumeral\@colN\endcsname{}}{}}} + \@colN=0\relax + \whiledo{\@colN<\c@maxdynamic}% + {% + \advance\@colN by 1\relax + \ifthenelse{\boolean{@df@clear@\romannumeral\@colN}}% + {% + \expandafter\global\expandafter + \gdef\csname @dynamicframe@\romannumeral\@colN\endcsname{}% + }% + {}% + }% +} \newcommand*{\@dodfparbox}[1]{% -\expandafter\let\expandafter -\@ff@parshape\csname @df@shape@\romannumeral#1\endcsname -\expandafter\@ff@getshape\@ff@parshape\relax -\ifcase\ff@shape -\expandafter\expandafter\expandafter -\parbox\csname @df@dim@\romannumeral#1\endcsname -{% -\setlength\parindent\sdfparindent -\csname\ff@style\endcsname{\ff@contents}}% -\or -\expandafter\expandafter\expandafter -\parbox\csname @df@dim@\romannumeral#1\endcsname -{% -\setlength\parindent\sdfparindent -\csname\ff@style\endcsname{{% -\let\oldpar=\par -\let\par=\ffpshpar -\@ff@setsecthead -\@ff@parshape -\ff@contents\oldpar}}}% -\or -\expandafter\expandafter\expandafter -\parbox\csname @df@dim@\romannumeral#1\endcsname -{% -\setlength\parindent\sdfparindent -\csname\ff@style\endcsname{{\@ff@disablesec\@ff@parshape -\ff@contents\par}}}% -\fi + \expandafter\let\expandafter + \@ff@parshape\csname @df@shape@\romannumeral#1\endcsname + \expandafter\@ff@getshape\@ff@parshape\relax + \ifcase\ff@shape + \expandafter\expandafter\expandafter + \parbox\csname @df@dim@\romannumeral#1\endcsname + {% + \setlength\parindent\sdfparindent + \csname\ff@style\endcsname{\ff@contents}% + }% + \or + \expandafter\expandafter\expandafter + \parbox\csname @df@dim@\romannumeral#1\endcsname + {% + \setlength\parindent\sdfparindent + \csname\ff@style\endcsname + {{% + \let\oldpar=\par + \let\par=\ffpshpar + \@ff@setsecthead + \@ff@parshape + \ff@contents\oldpar + }}% + }% + \or + \expandafter\expandafter\expandafter + \parbox\csname @df@dim@\romannumeral#1\endcsname + {% + \setlength\parindent\sdfparindent + \csname\ff@style\endcsname + {{% + \@ff@disablesec\@ff@parshape + \ff@contents\par + }}% + }% + \fi } \newcommand*{\@dodynamicbox}[1]{% -\edef\ff@frametype{% -\csname @df@frametype@\romannumeral#1\endcsname}% -\edef\ff@col{\csname @df@col@\romannumeral#1\endcsname}% -\edef\ff@txtcol{\csname @df@txtcol@\romannumeral#1\endcsname}% -\edef\ff@backcol{\csname @df@backcol@\romannumeral#1\endcsname}% -\edef\ff@style{\csname @df@style@\romannumeral#1\endcsname}% -\def\ff@contents{\csname @dynamicframe@\romannumeral#1\endcsname}% -\@df@setoffset{#1}% -\expandafter\expandafter\expandafter -\@ff@getstaticpos\csname @df@dim@\romannumeral#1\endcsname -\rotateframe{\csname @df@angle@\romannumeral#1\endcsname}{% -\ifthenelse{\boolean{dynamicframe\romannumeral#1}}{% -\@ff@fbox{\@ff@tmp@x}{\@ff@tmp@y}% -{\@dodfparbox{#1}}% -{\csname\ff@frametype\endcsname}% -}{% -\@ff@box{\@ff@tmp@x}{\@ff@tmp@y}{% -\@dodfparbox{#1}}% -}}} + \edef\ff@frametype{% + \csname @df@frametype@\romannumeral#1\endcsname + }% + \edef\ff@col{\csname @df@col@\romannumeral#1\endcsname}% + \edef\ff@txtcol{\csname @df@txtcol@\romannumeral#1\endcsname}% + \edef\ff@backcol{\csname @df@backcol@\romannumeral#1\endcsname}% + \edef\ff@style{\csname @df@style@\romannumeral#1\endcsname}% + \def\ff@contents{\csname @dynamicframe@\romannumeral#1\endcsname}% + \@df@setoffset{#1}% + \expandafter\expandafter\expandafter + \@ff@getstaticpos\csname @df@dim@\romannumeral#1\endcsname + \rotateframe{\csname @df@angle@\romannumeral#1\endcsname}% + {% + \ifthenelse{\boolean{dynamicframe\romannumeral#1}}% + {% + \@ff@fbox{\@ff@tmp@x}{\@ff@tmp@y}% + {\@dodfparbox{#1}}% + {\csname\ff@frametype\endcsname}% + }% + {% + \@ff@box{\@ff@tmp@x}{\@ff@tmp@y}% + {% + \@dodfparbox{#1}% + }% + }% + }% +} \newcommand*{\@dodynamicbbox}[1]{% -\edef\ff@col{}% -\@df@setoffset{#1}% -\expandafter\expandafter\expandafter -\@ff@getstaticpos\csname @df@dim@\romannumeral#1\endcsname -\@fr@meifdraft{% -\@ff@box{\@ff@tmp@x}{\@ff@tmp@y}{% -\expandafter\expandafter\expandafter -\parbox\csname @df@dim@\romannumeral#1\endcsname -{}}% -}{D:\number#1;\csname @df@id@\romannumeral#1\endcsname}} + \edef\ff@col{}% + \@df@setoffset{#1}% + \expandafter\expandafter\expandafter + \@ff@getstaticpos\csname @df@dim@\romannumeral#1\endcsname + \@fr@meifdraft + {% + \@ff@box{\@ff@tmp@x}{\@ff@tmp@y}% + {% + \expandafter\expandafter\expandafter + \parbox\csname @df@dim@\romannumeral#1\endcsname + {}% + }% + }% + {D:\number#1;\csname @df@id@\romannumeral#1\endcsname}% +} \newcommand*{\@putdynamicbox}[1]{% -\@df@chckifthispg{#1}% -\if@notthiscol\else -\@killglue -\if@twoside -\ifodd\c@page -\expandafter\raise\csname @df@\romannumeral#1@posy\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname @df@\romannumeral#1@posx\endcsname -\@dodynamicbox{#1}\hss}\ignorespaces -\else -\expandafter\raise\csname @df@\romannumeral#1@eveny\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname @df@\romannumeral#1@evenx\endcsname -\@dodynamicbox{#1}\hss}\ignorespaces -\fi -\else -\expandafter\raise\csname @df@\romannumeral#1@posy\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname @df@\romannumeral#1@posx\endcsname -\@dodynamicbox{#1}\hss}\ignorespaces -\fi -\fi} + \@df@chckifthispg{#1}% + \if@notthiscol + \else + \@killglue + \if@twoside + \ifodd\c@page + \expandafter\raise\csname @df@\romannumeral#1@posy\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname @df@\romannumeral#1@posx\endcsname + \@dodynamicbox{#1}\hss + }% + \ignorespaces + \else + \expandafter\raise\csname @df@\romannumeral#1@eveny\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname @df@\romannumeral#1@evenx\endcsname + \@dodynamicbox{#1}\hss + }% + \ignorespaces + \fi + \else + \expandafter\raise\csname @df@\romannumeral#1@posy\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname @df@\romannumeral#1@posx\endcsname + \@dodynamicbox{#1}\hss + }% + \ignorespaces + \fi + \fi +} \newcommand*{\@putdynamicbbox}[1]{% -\@df@chckifthispg{#1}% -\if@notthiscol\else -\@killglue -\if@twoside -\ifodd\c@page -\expandafter\raise\csname @df@\romannumeral#1@posy\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname @df@\romannumeral#1@posx\endcsname -\@dodynamicbbox{#1}\hss}\ignorespaces -\else -\expandafter\raise\csname @df@\romannumeral#1@eveny\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname @df@\romannumeral#1@evenx\endcsname -\@dodynamicbbox{#1}\hss}\ignorespaces -\fi -\else -\expandafter\raise\csname @df@\romannumeral#1@posy\endcsname -\hb@xt@\z@{% -\expandafter\kern \csname @df@\romannumeral#1@posx\endcsname -\@dodynamicbbox{#1}\hss}\ignorespaces -\fi -\fi} + \@df@chckifthispg{#1}% + \if@notthiscol + \else + \@killglue + \if@twoside + \ifodd\c@page + \expandafter\raise\csname @df@\romannumeral#1@posy\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname @df@\romannumeral#1@posx\endcsname + \@dodynamicbbox{#1}\hss + }% + \ignorespaces + \else + \expandafter\raise\csname @df@\romannumeral#1@eveny\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname @df@\romannumeral#1@evenx\endcsname + \@dodynamicbbox{#1}\hss + }% + \ignorespaces + \fi + \else + \expandafter\raise\csname @df@\romannumeral#1@posy\endcsname + \hb@xt@\z@ + {% + \expandafter\kern \csname @df@\romannumeral#1@posx\endcsname + \@dodynamicbbox{#1}\hss + }% + \ignorespaces + \fi + \fi +} \newcommand*{\@@doheader}{% -\setlength\@ff@tmp@y{\textheight}% -\addtolength{\@ff@tmp@y}{\headsep}% -\def\ff@col{}% -\def\ff@txtcol{}% -\def\ff@backcol{{none}}% -\@ff@box{0pt}{\@ff@tmp@y}{\makebox[0pt][l]{\@dothehead}}% + \setlength\@ff@tmp@y{\textheight}% + \addtolength{\@ff@tmp@y}{\headsep}% + \def\ff@col{}% + \def\ff@txtcol{}% + \def\ff@backcol{{none}}% + \@ff@box{0pt}{\@ff@tmp@y}{\makebox[0pt][l]{\@dothehead}}% } \newcommand*{\@@dofooter}{% -\setlength\@ff@tmp@y{-\footskip}% -\def\ff@col{}% -\def\ff@txtcol{}% -\def\ff@backcol{{none}}% -\@ff@box{0pt}{\@ff@tmp@y}{\makebox[0pt][l]{\@dothefoot}}% -} -\newcommand{\@s@tfr@mes}[1]{{\@picht\textheight -\setbox\@picbox\hb@xt@ \textwidth -\bgroup \hbox \bgroup #1\relax -\egroup -\hss \egroup -\ht\@picbox\@picht \dp\@picbox -\z@ \mbox{\box \@picbox}}} + \setlength\@ff@tmp@y{-\footskip}% + \def\ff@col{}% + \def\ff@txtcol{}% + \def\ff@backcol{{none}}% + \@ff@box{0pt}{\@ff@tmp@y}{\makebox[0pt][l]{\@dothefoot}}% +} +\newcommand{\@s@tfr@mes}[1]{% + {% + \@picht\textheight + \setbox\@picbox\hb@xt@ \textwidth + \bgroup + \hbox + \bgroup + #1\relax + \egroup + \hss + \egroup + \ht\@picbox\@picht + \dp\@picbox\z@ + \mbox{\box\@picbox}% + }% +} \newcommand*{\@ff@doallflowframes}{% -\@colN=0\relax -\whiledo{\@colN<\c@maxflow}{\advance\@colN by 1\relax -\@putcolbox{\@colN}}% + \@colN=0\relax + \whiledo{\@colN<\c@maxflow}% + {% + \advance\@colN by 1\relax + \@putcolbox{\@colN}% + }% } \newcommand*{\@ff@doallflowframesbbox}{% -\@colN=0\relax -\whiledo{\@colN<\c@maxflow}{\advance\@colN by 1\relax -\@putcolbbox{\@colN}}% + \@colN=0\relax + \whiledo{\@colN<\c@maxflow}% + {% + \advance\@colN by 1\relax + \@putcolbbox{\@colN}% + }% } \newcommand*{\@ff@doallstatics}{% -\@colN=0\relax -\whiledo{\@colN<\c@maxstatic}{\advance\@colN by 1\relax -\@putstaticbox{\@colN}}% + \@colN=0\relax + \whiledo{\@colN<\c@maxstatic}% + {% + \advance\@colN by 1\relax + \@putstaticbox{\@colN}% + }% } \newcommand*{\@ff@doallstaticsbbox}{% -\@colN=0\relax -\whiledo{\@colN<\c@maxstatic}{\advance\@colN by 1\relax -\@putstaticbbox{\@colN}}% + \@colN=0\relax + \whiledo{\@colN<\c@maxstatic}% + {% + \advance\@colN by 1\relax + \@putstaticbbox{\@colN}% + }% } \newcommand*{\@ff@doalldynamics}{% -\@colN=0\relax -\whiledo{\@colN<\c@maxdynamic}{\advance\@colN by 1\relax -\@putdynamicbox{\@colN}}% + \@colN=0\relax + \whiledo{\@colN<\c@maxdynamic}% + {% + \advance\@colN by 1\relax + \@putdynamicbox{\@colN}% + }% } \newcommand*{\@ff@doalldynamicsbbox}{% -\@colN=0\relax -\whiledo{\@colN<\c@maxdynamic}{\advance\@colN by 1\relax -\@putdynamicbbox{\@colN}}% + \@colN=0\relax + \whiledo{\@colN<\c@maxdynamic}% + {% + \advance\@colN by 1\relax + \@putdynamicbbox{\@colN}% + }% } \newcommand*{\@ff@dotypeblock}{% -\makebox[0pt][l]{\@fr@meifdraft[\setffdrafttypeblockcolor]{% -\vbox to \textheight{\hbox to \textwidth{}}}{}}} + \makebox[0pt][l]% + {% + \@fr@meifdraft[\setffdrafttypeblockcolor]% + {% + \vbox to \textheight{\hbox to \textwidth{}}% + }% + {}% + }% +} \newlength\ffevenoffset \newcommand*{\@ff@do@allframes}{% -\ffevenoffset=0pt\relax -\if@twoside - \ifodd\c@page - \else - \ffevenoffset=-\oddsidemargin\relax - \advance\ffevenoffset by \evensidemargin\relax - \kern\ffevenoffset\relax + \ffevenoffset=0pt\relax + \if@twoside + \ifodd\c@page + \else + \ffevenoffset=-\oddsidemargin\relax + \advance\ffevenoffset by \evensidemargin\relax + \kern\ffevenoffset\relax + \fi \fi -\fi -\setlength{\@ff@tmp@x}{\textwidth}% -\advance\@ff@tmp@x by -\ffevenoffset\relax -\makebox[\@ff@tmp@x][l]{% -\@s@tfr@mes{% -\@ff@doallstatics -\@@doheader -\@@dofooter -\@ff@doallflowframes -\@ff@doalldynamics -\ifshowtypeblock - \@ff@dotypeblock -\fi -\ifshowframebbox - \@ff@doallstaticsbbox - \@ff@doallflowframesbbox - \@ff@doalldynamicsbbox -\fi -\ifshowmargins - \@ff@drawmargins -\fi -}}} + \setlength{\@ff@tmp@x}{\textwidth}% + \advance\@ff@tmp@x by -\ffevenoffset\relax + \makebox[\@ff@tmp@x][l]% + {% + \@s@tfr@mes + {% + \@ff@doallstatics + \@@doheader + \@@dofooter + \@ff@doallflowframes + \@ff@doalldynamics + \ifshowtypeblock + \@ff@dotypeblock + \fi + \ifshowframebbox + \@ff@doallstaticsbbox + \@ff@doallflowframesbbox + \@ff@doalldynamicsbbox + \fi + \ifshowmargins + \@ff@drawmargins + \fi + }% + }% +} \newcount\@nxtcol \def\@outputdblcol{% -\@nxtcol=\c@thisframe -\c@curpg=\c@page -\@g@tnextcol{\@nxtcol}% -\if@ff@nwpg % next flow frame starts on new page - \global\@firstcolumntrue - \@setcolbox\c@thisframe - \if@specialpage - \global\@specialpagefalse - \@nameuse{ps@\@specialstyle}\relax - \fi - \if@twoside - \ifodd\count\z@ + \@nxtcol=\c@thisframe + \c@curpg=\@ff@pages@countreg + \@g@tnextcol{\@nxtcol}% + \if@ff@nwpg + \global\@firstcolumntrue + \@setcolbox\c@thisframe + \if@specialpage + \global\@specialpagefalse + \@nameuse{ps@\@specialstyle}\relax + \fi + \if@twoside + \ifodd\count\z@ + \let\@thehead\@oddhead + \let\@thefoot\@oddfoot + \else + \let\@thehead\@evenhead + \let\@thefoot\@evenfoot + \fi + \else \let\@thehead\@oddhead \let\@thefoot\@oddfoot - \else - \let\@thehead\@evenhead - \let\@thefoot\@evenfoot \fi + \@begindvi + \@dodynamicthehead\@dodynamicthefoot + \vbadness=\@M + \setbox\@outputbox\vbox{\hbox to \textwidth{\@ff@do@allframes}}% + \@combinedblfloats + \@outputpage + \advance\c@curpg by -\@ff@pages@countreg\relax + \whiledo{\c@curpg>0}% + {% + \advance\c@curpg by -1\relax + \setbox\@outputbox\vbox{\hbox to \textwidth{\@ff@do@allframes}}% + \@outputpage + } + \begingroup + \@dblfloatplacement + \@startdblcolumn + \@whilesw \if@fcolmade \fi + {\@outputpage \@startdblcolumn }% + \endgroup + \@resetst@tics + \@resetdyn@mics \else - \let\@thehead\@oddhead - \let\@thefoot\@oddfoot - \fi - \@begindvi - \@dodynamicthehead\@dodynamicthefoot - \vbadness=\@M - \setbox\@outputbox\vbox{\hbox to \textwidth{\@ff@do@allframes}}% - \@combinedblfloats - \@outputpage -\advance\c@curpg by -\c@page\relax - \whiledo{\c@curpg>0}{\advance\c@curpg by -1\relax - \setbox\@outputbox\vbox{\hbox to \textwidth{\@ff@do@allframes}}% -\@outputpage} - \begingroup - \@dblfloatplacement - \@startdblcolumn - \@whilesw \if@fcolmade \fi - {\@outputpage \@startdblcolumn }\endgroup - \@resetst@tics - \@resetdyn@mics -\else % still on same page, save contents of box255 - \global\@firstcolumnfalse - \@setcolbox\c@thisframe -\fi -\global\c@thisframe=\@nxtcol -\@setcol{\c@thisframe}\relax -\global\@colht\vsize + \global\@firstcolumnfalse + \@setcolbox\c@thisframe + \fi + \global\c@thisframe=\@nxtcol + \@setcol{\c@thisframe}\relax + \global\@colht\vsize } \def\@dblfloatplacement{% \global\@dbltopnum\c@dbltopnumber \global\@dbltoproom\dbltopfraction\@colht\@textmin \@colht\advance\@textmin -\@dbltoproom \@fpmin\dblfloatpagefraction\vsize - \@fptop \@dblfptop \@fpsep \@dblfpsep \@fpbot \@dblfpbot} + \@fptop \@dblfptop \@fpsep \@dblfpsep \@fpbot \@dblfpbot +} \newenvironment{statictable}{\def\@captype{table}}{} \newenvironment{staticfigure}{\def\@captype{figure}}{} \newif\ifffvadjust \ffvadjusttrue \renewcommand*{\onecolumn}{\@onecolumn} \newcommand*{\@onecolumn}[1][all]{% -\@onecolumninarea[#1]{\textwidth}{\textheight}{0pt}{0pt}} + \@onecolumninarea[#1]{\textwidth}{\textheight}{0pt}{0pt}% +} \newlength\columnheight \newcommand*{\onecolumninarea}{\@onecolumninarea} \@onlypreamble{\onecolumninarea} \newcommand*{\@onecolumninarea}[5][all]{% -\setlength{\columnheight}{#3}% -\ifffvadjust\adjustheight{\columnheight}\fi% -\@n@wflowframe[#1]{#2}{\columnheight}{#4}{#5}} + \setlength{\columnheight}{#3}% + \ifffvadjust + \adjustheight{\columnheight}% + \fi + \@n@wflowframe[#1]{#2}{\columnheight}{#4}{#5}% +} \renewcommand*{\twocolumn}{\@twocolumn} \newcommand*{\@twocolumn}[1][all]{% -\@twocolumninarea[#1]{\textwidth}{\textheight}{0pt}{0pt}} + \@twocolumninarea[#1]{\textwidth}{\textheight}{0pt}{0pt}% +} \newcommand*{\twocolumninarea}{\@twocolumninarea} \@onlypreamble{\twocolumninarea} \newcommand*{\@twocolumninarea}[5][all]{% \setlength{\columnheight}{#3}% - \ifffvadjust\adjustheight{\columnheight}\fi% + \ifffvadjust + \adjustheight{\columnheight}% + \fi \setlength{\columnwidth}{#2}% \addtolength{\columnwidth}{-\columnsep}% \divide\columnwidth by 2\relax @@ -3038,27 +5904,36 @@ adding new one}% \fi } \newcommand*{\Ncolumn}[2][all]{% -\Ncolumninarea[#1]{#2}{\textwidth}{\textheight}{0pt}{0pt}} + \Ncolumninarea[#1]{#2}{\textwidth}{\textheight}{0pt}{0pt}% +} \@onlypreamble{\Ncolumn} \newcommand*{\Ncolumninarea}[6][all]{% -\ifnum#2>2\relax - \@Ncolumninarea[#1]{#2}{#3}{#4}{#5}{#6}% -\else - \ifcase#2\relax - \PackageError{flowfram}{% - You have requested 0 flowframes!}{% - It does not make much sense to ask to create 0 flow frames}% - \or - \onecolumninarea[#1]{#3}{#4}{#5}{#6}% - \or - \twocolumninarea[#1]{#3}{#4}{#5}{#6}% + \ifnum#2>2\relax + \@Ncolumninarea[#1]{#2}{#3}{#4}{#5}{#6}% \else - \PackageError{flowfram}{% - Can't create a negative number of flow frames!}{% - You have asked for \number#2 \space flow frames - which really doesn't make sense}% + \ifcase#2\relax + \PackageError{flowfram}% + {% + You have requested 0 flowframes!% + }% + {% + It does not make much sense to ask to create 0 flow frames% + }% + \or + \onecolumninarea[#1]{#3}{#4}{#5}{#6}% + \or + \twocolumninarea[#1]{#3}{#4}{#5}{#6}% + \else + \PackageError{flowfram}% + {% + Can't create a negative number of flow frames!% + }% + {% + You have asked for \number#2 \space flow frames + which really doesn't make sense% + }% + \fi \fi -\fi } \@onlypreamble{\Ncolumninarea} @@ -3093,48 +5968,73 @@ adding new one}% \newlength{\vcolumnsep} \setlength{\vcolumnsep}{\columnsep} \newcommand*{\onecolumntop}[3][all]{% -\onecolumntopinarea[#1]{#2}{#3}{\textwidth}{\textheight}{0pt}{0pt}} + \onecolumntopinarea[#1]{#2}{#3}{\textwidth}{\textheight}{0pt}{0pt}% +} \@onlypreamble{\onecolumntop} \newcommand*{\onecolumnStop}[2][all]{% -\onecolumntopinarea[#1]{static}{#2}{\textwidth}{\textheight}{0pt}{0pt}} + \onecolumntopinarea[#1]{static}{#2}{\textwidth}{\textheight}{0pt}{0pt}% +} \newcommand*{\onecolumnDtop}[2][all]{% -\onecolumntopinarea[#1]{dynamic}{#2}{\textwidth}{\textheight}{0pt}{0pt}} + \onecolumntopinarea[#1]{dynamic}{#2}{\textwidth}{\textheight}{0pt}{0pt}% +} \newcommand*{\newframe}[6][all]{% -\ifthenelse{\equal{#2}{flow}}{% -\@n@wflowframe[#1]{#3}{#4}{#5}{#6}% -}{% -\ifthenelse{\equal{#2}{dynamic}}{% -\@n@wdynamicframe[#1]{#3}{#4}{#5}{#6}}{% -\ifthenelse{\equal{#2}{static}}{% -\@n@wstaticframe[#1]{#3}{#4}{#5}{#6}}{% -\PackageError{flowfram}{Unknown frame type '#2'}{% -Available frame types are: 'flow', 'static' and 'dynamic'}}}}} + \ifthenelse{\equal{#2}{flow}}% + {% + \@n@wflowframe[#1]{#3}{#4}{#5}{#6}% + }% + {% + \ifthenelse{\equal{#2}{dynamic}}% + {% + \@n@wdynamicframe[#1]{#3}{#4}{#5}{#6}% + }% + {% + \ifthenelse{\equal{#2}{static}}% + {% + \@n@wstaticframe[#1]{#3}{#4}{#5}{#6}% + }% + {% + \PackageError{flowfram}% + {Unknown frame type '#2'}% + {% + Available frame types are: 'flow', 'static' and 'dynamic'% + }% + }% + }% + }% +} \newlength\@ff@staticH \newcommand*{\onecolumntopinarea}[7][all]{% -\setlength{\@ff@staticH}{#3}% -\setlength{\@ff@tmp@y}{#5}% -\addtolength{\@ff@tmp@y}{-\@ff@staticH}% -\setlength{\columnheight}{\@ff@tmp@y}% -\addtolength{\columnheight}{-\vcolumnsep}% -\ifffvadjust\adjustheight{\columnheight}\fi% -\addtolength{\@ff@tmp@y}{#7}% -\newframe[#1]{#2}{#4}{\@ff@staticH}{#6}{\@ff@tmp@y}% -\@n@wflowframe[#1]{#4}{\columnheight}{#6}{#7}% + \setlength{\@ff@staticH}{#3}% + \setlength{\@ff@tmp@y}{#5}% + \addtolength{\@ff@tmp@y}{-\@ff@staticH}% + \setlength{\columnheight}{\@ff@tmp@y}% + \addtolength{\columnheight}{-\vcolumnsep}% + \ifffvadjust + \adjustheight{\columnheight}% + \fi + \addtolength{\@ff@tmp@y}{#7}% + \newframe[#1]{#2}{#4}{\@ff@staticH}{#6}{\@ff@tmp@y}% + \@n@wflowframe[#1]{#4}{\columnheight}{#6}{#7}% } \@onlypreamble{\onecolumntopinarea} \newcommand*{\onecolumnStopinarea}[6][all]{% -\onecolumntopinarea[#1]{static}{#2}{#3}{#4}{#5}{#6}} + \onecolumntopinarea[#1]{static}{#2}{#3}{#4}{#5}{#6}% +} \newcommand*{\onecolumnDtopinarea}[6][all]{% -\onecolumntopinarea[#1]{dynamic}{#2}{#3}{#4}{#5}{#6}} + \onecolumntopinarea[#1]{dynamic}{#2}{#3}{#4}{#5}{#6}% +} \newcommand*{\twocolumntop}[3][all]{% -\twocolumntopinarea[#1]{#2}{#3}{\textwidth}{\textheight}{0pt}{0pt}} + \twocolumntopinarea[#1]{#2}{#3}{\textwidth}{\textheight}{0pt}{0pt}% +} \@onlypreamble{\twocolumntop} \newcommand*{\twocolumnStop}[2][all]{% -\@twocolumntopinarea[#1]{static}{#2}{\textwidth}{\textheight}{0pt}{0pt}} + \@twocolumntopinarea[#1]{static}{#2}{\textwidth}{\textheight}{0pt}{0pt}% +} \newcommand*{\twocolumnDtop}[2][all]{% -\twocolumntop[#1]{dynamic}{#2}} + \twocolumntop[#1]{dynamic}{#2}% +} \newcommand*{\twocolumntopinarea}{\@twocolumntopinarea} \newcommand*{\@twocolumntopinarea}[7][all]{% \setlength{\@ff@staticH}{#3}% @@ -3168,35 +6068,48 @@ Available frame types are: 'flow', 'static' and 'dynamic'}}}}} } \@onlypreamble{\twocolumntopinarea} \newcommand*{\twocolumnStopinarea}[6][all]{% -\twocolumntopinarea[#1]{static}{#2}{#3}{#4}{#5}{#6}} + \twocolumntopinarea[#1]{static}{#2}{#3}{#4}{#5}{#6}% +} \newcommand*{\twocolumnDtopinarea}[6][all]{% -\twocolumntopinarea[#1]{dynamic}{#2}{#3}{#4}{#5}{#6}} + \twocolumntopinarea[#1]{dynamic}{#2}{#3}{#4}{#5}{#6}% +} \newcommand*{\Ncolumntop}[4][all]{% -\Ncolumntopinarea[#1]{#2}{#3}{#4}{\textwidth}{\textheight}{0pt}{0pt}} + \Ncolumntopinarea[#1]{#2}{#3}{#4}{\textwidth}{\textheight}{0pt}{0pt}% +} \@onlypreamble{\Ncolumntop} \newcommand*{\NcolumnStop}[3][all]{% -\Ncolumntop[#1]{static}{#2}{#3}} + \Ncolumntop[#1]{static}{#2}{#3}% +} \newcommand*{\NcolumnDtop}[3][all]{% -\Ncolumntop[#1]{dynamic}{#2}{#3}} + \Ncolumntop[#1]{dynamic}{#2}{#3}% +} \newcommand*{\Ncolumntopinarea}[8][all]{% -\ifnum#3>2\relax - \@Ncolumntopinarea[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}% -\else - \ifcase#3\relax - \PackageError{flowfram}{% - You have requested 0 flowframes!}{% - It does not make much sense to ask to create 0 flow frames} - \or - \onecolumntopinarea[#1]{#2}{#4}{#5}{#6}{#7}{#8}% - \or - \twocolumntopinarea[#1]{#2}{#4}{#5}{#6}{#7}{#8}% + \ifnum#3>2\relax + \@Ncolumntopinarea[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}% \else - \PackageError{flowfram}{% - Can't create a negative number of flow frames!}{% - You have asked for \number#3 \space flow frames - which really doesn't make sense}% + \ifcase#3\relax + \PackageError{flowfram}% + {% + You have requested 0 flowframes!% + }% + {% + It does not make much sense to ask to create 0 flow frames% + }% + \or + \onecolumntopinarea[#1]{#2}{#4}{#5}{#6}{#7}{#8}% + \or + \twocolumntopinarea[#1]{#2}{#4}{#5}{#6}{#7}{#8}% + \else + \PackageError{flowfram}% + {% + Can't create a negative number of flow frames!% + }% + {% + You have asked for \number#3 \space flow frames + which really doesn't make sense% + }% + \fi \fi -\fi } \@onlypreamble{\Ncolumntopinarea} \newcommand*{\@Ncolumntopinarea}[8][all]{% @@ -3207,7 +6120,9 @@ Available frame types are: 'flow', 'static' and 'dynamic'}}}}} \addtolength{\@ff@tmp@y}{#8}% \newframe[#1]{#2}{#5}{\@ff@staticH}{#7}{\@ff@tmp@y}% \addtolength{\columnheight}{-\vcolumnsep}% - \ifffvadjust\adjustheight{\columnheight}\fi% + \ifffvadjust + \adjustheight{\columnheight}% + \fi \@colN=#3\relax \advance\@colN by -1\relax \setlength{\columnwidth}{#5}% @@ -3234,22 +6149,29 @@ Available frame types are: 'flow', 'static' and 'dynamic'}}}}} \repeat } \newcommand*{\NcolumnStopinarea}[7][all]{% -\Ncolumntopinarea[#1]{static}{#2}{#3}{#4}{#5}{#6}{#7}} + \Ncolumntopinarea[#1]{static}{#2}{#3}{#4}{#5}{#6}{#7}% +} \newcommand*{\NcolumnDtopinarea}[7][all]{% -\Ncolumntopinarea[#1]{dynamic}{#2}{#3}{#4}{#5}{#6}{#7}} + \Ncolumntopinarea[#1]{dynamic}{#2}{#3}{#4}{#5}{#6}{#7}% +} \newcommand*{\onecolumnbottom}[3][all]{% -\onecolumnbottominarea[#1]{#2}{#3}{\textwidth}{\textheight}{0pt}{0pt}} + \onecolumnbottominarea[#1]{#2}{#3}{\textwidth}{\textheight}{0pt}{0pt}% +} \@onlypreamble{\onecolumnbottom} \newcommand*{\onecolumnSbottom}[2][all]{% -\onecolumnbottom[#1]{static}{#2}} + \onecolumnbottom[#1]{static}{#2}% +} \newcommand*{\onecolumnDbottom}[2][all]{% -\onecolumnbottom[#1]{dynamic}{#2}} + \onecolumnbottom[#1]{dynamic}{#2}% +} \newcommand*{\onecolumnbottominarea}[7][all]{% \setlength{\@ff@staticH}{#3}% \setlength{\columnheight}{#5}% \addtolength{\columnheight}{-\@ff@staticH}% \addtolength{\columnheight}{-\vcolumnsep}% - \ifffvadjust\adjustheight{\columnheight}\fi% + \ifffvadjust + \adjustheight{\columnheight}% + \fi \setlength{\@ff@tmp@y}{#5}% \addtolength{\@ff@tmp@y}{-\columnheight}% \addtolength{\@ff@tmp@y}{#7}% @@ -3258,16 +6180,21 @@ Available frame types are: 'flow', 'static' and 'dynamic'}}}}} } \@onlypreamble{\onecolumnbottominarea} \newcommand*{\onecolumnSbottominarea}[6][all]{% -\onecolumnbottominarea[#1]{static}{#2}{#3}{#4}{#5}{#6}} + \onecolumnbottominarea[#1]{static}{#2}{#3}{#4}{#5}{#6}% +} \newcommand*{\onecolumnDbottominarea}[6][all]{% -\onecolumnbottominarea[#1]{dynamic}{#2}{#3}{#4}{#5}{#6}} + \onecolumnbottominarea[#1]{dynamic}{#2}{#3}{#4}{#5}{#6}% +} \newcommand*{\twocolumnbottom}[3][all]{% -\twocolumnSbottominarea[#1]{#2}{#3}{\textwidth}{\textheight}{0pt}{0pt}} + \twocolumnSbottominarea[#1]{#2}{#3}{\textwidth}{\textheight}{0pt}{0pt}% +} \@onlypreamble{\twocolumnbottom} \newcommand*{\twocolumnSbottom}[2][all]{% -\twocolumnbottom[#1]{static}{#2}} + \twocolumnbottom[#1]{static}{#2}% +} \newcommand*{\twocolumnDbottom}[2][all]{% -\twocolumnbottom[#1]{dynamic}{#2}} + \twocolumnbottom[#1]{dynamic}{#2}% +} \newcommand*{\twocolumnbottominarea}[7][all]{% \setlength{\@ff@staticW}{#4}% \setlength{\@ff@staticH}{#3}% @@ -3304,35 +6231,44 @@ Available frame types are: 'flow', 'static' and 'dynamic'}}}}} } \@onlypreamble{\twocolumnbottominarea} \newcommand*{\twocolumnSbottominarea}[6][all]{% -\twocolumnbottominarea[#1]{static}{#2}{#3}{#4}{#5}{#6}} + \twocolumnbottominarea[#1]{static}{#2}{#3}{#4}{#5}{#6}% +} \newcommand*{\twocolumnDbottominarea}[6][all]{% -\twocolumnbottominarea[#1]{dynamic}{#2}{#3}{#4}{#5}{#6}} + \twocolumnbottominarea[#1]{dynamic}{#2}{#3}{#4}{#5}{#6}% +} \newcommand*{\Ncolumnbottom}[4][all]{% -\Ncolumnbottominarea[#1]{#2}{#3}{#4}{\textwidth}{\textheight}{0pt}{0pt}} + \Ncolumnbottominarea[#1]{#2}{#3}{#4}{\textwidth}{\textheight}{0pt}{0pt}% +} \@onlypreamble{\Ncolumnbottom} \newcommand*{\NcolumnSbottom}[3][all]{% -\Ncolumnbottom[#1]{static}{#2}{#3}} + \Ncolumnbottom[#1]{static}{#2}{#3}% +} \newcommand*{\NcolumnDbottom}[3][all]{% -\Ncolumnbottom[#1]{dynamic}{#2}{#3}} + \Ncolumnbottom[#1]{dynamic}{#2}{#3}% +} \newcommand*{\Ncolumnbottominarea}[8][all]{% -\ifnum#3>2\relax - \@Ncolumnbottominarea[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}% -\else - \ifcase#3\relax - \PackageError{flowfram}{% - You have requested 0 flowframes!}{% - It does not make much sense to ask to create 0 flow frames} - \or - \onecolumnbottominarea[#1]{#2}{#4}{#5}{#6}{#7}{#8}% - \or - \twocolumnbottominarea[#1]{#2}{#4}{#5}{#6}{#7}{#8}% + \ifnum#3>2\relax + \@Ncolumnbottominarea[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}% \else - \PackageError{flowfram}{% - Can't create a negative number of flow frames!}{% - You have asked for \number#3 \space flow frames - which really doesn't make sense}% + \ifcase#3\relax + \PackageError{flowfram}{% + You have requested 0 flowframes!}{% + It does not make much sense to ask to create 0 flow frames} + \or + \onecolumnbottominarea[#1]{#2}{#4}{#5}{#6}{#7}{#8}% + \or + \twocolumnbottominarea[#1]{#2}{#4}{#5}{#6}{#7}{#8}% + \else + \PackageError{flowfram}% + {% + Can't create a negative number of flow frames!% + }% + {% + You have asked for \number#3 \space flow frames + which really doesn't make sense% + }% + \fi \fi -\fi } \@onlypreamble{\Ncolumnbottominarea} \newcommand*{\@NcolumnSbottominarea}[8][all]{% @@ -3340,7 +6276,9 @@ Available frame types are: 'flow', 'static' and 'dynamic'}}}}} \setlength{\columnheight}{#6}% \addtolength{\columnheight}{-\@ff@staticH}% \addtolength{\columnheight}{-\vcolumnsep}% - \ifffvadjust\adjustheight{\columnheight}\fi + \ifffvadjust + \adjustheight{\columnheight}% + \fi \newframe[#1]{#2}{#5}{\@ff@staticH}{#7}{#8}% \setlength{\@ff@tmp@y}{#6}% \addtolength{\@ff@tmp@y}{-\columnheight}% @@ -3372,259 +6310,311 @@ Available frame types are: 'flow', 'static' and 'dynamic'}}}}} \repeat } \newcommand*{\NcolumnSbottominarea}[1][all]{% -\Ncolumnbottominarea[#1]{static}} + \Ncolumnbottominarea[#1]{static}% +} \newcommand*{\NcolumnDbottominarea}[1][all]{% -\Ncolumnbottominarea[#1]{dynamic}} + \Ncolumnbottominarea[#1]{dynamic}% +} \newcount\@ff@adjh \newcommand*{\adjustheight}[1]{% -\@ff@adjh=#1\relax -\divide\@ff@adjh by \baselineskip\relax -#1=\baselineskip\relax -\multiply#1 by \@ff@adjh\relax + \@ff@adjh=#1\relax + \divide\@ff@adjh by \baselineskip\relax + #1=\baselineskip\relax + \multiply#1 by \@ff@adjh\relax } \newcommand*{\adjustcolsep}{% -\multiply\columnsep by 2\relax -\addtolength{\columnsep}{\marginparwidth}} + \multiply\columnsep by 2\relax + \addtolength{\columnsep}{\marginparwidth}% +} \newlength\@ff@staticW \newcommand*{\vtwotone}[1][all]{% -\def\ff@pages{#1}\@vtwotone} + \def\ff@pages{#1}% + \@vtwotone +} \newcommand*{\@vtwotone}[1][0pt]{\@@vtwotonebottom{#1}{\paperheight}} \newcommand*{\@@vtwotonebottom}[8]{% -\computeleftedgeodd{\@ff@tmp@x}% -\if@twoside - \computeleftedgeeven{\@ff@tmp@x@even}% -\else - \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% -\fi -\computebottomedge{\@ff@tmp@y}% -\addtolength{\@ff@tmp@x}{#1}% -\addtolength{\@ff@tmp@x@even}{#1}% -\@nextvband{\ff@pages}{#2}{#3}{#4}{#5}% -\@nextvband{\ff@pages}{#2}{#6}{#7}{#8}% + \computeleftedgeodd{\@ff@tmp@x}% + \if@twoside + \computeleftedgeeven{\@ff@tmp@x@even}% + \else + \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% + \fi + \computebottomedge{\@ff@tmp@y}% + \addtolength{\@ff@tmp@x}{#1}% + \addtolength{\@ff@tmp@x@even}{#1}% + \@nextvband{\ff@pages}{#2}{#3}{#4}{#5}% + \@nextvband{\ff@pages}{#2}{#6}{#7}{#8}% } \@onlypreamble{\vtwotone} \newcommand*{\vtwotonebottom}[1][all]{% -\def\ff@pages{#1}\@vtwotonebottom} + \def\ff@pages{#1}% + \@vtwotonebottom +} \@onlypreamble{\vtwotonebottom} \newcommand*{\@vtwotonebottom}[2][0pt]{\@@vtwotonebottom{#1}{#2}} \newcommand*{\vtwotonetop}[1][all]{% -\def\ff@pages{#1}\@vtwotonetop} + \def\ff@pages{#1}% + \@vtwotonetop +} \newcommand*{\@vtwotonetop}[2][0pt]{\@@vtwotonetop{#1}{#2}} \newcommand*{\@@vtwotonetop}[8]{% -\computeleftedgeodd{\@ff@tmp@x}% -\if@twoside - \computeleftedgeeven{\@ff@tmp@x@even}% -\else - \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% -\fi -\computetopedge{\@ff@tmp@y}% -\addtolength{\@ff@tmp@y}{-#2}% -\addtolength{\@ff@tmp@x}{#1}% -\addtolength{\@ff@tmp@x@even}{#1}% -\@nextvband{\ff@pages}{#2}{#3}{#4}{#5}% -\@nextvband{\ff@pages}{#2}{#6}{#7}{#8}% + \computeleftedgeodd{\@ff@tmp@x}% + \if@twoside + \computeleftedgeeven{\@ff@tmp@x@even}% + \else + \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% + \fi + \computetopedge{\@ff@tmp@y}% + \addtolength{\@ff@tmp@y}{-#2}% + \addtolength{\@ff@tmp@x}{#1}% + \addtolength{\@ff@tmp@x@even}{#1}% + \@nextvband{\ff@pages}{#2}{#3}{#4}{#5}% + \@nextvband{\ff@pages}{#2}{#6}{#7}{#8}% } \newcommand*{\@nextvband}[5]{% -\setlength{\@ff@staticW}{#3}% -\ifthenelse{\equal{#5}{}}{% -\newstaticframe[#1]{\@ff@staticW}{#2}{\@ff@tmp@x}{\@ff@tmp@y}}% -{\newstaticframe[#1]{\@ff@staticW}{#2}{\@ff@tmp@x}{\@ff@tmp@y}[#5]}% -\expandafter\global\expandafter\setlength - \csname @sf@\romannumeral\c@maxstatic @evenx\endcsname{% - \@ff@tmp@x@even}% -\@setframecol#4\end{\c@maxstatic}{backcol}{sf}% -\addtolength{\@ff@tmp@x}{\@ff@staticW}% -\addtolength{\@ff@tmp@x@even}{\@ff@staticW}% + \setlength{\@ff@staticW}{#3}% + \ifthenelse{\equal{#5}{}}% + {% + \newstaticframe[#1]{\@ff@staticW}{#2}{\@ff@tmp@x}{\@ff@tmp@y}% + }% + {% + \newstaticframe[#1]{\@ff@staticW}{#2}{\@ff@tmp@x}{\@ff@tmp@y}[#5]% + }% + \expandafter\global\expandafter\setlength + \csname @sf@\romannumeral\c@maxstatic @evenx\endcsname{% + \@ff@tmp@x@even}% + \@setframecol#4\end{\c@maxstatic}{backcol}{sf}% + \addtolength{\@ff@tmp@x}{\@ff@staticW}% + \addtolength{\@ff@tmp@x@even}{\@ff@staticW}% } \newcount\@thisstrip \newcommand*{\vNtone}[1][all]{% -\def\ff@pages{#1}\@vNtone} + \def\ff@pages{#1}% + \@vNtone +} \newcommand*{\@vNtone}[2][0pt]{% -\@@vNtone{#1}{#2}{\paperheight}} + \@@vNtone{#1}{#2}{\paperheight}% +} \newcommand*{\@@vNtone}[3]{% -\computeleftedgeodd{\@ff@tmp@x}% -\if@twoside - \computeleftedgeeven{\@ff@tmp@x@even}% -\else - \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% -\fi -\computebottomedge{\@ff@tmp@y}% -\addtolength{\@ff@tmp@x}{#1}% -\addtolength{\@ff@tmp@x@even}{#1}% -\@thisstrip=#2\relax -\setlength{\@ff@staticH}{#3}% -\@nextvNband% + \computeleftedgeodd{\@ff@tmp@x}% + \if@twoside + \computeleftedgeeven{\@ff@tmp@x@even}% + \else + \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% + \fi + \computebottomedge{\@ff@tmp@y}% + \addtolength{\@ff@tmp@x}{#1}% + \addtolength{\@ff@tmp@x@even}{#1}% + \@thisstrip=#2\relax + \setlength{\@ff@staticH}{#3}% + \@nextvNband } \newcommand*{\@nextvNband}{% -\ifnum\@thisstrip>0\relax - \let\flf@next\@@nextvNband -\else - \let\flf@next\relax -\fi -\advance\@thisstrip by -1\relax -\flf@next} + \ifnum\@thisstrip>0\relax + \let\flf@next\@@nextvNband + \else + \let\flf@next\relax + \fi + \advance\@thisstrip by -1\relax + \flf@next +} \newcommand*{\@@nextvNband}[3]{% -\@nextvband{\ff@pages}{\@ff@staticH}{#1}{#2}{#3}\@nextvNband} + \@nextvband{\ff@pages}{\@ff@staticH}{#1}{#2}{#3}% + \@nextvNband +} \@onlypreamble{\vNtone} \newcommand*{\vNtonebottom}[1][all]{% -\def\ff@pages{#1}\@vNtonebottom} + \def\ff@pages{#1}% + \@vNtonebottom +} \@onlypreamble{\vNtonebottom} \newcommand*{\@vNtonebottom}[3][0pt]{% -\@@vNtone{#1}{#2}{#3}} + \@@vNtone{#1}{#2}{#3}% +} \newcommand*{\vNtonetop}[1][all]{% -\def\ff@pages{#1}\@vNtonetop} + \def\ff@pages{#1}% + \@vNtonetop +} \@onlypreamble{\vNtonetop} \newcommand*{\@vNtonetop}[3][0pt]{% -\@@vNtonetop{#1}{#2}{#3}} + \@@vNtonetop{#1}{#2}{#3}% +} \newcommand*{\@@vNtonetop}[3]{% -\computeleftedgeodd{\@ff@tmp@x}% -\if@twoside - \computeleftedgeeven{\@ff@tmp@x@even}% -\else - \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% -\fi -\computetopedge{\@ff@tmp@y}% -\addtolength{\@ff@tmp@y}{-#3}% -\addtolength{\@ff@tmp@x}{#1}% -\addtolength{\@ff@tmp@x@even}{#1}% -\@thisstrip=#2\relax -\setlength{\@ff@staticH}{#3}% -\@nextvNband% + \computeleftedgeodd{\@ff@tmp@x}% + \if@twoside + \computeleftedgeeven{\@ff@tmp@x@even}% + \else + \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% + \fi + \computetopedge{\@ff@tmp@y}% + \addtolength{\@ff@tmp@y}{-#3}% + \addtolength{\@ff@tmp@x}{#1}% + \addtolength{\@ff@tmp@x@even}{#1}% + \@thisstrip=#2\relax + \setlength{\@ff@staticH}{#3}% + \@nextvNband% } \newcommand*{\htwotone}[1][all]{% -\def\ff@pages{#1}\@htwotone} + \def\ff@pages{#1}% + \@htwotone +} \newcommand*{\@htwotone}[1][0pt]{\@@htwotoneleft{#1}{\paperwidth}} \newcommand*{\@@htwotoneleft}[8]{% -\computeleftedgeodd{\@ff@tmp@x}% -\if@twoside - \computeleftedgeeven{\@ff@tmp@x@even}% -\else - \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% -\fi -\computebottomedge{\@ff@tmp@y}% -\addtolength{\@ff@tmp@y}{#1}% -\@nexthband{\ff@pages}{#2}{#3}{#4}{#5}% -\@nexthband{\ff@pages}{#2}{#6}{#7}{#8}% + \computeleftedgeodd{\@ff@tmp@x}% + \if@twoside + \computeleftedgeeven{\@ff@tmp@x@even}% + \else + \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% + \fi + \computebottomedge{\@ff@tmp@y}% + \addtolength{\@ff@tmp@y}{#1}% + \@nexthband{\ff@pages}{#2}{#3}{#4}{#5}% + \@nexthband{\ff@pages}{#2}{#6}{#7}{#8}% } \@onlypreamble{\htwotone} \newcommand*{\htwotoneleft}[1][all]{% -\def\ff@pages{#1}\@htwotoneleft} + \def\ff@pages{#1}% + \@htwotoneleft +} \@onlypreamble{\htwotoneleft} \newcommand*{\@htwotoneleft}[2][0pt]{\@@htwotoneleft{#1}{#2}} \newcommand*{\htwotoneright}[1][all]{% -\def\ff@pages{#1}\@htwotoneright} + \def\ff@pages{#1}% + \@htwotoneright +} \@onlypreamble{\htwotoneright} \newcommand*{\@htwotoneright}[2][0pt]{\@@htwotoneright{#1}{#2}} \newcommand*{\@@htwotoneright}[8]{% -\computerightedgeodd{\@ff@tmp@x}% -\if@twoside - \computerightedgeeven{\@ff@tmp@x@even}% -\else - \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% -\fi -\computebottomedge{\@ff@tmp@y}% -\addtolength{\@ff@tmp@y}{#1}% -\addtolength{\@ff@tmp@x}{-#2}% -\addtolength{\@ff@tmp@x@even}{-#2}% -\@nexthband{\ff@pages}{#2}{#3}{#4}{#5}% -\@nexthband{\ff@pages}{#2}{#6}{#7}{#8}% + \computerightedgeodd{\@ff@tmp@x}% + \if@twoside + \computerightedgeeven{\@ff@tmp@x@even}% + \else + \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% + \fi + \computebottomedge{\@ff@tmp@y}% + \addtolength{\@ff@tmp@y}{#1}% + \addtolength{\@ff@tmp@x}{-#2}% + \addtolength{\@ff@tmp@x@even}{-#2}% + \@nexthband{\ff@pages}{#2}{#3}{#4}{#5}% + \@nexthband{\ff@pages}{#2}{#6}{#7}{#8}% } \newcommand*{\hNtone}[1][all]{% -\def\ff@pages{#1}\@hNtone} + \def\ff@pages{#1}% + \@hNtone +} \@onlypreamble{\hNtone} \newcommand*{\@hNtone}[2][0pt]{% -\@@hNtone{#1}{#2}{\paperwidth}} + \@@hNtone{#1}{#2}{\paperwidth}% +} \newcommand*{\@@hNtone}[3]{% -\computeleftedgeodd{\@ff@tmp@x}% -\if@twoside - \computeleftedgeeven{\@ff@tmp@x@even}% -\else - \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% -\fi -\computebottomedge{\@ff@tmp@y}% -\addtolength{\@ff@tmp@y}{#1}% -\@thisstrip=#2\relax -\setlength{\@ff@staticW}{#3}% -\@nexthNband% + \computeleftedgeodd{\@ff@tmp@x}% + \if@twoside + \computeleftedgeeven{\@ff@tmp@x@even}% + \else + \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% + \fi + \computebottomedge{\@ff@tmp@y}% + \addtolength{\@ff@tmp@y}{#1}% + \@thisstrip=#2\relax + \setlength{\@ff@staticW}{#3}% + \@nexthNband } \newcommand*{\hNtoneleft}[1][all]{% -\def\ff@pages{#1}\@hNtoneleft} + \def\ff@pages{#1}% + \@hNtoneleft +} \@onlypreamble{\hNtoneleft} \newcommand*{\@hNtoneleft}[3][0pt]{% -\@@hNtone{#1}{#2}{#3}} + \@@hNtone{#1}{#2}{#3}% +} \newcommand*{\hNtoneright}[1][all]{% -\def\ff@pages{#1}\@hNtoneright} + \def\ff@pages{#1}% + \@hNtoneright +} \@onlypreamble{\hNtoneright} \newcommand*{\@hNtoneright}[3][0pt]{% -\@@hNtoneright{#1}{#2}{#3}} + \@@hNtoneright{#1}{#2}{#3}% +} \newcommand*{\@@hNtoneright}[3]{% -\computerightedgeodd{\@ff@tmp@x}% -\if@twoside - \computerightedgeeven{\@ff@tmp@x@even}% -\else - \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% -\fi -\computebottomedge{\@ff@tmp@y}% -\addtolength{\@ff@tmp@y}{#1}% -\addtolength{\@ff@tmp@x}{-#3}% -\addtolength{\@ff@tmp@x@even}{-#3}% -\@thisstrip=#2\relax -\setlength{\@ff@staticW}{#3}% -\@nexthNband% + \computerightedgeodd{\@ff@tmp@x}% + \if@twoside + \computerightedgeeven{\@ff@tmp@x@even}% + \else + \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% + \fi + \computebottomedge{\@ff@tmp@y}% + \addtolength{\@ff@tmp@y}{#1}% + \addtolength{\@ff@tmp@x}{-#3}% + \addtolength{\@ff@tmp@x@even}{-#3}% + \@thisstrip=#2\relax + \setlength{\@ff@staticW}{#3}% + \@nexthNband } \newcommand*{\@nexthband}[5]{% -\setlength{\@ff@staticH}{#3}% -\ifthenelse{\equal{#5}{}}{% -\newstaticframe[#1]{#2}{\@ff@staticH}{\@ff@tmp@x}{\@ff@tmp@y}}% -{\newstaticframe[#1]{#2}{\@ff@staticH}{\@ff@tmp@x}{\@ff@tmp@y}[#5]}% -\expandafter\global\expandafter -\setlength\csname @sf@\romannumeral\c@maxstatic @evenx\endcsname{% -\@ff@tmp@x@even}% -\@setframecol#4\end{\c@maxstatic}{backcol}{sf}% -\addtolength{\@ff@tmp@y}{\@ff@staticH}% + \setlength{\@ff@staticH}{#3}% + \ifthenelse{\equal{#5}{}}% + {% + \newstaticframe[#1]{#2}{\@ff@staticH}{\@ff@tmp@x}{\@ff@tmp@y}% + }% + {% + \newstaticframe[#1]{#2}{\@ff@staticH}{\@ff@tmp@x}{\@ff@tmp@y}[#5]% + }% + \expandafter\global\expandafter + \setlength\csname @sf@\romannumeral\c@maxstatic @evenx\endcsname + {\@ff@tmp@x@even}% + \@setframecol#4\end{\c@maxstatic}{backcol}{sf}% + \addtolength{\@ff@tmp@y}{\@ff@staticH}% } \newcommand*{\@nexthNband}{% -\ifnum\@thisstrip>0\relax - \let\flf@next\@@nexthNband% -\else - \let\flf@next\relax% -\fi -\advance\@thisstrip by -1\relax -\flf@next} + \ifnum\@thisstrip>0\relax + \let\flf@next\@@nexthNband + \else + \let\flf@next\relax + \fi + \advance\@thisstrip by -1\relax + \flf@next +} \newcommand*{\@@nexthNband}[3]{% -\@nexthband{\ff@pages}{\@ff@staticW}{#1}{#2}{#3}\@nexthNband} + \@nexthband{\ff@pages}{\@ff@staticW}{#1}{#2}{#3}% + \@nexthNband +} \newcommand*{\makebackgroundframe}[1][all]{% -\ifnum\c@maxstatic>0\relax - \PackageWarning{flowfram}{Background frame is not - first static frame to be defined. All previously defined - static frames may be obscured.}% -\fi -\computeleftedgeodd{\@ff@tmp@x}% -\if@twoside - \computeleftedgeeven{\@ff@tmp@x@even}% -\else - \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% -\fi -\computebottomedge{\@ff@tmp@y}% -\newstaticframe[#1]{\paperwidth}{\paperheight}{\@ff@tmp@x}% -{\@ff@tmp@y}% -\expandafter\global\expandafter -\setlength\csname @sf@\romannumeral\c@maxstatic @evenx\endcsname -{\@ff@tmp@x@even}} + \ifnum\c@maxstatic>0\relax + \PackageWarning{flowfram}% + {% + Background frame is not first static frame to be + defined. All previously defined static frames may be + obscured.% + }% + \fi + \computeleftedgeodd{\@ff@tmp@x}% + \if@twoside + \computeleftedgeeven{\@ff@tmp@x@even}% + \else + \setlength{\@ff@tmp@x@even}{\@ff@tmp@x}% + \fi + \computebottomedge{\@ff@tmp@y}% + \newstaticframe[#1]{\paperwidth}{\paperheight}{\@ff@tmp@x}% + {\@ff@tmp@y}% + \expandafter\global\expandafter + \setlength\csname @sf@\romannumeral\c@maxstatic @evenx\endcsname + {\@ff@tmp@x@even}% +} \newlength\ffcolumnseprule \setlength{\ffcolumnseprule}{2pt} \newcommand*{\ffruledeclarations}{} \newcommand*{\insertvrule}{\@ifstar\@sinsertvrule\@insertvrule} \newcommand*{\@insertvrule}[1][0pt]{% -\@ifnextchar[{\@@insertvrule[#1]}{\@@insertvrule[#1][0pt]}} + \@ifnextchar[{\@@insertvrule[#1]}{\@@insertvrule[#1][0pt]}% +} \newlength\@ff@left@x \newlength\@ff@left@y \newlength\@ff@left@evenx @@ -3632,592 +6622,908 @@ Available frame types are: 'flow', 'static' and 'dynamic'}}}}} \newlength\@ff@left@width \newlength\@ff@left@height \def\@@insertvrule[#1][#2]#3#4#5#6{% -\ifthenelse{\equal{#3}{flow}}{% -\def\@ff@type@i{1}}{\ifthenelse{\equal{#3}{static}}{% -\def\@ff@type@i{2}}{\ifthenelse{\equal{#3}{dynamic}}{% -\def\@ff@type@i{3}}{\PackageError{flowfram}{Unknown frame -type '#3'}{Available frame types are: 'flow', 'static' -or 'dynamic'}}}}% -\ifthenelse{\equal{#5}{flow}}{% -\def\@ff@type@ii{1}}{\ifthenelse{\equal{#5}{static}}{% -\def\@ff@type@ii{2}}{\ifthenelse{\equal{#5}{dynamic}}{% -\def\@ff@type@ii{3}}{\PackageError{flowfram}{Unknown frame -type '#5'}{Available frame types are: 'flow', 'static' -or 'dynamic'}}}}% -\@@insert@vrule{#1}{#2}{\@ff@type@i}{#4}{\@ff@type@ii}{#6}% + \ifthenelse{\equal{#3}{flow}}% + {% + \def\@ff@type@i{1}% + }% + {% + \ifthenelse{\equal{#3}{static}}% + {% + \def\@ff@type@i{2}% + }% + {% + \ifthenelse{\equal{#3}{dynamic}}% + {% + \def\@ff@type@i{3}% + }% + {% + \PackageError{flowfram}% + {Unknown frame type '#3'}% + {% + Available frame types are: 'flow', 'static' + or 'dynamic'% + }% + }% + }% + }% + \ifthenelse{\equal{#5}{flow}}% + {% + \def\@ff@type@ii{1}% + }% + {% + \ifthenelse{\equal{#5}{static}}% + {% + \def\@ff@type@ii{2}% + }% + {% + \ifthenelse{\equal{#5}{dynamic}}% + {% + \def\@ff@type@ii{3}% + }% + {% + \PackageError{flowfram}% + {Unknown frame type '#5'}% + {% + Available frame types are: 'flow', 'static' + or 'dynamic'% + }% + }% + }% + }% + \@@insert@vrule{#1}{#2}{\@ff@type@i}{#4}{\@ff@type@ii}{#6}% } \newcommand*{\@@insert@vrule}[6]{% -\@ff@getdim{#3}{#4}% -\setlength{\@ff@left@x}{\ffareax}% -\setlength{\@ff@left@y}{\ffareay}% -\setlength{\@ff@left@width}{\ffareawidth}% -\setlength{\@ff@left@height}{\ffareaheight}% -\@ff@getdim{#5}{#6}% -\ifnum\@ff@left@x>\ffareax\relax - \@ff@swaplen{\@ff@left@x}{\ffareax}% - \@ff@swaplen{\@ff@left@y}{\ffareax}% - \@ff@swaplen{\@ff@left@evenx}{\ffareaevenx}% - \@ff@swaplen{\@ff@left@eveny}{\ffareaevenx}% - \@ff@swaplen{\@ff@left@width}{\ffareawidth}% - \@ff@swaplen{\@ff@left@height}{\ffareaheight}% -\fi -\setlength{\@ff@tmp@x}{\@ff@left@x} -\addtolength{\@ff@tmp@x}{\@ff@left@width}% -\setlength{\@ff@staticW}{\ffareax}% -\addtolength{\@ff@staticW}{-\@ff@tmp@x}% -\setlength{\@ff@staticH}{\@ff@left@y}% -\addtolength{\@ff@staticH}{\@ff@left@height}% -\setlength{\@ff@tmp@y}{\ffareay}% -\addtolength{\@ff@tmp@y}{\ffareaheight}% -\ifnum\@ff@tmp@y>\@ff@staticH - \setlength{\@ff@staticH}{\@ff@tmp@y}% -\fi -\ifnum\@ff@left@y<\ffareay\relax - \setlength{\@ff@tmp@y}{\@ff@left@y}% -\else + \@ff@getdim{#3}{#4}% + \setlength{\@ff@left@x}{\ffareax}% + \setlength{\@ff@left@y}{\ffareay}% + \setlength{\@ff@left@width}{\ffareawidth}% + \setlength{\@ff@left@height}{\ffareaheight}% + \@ff@getdim{#5}{#6}% + \ifnum\@ff@left@x>\ffareax\relax + \@ff@swaplen{\@ff@left@x}{\ffareax}% + \@ff@swaplen{\@ff@left@y}{\ffareax}% + \@ff@swaplen{\@ff@left@evenx}{\ffareaevenx}% + \@ff@swaplen{\@ff@left@eveny}{\ffareaevenx}% + \@ff@swaplen{\@ff@left@width}{\ffareawidth}% + \@ff@swaplen{\@ff@left@height}{\ffareaheight}% + \fi + \setlength{\@ff@tmp@x}{\@ff@left@x} + \addtolength{\@ff@tmp@x}{\@ff@left@width}% + \setlength{\@ff@staticW}{\ffareax}% + \addtolength{\@ff@staticW}{-\@ff@tmp@x}% + \setlength{\@ff@staticH}{\@ff@left@y}% + \addtolength{\@ff@staticH}{\@ff@left@height}% \setlength{\@ff@tmp@y}{\ffareay}% -\fi -\addtolength{\@ff@staticH}{-\@ff@tmp@y}% -\newstaticframe{\@ff@staticW}{\@ff@staticH}% -{\@ff@tmp@x}{\@ff@tmp@y}% -\addtolength{\@ff@staticH}{#1}% -\addtolength{\@ff@staticH}{#2}% -\setstaticcontents{\c@maxstatic}{% -\ffruledeclarations -\ffvrule{#2}{\ffcolumnseprule}{\@ff@staticH}}% -\ifcase#3\relax -\or \edef\@ff@pages{\csname @ff@pages@\romannumeral#4\endcsname}% -\or \edef\@ff@pages{\csname @sf@pages@\romannumeral#4\endcsname}% -\or \edef\@ff@pages{\csname @df@pages@\romannumeral#4\endcsname}% -\fi -\setstaticframe{\c@maxstatic}{pages=\@ff@pages}% -\addtolength{\@ff@tmp@x}{\@ff@left@evenx}% -\addtolength{\@ff@tmp@x}{-\@ff@left@x}% -\addtolength{\@ff@tmp@y}{\@ff@left@eveny}% -\addtolength{\@ff@tmp@y}{-\@ff@left@y}% -\setstaticframe{\c@maxstatic}{evenx=\@ff@tmp@x,eveny=\@ff@tmp@y}% + \addtolength{\@ff@tmp@y}{\ffareaheight}% + \ifnum\@ff@tmp@y>\@ff@staticH + \setlength{\@ff@staticH}{\@ff@tmp@y}% + \fi + \ifnum\@ff@left@y<\ffareay\relax + \setlength{\@ff@tmp@y}{\@ff@left@y}% + \else + \setlength{\@ff@tmp@y}{\ffareay}% + \fi + \addtolength{\@ff@staticH}{-\@ff@tmp@y}% + \newstaticframe{\@ff@staticW}{\@ff@staticH}% + {\@ff@tmp@x}{\@ff@tmp@y}% + \addtolength{\@ff@staticH}{#1}% + \addtolength{\@ff@staticH}{#2}% + \setstaticcontents{\c@maxstatic}{% + \ffruledeclarations + \ffvrule{#2}{\ffcolumnseprule}{\@ff@staticH}}% + \ifcase#3\relax + \or \edef\@ff@pages{\csname @ff@pages@\romannumeral#4\endcsname}% + \or \edef\@ff@pages{\csname @sf@pages@\romannumeral#4\endcsname}% + \or \edef\@ff@pages{\csname @df@pages@\romannumeral#4\endcsname}% + \fi + \setstaticframe{\c@maxstatic}{pages=\@ff@pages}% + \addtolength{\@ff@tmp@x}{\@ff@left@evenx}% + \addtolength{\@ff@tmp@x}{-\@ff@left@x}% + \addtolength{\@ff@tmp@y}{\@ff@left@eveny}% + \addtolength{\@ff@tmp@y}{-\@ff@left@y}% + \setstaticframe{\c@maxstatic}{evenx=\@ff@tmp@x,eveny=\@ff@tmp@y}% } \newcommand*{\ffvrule}[3]{% -\hfill \rule[-#1]{#2}{#3}\hfill\mbox{}} + \hfill \rule[-#1]{#2}{#3}\hfill\mbox{}% +} \newcommand*{\@sinsertvrule}[1][0pt]{% -\@ifnextchar[{\@@sinsertvrule[#1]}{\@@sinsertvrule[#1][0pt]}} + \@ifnextchar[{\@@sinsertvrule[#1]}{\@@sinsertvrule[#1][0pt]}% +} \def\@@sinsertvrule[#1][#2]#3#4#5#6{% -\ifthenelse{\equal{#3}{flow}}{% -\def\@ff@type@i{1}\@flowframeid{#4}\@ff@tmpN=\ff@id}{% -\ifthenelse{\equal{#3}{static}}{% -\def\@ff@type@i{2}\@staticframeid{#4}\@ff@tmpN=\ff@id}{% -\ifthenelse{\equal{#3}{dynamic}}{% -\def\@ff@type@i{3}\@dynamicframeid{#4}\@ff@tmpN=\ff@id}{% -\PackageError{flowfram}{Unknown frame -type '#3'}{Available frame types are: 'flow', 'static' -or 'dynamic'}}}}% -\ifthenelse{\equal{#5}{flow}}{% -\def\@ff@type@ii{1}\@flowframeid{#6}}{% -\ifthenelse{\equal{#5}{static}}{% -\def\@ff@type@ii{2}\@staticframeid{#6}}{% -\ifthenelse{\equal{#5}{dynamic}}{% -\def\@ff@type@ii{3}\@dynamicframeid{#6}}{% -\PackageError{flowfram}{Unknown frame -type '#5'}{Available frame types are: 'flow', 'static' -or 'dynamic'}}}}% -\@@insert@vrule{#1}{#2}{\@ff@type@i}{\@ff@tmpN}% -{\@ff@type@ii}{\ff@id}% + \ifthenelse{\equal{#3}{flow}}% + {% + \def\@ff@type@i{1}% + \@flowframeid{#4}% + \@ff@tmpN=\ff@id + }% + {% + \ifthenelse{\equal{#3}{static}}% + {% + \def\@ff@type@i{2}\@staticframeid{#4}\@ff@tmpN=\ff@id + }% + {% + \ifthenelse{\equal{#3}{dynamic}}% + {% + \def\@ff@type@i{3}% + \@dynamicframeid{#4}% + \@ff@tmpN=\ff@id + }% + {% + \PackageError{flowfram}% + {Unknown frame type '#3'}% + {% + Available frame types are: 'flow', 'static' + or 'dynamic'% + }% + }% + }% + }% + \ifthenelse{\equal{#5}{flow}}% + {% + \def\@ff@type@ii{1}\@flowframeid{#6}% + }% + {% + \ifthenelse{\equal{#5}{static}}% + {% + \def\@ff@type@ii{2}% + \@staticframeid{#6}% + }% + {% + \ifthenelse{\equal{#5}{dynamic}}% + {% + \def\@ff@type@ii{3}% + \@dynamicframeid{#6}% + }% + {% + \PackageError{flowfram}% + {Unknown frame type '#5'}% + {% + Available frame types are: 'flow', 'static' + or 'dynamic'% + }% + }% + }% + }% + \@@insert@vrule{#1}{#2}{\@ff@type@i}{\@ff@tmpN}% + {\@ff@type@ii}{\ff@id}% } \newcommand*{\inserthrule}{\@ifstar\@sinserthrule\@inserthrule} \newcommand*{\@inserthrule}[1][0pt]{% -\@ifnextchar[{\@@inserthrule[#1]}{\@@inserthrule[#1][0pt]}} + \@ifnextchar[{\@@inserthrule[#1]}{\@@inserthrule[#1][0pt]}% +} \def\@@inserthrule[#1][#2]#3#4#5#6{% -\ifthenelse{\equal{#3}{flow}}{% -\def\@ff@type@i{1}}{\ifthenelse{\equal{#3}{static}}{% -\def\@ff@type@i{2}}{\ifthenelse{\equal{#3}{dynamic}}{% -\def\@ff@type@i{3}}{\PackageError{flowfram}{Unknown frame -type '#3'}{Available frame types are: 'flow', 'static' -or 'dynamic'}}}}% -\ifthenelse{\equal{#5}{flow}}{% -\def\@ff@type@ii{1}}{\ifthenelse{\equal{#5}{static}}{% -\def\@ff@type@ii{2}}{\ifthenelse{\equal{#5}{dynamic}}{% -\def\@ff@type@ii{3}}{\PackageError{flowfram}{Unknown frame -type '#5'}{Available frame types are: 'flow', 'static' -or 'dynamic'}}}}% -\@@insert@hrule{#1}{#2}{\@ff@type@i}{#4}{\@ff@type@ii}{#6}% + \ifthenelse{\equal{#3}{flow}}% + {% + \def\@ff@type@i{1}% + }% + {% + \ifthenelse{\equal{#3}{static}}% + {% + \def\@ff@type@i{2}% + }% + {% + \ifthenelse{\equal{#3}{dynamic}}% + {% + \def\@ff@type@i{3}}% + {% + \PackageError{flowfram}% + {Unknown frame type '#3'}% + {% + Available frame types are: 'flow', 'static' + or 'dynamic'% + }% + }% + }% + }% + \ifthenelse{\equal{#5}{flow}}% + {% + \def\@ff@type@ii{1}% + }% + {% + \ifthenelse{\equal{#5}{static}}% + {% + \def\@ff@type@ii{2}% + }% + {% + \ifthenelse{\equal{#5}{dynamic}}% + {% + \def\@ff@type@ii{3}% + }% + {% + \PackageError{flowfram}% + {Unknown frame type '#5'}% + {% + Available frame types are: 'flow', 'static' + or 'dynamic'% + }% + }% + }% + }% + \@@insert@hrule{#1}{#2}{\@ff@type@i}{#4}{\@ff@type@ii}{#6}% } \newcommand*{\@@insert@hrule}[6]{% -\@ff@getdim{#3}{#4}% -\setlength{\@ff@left@x}{\ffareax}% -\setlength{\@ff@left@y}{\ffareay}% -\setlength{\@ff@left@width}{\ffareawidth}% -\setlength{\@ff@left@height}{\ffareaheight}% -\@ff@getdim{#5}{#6}% -\ifnum\@ff@left@y>\ffareay\relax - \@ff@swaplen{\@ff@left@x}{\ffareax}% - \@ff@swaplen{\@ff@left@y}{\ffareay}% - \@ff@swaplen{\@ff@left@width}{\ffareawidth}% - \@ff@swaplen{\@ff@left@height}{\ffareaheight}% -\fi -\setlength{\@ff@tmp@y}{\@ff@left@y}% -\addtolength{\@ff@tmp@y}{\@ff@left@height}% -\setlength{\@ff@staticH}{\ffareay}% -\addtolength{\@ff@staticH}{-\@ff@tmp@y}% -\setlength{\@ff@staticW}{\@ff@left@x}% -\addtolength{\@ff@staticW}{\@ff@left@width}% -\setlength{\@ff@tmp@x}{\ffareax}% -\addtolength{\@ff@tmp@x}{\ffareawidth}% -\ifnum\@ff@tmp@x>\@ff@staticW\relax - \setlength{\@ff@staticW}{\@ff@tmp@x}% -\fi -\ifnum\@ff@left@x<\ffareax\relax - \setlength{\@ff@tmp@x}{\@ff@left@x}% -\else + \@ff@getdim{#3}{#4}% + \setlength{\@ff@left@x}{\ffareax}% + \setlength{\@ff@left@y}{\ffareay}% + \setlength{\@ff@left@width}{\ffareawidth}% + \setlength{\@ff@left@height}{\ffareaheight}% + \@ff@getdim{#5}{#6}% + \ifnum\@ff@left@y>\ffareay\relax + \@ff@swaplen{\@ff@left@x}{\ffareax}% + \@ff@swaplen{\@ff@left@y}{\ffareay}% + \@ff@swaplen{\@ff@left@width}{\ffareawidth}% + \@ff@swaplen{\@ff@left@height}{\ffareaheight}% + \fi + \setlength{\@ff@tmp@y}{\@ff@left@y}% + \addtolength{\@ff@tmp@y}{\@ff@left@height}% + \setlength{\@ff@staticH}{\ffareay}% + \addtolength{\@ff@staticH}{-\@ff@tmp@y}% + \setlength{\@ff@staticW}{\@ff@left@x}% + \addtolength{\@ff@staticW}{\@ff@left@width}% \setlength{\@ff@tmp@x}{\ffareax}% -\fi -\addtolength{\@ff@staticW}{-\@ff@tmp@x}% -\newstaticframe{\@ff@staticW}{\@ff@staticH}% -{\@ff@tmp@x}{\@ff@tmp@y}% -\addtolength{\@ff@staticW}{#1}% -\addtolength{\@ff@staticW}{#2}% -\setstaticcontents{\c@maxstatic}{% -\ffruledeclarations -\ffhrule{#1}{\@ff@staticW}{\ffcolumnseprule}}% -\ifcase#3\relax -\or \edef\@ff@pages{\csname @ff@pages@\romannumeral#4\endcsname}% -\or \edef\@ff@pages{\csname @sf@pages@\romannumeral#4\endcsname}% -\or \edef\@ff@pages{\csname @df@pages@\romannumeral#4\endcsname}% -\fi -\setstaticframe{\c@maxstatic}{pages=\@ff@pages}% -\addtolength{\@ff@tmp@x}{\@ff@left@evenx}% -\addtolength{\@ff@tmp@x}{-\@ff@left@x}% -\addtolength{\@ff@tmp@y}{\@ff@left@eveny}% -\addtolength{\@ff@tmp@y}{-\@ff@left@y}% -\setstaticframe{\c@maxstatic}{evenx=\@ff@tmp@x,eveny=\@ff@tmp@y}% + \addtolength{\@ff@tmp@x}{\ffareawidth}% + \ifnum\@ff@tmp@x>\@ff@staticW\relax + \setlength{\@ff@staticW}{\@ff@tmp@x}% + \fi + \ifnum\@ff@left@x<\ffareax\relax + \setlength{\@ff@tmp@x}{\@ff@left@x}% + \else + \setlength{\@ff@tmp@x}{\ffareax}% + \fi + \addtolength{\@ff@staticW}{-\@ff@tmp@x}% + \newstaticframe{\@ff@staticW}{\@ff@staticH}% + {\@ff@tmp@x}{\@ff@tmp@y}% + \addtolength{\@ff@staticW}{#1}% + \addtolength{\@ff@staticW}{#2}% + \setstaticcontents{\c@maxstatic}% + {% + \ffruledeclarations + \ffhrule{#1}{\@ff@staticW}{\ffcolumnseprule}% + }% + \ifcase#3\relax + \or \edef\@ff@pages{\csname @ff@pages@\romannumeral#4\endcsname}% + \or \edef\@ff@pages{\csname @sf@pages@\romannumeral#4\endcsname}% + \or \edef\@ff@pages{\csname @df@pages@\romannumeral#4\endcsname}% + \fi + \setstaticframe{\c@maxstatic}{pages=\@ff@pages}% + \addtolength{\@ff@tmp@x}{\@ff@left@evenx}% + \addtolength{\@ff@tmp@x}{-\@ff@left@x}% + \addtolength{\@ff@tmp@y}{\@ff@left@eveny}% + \addtolength{\@ff@tmp@y}{-\@ff@left@y}% + \setstaticframe{\c@maxstatic}{evenx=\@ff@tmp@x,eveny=\@ff@tmp@y}% } \newcommand*{\ffhrule}[3]{% -\hspace*{-#1}\rule{#2}{#3}} + \hspace*{-#1}\rule{#2}{#3}% +} \newcommand*{\@sinserthrule}[1][0pt]{% -\@ifnextchar[{\@@sinserthrule[#1]}{\@@sinserthrule[#1][0pt]}} + \@ifnextchar[{\@@sinserthrule[#1]}{\@@sinserthrule[#1][0pt]}% +} \def\@@sinserthrule[#1][#2]#3#4#5#6{% -\ifthenelse{\equal{#3}{flow}}{% -\def\@ff@type@i{1}\@flowframeid{#4}\@ff@tmpN=\ff@id}{% -\ifthenelse{\equal{#3}{static}}{% -\def\@ff@type@i{2}\@staticframeid{#4}\@ff@tmpN=\ff@id}{% -\ifthenelse{\equal{#3}{dynamic}}{% -\def\@ff@type@i{3}\@dynamicframeid{#4}\@ff@tmpN=\ff@id}{% -\PackageError{flowfram}{Unknown frame -type '#3'}{Available frame types are: 'flow', 'static' -or 'dynamic'}}}}% -\ifthenelse{\equal{#5}{flow}}{% -\def\@ff@type@ii{1}\@flowframeid{#6}}{% -\ifthenelse{\equal{#5}{static}}{% -\def\@ff@type@ii{2}\@staticframeid{#6}}{% -\ifthenelse{\equal{#5}{dynamic}}{% -\def\@ff@type@ii{3}\@dynamicframeid{#6}}{% -\PackageError{flowfram}{Unknown frame -type '#5'}{Available frame types are: 'flow', 'static' -or 'dynamic'}}}}% -\@@insert@hrule{#1}{#2}{\@ff@type@i}{\@ff@tmpN}% -{\@ff@type@ii}{\ff@id}% + \ifthenelse{\equal{#3}{flow}}% + {% + \def\@ff@type@i{1}% + \@flowframeid{#4}% + \@ff@tmpN=\ff@id + }% + {% + \ifthenelse{\equal{#3}{static}}% + {% + \def\@ff@type@i{2}% + \@staticframeid{#4}% + \@ff@tmpN=\ff@id + }% + {% + \ifthenelse{\equal{#3}{dynamic}}% + {% + \def\@ff@type@i{3}% + \@dynamicframeid{#4}% + \@ff@tmpN=\ff@id + }% + {% + \PackageError{flowfram}% + {Unknown frame type '#3'}% + {% + Available frame types are: 'flow', 'static' + or 'dynamic'% + }% + }% + }% + }% + \ifthenelse{\equal{#5}{flow}}% + {% + \def\@ff@type@ii{1}% + \@flowframeid{#6}% + }% + {% + \ifthenelse{\equal{#5}{static}}% + {% + \def\@ff@type@ii{2}% + \@staticframeid{#6}% + }% + {% + \ifthenelse{\equal{#5}{dynamic}}% + {% + \def\@ff@type@ii{3}% + \@dynamicframeid{#6}% + }% + {% + \PackageError{flowfram}% + {Unknown frame type '#5'}% + {% + Available frame types are: 'flow', 'static' + or 'dynamic'% + }% + }% + }% + }% + \@@insert@hrule{#1}{#2}{\@ff@type@i}{\@ff@tmpN}% + {\@ff@type@ii}{\ff@id}% } \newcommand*{\dfchaphead}{% -\@ifstar\@sdynamicchap\@dynamicchap} + \@ifstar\@sdynamicchap\@dynamicchap +} \newcommand{\DFchapterstyle}[1]{#1} \newcommand{\DFschapterstyle}[1]{#1} \newcommand{\@dynamicchap}[1]{% -\@ifundefined{chapter}{\PackageError{flowfram}{Chapters aren't -defined}{The document -class you are using does not define chapters}}{% -\let\@ff@OLDmakechapterhead\@makechapterhead -\let\@ff@OLDmakeschapterhead\@makeschapterhead -\renewcommand{\DFchapterstyle}[1]{\@ff@OLDmakechapterhead{##1}}% -\renewcommand{\DFschapterstyle}[1]{\@ff@OLDmakeschapterhead{##1}}% -\xdef\@makechapterhead##1{% -\noexpand\@setdynamiccontents{\number#1}{% -\noexpand\DFchapterstyle{##1}}}% -\xdef\@makeschapterhead##1{% -\noexpand\@setdynamiccontents{\number#1}{% -\noexpand\DFschapterstyle{##1}}}% -}} + \@ifundefined{chapter}% + {% + \PackageError{flowfram}% + {Chapters aren't defined}% + {% + The document class you are using does not + define chapters% + }% + }% + {% + \let\@ff@OLDmakechapterhead\@makechapterhead + \let\@ff@OLDmakeschapterhead\@makeschapterhead + \renewcommand{\DFchapterstyle}[1]{\@ff@OLDmakechapterhead{##1}}% + \renewcommand{\DFschapterstyle}[1]{\@ff@OLDmakeschapterhead{##1}}% + \xdef\@makechapterhead##1{% + \noexpand\@setdynamiccontents{\number#1}% + {% + \noexpand\DFchapterstyle{##1}% + }% + }% + \xdef\@makeschapterhead##1{% + \noexpand\@setdynamiccontents{\number#1}% + {% + \noexpand\DFschapterstyle{##1}% + }% + }% + }% +} \newcommand{\@sdynamicchap}[1]{% -\@dynamicframeid{#1}\@dynamicchap{\ff@id}} + \@dynamicframeid{#1}% + \@dynamicchap{\ff@id}% +} \newcounter{maxthumbtabs} -\@ifundefined{chapter}{% -\newcommand*{\defaultthumbtabtype}{section}}{ -\newcommand*{\defaultthumbtabtype}{chapter} +\@ifundefined{chapter}% +{% + \newcommand*{\defaultthumbtabtype}{section}% +}% +{% + \newcommand*{\defaultthumbtabtype}{chapter}% } \newcommand*{\@ttb@type}{\defaultthumbtabtype} \newcommand*{\makethumbtabs}[2][0pt]{% -\@ifnextchar[{\@makethumbtabs[#1]{#2}}{% -\@makethumbtabs[#1]{#2}[\defaultthumbtabtype]}% + \@ifnextchar[% + {\@makethumbtabs[#1]{#2}}% + {% + \@makethumbtabs[#1]{#2}[\defaultthumbtabtype]% + }% } \def\@makethumbtabs[#1]#2[#3]{% -\@ifundefined{#3}{\PackageError{flowfram}{% -Unknown section type '#3'}{}}{% -\renewcommand{\@ttb@type}{#3}% -\ifthenelse{\equal{#3}{chapter}}{\@makethumbchapter}{% -\ifthenelse{\equal{#3}{part}}{\@makethumbpart}{% -\@makethumbsection{#3}}}} -\@starttoc{ttb}% -\@dothumbtabs{#1}{#2}% -} -\newcommand{\@makethumbchapter}{ -\let\@ttb@old@chapter\@chapter -\def\@chapter[##1]##2{% -\@ttb@old@chapter[##1]{##2}% -\addtocontents{ttb}{\protect\thumbtab - {\thepage}{\thechapter}{##1}{chapter.\thechapter}}% -\@afterheading -}} -\newcommand{\@makethumbpart}{ -\let\@ttb@old@part\@part -\@ifundefined{@endpart}{% -\def\@part[##1]##2{\@ttb@old@part[##1]{##2}% -\addtocontents{ttb}{\protect\thumbtab - {\thepage}{\thepart}{##1}{part.\thepage}}% -\@afterheading}}{% -\let\@ttb@old@endpart\@endpart -\def\@part[##1]##2{% -\def\@parttitle{##1}% -\@ttb@old@part[##1]{##2}% -}% -\def\@endpart{% -\addtocontents{ttb}{% -\protect\thumbtab{\thepage}% -{\thepart}{\@parttitle}{part.\thepage}}% -\@ttb@old@endpart -}}} + \@ifundefined{#3}% + {% + \PackageError{flowfram}% + {% + Unknown section type '#3'% + }% + {}% + }% + {% + \renewcommand{\@ttb@type}{#3}% + \ifthenelse{\equal{#3}{chapter}}% + {% + \@makethumbchapter + }% + {% + \ifthenelse{\equal{#3}{part}}% + {\@makethumbpart}% + {% + \@makethumbsection{#3}% + }% + }% + }% + \@starttoc{ttb}% + \@dothumbtabs{#1}{#2}% +} +\newcommand{\@makethumbchapter}{% + \let\@ttb@old@chapter\@chapter + \def\@chapter[##1]##2{% + \@ttb@old@chapter[##1]{##2}% + \addtocontents{ttb}{\protect\thumbtab + {\thepage}{\thechapter}{##1}{chapter.\thechapter}}% + \@afterheading + }% +} +\newcommand{\@makethumbpart}{% + \let\@ttb@old@part\@part + \@ifundefined{@endpart}% + {% + \def\@part[##1]##2{% + \@ttb@old@part[##1]{##2}% + \addtocontents{ttb}{\protect\thumbtab + {\thepage}{\thepart}{##1}{part.\thepage}}% + \@afterheading + }% + }% + {% + \let\@ttb@old@endpart\@endpart + \def\@part[##1]##2{% + \def\@parttitle{##1}% + \@ttb@old@part[##1]{##2}% + }% + \def\@endpart{% + \addtocontents{ttb}% + {% + \protect\thumbtab{\thepage}% + {\thepart}{\@parttitle}{part.\thepage}% + }% + \@ttb@old@endpart + }% + }% +} \newcommand*{\@makethumbsection}[1]{% -\let\@ttb@old@sect=\@sect -\def\@sect##1##2##3##4##5##6[##7]##8{% -\@ttb@old@sect{##1}{##2}{##3}{##4}{##5}{##6}[##7]{##8}% -\ifthenelse{\equal{##1}{#1}}{% -\addtocontents{ttb}{% -\protect\thumbtab{\thepage}{\csname the#1\endcsname}% -{##7}{#1.\csname the#1\endcsname}}% -\@afterheading}{}% -}} + \let\@ttb@old@sect=\@sect + \def\@sect##1##2##3##4##5##6[##7]##8{% + \@ttb@old@sect{##1}{##2}{##3}{##4}{##5}{##6}[##7]{##8}% + \ifthenelse{\equal{##1}{#1}}% + {% + \addtocontents{ttb}% + {% + \protect\thumbtab{\thepage}{\csname the#1\endcsname}% + {##7}{#1.\csname the#1\endcsname}% + }% + \@afterheading + }% + {}% + }% +} \newcommand{\thumbtab}[4]{% -\stepcounter{maxthumbtabs}% -\expandafter -\gdef\csname thumbtab@pages@\romannumeral\c@maxthumbtabs\endcsname -{#1}% -\expandafter -\gdef\csname thumbtab@num@\romannumeral\c@maxthumbtabs\endcsname -{#2}% -\expandafter -\gdef\csname thumbtab@title@\romannumeral\c@maxthumbtabs\endcsname -{#3}% -\expandafter -\gdef\csname thumbtab@link@\romannumeral\c@maxthumbtabs\endcsname -{#4}} + \stepcounter{maxthumbtabs}% + \expandafter + \gdef\csname thumbtab@pages@\romannumeral\c@maxthumbtabs\endcsname{#1}% + \expandafter + \gdef\csname thumbtab@num@\romannumeral\c@maxthumbtabs\endcsname{#2}% + \expandafter + \gdef\csname thumbtab@title@\romannumeral\c@maxthumbtabs\endcsname{#3}% + \expandafter + \gdef\csname thumbtab@link@\romannumeral\c@maxthumbtabs\endcsname{#4}% +} \newcommand*{\@dothumbtabs}[2]{% -\@colN=0\relax -\whiledo{\@colN<\c@maxthumbtabs}{% - \advance\@colN by 1\relax - \edef\ff@pages{% - \csname thumbtab@pages@\romannumeral\@colN\endcsname}% - \ifnum\@colN=\c@maxthumbtabs - \expandafter - \xdef\csname thumbtab@pages@\romannumeral\@colN\endcsname{% - \ff@pages,>\ff@pages}% - \else + \@colN=0\relax + \whiledo{\@colN<\c@maxthumbtabs}% + {% \advance\@colN by 1\relax - \edef\ff@endpage{% + \edef\ff@pages{% \csname thumbtab@pages@\romannumeral\@colN\endcsname}% - \advance\@colN by -1\relax - \@ff@tmpN=\ff@endpage\relax - \advance\@ff@tmpN by -1\relax - \ifnum\@ff@tmpN>\ff@pages + \ifnum\@colN=\c@maxthumbtabs \expandafter \xdef\csname thumbtab@pages@\romannumeral\@colN\endcsname{% - \ff@pages-\number\@ff@tmpN}% + \ff@pages,>\ff@pages}% + \else + \advance\@colN by 1\relax + \edef\ff@endpage{% + \csname thumbtab@pages@\romannumeral\@colN\endcsname}% + \advance\@colN by -1\relax + \@ff@tmpN=\ff@endpage\relax + \advance\@ff@tmpN by -1\relax + \ifnum\@ff@tmpN>\ff@pages + \expandafter + \xdef\csname thumbtab@pages@\romannumeral\@colN\endcsname{% + \ff@pages-\number\@ff@tmpN}% + \fi \fi - \fi -}% -\@@dothumbtabs{#1}{#2}% + }% + \@@dothumbtabs{#1}{#2}% } \newlength{\thumbtabwidth} \setlength{\thumbtabwidth}{1cm} -\@ifundefined{hyperlink}{% -\newcommand{\thumbtabindexformat}[3]{% -\thumbtabformat{#2}{#3}}}{% -\newcommand{\thumbtabindexformat}[3]{% -\hyperlink{#1}{\thumbtabformat{#2}{#3}}} +\@ifundefined{hyperlink}% +{% + \newcommand{\thumbtabindexformat}[3]{% + \thumbtabformat{#2}{#3}% + }% +}% +{% + \newcommand{\thumbtabindexformat}[3]{% + \hyperlink{#1}{\thumbtabformat{#2}{#3}}% + }% } \newcommand{\thumbtabformat}[2]{% -\if@ttb@rotate -\rotatebox{-90}{\parbox[c][\thumbtabwidth]{#2}{% -\centering#1}}% -\else -\parbox[c][#2]{\thumbtabwidth}{% -\centering\@ttb@stack{#1}}% -\fi} + \if@ttb@rotate + \rotatebox{-90}% + {% + \parbox[c][\thumbtabwidth]{#2}{% + \centering#1% + }% + }% + \else + \parbox[c][#2]{\thumbtabwidth}{% + \centering\@ttb@stack{#1}% + }% + \fi +} \def\@flf@subsp#1 #2{% -\expandafter\flf@ta\expandafter{\@flf@subsptext}% -\flf@tb{#1}% -\edef\@flf@subsptext{\the\flf@ta\the\flf@tb}% -\def\@flf@tmp{#2}% -\ifx\@flf@tmp\@nnil - \let\@flf@donextsubsp=\@gobble -\else \expandafter\flf@ta\expandafter{\@flf@subsptext}% - \edef\@flf@subsptext{\the\flf@ta\noexpand\space}% - \let\@flf@donextsubsp=\@flf@subsp -\fi -\@flf@donextsubsp{#2}% + \flf@tb{#1}% + \edef\@flf@subsptext{\the\flf@ta\the\flf@tb}% + \def\@flf@tmp{#2}% + \ifx\@flf@tmp\@nnil + \let\@flf@donextsubsp=\@gobble + \else + \expandafter\flf@ta\expandafter{\@flf@subsptext}% + \edef\@flf@subsptext{\the\flf@ta\noexpand\space}% + \let\@flf@donextsubsp=\@flf@subsp + \fi + \@flf@donextsubsp{#2}% } \newcommand{\@ttb@stack}[1]{% -\def\@flf@subsptext{}% -\expandafter\@flf@subsp#1 \@nil\relax -\begin{tabular}{l}% -\expandafter\@@ttb@stack\@flf@subsptext\@nil\relax -\end{tabular}} + \def\@flf@subsptext{}% + \expandafter\@flf@subsp#1 \@nil\relax + \begin{tabular}{l}% + \expandafter\@@ttb@stack\@flf@subsptext\@nil\relax + \end{tabular}% +} \def\@@ttb@stack#1#2{% -\def\@flf@tmp{#1}% -\ifx\@flf@tmp\@nnil - \let\flf@next\relax -\else - #1\\% - \def\@flf@tmp{#2}% - \ifx\@nnil#2\relax - \let\flf@next\@gobble + \def\@flf@tmp{#1}% + \ifx\@flf@tmp\@nnil + \let\flf@next\relax \else - \let\flf@next\@@ttb@stack + #1\\% + \def\@flf@tmp{#2}% + \ifx\@nnil#2\relax + \let\flf@next\@gobble + \else + \let\flf@next\@@ttb@stack + \fi \fi -\fi -\flf@next{#2}} + \flf@next{#2}% +} \newcount\@greyscale \newcommand{\@@dothumbtabs}[2]{% -\setlength{\@ff@tmp@y}{\textheight}% -\addtolength{\@ff@tmp@y}{-#2}% -\addtolength{\@ff@tmp@y}{-#1}% -\computerightedgeodd{\@ff@tmp@x}% -\addtolength{\@ff@tmp@x}{-\thumbtabwidth}% -\computeleftedgeeven{\@ff@tmp@x@even}% -\@ff@tmpN=0\relax -\whiledo{\@ff@tmpN<\c@maxthumbtabs}{% - \advance\@ff@tmpN by 1\relax - \@greyscale=\@ff@tmpN\relax - \multiply\@greyscale by 60\relax - \divide\@greyscale by \c@maxthumbtabs - \advance\@greyscale by 25\relax - \edef\@ff@greyscale{0.\number\@greyscale}% - \newdynamicframe[none]{\thumbtabwidth}{#2}% - {\@ff@tmp@x}{\@ff@tmp@y}[thumbtab\number\@ff@tmpN]% - \expandafter\global\expandafter - \setlength\csname @df@\romannumeral\c@maxdynamic @evenx\endcsname - {\@ff@tmp@x@even}% - \ifthenelse{\boolean{@ttb@title}\and\boolean{@ttb@num}}{% - \expandafter - \xdef\csname @dynamicframe@\romannumeral\c@maxdynamic\endcsname{% - \noexpand\thumbtabformat{% - \csname thumbtab@num@\romannumeral\@ff@tmpN\endcsname\ - \csname thumbtab@title@\romannumeral\@ff@tmpN\endcsname - }{#2}}% - }{% - \if@ttb@title - \expandafter - \xdef\csname @dynamicframe@\romannumeral\c@maxdynamic\endcsname{% - \noexpand\thumbtabformat{% - \csname thumbtab@title@\romannumeral\@ff@tmpN\endcsname - }{#2}}% - \fi - \if@ttb@num + \setlength{\@ff@tmp@y}{\textheight}% + \addtolength{\@ff@tmp@y}{-#2}% + \addtolength{\@ff@tmp@y}{-#1}% + \computerightedgeodd{\@ff@tmp@x}% + \addtolength{\@ff@tmp@x}{-\thumbtabwidth}% + \computeleftedgeeven{\@ff@tmp@x@even}% + \@ff@tmpN=0\relax + \whiledo{\@ff@tmpN<\c@maxthumbtabs}% + {% + \advance\@ff@tmpN by 1\relax + \@greyscale=\@ff@tmpN\relax + \multiply\@greyscale by 60\relax + \divide\@greyscale by \c@maxthumbtabs + \advance\@greyscale by 25\relax + \edef\@ff@greyscale{0.\number\@greyscale}% + \newdynamicframe[none]{\thumbtabwidth}{#2}% + {\@ff@tmp@x}{\@ff@tmp@y}[thumbtab\number\@ff@tmpN]% + \expandafter\global\expandafter + \setlength\csname @df@\romannumeral\c@maxdynamic @evenx\endcsname + {\@ff@tmp@x@even}% + \ifthenelse{\boolean{@ttb@title}\and\boolean{@ttb@num}}% + {% \expandafter - \xdef\csname @dynamicframe@\romannumeral\c@maxdynamic\endcsname{% - \noexpand\thumbtabformat{% - \csname thumbtab@num@\romannumeral\@ff@tmpN\endcsname - }{#2}}% + \xdef\csname @dynamicframe@\romannumeral\c@maxdynamic\endcsname{% + \noexpand\thumbtabformat + {% + \csname thumbtab@num@\romannumeral\@ff@tmpN\endcsname\ + \csname thumbtab@title@\romannumeral\@ff@tmpN\endcsname + }% + {#2}% + }% + }% + {% + \if@ttb@title + \expandafter + \xdef\csname @dynamicframe@\romannumeral\c@maxdynamic\endcsname{% + \noexpand\thumbtabformat + {% + \csname thumbtab@title@\romannumeral\@ff@tmpN\endcsname + }% + {#2}% + }% + \fi + \if@ttb@num + \expandafter + \xdef\csname @dynamicframe@\romannumeral\c@maxdynamic\endcsname{% + \noexpand\thumbtabformat + {% + \csname thumbtab@num@\romannumeral\@ff@tmpN\endcsname + }% + {#2}% + }% \fi - }% - \expandafter - \xdef\csname @df@backcol@\romannumeral\c@maxdynamic\endcsname - {[gray]{\@ff@greyscale}} - \newdynamicframe[none]{\thumbtabwidth}{#2}% - {\@ff@tmp@x}{\@ff@tmp@y}[thumbtabindex\number\@ff@tmpN]% - \expandafter\global\expandafter - \setlength\csname @df@\romannumeral\c@maxdynamic @evenx\endcsname - {\@ff@tmp@x@even}% - \expandafter - \ifthenelse{\boolean{@ttb@title}\and\boolean{@ttb@num}}{% + }% \expandafter - \xdef\csname @dynamicframe@\romannumeral\c@maxdynamic\endcsname{% - \noexpand\thumbtabindexformat{% - \csname thumbtab@link@\romannumeral\@ff@tmpN\endcsname}{% - \csname thumbtab@num@\romannumeral\@ff@tmpN\endcsname\ - \csname thumbtab@title@\romannumeral\@ff@tmpN\endcsname - }{#2}}% - }{% - \if@ttb@title + \xdef\csname @df@backcol@\romannumeral\c@maxdynamic\endcsname + {[gray]{\@ff@greyscale}} + \newdynamicframe[none]{\thumbtabwidth}{#2}% + {\@ff@tmp@x}{\@ff@tmp@y}[thumbtabindex\number\@ff@tmpN]% + \expandafter\global\expandafter + \setlength\csname @df@\romannumeral\c@maxdynamic @evenx\endcsname + {\@ff@tmp@x@even}% + \expandafter + \ifthenelse{\boolean{@ttb@title}\and\boolean{@ttb@num}}% + {% \expandafter - \xdef\csname @dynamicframe@\romannumeral\c@maxdynamic\endcsname{% - \noexpand\thumbtabindexformat{% - \csname thumbtab@link@\romannumeral\@ff@tmpN\endcsname}{% - \csname thumbtab@title@\romannumeral\@ff@tmpN\endcsname - }{#2}}% - \fi - \if@ttb@num + \xdef\csname @dynamicframe@\romannumeral\c@maxdynamic\endcsname{% + \noexpand\thumbtabindexformat + {% + \csname thumbtab@link@\romannumeral\@ff@tmpN\endcsname + }% + {% + \csname thumbtab@num@\romannumeral\@ff@tmpN\endcsname\ + \csname thumbtab@title@\romannumeral\@ff@tmpN\endcsname + }% + {#2}% + }% + }% + {% + \if@ttb@title + \expandafter + \xdef\csname @dynamicframe@\romannumeral\c@maxdynamic\endcsname{% + \noexpand\thumbtabindexformat + {% + \csname thumbtab@link@\romannumeral\@ff@tmpN\endcsname + }% + {% + \csname thumbtab@title@\romannumeral\@ff@tmpN\endcsname + }% + {#2}% + }% + \fi + \if@ttb@num + \expandafter + \xdef\csname @dynamicframe@\romannumeral\c@maxdynamic\endcsname{% + \noexpand\thumbtabindexformat + {% + \csname thumbtab@link@\romannumeral\@ff@tmpN\endcsname + }% + {% + \csname thumbtab@num@\romannumeral\@ff@tmpN\endcsname + }% + {#2}% + }% + \fi + }% \expandafter - \xdef\csname @dynamicframe@\romannumeral\c@maxdynamic\endcsname{% - \noexpand\thumbtabindexformat{% - \csname thumbtab@link@\romannumeral\@ff@tmpN\endcsname}{% - \csname thumbtab@num@\romannumeral\@ff@tmpN\endcsname - }{#2}}% - \fi + \xdef\csname @df@backcol@\romannumeral\c@maxdynamic\endcsname + {[gray]{\@ff@greyscale}} + \addtolength{\@ff@tmp@y}{-#2}% }% - \expandafter - \xdef\csname @df@backcol@\romannumeral\c@maxdynamic\endcsname - {[gray]{\@ff@greyscale}} - \addtolength{\@ff@tmp@y}{-#2}% -}% }% \newcommand*{\enablethumbtabs}{% -\ifnum\c@maxthumbtabs>0 -\@ff@tmpN=0\relax -\@dynamicframeid{thumbtab1}% -\whiledo{\@ff@tmpN<\c@maxthumbtabs}{% -\advance\@ff@tmpN by 1\relax -\edef\@ff@pages{\csname thumbtab@pages@\romannumeral\@ff@tmpN\endcsname}% -\@@setdynamicframe{\ff@id}{pages=\@ff@pages}% -\advance\ff@id by 2\relax -}% -\else\PackageWarning{flowfram}{No thumb tabs defined}\fi} + \ifnum\c@maxthumbtabs>0\relax + \@ff@tmpN=0\relax + \@dynamicframeid{thumbtab1}% + \whiledo{\@ff@tmpN<\c@maxthumbtabs}% + {% + \advance\@ff@tmpN by 1\relax + \edef\@ff@pages{\csname thumbtab@pages@\romannumeral\@ff@tmpN\endcsname}% + \@@setdynamicframe{\ff@id}{pages=\@ff@pages}% + \advance\ff@id by 2\relax + }% + \else + \PackageWarning{flowfram}{No thumb tabs defined}% + \fi +} \newcommand*{\disablethumbtabs}{% -\ifnum\c@maxthumbtabs>0 -\@ff@tmpN=0\relax -\@dynamicframeid{thumbtab1}% -\whiledo{\@ff@tmpN<\c@maxthumbtabs}{% -\advance\@ff@tmpN by 1\relax -\expandafter\xdef\csname @df@pages@\romannumeral\ff@id\endcsname -{none}% -\advance\ff@id by 1\relax -\expandafter\xdef\csname @df@pages@\romannumeral\ff@id\endcsname -{none}% -\advance\ff@id by 1\relax -}\fi} + \ifnum\c@maxthumbtabs>0\relax + \@ff@tmpN=0\relax + \@dynamicframeid{thumbtab1}% + \whiledo{\@ff@tmpN<\c@maxthumbtabs}% + {% + \advance\@ff@tmpN by 1\relax + \expandafter\xdef\csname @df@pages@\romannumeral\ff@id\endcsname + {none}% + \advance\ff@id by 1\relax + \expandafter\xdef\csname @df@pages@\romannumeral\ff@id\endcsname + {none}% + \advance\ff@id by 1\relax + }% + \fi +} \newcommand*{\thumbtabindex}{% -\ifnum\c@maxthumbtabs>0\relax -\@ff@tmpN=0\relax -\@dynamicframeid{thumbtabindex1}% -\whiledo{\@ff@tmpN<\c@maxthumbtabs}{% -\advance\@ff@tmpN by 1\relax -\expandafter -\xdef\csname @df@pages@\romannumeral\ff@id\endcsname{\c@page}% -\edef\@ff@doafter{% -\noexpand\afterpage{% -\noexpand\setdynamicframe{\number\ff@id}{pages=none}}} -\@ff@doafter -\advance\ff@id by 2\relax -}\fi} + \ifnum\c@maxthumbtabs>0\relax + \@ff@tmpN=0\relax + \@dynamicframeid{thumbtabindex1}% + \whiledo{\@ff@tmpN<\c@maxthumbtabs}% + {% + \advance\@ff@tmpN by 1\relax + \expandafter + \xdef\csname @df@pages@\romannumeral\ff@id\endcsname{\c@page}% + \edef\@ff@doafter{% + \noexpand\afterpage + {% + \noexpand\setdynamicframe{\number\ff@id}{pages=none}% + }% + }% + \@ff@doafter + \advance\ff@id by 2\relax + }% + \fi +} \newcommand{\setthumbtab}[2]{% -\ifthenelse{\equal{#1}{all}}{% -\@ff@tmpN=0\relax -\whiledo{\@ff@tmpN<\c@maxthumbtabs}{% -\advance\@ff@tmpN by 1\relax -\@setthumbtab{\@ff@tmpN}{#2}}}{% -\@for\@ttb@id:=#1\do{\@setthumbtab{\@ttb@id}{#2}}}} + \ifthenelse{\equal{#1}{all}}% + {% + \@ff@tmpN=0\relax + \whiledo{\@ff@tmpN<\c@maxthumbtabs}% + {% + \advance\@ff@tmpN by 1\relax + \@setthumbtab{\@ff@tmpN}{#2}% + }% + }% + {% + \@for\@ttb@id:=#1\do{\@setthumbtab{\@ttb@id}{#2}}% + }% +} \newcommand{\@setthumbtab}[2]{% -\ifthenelse{\(\c@maxthumbtabs<#1\) \or \(#1<1\)}{% -\PackageWarning{flowfram}{Can't find thumbtab number '#1', -ttb file may not be up-to-date}}{% -\@dynamicframeid{thumbtab\number#1}% -\@@setdynamicframe{\ff@id}{#2}% -\@dynamicframeid{thumbtabindex\number#1}% -\@@setdynamicframe{\ff@id}{#2}}} + \ifthenelse{\(\c@maxthumbtabs<#1\) \or \(#1<1\)}% + {% + \PackageWarning{flowfram}% + {% + Can't find thumbtab number '#1', ttb file may not be + up-to-date% + }% + }% + {% + \@dynamicframeid{thumbtab\number#1}% + \@@setdynamicframe{\ff@id}{#2}% + \@dynamicframeid{thumbtabindex\number#1}% + \@@setdynamicframe{\ff@id}{#2}% + }% +} \newcommand{\setthumbtabindex}[2]{% -\ifthenelse{\equal{#1}{all}}{% -\@ff@tmpN=0\relax -\whiledo{\@ff@tmpN<\c@maxthumbtabs}{% -\advance\@ff@tmpN by 1\relax -\@setthumbtabindex{\@ff@tmpN}{#2}}}{% -\@for\@ttb@id:=#1\do{\@setthumbtabindex{\@ttb@id}{#2}}}} + \ifthenelse{\equal{#1}{all}}% + {% + \@ff@tmpN=0\relax + \whiledo{\@ff@tmpN<\c@maxthumbtabs}% + {% + \advance\@ff@tmpN by 1\relax + \@setthumbtabindex{\@ff@tmpN}{#2}% + }% + }% + {% + \@for\@ttb@id:=#1\do{\@setthumbtabindex{\@ttb@id}{#2}}% + }% +} \newcommand{\@setthumbtabindex}[2]{% -\ifthenelse{\(\c@maxthumbtabs<#1\) \or \(#1<1\)}{% -\PackageWarning{flowfram}{Can't find thumbtab number `\number#1', -ttb file may not be up-to-date}}{% -\@dynamicframeid{thumbtabindex\number#1}% -\@@setdynamicframe{\ff@id}{#2}}} + \ifthenelse{\(\c@maxthumbtabs<#1\) \or \(#1<1\)}% + {% + \PackageWarning{flowfram}% + {% + Can't find thumbtab number `\number#1', + ttb file may not be up-to-date% + }% + }% + {% + \@dynamicframeid{thumbtabindex\number#1}% + \@@setdynamicframe{\ff@id}{#2}% + }% +} \newcommand*{\tocandthumbtabindex}{% -\aligntoctrue -\tableofcontents -\thumbtabindex -\aligntocfalse + \aligntoctrue + \tableofcontents + \thumbtabindex + \aligntocfalse } \newcommand*{\@ttb@minitoctype}{\@ttb@type} \let\@ttb@old@starttoc\@starttoc \newif\if@storetoc \@storetocfalse \renewcommand*{\@starttoc}[1]{% -\if@storetoc - \@ttb@storetoc{#1}% -\else - \@ttb@old@starttoc{#1}% -\fi} + \if@storetoc + \@ttb@storetoc{#1}% + \else + \@ttb@old@starttoc{#1}% + \fi +} \newcommand*{\@ttb@storetoc}[1]{% -\begingroup -\makeatletter -\@storefileconts{\jobname.#1}% -\if@filesw - \expandafter\newwrite\csname tf@#1\endcsname - \immediate\openout\csname tf@#1\endcsname\jobname.#1\relax -\fi -\@nobreakfalse -\endgroup} -\newcommand*{\@storefileconts}[1]{\IfFileExists{#1}{% -\@@storefileconts\@filef@und}{% -\PackageInfo{flowfram}{No file #1.}}} + \begingroup + \makeatletter + \@storefileconts{\jobname.#1}% + \if@filesw + \expandafter\newwrite\csname tf@#1\endcsname + \immediate\openout\csname tf@#1\endcsname\jobname.#1\relax + \fi + \@nobreakfalse + \endgroup +} +\newcommand*{\@storefileconts}[1]{% + \IfFileExists{#1}% + {% + \@@storefileconts\@filef@und + }% + {% + \PackageInfo{flowfram}{No file #1.}% + }% +} \newcount\c@maxtocunits \newcount\c@maxminitoc \newcommand{\@@storefileconts}[1]{% -\@ifundefined{\@ttb@minitoctype}{\@ttb@minitoclevel=6\relax}{% -\expandafter\@ttb@minitoclevel\expandafter - =\csname @ttb@\@ttb@minitoctype @level\endcsname}% -\newread\@ttb@toc -\openin\@ttb@toc=#1\relax -\c@maxtocunits=0\relax -\c@maxminitoc=0\relax -\whiledo{\not\boolean{eof}\@ttb@toc}{% -\read\@ttb@toc to\tocline -\@addtotoclist{\tocline}{\c@maxtocunits}% -}% -\closein\@ttb@toc} + \@ifundefined{\@ttb@minitoctype}% + {% + \@ttb@minitoclevel=6\relax + }% + {% + \expandafter\@ttb@minitoclevel\expandafter + =\csname @ttb@\@ttb@minitoctype @level\endcsname + }% + \newread\@ttb@toc + \openin\@ttb@toc=#1\relax + \c@maxtocunits=0\relax + \c@maxminitoc=0\relax + \whiledo{\not\boolean{eof}\@ttb@toc}% + {% + \read\@ttb@toc to\tocline + \@addtotoclist{\tocline}{\c@maxtocunits}% + }% + \closein\@ttb@toc +} \newif\if@contsline \newcount\@ttb@level \newcount\@ttb@minitoclevel \newcommand{\@addtotoclist}[2]{% -\expandafter\@checkcontentsline#1\end -\if@contsline -\expandafter\@gettype#1\end -\ifthenelse{\equal{\@ttb@contstype}{\@ttb@type}}{% -\global\advance#2 by 1\relax -}{% -}% -\fi -\@ifundefined{@toc@\romannumeral#2}{% -\flf@ta=\expandafter{#1}% -\expandafter\xdef\csname @toc@\romannumeral#2\endcsname{\the\flf@ta}}{% -\flf@ta=\expandafter{#1}% -\flf@tb=\expandafter\expandafter\expandafter{\csname @toc@\romannumeral#2\endcsname}% -\expandafter\xdef\csname @toc@\romannumeral#2\endcsname{\the\flf@tb\the\flf@ta}}% -\if@minitoc + \expandafter\@checkcontentsline#1\end \if@contsline - \@ifundefined{\@ttb@contstype}{\@ttb@level=6}{% - \@ttb@level=\csname @ttb@\@ttb@contstype @level\endcsname}% - \relax - \ifnum\@ttb@level=\@ttb@minitoclevel - \global\advance\c@maxminitoc by 1\relax - \expandafter - \gdef\csname @minitoc@\romannumeral\c@maxminitoc\endcsname{}% - \else - \ifnum\@ttb@level>\@ttb@minitoclevel - \flf@ta=\expandafter{#1}\relax - \flf@tb=\expandafter\expandafter\expandafter - {\csname @minitoc@\romannumeral\c@maxminitoc\endcsname}\relax + \expandafter\@gettype#1\end + \ifthenelse{\equal{\@ttb@contstype}{\@ttb@type}}% + {% + \global\advance#2 by 1\relax + }% + {}% + \fi + \@ifundefined{@toc@\romannumeral#2}% + {% + \flf@ta=\expandafter{#1}% + \expandafter\xdef\csname @toc@\romannumeral#2\endcsname{\the\flf@ta}% + }% + {% + \flf@ta=\expandafter{#1}% + \flf@tb=\expandafter\expandafter\expandafter + {\csname @toc@\romannumeral#2\endcsname}% + \expandafter\xdef\csname @toc@\romannumeral#2\endcsname{% + \the\flf@tb\the\flf@ta}% + }% + \if@minitoc + \if@contsline + \@ifundefined{\@ttb@contstype}% + {\@ttb@level=6}% + {% + \@ttb@level=\csname @ttb@\@ttb@contstype @level\endcsname + }% + \relax + \ifnum\@ttb@level=\@ttb@minitoclevel + \global\advance\c@maxminitoc by 1\relax \expandafter - \xdef\csname @minitoc@\romannumeral\c@maxminitoc\endcsname{% - \the\flf@tb\the\flf@ta} + \gdef\csname @minitoc@\romannumeral\c@maxminitoc\endcsname{}% + \else + \ifnum\@ttb@level>\@ttb@minitoclevel + \flf@ta=\expandafter{#1}\relax + \flf@tb=\expandafter\expandafter\expandafter + {\csname @minitoc@\romannumeral\c@maxminitoc\endcsname}\relax + \expandafter + \xdef\csname @minitoc@\romannumeral\c@maxminitoc\endcsname{% + \the\flf@tb\the\flf@ta} + \fi \fi \fi \fi -\fi } \def\@ttb@part@level{-1} \def\@ttb@chapter@level{0} @@ -4227,124 +7533,174 @@ ttb file may not be up-to-date}}{% \def\@ttb@paragraph@level{4} \def\@ttb@subparagraph@level{5} \long\def\@checkcontentsline#1#2\end{% -\ifx#1\contentsline - \@contslinetrue -\else - \@contslinefalse -\fi} + \ifx#1\contentsline + \@contslinetrue + \else + \@contslinefalse + \fi +} \def\@gettype\contentsline#1#2\end{% -\def\@ttb@contstype{#1}} + \def\@ttb@contstype{#1}% +} \newif\ifaligntoc \aligntocfalse - \let\@ttb@old@tableofcontents\tableofcontents \renewcommand{\tableofcontents}{% -\@storetoctrue -\@ttb@old@tableofcontents -\ifaligntoc - \@printalignedtoc -\else - \@printtoc -\fi -\@storetocfalse -\global\c@minitoc=0\relax} + \@storetoctrue + \@ttb@old@tableofcontents + \ifaligntoc + \@printalignedtoc + \else + \@printtoc + \fi + \@storetocfalse + \global\c@minitoc=0\relax +} \newlength\beforeminitocskip \setlength{\beforeminitocskip}{0pt} \newlength\afterminitocskip \setlength{\afterminitocskip}{\baselineskip} \newcommand*{\dominitoc}[1]{% -\if@minitoc \@dominitoc{#1}\fi} + \if@minitoc + \@dominitoc{#1}% + \fi +} \newcommand*{\@dominitoc}[1]{\@@dominitoc{#1}} -\newcommand{\minitocstyle}[1]{\normalfont\normalsize\normalcolor -#1} +\newcommand{\minitocstyle}[1]{% + \normalfont\normalsize\normalcolor + #1% +} \newcommand*{\@@dominitoc}[1]{% -{\minitocstyle{% -\vskip\beforeminitocskip -\csname @minitoc@\romannumeral#1\endcsname}} -\vskip\afterminitocskip} + {% + \minitocstyle + {% + \vskip\beforeminitocskip + \csname @minitoc@\romannumeral#1\endcsname + }% + }% + \vskip\afterminitocskip +} \newcommand*{\appenddfminitoc}{% -\renewcommand{\beforeminitocskip}{\baselineskip}% -\@ifstar\@sappendminitocdf\@appendminitocdf} + \renewcommand{\beforeminitocskip}{\baselineskip}% + \@ifstar\@sappendminitocdf\@appendminitocdf +} \newcommand*{\@sappendminitocdf}[1]{% -\renewcommand{\@dominitoc}[1]{% -\@sappenddynamic{#1}{\@@dominitoc{##1}}}} + \renewcommand{\@dominitoc}[1]{% + \@sappenddynamic{#1}{\@@dominitoc{##1}}% + }% +} \newcommand*{\@appendminitocdf}[1]{% -\renewcommand{\@dominitoc}[1]{% -\@appenddynamic{#1}{\@@dominitoc{##1}}}} + \renewcommand{\@dominitoc}[1]{% + \@appenddynamic{#1}{\@@dominitoc{##1}}% + }% +} \newcommand*{\@printtoc}{% -\@colN=0\relax -\csname @toc@\romannumeral\@colN\endcsname -\whiledo{\@colN<\c@maxtocunits}{% -\advance\@colN by 1\relax -\csname @toc@\romannumeral\@colN\endcsname}} + \@colN=0\relax + \csname @toc@\romannumeral\@colN\endcsname + \whiledo{\@colN<\c@maxtocunits}% + {% + \advance\@colN by 1\relax + \csname @toc@\romannumeral\@colN\endcsname + }% +} \newcommand{\@printalignedtoc}{% -\@ff@tmpN=0\relax -\@ifundefined{@toc@\romannumeral\@ff@tmpN}{% -}{% -\csname @toc@\romannumeral\@ff@tmpN\endcsname -\par\noindent\hrulefill -}% -\whiledo{\@ff@tmpN<\c@maxtocunits}{% -\advance\@ff@tmpN by 1\relax -\ifnum\@ff@tmpN>\c@maxthumbtabs -\csname @toc@\romannumeral\@ff@tmpN\endcsname -\else -\@dynamicframeid{thumbtabindex\number\@ff@tmpN}% -\expandafter\expandafter\expandafter -\@ff@getstaticpos\csname @df@dim@\romannumeral\ff@id\endcsname -\vbox to \@ff@tmp@y{% -\noindent\parbox{\linewidth}{% -\csname @toc@\romannumeral\@ff@tmpN\endcsname}% -\vfill -\par\noindent\hrulefill -}% -\fi}} + \@ff@tmpN=0\relax + \@ifundefined{@toc@\romannumeral\@ff@tmpN}% + {}% + {% + \csname @toc@\romannumeral\@ff@tmpN\endcsname + \par\noindent\hrulefill + }% + \whiledo{\@ff@tmpN<\c@maxtocunits}% + {% + \advance\@ff@tmpN by 1\relax + \ifnum\@ff@tmpN>\c@maxthumbtabs + \csname @toc@\romannumeral\@ff@tmpN\endcsname + \else + \@dynamicframeid{thumbtabindex\number\@ff@tmpN}% + \expandafter\expandafter\expandafter + \@ff@getstaticpos\csname @df@dim@\romannumeral\ff@id\endcsname + \vbox to \@ff@tmp@y + {% + \noindent\parbox{\linewidth}% + {% + \csname @toc@\romannumeral\@ff@tmpN\endcsname + }% + \vfill + \par\noindent\hrulefill + }% + \fi + }% +} \newcounter{minitoc} \newif\if@minitoc \@minitocfalse \newcommand*{\enableminitoc}[1][\@ttb@type]{% -\@minitoctrue -\setcounter{minitoc}{0}% -\@ifundefined{#1}{% -\PackageError{flowfram}{Sectioning type `#1' not defined}{}}{% -\renewcommand{\@ttb@minitoctype}{#1}% -\ifthenelse{\equal{#1}{chapter}}{\@makeminitocchapter}{% -\ifthenelse{\equal{#1}{part}}{\@makeminitocpart}{% -\@makeminitocsection{#1}}}}% + \@minitoctrue + \setcounter{minitoc}{0}% + \@ifundefined{#1}% + {% + \PackageError{flowfram}{Sectioning type `#1' not defined}{}% + }% + {% + \renewcommand{\@ttb@minitoctype}{#1}% + \ifthenelse{\equal{#1}{chapter}}% + {% + \@makeminitocchapter + }% + {% + \ifthenelse{\equal{#1}{part}}% + {\@makeminitocpart}% + {% + \@makeminitocsection{#1}% + }% + }% + }% } \@onlypreamble{\enableminitoc} -\newcommand{\@makeminitocchapter}{ -\let\@mtoc@old@chapter\@chapter -\def\@chapter[##1]##2{% -\@mtoc@old@chapter[##1]{##2}% -\stepcounter{minitoc}% -\dominitoc{\c@minitoc}% -\@afterheading -}} -\newcommand{\@makeminitocpart}{ -\@ifundefined{@endpart}{% -\let\@mtoc@old@part\@part -\def\@part[##1]##2{% -\@mtoc@old@part[##1]{##2}% -\stepcounter{minitoc}% -\dominitoc{\c@minitoc}% -\@afterheading -}}{% -\let\@mtoc@old@endpart\@endpart -\def\@endpart{% -\stepcounter{minitoc}% -\dominitoc{\c@minitoc}% -\@mtoc@old@endpart -}}} +\newcommand{\@makeminitocchapter}{% + \let\@mtoc@old@chapter\@chapter + \def\@chapter[##1]##2{% + \@mtoc@old@chapter[##1]{##2}% + \stepcounter{minitoc}% + \dominitoc{\c@minitoc}% + \@afterheading + }% +} +\newcommand{\@makeminitocpart}{% + \@ifundefined{@endpart}% + {% + \let\@mtoc@old@part\@part + \def\@part[##1]##2{% + \@mtoc@old@part[##1]{##2}% + \stepcounter{minitoc}% + \dominitoc{\c@minitoc}% + \@afterheading + }% + }% + {% + \let\@mtoc@old@endpart\@endpart + \def\@endpart{% + \stepcounter{minitoc}% + \dominitoc{\c@minitoc}% + \@mtoc@old@endpart + }% + }% +} \newcommand{\@makeminitocsection}[1]{% -\let\@mtoc@old@sect=\@sect -\def\@sect##1##2##3##4##5##6[##7]##8{% -\@mtoc@old@sect{##1}{##2}{##3}{##4}{##5}{##6}[##7]{##8}% -\ifthenelse{\equal{##1}{#1}}{% -\stepcounter{minitoc}% -\dominitoc{\c@minitoc}\@afterheading}{}% -}} + \let\@mtoc@old@sect=\@sect + \def\@sect##1##2##3##4##5##6[##7]##8{% + \@mtoc@old@sect{##1}{##2}{##3}{##4}{##5}{##6}[##7]{##8}% + \ifthenelse{\equal{##1}{#1}}% + {% + \stepcounter{minitoc}% + \dominitoc{\c@minitoc}% + \@afterheading + }% + {}% + }% +} \endinput %% %% End of file `flowfram.sty'. |