%%
%% This is file `formular.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% formular.dtx 
%% 
%% IMPORTANT NOTICE:
%% 
%% For the copyright see the source file.
%% 
%% Any modified versions of this file must be renamed
%% with new filenames distinct from formular.sty.
%% 
%% For distribution of the original source see the terms
%% for copying and modification in the file formular.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.)
\def\fileversion{v1.0 (c) 2001 by Hans-Christoph Wirth}
\def\filedate{2001/04/05}
%%
%% Copyright 2001 Hans-Christoph Wirth (hcw@gmx.de)
%%
%% This program/package 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 available at
%%   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.
%%
%% The quintessence of LPPL is:
%% - Distribute the package only in its full contents
%% - If you modify any files, rename them before
%%
%% This program/package consists of the files
%%   formular.ins  (driver file)
%%   formular.dtx  (source and documentation)
%%   formular.sty  (actual style file, generated)
%%   formular.dvi  (documentation, generated)
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{formular}[\filedate \space \fileversion]

\RequirePackage{xspace}
\def\FRM@err{\PackageError{formular}}
\def\FRM@warn{\PackageWarning{formular}}

\newlength\frm@margin
\newlength\frm@baselineskip
\newbox\frm@namebx
\newbox\frm@contbx
\newcount\frm@cnt
\newcount\frm@lbound
\newif\iffrm@breakstyle
\newif\iffrm@ruledstyle

\newcommand{\FRM@generatesetcommand}[1]{%
  \expandafter
  \newcommand\expandafter{\csname setFRM#1\endcsname}[2][]{%
    \ifx##1\relax\relax
      \expandafter\def\csname frm@#1\endcsname{##2}\else
      \@ifundefined{frm@##1@content}
        {\FRM@err{FRMfield `##1' not declared.}}{%
      \expandafter\def\csname frm@##1@#1\endcsname{##2}}\fi
    }
  }
\newcommand{\FRM@generatesetstylecommand}[3]{%
  \expandafter
  \newcommand\expandafter{\csname setFRM#1style\endcsname}[1][]{%
    \ifx##1\relax\relax
      \csname frm@#2style#3\endcsname \else
      \@ifundefined{frm@##1@content}
        {\FRM@err{FRMfield `##1' not declared.}}{%
      \expandafter\let\csname iffrm@##1@#2style\expandafter
        \endcsname \csname if#3\endcsname }\fi
    }
  }
\newcommand{\FRM@generatesetlengthcommand}[1]{%
  \expandafter
  \newcommand\expandafter{\csname setFRM#1\endcsname}[2][]{%
    \ifx##1\relax\relax
      \csname frm@#1\endcsname=##2\relax \else
      \@ifundefined{frm@##1@content}
        {\FRM@err{FRMfield `##1' not declared.}}{%
      \expandafter\def\csname frm@##1@#1\endcsname{##2}}\fi
    }
  }

\FRM@generatesetcommand{content}
\FRM@generatesetcommand{description}
\FRM@generatesetcommand{rulewidth}
\setFRMrulewidth{0.1pt}
\FRM@generatesetcommand{rulesep}
\setFRMrulesep{2pt}

\FRM@generatesetstylecommand{plain}{ruled}{false}
\FRM@generatesetstylecommand{ruled}{ruled}{true}
\def\frm@width{0pt}

\FRM@generatesetlengthcommand{margin}
\setFRMmargin{5pt}
\FRM@generatesetlengthcommand{baselineskip}
\setFRMbaselineskip{18pt}
\FRM@generatesetstylecommand{break}{break}{true}
\FRM@generatesetstylecommand{inline}{break}{false}
\frm@lbound=0

\FRM@generatesetcommand{fontencoding}
\FRM@generatesetcommand{fontsize}
\FRM@generatesetcommand{fontfamily}
\FRM@generatesetcommand{fontseries}
\FRM@generatesetcommand{fontshape}
\setFRMfontencoding{T1}
\setFRMfontsize{10}
\setFRMfontfamily{cmtt}
\setFRMfontseries{m}
\setFRMfontshape{n}

\FRM@generatesetcommand{dfontencoding}
\FRM@generatesetcommand{dfontsize}
\FRM@generatesetcommand{dfontfamily}
\FRM@generatesetcommand{dfontseries}
\FRM@generatesetcommand{dfontshape}
\setFRMdfontencoding{T1}
\setFRMdfontsize{6}
\setFRMdfontfamily{cmss}
\setFRMdfontseries{m}
\setFRMdfontshape{n}

\newcommand{\FRM@storeappearance}[1]{%
  \expandafter\let\csname frm@#1@content\endcsname \frm@content
  \expandafter\let\csname frm@#1@description\endcsname \frm@description
  \expandafter\let\csname iffrm@#1@breakstyle\endcsname \iffrm@breakstyle
  \expandafter\let\csname iffrm@#1@ruledstyle\endcsname \iffrm@ruledstyle
  \expandafter\let\csname frm@#1@width\endcsname \frm@width
  \expandafter\let\csname frm@#1@rulewidth\endcsname \frm@rulewidth
  \expandafter\let\csname frm@#1@rulesep\endcsname \frm@rulesep
  \expandafter\edef\csname frm@#1@lbound\endcsname{\the\frm@lbound}
  \expandafter\edef\csname frm@#1@baselineskip\endcsname{\the\frm@baselineskip}
  \expandafter\edef\csname frm@#1@margin\endcsname{\the\frm@margin}
  \expandafter\let\csname frm@#1@fontfamily\endcsname \frm@fontfamily
  \expandafter\let\csname frm@#1@fontseries\endcsname \frm@fontseries
  \expandafter\let\csname frm@#1@fontsize\endcsname \frm@fontsize
  \expandafter\let\csname frm@#1@fontshape\endcsname \frm@fontshape
  \expandafter\let\csname frm@#1@fontencoding\endcsname \frm@fontencoding
  \expandafter\let\csname frm@#1@dfontfamily\endcsname \frm@dfontfamily
  \expandafter\let\csname frm@#1@dfontseries\endcsname \frm@dfontseries
  \expandafter\let\csname frm@#1@dfontsize\endcsname \frm@dfontsize
  \expandafter\let\csname frm@#1@dfontshape\endcsname \frm@dfontshape
  \expandafter\let\csname frm@#1@dfontencoding\endcsname \frm@dfontencoding
  }
\newcommand{\FRM@restoreappearance}[1]{%
  \expandafter\let\expandafter\frm@content
    \csname frm@#1@content\endcsname
  \expandafter\let\expandafter\frm@description
    \csname frm@#1@description\endcsname
  \expandafter\let\expandafter\iffrm@breakstyle
    \csname iffrm@#1@breakstyle\endcsname
  \expandafter\let\expandafter \iffrm@ruledstyle
    \csname iffrm@#1@ruledstyle\endcsname
  \expandafter\let\expandafter\frm@width
    \csname frm@#1@width\endcsname
  \expandafter\let\expandafter\frm@rulewidth
    \csname frm@#1@rulewidth\endcsname
  \expandafter\let\expandafter\frm@rulesep
    \csname frm@#1@rulesep\endcsname
  \expandafter
    \frm@lbound\expandafter=\csname frm@#1@lbound\endcsname
  \expandafter
    \frm@baselineskip=\csname frm@#1@baselineskip\endcsname
  \expandafter
    \frm@margin=\csname frm@#1@margin\endcsname
  \expandafter\let\expandafter\frm@fontencoding
    \csname frm@#1@fontencoding\endcsname
  \expandafter\let\expandafter\frm@fontseries
    \csname frm@#1@fontseries\endcsname
  \expandafter\let\expandafter\frm@fontshape
    \csname frm@#1@fontshape\endcsname
  \expandafter\let\expandafter\frm@fontsize
    \csname frm@#1@fontsize\endcsname
  \expandafter\let\expandafter\frm@fontfamily
    \csname frm@#1@fontfamily\endcsname
  \expandafter\let\expandafter\frm@dfontencoding
    \csname frm@#1@dfontencoding\endcsname
  \expandafter\let\expandafter\frm@dfontseries
    \csname frm@#1@dfontseries\endcsname
  \expandafter\let\expandafter\frm@dfontshape
    \csname frm@#1@dfontshape\endcsname
  \expandafter\let\expandafter\frm@dfontsize
    \csname frm@#1@dfontsize\endcsname
  \expandafter\let\expandafter\frm@dfontfamily
    \csname frm@#1@dfontfamily\endcsname
  }

\newcommand{\FRM@selectfont}{%
  \fontsize{\frm@fontsize}{\the\frm@baselineskip}%
  \usefont{\frm@fontencoding}{\frm@fontfamily}
    {\frm@fontseries}{\frm@fontshape}%
}
\newcommand{\FRM@selectdfont}{%
  \fontsize{\frm@dfontsize}{\the\frm@baselineskip}%
  \usefont{\frm@dfontencoding}{\frm@dfontfamily}
    {\frm@dfontseries}{\frm@dfontshape}%
}

\newcommand{\newFRMfield}[1]{%
  \@ifundefined{frm@#1@content}
    {\new@FRMfield{#1}}{\FRM@err{cannot
        \string\new... existing field `#1'}}
}
\newcommand{\renewFRMfield}[1]{%
  \@ifundefined{frm@#1@content}
    {\FRM@err{cannot \string\renew... undeclared
        field `#1'}}{\new@FRMfield{#1}}
}
\def\new@FRMfield#1#2{%
  \@ifnextchar[%]
  {\new@FRMfield@{#1}{#2}}{\new@FRMfield@@{#1}{#2}[][]}}
\def\new@FRMfield@#1#2[#3]{%
  \@ifnextchar[%]
  {\new@FRMfield@@{#1}{#2}[#3]}{\new@FRMfield@@{#1}{#2}[#3][]}}
\def\new@FRMfield@@#1#2[#3][#4]{%
  \def\frm@width{#2}
  \def\frm@description{#3}
  \def\frm@content{#4}
  \FRM@storeappearance{#1}
  \new@FRMcontainerhook{#1}
}

\let\new@FRMcontainerhook\@gobble
\def\new@FRMfieldspecials#1{%
  \expandafter\def\csname set#1\endcsname##1{\setFRMcontent[#1]{##1}}
}

\newcommand{\useFRMfield}[1]{%
  \@ifundefined{frm@#1@content}
    {\FRM@err{FRMfield `#1' is not declared.}}
    {\use@FRMfield{#1}}
}
\def\use@FRMfield#1{%
  \@ifnextchar[%]
    {\use@FRMfield@{#1}}
    {\use@FRMfield@{#1}[\csname frm@#1@content\endcsname]\xspace}
}
\def\use@FRMfield@#1[#2]{\begingroup
  \FRM@restoreappearance{#1}%
  \setbox\frm@contbx=\hbox{%
    \FRM@selectfont
    \kern\frm@margin #2\kern\frm@margin}%
  \dp\frm@contbx0pt\relax
  \leavevmode
  \vtop to \frm@rulesep{%
    \halign{\hfil##\hfil\cr
      \usebox{\frm@contbx}\cr
      \noalign{\kern\frm@rulesep
        \iffrm@ruledstyle
          \dimen0=\frm@fontsize pt\dimen2=0pt\relax
          \loop
          \kern-2pt\advance\dimen2 by 2pt%
          \hrule height\frm@rulewidth \kern-\frm@rulewidth
          \advance\dimen0 by-2pt%
          \ifnum\dimen0>0%
          \repeat
          \kern\dimen2\relax
        \fi
        \hrule height\frm@rulewidth depth0pt \kern2pt}%
      \FRM@selectdfont \frm@description\cr
      \vrule width \frm@width height 0pt\cr}\vss
    }\endgroup
  }

\newcommand{\newFRMenvironment}[3]{%
  \def\frm@description{#2}%
  \frm@lbound=#3\relax
  \FRM@storeappearance{env@#1}%
  \newenvironment{#1}{%
    \FRM@restoreappearance{env@#1}%
    \@ifnextchar[%]
      {\FRM@openenvironment}
      {\FRM@openenvironment[\the\frm@lbound]}%
    }{%
    \FRM@closeenvironment%
    }%
}
\def\FRM@openenvironment[#1]{%
  \frm@lbound=#1\relax
  \setbox\frm@namebx\hbox
      \iffrm@breakstyle to\hsize\fi
    {\frm@description\enspace
     \skip0=\frm@baselineskip \advance\skip0-\frm@rulesep
     \vrule width0pt height \skip0\hfil}%
  \setbox\frm@contbx=\vtop\bgroup
  \advance\hsize-2\frm@margin
  \hskip-\frm@margin
  \hskip\wd\frm@namebx
  \hskip-\frm@margin\penalty0\relax
  \hskip2\frm@margin
  \FRM@selectfont
  }
\newcommand{\FRM@closeenvironment}{%
  \par\egroup
  \frm@cnt=\dp\frm@contbx
  \dimen0=\frm@baselineskip
  \divide\frm@cnt\dimen0\relax
  \leavevmode\rlap{\dp\frm@contbx0pt \kern\frm@margin \usebox\frm@contbx}%
  \raise-\frm@rulesep\vtop{%
    \hbox to\hsize{%
      \dp\frm@namebx0pt%
      \raise\frm@rulesep\hbox{\usebox{\frm@namebx}}\leaders \hrule
      height \frm@rulewidth \hfill}
    \iffrm@breakstyle\else \advance\frm@lbound-1\fi\relax
    \ifnum\frm@cnt>\frm@lbound\relax
    \@tempcnta\frm@cnt \advance\@tempcnta-\frm@lbound\relax
    \FRM@warn{Line bound in FRMenvironment exceeded by
      \the\@tempcnta\space line(s)}
    \else \frm@cnt\frm@lbound \fi
    \loop
    \ifnum\frm@cnt>0\relax
    \advance\frm@cnt-1\relax
    \kern\frm@baselineskip \kern-\frm@rulewidth
    \hrule height \frm@rulewidth\relax
    \repeat
    }%
  }

\long\def\newFRMcontainer#1#2#3{%
  \FRM@storeappearance{con@#1}%
  \newenvironment{#1}{%
    \let\new@FRMcontainerhook=\new@FRMfieldspecials
    \FRM@restoreappearance{con@#1}#2}{#3}
}

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