%%
%% This is file `sidecap.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% sidecap.dtx  (with options: `package')
%% 
%% IMPORTANT NOTICE:
%% 
%% For the copyright see the source file.
%% 
%% Any modified versions of this file must be renamed
%% with new filenames distinct from sidecap.sty.
%% 
%% For distribution of the original source see the terms
%% for copying and modification in the file sidecap.dtx.
%% 
%% This generated file may be distributed as long as the
%% original source files, as listed above, are part of the
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% File: sidecap.dtx
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{sidecap}
         [2003/06/06 v1.6f SideCap Package (RN/HjG)]


\RequirePackage{ifthen}

\@ifdefinable{\SC@BOXWD}{\newdimen\SC@BOXWD}
\@ifdefinable{\SC@CAPWD}{\newdimen\SC@CAPWD}
\@ifdefinable{\SC@tempdima}{\newdimen\SC@tempdima}
\@ifdefinable{\SC@tempdimb}{\newdimen\SC@tempdimb}
\newcounter{SC@C} \newsavebox{\SC@BOX} \newcommand*{\SC@FLOAT}{}
\newcommand*{\SC@IDENT}{SC@\number\value{SC@C}}
\newcommand*\SC@label[1]{\gdef\SC@LABtext{#1}\ignorespaces}
\newcommand*\SC@orig@caption{} \newcommand*\SC@orig@label{}
\newcommand*\sidecaptionsep{} \newcommand*\SC@pageref{}
\edef\sidecaptionsep{\the\marginparsep}
\newcommand*\sidecaptionrelwidth{1.0}
\newcommand*\sidecaptionvpos[2]{% 2002/08/31
  \@namedef{SC@#1@vpos}{#2}%
}

\newboolean{SC@wide}
\def\SC@widefalse{\global\let\ifSC@wide\iffalse}
\def\SC@widetrue {\global\let\ifSC@wide\iftrue}

  % Kann man auf dieses Laengenregister verzichten? Nein! (RN) <****>

\newcommand*\SC@calcwidths[1]{%
  \SC@tempdima#1\relax
  \SC@BOXWD\wd\SC@BOX
  \SC@CAPWD\SC@fraction\SC@BOXWD
  \@tempdima\SC@BOXWD
  \advance\@tempdima\SC@CAPWD
  \advance\@tempdima\sidecaptionsep
  \ifdim\@tempdima>\SC@tempdima
    \advance\SC@CAPWD-\@tempdima
    \advance\SC@CAPWD\SC@tempdima
  \fi
  \SC@tempdimb\@tempdima
}

\newcommand*{\isSC@WIDEi}[2]{\ifSC@wide#1\else#2\fi}  %default: false
\newcommand*{\isSC@WIDEii}[2]{\ifSC@wide#1\else#2\fi} %default: false


\newcommand*\SC@justify{}
\newcommand*\SC@justify@caption{}
\newcommand*\SC@justify@body{}

\newboolean{SC@origRagged} \setboolean{SC@origRagged}{false} %% ???
\newcommand*{\SC@SaveCommands}{%
    \let\SC@orig@caption=\caption \let\SC@orig@label=\label%
}
\SC@SaveCommands % necessary? or even wrong?
\if@twoside
  \newcommand*{\isSC@ODD}[2]{%
    \ifthenelse{\isodd{\SC@pageref{\SC@IDENT}}}{#1}{#2}}
\else
  \newcommand*{\isSC@ODD}[2]{#1}%
\fi
\DeclareOption{innercaption}{%
  \renewcommand*{\SC@FLOAT}[2]{%
    \isSC@ODD{{#1}\hspace{\sidecaptionsep}{#2}} {{#2}\hspace{\sidecaptionsep}{#1}}}
  \renewcommand*\SC@justify@caption{%
    \isSC@ODD{\RaggedLeft}{\RaggedRight}}
}

\DeclareOption{outercaption}{%
  \renewcommand*{\SC@FLOAT}[2]{%
    \isSC@ODD{{#2}\hspace{\sidecaptionsep}{#1}} {{#1}\hspace{\sidecaptionsep}{#2}}}
  \renewcommand*\SC@justify@caption{%
    \isSC@ODD{\RaggedRight}{\RaggedLeft}}
}

\DeclareOption{rightcaption}{%
  \renewcommand*{\SC@FLOAT}[2]{{#2}\hspace{\sidecaptionsep}{#1}}
  \def\SC@justify@caption{\RaggedRight}%
}

\DeclareOption{leftcaption}{%
  \renewcommand*{\SC@FLOAT}[2]{{#1}\hspace{\sidecaptionsep}{#2}}
  \def\SC@justify@caption{\RaggedLeft}%
}
\DeclareOption{wide}{%
   \renewcommand*{\isSC@WIDEi}[2]{\if@twocolumn #2\else #1\fi}% ???
   \renewcommand*{\isSC@WIDEii}[2]{#1}}
\DeclareOption{raggedright}{%
   \def\SC@justify{\RaggedRight}}
\DeclareOption{raggedleft}{%
   \def\SC@justify{\RaggedLeft}}
\DeclareOption{ragged}{%
   \def\SC@justify{\SC@justify@caption}%   \let ?
}
\DeclareOption{origragged}{\setboolean{SC@origRagged}{true}}
\DeclareOption{margincaption}{%
  \ds@outercaption\ds@outerbody\ds@wide
  \let\ds@innercaption\@empty
  \let\ds@leftcaption\@empty
  \let\ds@rightcaption\@empty
  \def\SC@calcwidths#1{%
    \SC@tempdimb#1\relax
    \SC@BOXWD\SC@tempdimb  % *-form !!! ???
    \advance\SC@BOXWD-\marginparwidth
    \advance\SC@BOXWD-\marginparsep
    \SC@CAPWD\marginparwidth
  }%
}
\DeclareOption{innerbody}{%
  \def\SC@justify@body{%
    \isSC@ODD{\RaggedRight}{\RaggedLeft}}
}

\DeclareOption{outerbody}{%
  \def\SC@justify@body{%
    \isSC@ODD{\RaggedLeft}{\RaggedRight}}
}

\DeclareOption{centerbody}{%
  \def\SC@justify@body{\Centering}
}

\DeclareOption{rightbody}{%
  \def\SC@justify@body{\RaggedLeft}%
}

\DeclareOption{leftbody}{%
  \def\SC@justify@body{\RaggedRight}%
}
\ExecuteOptions{outercaption}
%%\InputIfFileExists{sidecap.cfg}{}{} % hier ? % 2002/06/14
\ProcessOptions\relax
\AtBeginDocument{%
  \ifSC@origRagged\else
    \@ifpackageloaded{ragged2e}{}%
    {%
      \IfFileExists{ragged2e.sty}{%
 \RequirePackage[NewParameters]{ragged2e}}%
      {%
        \PackageWarningNoLine{sidecap}{%
    Package `ragged2e' not found -- expect bad formatting}%
      }%
    }
  \fi
  \@ifundefined{RaggedRight}%
  {%
    \let\RaggedLeft\raggedleft
    \let\RaggedRight\raggedright
    \let\Centering\centering
  }{}
  \@ifpackageloaded{hyperref}%
    {\let\SC@pageref=\hypergetpageref}%
    {%
      \@ifpackageloaded{babel}%
      {\let\SC@pageref=\org@pageref}%
      {\let\SC@pageref=\pageref}%
    }
}

\@ifdefinable\SC@figure@vpos{\def\SC@figure@vpos{b}}
\newenvironment{SCfigure}{\SC@float[\SC@figure@vpos]{figure}}{\endSC@float}
\newenvironment{SCfigure*}{\SC@dblfloat[\SC@figure@vpos]{figure}}{\endSC@dblfloat}


\@ifdefinable\SC@table@vpos{\def\SC@table@vpos{t}}
\newenvironment{SCtable}{\SC@float[\SC@table@vpos]{table}}{\endSC@float}
\newenvironment{SCtable*}{\SC@dblfloat[\SC@table@vpos]{table}}{\endSC@dblfloat}

\newenvironment{wide}%
{%
  \@parboxrestore% 2002/06/14 -- SW-Arch.: wozu? 2002/08/24
  \advance\linewidth\marginparwidth
  \advance\linewidth\marginparsep
  \ifx\label\SC@label
    \SC@widetrue
  \else
    \begin{lrbox}\SC@BOX  % \begin necessary: --> \@noitemerr
       \minipage\linewidth
  \fi
}%
{%
  \ifx\label\SC@label
\typeout{WIDE: inside SCfloat}%
    %\renewcommand*{\isSC@WIDEi}[2]{\if@twocolumn ##2\else ##1\fi}%
    %\renewcommand*{\isSC@WIDEii}[2]{##1}%
    %\let\isSC@WIDE\isSC@WIDEi
  \else
\typeout{WIDE: outside SCfloat}%
      \endminipage
    \end{lrbox}%  \end necessary: --> \@noitemerr
    \global\advance\c@SC@C\@ne
    \SC@orig@label{\SC@IDENT}% nicht \ref... !!!
    \trivlist \item\relax
    \isSC@ODD{\def\SC@hpos{l}}{\def\SC@hpos{r}}%
\typeout{WIDE: \string\linewidth=\the\linewidth}%
    \noindent\makebox[\textwidth][\SC@hpos]{\copy\SC@BOX}% \usebox{\SC@BOX}
    \endtrivlist
  \fi
}

\def\SC@float{\SC@SaveCommands\@ifnextchar[\SC@xfloat{\SC@xfloat[c]}}
\def\SC@xfloat[#1]#2{\@ifnextchar[%
  {\SC@yfloat{#1}{#2}}%
  {\SC@zfloat{#1}{#2}{\sidecaptionrelwidth}[\@nameuse{fps@#2}]}}
\def\SC@yfloat#1#2[#3]{\@ifnextchar[%
  {\SC@zfloat{#1}{#2}{#3}}%
  {\SC@zfloat{#1}{#2}{#3}[\@nameuse{fps@#2}]}}
\def\SC@zfloat#1#2#3[#4]{%
  \def\SC@vpos{#1}%
  \expandafter\edef\csname fps@#2\endcsname{#4}%
  \def\SC@captype{#2}%
  \ifx#3\@empty\def\SC@fraction{1}\else\def\SC@fraction{#3}\fi%
  \let\SC@CAPtext\@empty \let\SC@OPTCAPtext\@empty \let\SC@LABtext\@empty%
  \renewcommand\caption[2][]{\gdef\SC@OPTCAPtext{##1}%
  \gdef\SC@CAPtext{##2}\ignorespaces}% \SC@justify
  \let\label=\SC@label
  \@namedef{fnum@#2}{\mbox{\@nameuse{#2name}~\@nameuse{the#2}}}% caption2 ?
  \SC@widefalse
  \begin{lrbox}\SC@BOX  % \begin necessary: --> \@noitemerr
  %%% \strut
}%

\def\SC@dblfloat{%
  \SC@SaveCommands%
  \if@twocolumn\let\reserved@a\SC@dbflt\else\let\reserved@a\SC@float\fi
  \reserved@a}
\def\SC@dbflt{\SC@float}
\def\endSC@float{%
  %%% \strut
  \end{lrbox}%  \end necessary: --> \@noitemerr
  \let\isSC@WIDE\isSC@WIDEi%
  \def\@FLOAT{\@float}\def\end@FLOAT{\end@float}%
  \isSC@WIDE%
    {\@tempdima\textwidth % \columnwidth ???
     \advance\@tempdima\marginparwidth
     \advance\@tempdima\marginparsep}%
    {\@tempdima\columnwidth}%
  \endSC@FLOAT\@tempdima}%
\def\endSC@dblfloat{%
  \end{lrbox}%  \end necessary: --> \@noitemerr
  \let\isSC@WIDE\isSC@WIDEii%
  \def\@FLOAT{\@dblfloat}\def\end@FLOAT{\end@dblfloat}%
  \isSC@WIDE%
    {\@tempdima\textwidth%
     \advance\@tempdima\marginparwidth
     \advance\@tempdima\marginparsep}%
    {\@tempdima\textwidth}%
\typeout{endSC@dblfloat: \string\@tempdima=\the\@tempdima}%
  \endSC@FLOAT\@tempdima}%
\def\endSC@FLOAT#1{%
  \SC@calcwidths{#1}%
  \@FLOAT{\SC@captype}%
    \abovecaptionskip\z@skip
    \belowcaptionskip\z@skip
    \global\advance\c@SC@C\@ne
    \SC@orig@label{\SC@IDENT}% nicht \ref... !!!
    \isSC@WIDE%
      {\ifdim\SC@tempdimb>\textwidth % ???
         \isSC@ODD{\def\SC@hpos{l}}{\def\SC@hpos{r}}%
       \else%
         \def\SC@hpos{c}%
       \fi
       \@tempdimc\textwidth}% ???
      {\@tempdimc\SC@tempdima\def\SC@hpos{c}}%
    \makebox[\@tempdimc][\SC@hpos]{%
      \SC@FLOAT%
        {\minipage[\SC@vpos]{\SC@CAPWD}%
           %% \nointerlineskip %\offinterlineskip%
           %% \kern0pt\relax
           \hrule \@height\z@\@depth\z@  %%% Testen, Doku. (Implementierung) !!!
           %\show\SC@justify@caption
%%%           \tracingall\tracingonline=0
   \SC@justify
   \let\@arrayparboxrestore\relax % sonst Blocksatz! (\@parboxrestore)
   \let\usecaptionmargin\relax % sonst Pseudo-Blocksatz, nicht-alternierend!
%%%    A B C
\iffalse
          \endgraf
          \@makecaption{\csname fnum@\SC@captype\endcsname}%
              {\ignorespaces \SC@CAPtext}%
          \endgraf
\else
          % \ifthenelse{\equal{\SC@OPTCAPtext}{\@empty}}%
           \ifx\SC@OPTCAPtext\@empty% Noetig?
             \SC@orig@caption[\SC@CAPtext]%
                  {\strut\ignorespaces\SC@CAPtext\unskip\strut}% \expandafter\protect
           \else
             \SC@orig@caption[\SC@OPTCAPtext]% \expandafter\protect
                  {\strut\ignorespaces\SC@CAPtext\unskip\strut}% \expandafter\protect
           \fi
           \unskip% ??? Dok. !!!
           \ifx\SC@LABtext\@empty\else
             \SC@orig@label{\SC@LABtext}\fi%  \expandafter\protect
\fi
%%%    X Y Z
           \hrule \@height\z@\@depth\z@
         \endminipage}%
        {\minipage[\SC@vpos]{\SC@BOXWD}%
           %% \nointerlineskip %\offinterlineskip%
           %% \kern0pt\relax
           \hrule \@height\z@\@depth\z@
           \SC@justify@body
           \unhbox\SC@BOX % \strut \unhbox/\usebox{\SC@BOX}%  TESTEN!
           % \kern0pt\relax
           \hrule \@height\z@\@depth\z@
         \endminipage}%
    }%
  \end@FLOAT%
}
\InputIfFileExists{sidecap.cfg}{}{} % hier ? % 2002/06/14
\endinput
%%
%% End of file `sidecap.sty'.
