summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/flowfram/flowfram.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/flowfram/flowfram.dtx')
-rw-r--r--Master/texmf-dist/source/latex/flowfram/flowfram.dtx514
1 files changed, 399 insertions, 115 deletions
diff --git a/Master/texmf-dist/source/latex/flowfram/flowfram.dtx b/Master/texmf-dist/source/latex/flowfram/flowfram.dtx
index 2cc5a42fe35..644416a095f 100644
--- a/Master/texmf-dist/source/latex/flowfram/flowfram.dtx
+++ b/Master/texmf-dist/source/latex/flowfram/flowfram.dtx
@@ -1,12 +1,12 @@
%\iffalse
-% flowfram.dtx generated using makedtx version 0.9b (c) Nicola Talbot
+% flowfram.dtx generated using makedtx version 0.91b (c) Nicola Talbot
% Command line args:
% -src "flowfram.sty\Z=>flowfram.sty"
% -doc "docstub.tex"
% -author "Nicola Talbot"
% -dir "source"
% flowfram
-% Created on 2005/11/24 14:42
+% Created on 2007/3/9 11:23
%\fi
%\iffalse
%<*package>
@@ -29,23 +29,36 @@
%\fi
% \iffalse
% Doc-Source file to use with LaTeX2e
-% Copyright (C) 2005 Nicola Talbot, all rights reserved.
+% Copyright (C) 2007 Nicola Talbot, all rights reserved.
% \fi
% \iffalse
%<*driver>
\documentclass{ltxdoc}
-\CheckSum{7647}
+\CheckSum{8125}
\PageIndex
\usepackage{url}
+\usepackage[colorlinks,hyperindex=false,
+pdfauthor={Nicola L C Talbot},
+pdftitle={Documented Source Code for flowfram.sty}]{hyperref}
\usepackage[style=altlist,toc,number=none]{glossary}[2005/07/15]
+\MakeShortVerb"
+\DeleteShortVerb|
+
\newcommand{\sty}[1]{\textsf{#1}}
\newcommand{\env}[1]{\textsf{#1}}
\newcommand{\cmdname}[1]{\texttt{\symbol{92}#1}}
-\MakeShortVerb"
+\renewcommand{\usage}[1]{\textit{\hyperpage{#1}}}
+\renewcommand{\main}[1]{\hyperpage{#1}}
+\newcommand{\see}[2]{\emph{see} #1}
+\makeatletter
+\def\index@prologue{\section*{Index}
+\addcontentsline{toc}{section}{Index}}
+\makeatother
+
\storeglosentry{typeblock}{name=typeblock,description={The
area of the page where the main body of the text goes.
@@ -110,10 +123,10 @@ refer to the frame by label instead of by its IDN.}}
\end{document}
%</driver>
%\fi
-%\def\filedate{24th November 2005}
-%\def\fileversion{1.02}
+%\def\filedate{9th March 2007}
+%\def\fileversion{1.07}
%\def\filename{flowfram.dtx}
-%\def\docdate{24th November 2005}
+%\def\docdate{9th March 2007}
%
%\title{Documented Source Code for flowfram.sty v\fileversion}
%\author{Nicola L. C. Talbot}
@@ -131,14 +144,16 @@ refer to the frame by label instead of by its IDN.}}
%
%
%\section{The Code}
+%\iffalse
% \begin{macrocode}
%<*flowfram.sty>
% \end{macrocode}
+%\fi
% \subsection{Package Initialisation}
% Declare package, and identify it as a \LaTeXe\ package.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{flowfram}[2005/11/24 v1.02]
+\ProvidesPackage{flowfram}[2007/03/09 v1.07]
% \end{macrocode}
% Load packages needed by this package
% \begin{macrocode}
@@ -146,6 +161,7 @@ refer to the frame by label instead of by its IDN.}}
\RequirePackage{keyval}
\RequirePackage{graphics}
\RequirePackage{afterpage}
+\@ifundefined{@ldc@l@r}{\RequirePackage{color}}{}
% \end{macrocode}
% The colour of the \gls{bbox} borders when the draft
% option is specified is given by the commands:
@@ -322,10 +338,8 @@ refer to the frame by label instead of by its IDN.}}
% \begin{macrocode}
\@ifundefined{chapter}{}{%
\newcommand{\chapterfirstpagestyle}{plain}
-
\let\@ff@OLD@chapter\@chapter
\let\@ff@OLD@schapter\@schapter
-
\renewcommand{\@chapter}{%
\thispagestyle{\chapterfirstpagestyle}\@ff@OLD@chapter}
\renewcommand{\@schapter}{%
@@ -361,6 +375,12 @@ refer to the frame by label instead of by its IDN.}}
\newlength\@ff@tmp@x@even
\newlength\@ff@tmp@y
% \end{macrocode}
+% Define a length to govern paragraph indentation within
+% static and dynamic frames\DescribeMacro{\sdfparindent}.
+% This is 0pt by default.
+% \begin{macrocode}
+\newlength\sdfparindent
+% \end{macrocode}
% \subsection{Flow Frames}
% Set up default lengths. The gap between the text and the
% border is given by:\DescribeMacro{\flowframesep}
@@ -396,20 +416,20 @@ refer to the frame by label instead of by its IDN.}}
\usedframebreaktrue
{\parfillskip=0pt\pagebreak[#1]\parskip=0pt\par\noindent}}
% \end{macrocode}
-% The commands "\newpage", "\clearpage" and
+% The commands "\newpage" and
% "\pagebreak" can be used to move on to the next
% \gls{flow}, but to finish the entire page, use
% "\finishthispage".\DescribeMacro{\finishthispage}
% \begin{macrocode}
\newcommand{\finishthispage}{%
\@colN=\c@thisframe
-\clearpage
+\newpage
\whiledo{\@colN<\c@maxflow}{\advance\@colN by 1\relax
\@ff@chckifthispg{\c@page}{\@colN}%
\if@notthiscol\else
-\mbox{}\vfill\clearpage%
-\fi}
-}
+\mbox{}\newpage%
+\fi
+}}
% \end{macrocode}
% Modify the definition of "\cleardoublepage". This may
% or may not be defined so use "\def".
@@ -501,21 +521,24 @@ refer to the frame by label instead of by its IDN.}}
% \begin{macrocode}
\newcommand{\@n@wflowframe}{%
\global\advance\c@maxflow by 1\relax
-\expandafter\global\expandafter\newif\csname ifcolumnframe\romannumeral\c@maxflow\endcsname
+\expandafter\global\expandafter
+\newif\csname ifcolumnframe\romannumeral\c@maxflow\endcsname
\@ifstar\@snewflowframe\@newflowframe
}
% \end{macrocode}
% Starred version sets boolean flag to indicate a border
% \begin{macrocode}
\newcommand{\@snewflowframe}{%
-\expandafter\global\expandafter\let\csname ifcolumnframe\romannumeral\c@maxflow\endcsname\iftrue
+\expandafter\global\expandafter
+\let\csname ifcolumnframe\romannumeral\c@maxflow\endcsname\iftrue
\@@newflowframe}
% \end{macrocode}
% The unstarred version unsets boolean flag to indicate
% no border.
% \begin{macrocode}
\newcommand{\@newflowframe}{%
-\expandafter\global\expandafter\let\csname ifcolumnframe\romannumeral\c@maxflow\endcsname\iffalse
+\expandafter\global\expandafter
+\let\csname ifcolumnframe\romannumeral\c@maxflow\endcsname\iffalse
\@@newflowframe}
% \end{macrocode}
% Now get on with initialising the \gls{flow}. By default, it
@@ -523,27 +546,49 @@ refer to the frame by label instead of by its IDN.}}
% can override this.
% \begin{macrocode}
\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}
+\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
@@ -562,7 +607,8 @@ refer to the frame by label instead of by its IDN.}}
\fi
}}}%
\fi
-\@ifnextchar[{\@s@tflowframeid{\c@maxflow}}{\@s@tflowframeid{\c@maxflow}[\number\c@maxflow]}}
+\@ifnextchar[{\@s@tflowframeid{\c@maxflow}}{%
+\@s@tflowframeid{\c@maxflow}[\number\c@maxflow]}}
% \end{macrocode}
% If square brackets occur after "\newflowframe", take
% the contents to be the label, otherwise the label will be
@@ -571,7 +617,8 @@ refer to the frame by label instead of by its IDN.}}
\def\@s@tflowframeid#1[#2]{%
\edef\ff@label{#2}%
\@ff@checkuniqueidl{#1}{\ff@label}%
-\expandafter\xdef\csname @col@id@\romannumeral#1\endcsname{\ff@label}%
+\expandafter
+\xdef\csname @col@id@\romannumeral#1\endcsname{\ff@label}%
}
% \end{macrocode}
% Check \IDL{} "#2" for \gls{flow} "#1" is unique
@@ -582,7 +629,8 @@ refer to the frame by label instead of by its IDN.}}
\advance\@colN by 1\relax
\ifnum\@colN=#1\relax
\else
-\ifthenelse{\equal{#2}{\csname @col@id@\romannumeral\@colN\endcsname}}{%
+\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}}{}%
@@ -749,6 +797,18 @@ boolean}{You can only specify the values 'true' or 'false'}}}
\PackageError{flowfram}{Missing value for 'style' key}{}}{}%
\ifthenelse{\equal{#1}{none}}{\def\ff@style{relax}}{\def\ff@style{#1}}}
% \end{macrocode}
+% This key is only for \gls{static}s and \gls{dynamic}s.
+% \begin{macrocode}
+\define@key{flowframe}{shape}{\def\ff@shape{#1}%
+}
+% \end{macrocode}
+% This key is only for \gls{static}s and \gls{dynamic}s.
+% \begin{macrocode}
+\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'}}}
+% \end{macrocode}
% Provide a command to change the settings for all flow
% frames. This just iterates through all the \gls{flow}s,
% and sets each one in turn.
@@ -809,10 +869,11 @@ boolean}{You can only specify the values 'true' or 'false'}}}
% \begin{macrocode}
\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@style{}%
+\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@oddx{}\def\ff@oddy{}\def\ff@angle{}\def\ff@shape{\empty}%
\setkeys{flowframe}{#2}%
\ifthenelse{\equal{\ff@frame}{}}{}{%
\setboolean{columnframe\romannumeral#1}{\ff@frame}}%
@@ -873,6 +934,14 @@ boolean}{You can only specify the values 'true' or 'false'}}}
\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}{}}%
}
% \end{macrocode}
%\DescribeMacro{\ffswapoddeven}
@@ -1058,6 +1127,8 @@ 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}%
@@ -1184,9 +1255,11 @@ id '#1'}{}\fi}
\@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@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{}%
+\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}}%
@@ -1222,7 +1295,7 @@ id '#1'}{}\fi}
{\ff@oddy}}%
\expandafter
\xdef\csname @sf@dim@\romannumeral#1\endcsname{%
-[c][\ff@height][c]{\ff@width}}%
+[c][\ff@height][\ff@valign]{\ff@width}}%
\ifthenelse{\equal{\ff@frametype}{}}{}{%
\expandafter
\xdef\csname @sf@frametype@\romannumeral#1\endcsname{%
@@ -1241,6 +1314,11 @@ id '#1'}{}\fi}
\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}}%
@@ -1254,6 +1332,107 @@ static frames}{Static frames don't have marginal notes}}%
static frames}{}}%
}
% \end{macrocode}
+% Simulate paragraph break inside "\shapepar"
+% \begin{macrocode}
+%\newcommand*{\simpar}{\hfil\vadjust{\vskip\parskip}\break\indent}
+\newcommand*{\simpar}{\hfill\\\indent\mbox{}}
+% \end{macrocode}
+% Provide means to allow parshape to be carried over a paragraph
+% break.
+% \begin{macrocode}
+\let\orgpar\par
+\newcommand{\ffpshpar}{\edef\next{\hangafter=\the\hangafter
+\hangindent=\the\hangindent}\orgpar\next
+\edef\next{\prevgraf=\the\prevgraf}\@ff@parshape\indent\mbox{}\next}
+% \end{macrocode}
+% Provide a means to have section headings within "\parshape".
+% \begin{macrocode}
+\def\@ff@parshape{\parshape=0}
+
+\newcommand{\@ff@sectionhead}[1]{%
+\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\next{\hangafter=\the\hangafter
+\hangindent=\the\hangindent}\orgpar\next
+\let\par=\orgpar
+\edef\next{\prevgraf=\the\prevgraf}%
+\csname @ff@old\ff@sechead\endcsname*{\@ff@parshape\next
+#1}%
+\xdef\next{\@ff@parshape
+\prevgraf=\the\prevgraf}%
+\endgroup
+}%
+\mbox{}\next\let\next\undefined}
+
+\def\@ff@heading[#1]#2{%
+\@ifundefined{@ff@old\ff@sechead}{\PackageError{flowfram}{Unknown
+heading command '\ff@sechead'}{}}{%
+\begingroup
+\edef\next{\hangafter=\the\hangafter
+\hangindent=\the\hangindent}\orgpar\next
+\let\par=\orgpar
+\edef\next{\prevgraf=\the\prevgraf}%
+\csname @ff@old\ff@sechead\endcsname[#1]{\@ff@parshape\next
+#2}%
+\xdef\next{\@ff@parshape
+\prevgraf=\the\prevgraf}%
+\endgroup}%
+\mbox{}\next\let\next\undefined}
+% \end{macrocode}
+% Define command to switch to adjusted section headings:
+% \begin{macrocode}
+\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}}%
+}
+% \end{macrocode}
+% Determine what shape command is being used:
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+% Disable sectioning commands
+% \begin{macrocode}
+\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}{}}%
+}
+% \end{macrocode}
% Set the contents of the \gls{static} given by its \IDN{}.
% Synatax: "\begin{staticcontents}{n}".
%\DescribeEnv{staticcontents}
@@ -1262,15 +1441,45 @@ static frames}{}}%
\newenvironment{staticcontents}[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
+% no shape
\edef\@sf@mpg{%
\noexpand
-\begin{minipage}\csname @sf@dim@\romannumeral#1\endcsname}%
+\begin{minipage}\csname @sf@dim@\romannumeral#1\endcsname
+\noexpand\begingroup
+\noexpand\let\noexpand\orgpar=\noexpand\par
+}%
+\or
+% \parshape
+\edef\@sf@mpg{%
+\noexpand
+\begin{minipage}\csname @sf@dim@\romannumeral#1\endcsname
+\@ff@parshape
+\noexpand\begingroup
+\noexpand\let\noexpand\orgpar=\noexpand\par
+\noexpand\let\noexpand\par=\noexpand\ffpshpar
+\noexpand\@ff@setsecthead
+}%
+\or
+% \shapepar
+\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
+\@s@tfftextcol\noindent
\@sf@mpg
-}{\end{minipage}\end{lrbox}%
+\setlength\parindent\sdfparindent
+}{\ifnum\ff@shape=2\par
+\else\orgpar\fi\endgroup\end{minipage}\end{lrbox}%
\expandafter\global\expandafter\sbox\@sf@thisframe{%
\usebox\staticframe}\ignorespaces
}
@@ -1431,6 +1640,8 @@ fbox}%
\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}}%
@@ -1548,13 +1759,14 @@ id '#1'}{}\fi}
% Change the setting for the \gls{dynamic} given by its \IDN{}.
% \begin{macrocode}
\newcommand{\@@setdynamicframe}[2]{%
-\expandafter\expandafter\expandafter\@ff@getstaticpos\csname @df@dim@\romannumeral#1\endcsname
+\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@oddx{}\def\ff@oddy{}\def\ff@angle{}\def\ff@shape{0}%
\setkeys{flowframe}{#2}%
\ifthenelse{\equal{\ff@frame}{}}{}{%
\setboolean{dynamicframe\romannumeral#1}{\ff@frame}}%
@@ -1581,7 +1793,7 @@ id '#1'}{}\fi}
\expandafter\global\expandafter\setlength
\csname @df@\romannumeral#1@posy\endcsname{\ff@oddy}}%
\expandafter\xdef\csname @df@dim@\romannumeral#1\endcsname{%
-[c][\ff@height][t]{\ff@width}}%
+[c][\ff@height][\ff@valign]{\ff@width}}%
\ifthenelse{\equal{\ff@label}{}}{}{%
\@s@tdynamicframeid{#1}[\ff@label]}
\ifthenelse{\equal{\ff@frametype}{}}{}{%
@@ -1600,6 +1812,11 @@ id '#1'}{}\fi}
\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}}%
@@ -1622,14 +1839,14 @@ frames}{dynamic frames don't have marginal notes}}%
% \begin{macrocode}
\newcommand{\@@dynamicframeswapcoords}[1]{%
\setlength{\@ff@tmp@x}%
-{\csname @df@\romannumeral#1@evenx\endcsname}
+{\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}
+{\csname @df@\romannumeral#1@eveny\endcsname}%
\expandafter\setlength
\csname @df@\romannumeral#1@eveny\endcsname
{\csname @df@\romannumeral#1@posy\endcsname}%
@@ -1695,7 +1912,7 @@ frames}{dynamic frames don't have marginal notes}}%
% \begin{macrocode}
\newcommand{\@setdynamiccontents}[2]{%
\ifnum#1>\c@maxdynamic
-\PackageError{flowfram}{Dynamic frame \number#1 does not exist}{%
+\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
@@ -1731,9 +1948,10 @@ but there are only
% \end{macrocode}
% Append "#2" onto the end of "#1".
% \begin{macrocode}
-\toksdef\ta=0 \toksdef\tb=2
-\long\def\@ff@addtolist#1\entry#2{\ta={{#2}}\tb=\expandafter{#1}%
-\xdef#1{\the\tb\the\ta}}
+\toksdef\flf@ta=0 \toksdef\flf@tb=2
+\long\def\@ff@addtolist#1\entry#2{\flf@ta={{#2}}%
+\flf@tb=\expandafter{#1}%
+\xdef#1{\the\flf@tb\the\flf@ta}}
% \end{macrocode}
%\subsection{Initialise Flow Frames}
%\DescribeMacro{\setinitialframe}
@@ -1763,7 +1981,7 @@ Attempting to find the first page with a flow frame}%
\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}
+\@outputpage}%
\c@thisframe=\@nxtcol
\fi
\@setcol{\c@thisframe}\relax
@@ -1781,13 +1999,13 @@ Attempting to find the first page with a flow frame}%
\finishthispage
\setallflowframes{pages=none}%
\settoheight{\@ff@staticH}{#1}%
-\settodepth{\@ff@tmp@y}{#1}
+\settodepth{\@ff@tmp@y}{#1}%
\addtolength{\@ff@staticH}{\@ff@tmp@y}%
-\ifdim\@ff@staticH>0pt
-\twocolumnStop[\c@page]{\@ff@staticH}
+\ifdim\@ff@staticH>0pt\relax
+\twocolumnStop[\c@page]{\@ff@staticH}%
\c@thisframe=\c@maxflow
\advance\c@thisframe by -1\relax
-\@twocolumn[>\c@page]
+\@twocolumn[>\c@page]%
\setstaticcontents{\c@maxstatic}{#1}%
\else
\@twocolumn
@@ -1805,13 +2023,13 @@ Attempting to find the first page with a flow frame}%
\finishthispage
\setallflowframes{pages=none}%
\settoheight{\@ff@staticH}{#1}%
-\settodepth{\@ff@tmp@y}{#1}
+\settodepth{\@ff@tmp@y}{#1}%
\addtolength{\@ff@staticH}{\@ff@tmp@y}%
-\ifdim\@ff@staticH>0pt
-\onecolumnStop[\c@page]{\@ff@staticH}
+\ifdim\@ff@staticH>0pt\relax
+\onecolumnStop[\c@page]{\@ff@staticH}%
\c@thisframe=\c@maxflow
\advance\c@thisframe by -1\relax
-\@onecolumn[>\c@page]
+\@onecolumn[>\c@page]%
\setstaticcontents{\c@maxstatic}{#1}%
\else
\@twocolumn
@@ -1842,14 +2060,14 @@ Frames must be defined in the preamble}#1}%
% page, need to finish off to ensure the final page is
% shipped out, otherwise the text on the last page will be lost.
% \begin{macrocode}
-\AtEndDocument{\finishthispage}
+%\AtEndDocument{\finishthispage}
% \end{macrocode}
%\subsection{Output Routine}
% Set up the output box so it has the correct dimensions for
% specified \gls{flow}. This is used by the output routine.
% \begin{macrocode}
\newcommand{\@setcol}[1]{%
-\ifnum\c@maxflow<#1
+\ifnum\c@maxflow<#1\relax
\PackageError{flowfram}{Can't set frame '\number#1', doesn't
exist}{}%
\else
@@ -2009,11 +2227,15 @@ or text might not appear correctly}%
\renewcommand{\@dothefoot}{}%
\renewcommand{\@dodynamicthehead}{%
\@dynamicframeid{header}%
-\expandafter\def\csname @dynamicframe@\romannumeral\ff@id\endcsname{\vfill\@thehead\vfill}
+\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}
+\expandafter
+\def\csname @dynamicframe@\romannumeral\ff@id\endcsname{%
+\vfill\@thefoot\vfill}%
}%
}
% \end{macrocode}
@@ -2079,18 +2301,31 @@ or text might not appear correctly}%
\newif\if@ff@moreframes
\newcommand{\@ff@checkifmoreframes}{%
\@ff@moreframesfalse
-\@colN=0\relax
+\@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}}}
+\@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
+}
% \end{macrocode}
% Check to see if the current page lies in the \gls{pglist}
% given by "#1".
% \begin{macrocode}
-\newcommand{\@ff@checkpages}[1]{%
-\@for \@ff@pp:=#1\do{%
-\@ff@checkthispage{\@ff@pp}}}
+\newcommand{\@ff@checkpages}[2][\c@page]{%
+\@for\@ff@pp:=#2\do{%
+\@ff@checkthispage{#1}{\@ff@pp}}}
% \end{macrocode}
% Check to see if the current page lies in the \gls{pgrange}
% given by "#1". If the \gls{pgrange} is specified by
@@ -2099,11 +2334,11 @@ or text might not appear correctly}%
% lies within the number range. If the \gls{pgrange} is "none",
% ignore it.
% \begin{macrocode}
-\newcommand{\@ff@checkthispage}[1]{%
-\ifthenelse{\equal{#1}{all}\or\equal{#1}{even}\or\equal{#1}{odd}}{%
+\newcommand{\@ff@checkthispage}[2]{%
+\ifthenelse{\equal{#2}{all}\or\equal{#2}{even}\or\equal{#2}{odd}}{%
\@ff@moreframestrue}{%
-\ifthenelse{\equal{#1}{none}}{}{%
-\@ff@checknumrange{#1}}}}
+\ifthenelse{\equal{#2}{none}}{}{%
+\@ff@checknumrange{#1}{#2}}}}
% \end{macrocode}
% The number range could be a single number, a closed range
% (e.g.\ "2-6") or an open range (e,g.\ "<4" or ">10").
@@ -2112,12 +2347,15 @@ or text might not appear correctly}%
% If the current page is less than or equal to the maximum,
% there are still more \gls{flow}s available.
% \begin{macrocode}
-\newcommand{\@ff@checknumrange}[1]{%
+\newcommand{\@ff@checknumrange}[2]{%
\def\@ff@numstart{0}\def\@ff@numend{10000}%
-\@ff@getrange{#1}%
-\ifnum\@ff@numend>\c@page
+\@ff@getrange{#2}%
+\ifnum\@ff@numend>#1\relax
\@ff@moreframestrue
\else
+\ifnum\@ff@numend=#1\relax
+\@ff@moreframestrue
+\fi
\fi
}
% \end{macrocode}
@@ -2179,7 +2417,7 @@ or text might not appear correctly}%
% value, otherwise it is a range.
% \begin{macrocode}
\def\@@ff@getrange#1-#2\end{%
-\ifx\relax#2
+\ifx\relax#2\relax
\def\@ff@numstart{#1}\def\@ff@numend{#1}%
\else
\def\@ff@numstart{#1}%
@@ -2214,9 +2452,12 @@ adding new one}%
\@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\fi
+\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
@@ -2290,7 +2531,7 @@ adding new one}%
\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}{
+\rotateframe{\csname @ff@angle@\romannumeral#1\endcsname}{%
\ifthenelse{\boolean{columnframe\romannumeral#1}}{%
\@ff@fbox{\csname colwidth\romannumeral#1\endcsname}%
{\csname colheight\romannumeral#1\endcsname}{%
@@ -2570,7 +2811,8 @@ adding new one}%
% specified in the form "[c][height][?]{width}"
% \begin{macrocode}
\def\@ff@getstaticpos[#1][#2][#3]#4{\@ff@tmp@x=#4\relax
-\@ff@tmp@y=#2}
+\@ff@tmp@y=#2\relax
+\def\ff@valign{#3}}
% \end{macrocode}
% Display the savebox associated with \gls{static} "#1"
% \begin{macrocode}
@@ -2677,6 +2919,43 @@ adding new one}%
\expandafter\global\expandafter
\gdef\csname @dynamicframe@\romannumeral\@colN\endcsname{}}{}}}
% \end{macrocode}
+% Display contents of dynamic box (contents stored in
+% "\ff@contents", style given by "\ff@style"):
+% \begin{macrocode}
+\newcommand{\@dodfparbox}[1]{%
+\expandafter\let\expandafter
+\@ff@parshape\csname @df@shape@\romannumeral#1\endcsname
+\expandafter\@ff@getshape\@ff@parshape\relax
+\ifcase\ff@shape
+% no shape
+\expandafter\expandafter\expandafter
+\parbox\csname @df@dim@\romannumeral#1\endcsname
+{%
+\setlength\parindent\sdfparindent
+\csname\ff@style\endcsname{\ff@contents}}%
+\or
+% \parshape
+\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
+% \shapepar
+\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
+}
+% \end{macrocode}
% Typeset the dynamic box with its associated border.
% \begin{macrocode}
\newcommand{\@dodynamicbox}[1]{%
@@ -2693,15 +2972,11 @@ adding new one}%
\rotateframe{\csname @df@angle@\romannumeral#1\endcsname}{%
\ifthenelse{\boolean{dynamicframe\romannumeral#1}}{%
\@ff@fbox{\@ff@tmp@x}{\@ff@tmp@y}%
-{\expandafter\expandafter\expandafter
-\parbox\csname @df@dim@\romannumeral#1\endcsname
-{\csname\ff@style\endcsname{\ff@contents}}}%
+{\@dodfparbox{#1}}%
{\csname\ff@frametype\endcsname}%
}{%
\@ff@box{\@ff@tmp@x}{\@ff@tmp@y}{%
-\expandafter\expandafter\expandafter
-\parbox\csname @df@dim@\romannumeral#1\endcsname
-{\csname \ff@style\endcsname{\ff@contents}}}%
+\@dodfparbox{#1}}%
}}}
% \end{macrocode}
% Now for the \gls{bbox}:
@@ -2854,14 +3129,18 @@ adding new one}%
% \begin{macrocode}
\newlength\ffevenoffset
\newcommand{\@ff@do@allframes}{%
+\ffevenoffset=0pt\relax
\if@twoside
\ifodd\c@page
\else
-\ffevenoffset=-\oddsidemargin
-\advance\ffevenoffset by \evensidemargin
-\kern\ffevenoffset
+\ffevenoffset=-\oddsidemargin\relax
+\advance\ffevenoffset by \evensidemargin\relax
+\kern\ffevenoffset\relax
\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
@@ -2879,7 +3158,7 @@ adding new one}%
\ifshowmargins
\@ff@drawmargins
\fi
-}}
+}}}
% \end{macrocode}
% This was modified from the output routine for standard
% two column format. After "\@g@tnextcol", the register
@@ -2899,7 +3178,7 @@ adding new one}%
\@setcolbox\c@thisframe
\if@specialpage
\global\@specialpagefalse
- \@nameuse{ps@\@specialstyle}
+ \@nameuse{ps@\@specialstyle}\relax
\fi
\if@twoside
\ifodd\count\z@
@@ -3075,7 +3354,7 @@ adding new one}%
\ifcase#2
\PackageError{flowfram}{%
You have requested 0 flowframes!}{%
-It does not make much sense to ask to create 0 flow frames}
+It does not make much sense to ask to create 0 flow frames}%
\or
\onecolumninarea[#1]{#3}{#4}{#5}{#6}%
\or
@@ -3655,7 +3934,7 @@ which really doesn't make sense}%
\if@twoside
\computeleftedgeeven{\@ff@tmp@x@even}%
\else
-\setlength{\@ff@tmp@x@even}{\@ff@tmp@x}
+\setlength{\@ff@tmp@x@even}{\@ff@tmp@x}%
\fi
\computebottomedge{\@ff@tmp@y}%
\addtolength{\@ff@tmp@x}{#1}%
@@ -3955,7 +4234,9 @@ which really doesn't make sense}%
\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}%
+\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}%
}
@@ -3971,7 +4252,8 @@ which really doesn't make sense}%
\advance\@thisstrip by -1\relax
\next}
-\newcommand{\@@nexthNband}[3]{\@nexthband{\ff@pages}{\@ff@staticW}{#1}{#2}{#3}\@nexthNband}
+\newcommand{\@@nexthNband}[3]{%
+\@nexthband{\ff@pages}{\@ff@staticW}{#1}{#2}{#3}\@nexthNband}
% \end{macrocode}
%\DescribeMacro{\makebackgroundframe}
% Make one big \gls{static} that covers the entire page.
@@ -4750,7 +5032,7 @@ Unknown section type '#3'}{}}{%
\@ff@tmpN=0\relax
\whiledo{\@ff@tmpN<\c@maxthumbtabs}{%
\advance\@ff@tmpN by 1\relax
-\@greyscale=\@ff@tmpN
+\@greyscale=\@ff@tmpN\relax
\multiply\@greyscale by 60\relax
\divide\@greyscale by \c@maxthumbtabs
\advance\@greyscale by 25\relax
@@ -5042,11 +5324,11 @@ ttb file may not be up-to-date}}{%
}%
\fi
\@ifundefined{@toc@\romannumeral#2}{%
-\ta=\expandafter{#1}%
-\expandafter\xdef\csname @toc@\romannumeral#2\endcsname{\the\ta}}{%
-\ta=\expandafter{#1}%
-\tb=\expandafter\expandafter\expandafter{\csname @toc@\romannumeral#2\endcsname}%
-\expandafter\xdef\csname @toc@\romannumeral#2\endcsname{\the\tb\the\ta}}%
+\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}}%
% now do minitoc stuff. If the sectioning type is unknown,
% assume it comes last
\if@minitoc
@@ -5059,9 +5341,9 @@ ttb file may not be up-to-date}}{%
\expandafter\gdef\csname @minitoc@\romannumeral\c@maxminitoc\endcsname{}\relax
\else
\ifnum\@ttb@level>\@ttb@minitoclevel
- \ta=\expandafter{#1}\relax
- \tb=\expandafter\expandafter\expandafter{\csname @minitoc@\romannumeral\c@maxminitoc\endcsname}\relax
- \expandafter\xdef\csname @minitoc@\romannumeral\c@maxminitoc\endcsname{\the\tb\the\ta}
+ \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
@@ -5287,8 +5569,10 @@ ttb file may not be up-to-date}}{%
\dominitoc{\c@minitoc}\@afterheading}{}%
}}
% \end{macrocode}
+%\iffalse
% \begin{macrocode}
%</flowfram.sty>
% \end{macrocode}
+%\fi
%\Finale
\endinput