%%
%% This is file `rjlpshap.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% rjlpshap.dtx  (with options: `package')
%% 
%% This is a generated file.
%% 
%% Copyright (C) 2004 by Robert J Lee <latex@rjlee.homelinux.org>
%% 
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.2 of this license
%% or (at your option) any later version.  The latest version of this
%% license is in:
%% 
%%    http://www.latex-project.org/lppl.txt
%% 
%% and version 1.2 or later is part of all distributions of LaTeX version
%% 1999/12/01 or later.
%% 
 \NeedsTeXFormat{LaTeX2e}[1999/12/01]
 \ProvidesPackage{rjlpshap}
[2004/11/05 v1.0 .dtx rjlpshap file]















\RequirePackage{arrayjob}

\RequirePackage{forloop}
\makeatletter


\newenvironment{parshapecollect}{%
  \immediate\openout\rjlpshap@writer=\jobname.parshape%
  \setcounter{rjlpshap@linecount}{0}%
  \setboolean{rjlpshap@isodd}{false}%
  \ignorespaces
}{%
  \immediate\closeout\rjlpshap@writer%
  \rjlpshap@doparshape%
  \aftergroup\input\aftergroup{\aftergroup\jobname\aftergroup%
    .\aftergroup%
    p\aftergroup%
    a\aftergroup%
    r\aftergroup%
    s\aftergroup%
    h\aftergroup%
    a\aftergroup%
    p\aftergroup%
    e\aftergroup%
    t\aftergroup%
    m\aftergroup%
    p\aftergroup}\ignorespaces
}

\newcommand{\rjlpshap@doparshape}{%
  \immediate\openout\rjlpshap@finalwriter=\jobname.parshapetmp%
  \immediate\write\rjlpshap@finalwriter{\noexpand\parshape \arabic{rjlpshap@linecount}}%
  \openin\rjlpshap@reader=\jobname.parshape%
  \setboolean{rjlpshap@loop}{true}%
  \whiledo{\boolean{rjlpshap@loop}}{%
    \read\rjlpshap@reader to\rjlpshap@temp%
    \ifeof\rjlpshap@reader%
    \setboolean{rjlpshap@loop}{false}%
    \else
    \immediate\write\rjlpshap@finalwriter{\rjlpshap@temp }%
    \fi
  }%
  \immediate\closeout\rjlpshap@finalwriter%
  \immediate\closein\rjlpshap@reader%
  \let\rjlpshap@temp=\relax%
}

\newcommand{\parshapelenout}[1]{%
  \setlength{\rjlpshap@tempwidth}{#1}%
  \immediate\write\rjlpshap@writer{\the\rjlpshap@tempwidth}%
  \ifthenelse{\boolean{rjlpshap@isodd}}{%
    \setboolean{rjlpshap@isodd}{false}%
  }{%
    \stepcounter{rjlpshap@linecount}%
    \setboolean{rjlpshap@isodd}{true}%
  }%
  \ignorespaces
}

\newcommand{\parshapearrlenout}[2]{%
  \testarray{#1}(\arabic{#2})%
  \parshapelenout{\temp@macro}%
  \ignorespaces
}


\newcommand{\parshapeary}[1]{%
  \testarray{#1}(1)%
  \edef\rjlpshap@max{\temp@macro}%
  \begin{parshapecollect}%
    \forloop{rjlpshap@ctr}{1}{\not \value{rjlpshap@ctr} > \rjlpshap@max }{%
      \setcounter{rjlpshap@ctr2}{\value{rjlpshap@ctr}}%
      \addtocounter{rjlpshap@ctr2}{\value{rjlpshap@ctr}}%
      \parshapearrlenout{#1}{rjlpshap@ctr2}%
      \stepcounter{rjlpshap@ctr2}%
      \parshapearrlenout{#1}{rjlpshap@ctr2}%
    }%
  \end{parshapecollect}%
  \typeout{parshapeary end}%
  \ignorespaces
}

\newcommand{\parshapearray}[2]{%
  \begin{parshapecollect}%
    \testarray{#1}(1)%
    \edef\rjlpshap@max{\temp@macro}%
    \forloop{rjlpshap@ctr}{1}{\not \value{rjlpshap@ctr} > \rjlpshap@max }{%
      \setcounter{rjlpshap@ctr2}{\value{rjlpshap@ctr}}%
      \addtocounter{rjlpshap@ctr2}{\value{rjlpshap@ctr}}%
      \edef\rjlpshap@pos{\arabic{rjlpshap@ctr2}}%
      \testarray{#1}(\rjlpshap@pos)%
      \setlength{\rjlpshap@tempwidth}{\temp@macro}%
      \setlength{\rjlpshap@templinewidth}{#2}%
      \addtolength{\rjlpshap@templinewidth}{-1\rjlpshap@tempwidth}%
      \parshapelenout{\rjlpshap@tempwidth}%
      \stepcounter{rjlpshap@ctr2}%
      \edef\rjlpshap@pos{\arabic{rjlpshap@ctr2}}%
      \testarray{#1}(\rjlpshap@pos)%
      \setlength{\rjlpshap@tempwidth}{\temp@macro}%
      \addtolength{\rjlpshap@templinewidth}{-1\rjlpshap@tempwidth}%
      \parshapelenout{\rjlpshap@templinewidth}%
    }%
  \end{parshapecollect}%
}

\newcommand{\Parshapearray}[2]{%
  \testarray{#1}(1)\edef\rjlpshap@maxA{\temp@macro}%
  \testarray{#2}(1)\edef\rjlpshap@maxB{\temp@macro}%
  \ifthenelse{\rjlpshap@maxA > \rjlpshap@maxB} {\edef\rjlpshap@max{\rjlpshap@maxA}}{\edef\rjlpshap@max{\rjlpshap@maxB}}%
  \begin{parshapecollect}%
    \forloop{rjlpshap@ctr}{1}{\not \value{rjlpshap@ctr} > \rjlpshap@max}{%
      \ifthenelse{\value{rjlpshap@ctr} > \rjlpshap@maxA}{%
        \setcounter{rjlpshap@ctr2}{\rjlpshap@maxA}%
        \addtocounter{rjlpshap@ctr2}{\rjlpshap@maxA}%
      }{%
        \setcounter{rjlpshap@ctr2}{\value{rjlpshap@ctr}}%
        \addtocounter{rjlpshap@ctr2}{\value{rjlpshap@ctr}}%
      }%
      \parshapearrlenout{#1}{rjlpshap@ctr2}%
      \ifthenelse{\value{rjlpshap@ctr} > \rjlpshap@maxB}{%
        \edef\rjlpshap@pos{\rjlpshap@maxB}%
        \setcounter{rjlpshap@ctr3}{\rjlpshap@maxB}%
        \typeout{A pos=\rjlpshap@pos\space of \rjlpshap@maxB}%
        \testarray{#2}(\arabic{rjlpshap@ctr3})%
        \typeout{temp=\temp@macro}%
        \setlength{\rjlpshap@templinewidth}{\temp@macro}%
      }{%
        \stepcounter{rjlpshap@ctr}%
        \edef\rjlpshap@pos{\arabic{rjlpshap@ctr}}%
        \typeout{B pos=\rjlpshap@pos}%
        \addtocounter{rjlpshap@ctr}{-1}%
        \testarray{#2}(\rjlpshap@pos)%
        \setlength{\rjlpshap@templinewidth}{\temp@macro}%
      }%
      \typeout{width=\the\rjlpshap@templinewidth}%
      \addtolength{\rjlpshap@templinewidth}{-1\rjlpshap@tempwidth}%
      \stepcounter{rjlpshap@ctr2}%
      \edef\rjlpshap@pos{\arabic{rjlpshap@ctr2}}%
      \testarray{#1}(\rjlpshap@pos)%
      \setlength{\rjlpshap@tempwidth}{\temp@macro}%
      \addtolength{\rjlpshap@templinewidth}{-1\rjlpshap@tempwidth}%
      \parshapelenout{\rjlpshap@templinewidth}%
    }%
  \end{parshapecollect}%
}


\newcounter{rjlpshap@ctr}

\newcounter{rjlpshap@ctr2}

\newcounter{rjlpshap@ctr3}

\newlength{\rjlpshap@tempwidth}

\newlength{\rjlpshap@templinewidth}

\newboolean{rjlpshap@loop}

\newboolean{rjlpshap@isodd}

\newwrite\rjlpshap@writer % holds \parshape lengths
\newwrite\rjlpshap@finalwriter  % holds entire \parshape command
\newread\rjlpshap@reader % used to read writer to transfer to finalwriter

\newcounter{rjlpshap@linecount}

\makeatother

\endinput
%%
%% End of file `rjlpshap.sty'.
