%%% ====================================================================
%%%  @LaTeX-style-file{
%%%     author          = "Enrico Bertolazzi",
%%%     version         = "1.0",
%%%     date            = "13-JUN-2001",
%%%     filename        = "easybmat.sty",
%%%     address         = "Laboratorio di Matematica Applicata
%%%                        e Meccanica Strutturale,
%%%                        Trento University,
%%%                        Via Mesiano, Trento, Italy",
%%%     FAX             = "+39 (461) 882599",
%%%     email           = "enrico.bertolazzi@ing.unitn.it (Internet)",
%%%     supported       = "yes. Please send comments via E-mail",
%%%     docstring       = "package for easy typing block matrices."
%%%
%%% INSTALLATION:
%%%   Put this file where your TeX looks for inputs.
%%%
%%% DOCUMENTATION:
%%%   Compile docbmat.tex.
%%%
%%%   Copyright  1999 Enrico Bertolazzi
%%%
%%%   This program can be redistributed and/or modified under the terms
%%%   of the LaTeX Project Public License Distributed from CTAN
%%%   archives in directory macros/latex/base/lppl.txt; either
%%%   version 1 of the License, or any later version.
%%%
%%%  }
%%% ====================================================================%%%
%%%       ___    ____  ___   _   _         ___    ____  ___   _   _     %%%
%%%      /   \  /     /   \  \  /         /   \  /     /   \  \  /      %%%
%%%     /____/ /__   /____/   \/         /____/ /__   /____/   \/       %%%
%%%    /   \  /     /  \      /         /   \  /     /  \      /        %%%
%%%   /____/ /____ /    \    /         /____/ /____ /    \    /         %%%
%%% ====================================================================%%%
%%% v 1.0 13-JUN-2001 changed \@roman with \romannumeral (thanks to Claudio Beccari) 
\def\filedate{2001/06/13}
\def\fileversion{v1.0}
\typeout{Document Style `easybmat'  \fileversion\space<\filedate>.}
%% BEGIN easybmat.sty
%%

\NeedsTeXFormat{LaTeX2e}
\RequirePackage{easy}
\ProvidesPackage{easybmat}[\filedate\space\fileversion]

\DeclareOption{thinlines}{%
   \@bmat@size@rule=.7pt\relax
   \@bmat@size@dash=.5pt\relax
}

\DeclareOption{thiklines}{%
   \@bmat@size@rule=1.5pt\relax
   \@bmat@size@dash=1.2pt\relax
}

\DeclareOption{thicklines}{%
   \@bmat@size@rule=1.5pt\relax
   \@bmat@size@dash=1.2pt\relax
}

\newdimen\@bmat@size@rule\@bmat@size@rule=1pt\relax
\newdimen\@bmat@size@dash\@bmat@size@dash=.7pt\relax

\ProcessOptions

\@easy@disable@space

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\def\@bmat@addcol{\g@addto@macro\@bmat@preamble{$\displaystyle{##}$&}}
\def\@bmat@make@preamble{%
   \@easy@let(@easy@align){@easy@col@align\romannumeral\@easy@level}%
   \@easy@let(@easy@rules){@easy@col@rules\romannumeral\@easy@level}%
   \gdef\@bmat@preamble{%
       \vbox\bgroup\lineskip\z@skip%
                   \tabskip\z@skip%
                   \baselineskip\z@skip%
                   \everycr{}\halign\bgroup}%
   \@easy@rotate\@easy@align%
   \loop%
      \@easy@rotate\@easy@align%
      \edef\@tempa{\@easy@firstchar\@easy@align}%
   \expandafter\ifx\@tempa`\relax\else%
      \@bmat@addcol%
   \repeat%
   \g@addto@macro\@bmat@preamble{$\displaystyle{##}$\crcr}
}


\def\BMAT{\advance\@easy@level\@ne\@easy@ifnextchar({\@BMAT}{\@BMAT(@)}}
\def\@BMAT(#1){
    \def\@bmat@split##1,##2,##3,##4\end{
       \@easy@xdef(@bmat@balance\romannumeral\@easy@level){##1}%
       \global\@nameuse{@easy@minx\romannumeral\@easy@level}=##2
       \global\@nameuse{@easy@miny\romannumeral\@easy@level}=##3
    }
    \expandafter\@bmat@split#1,\z@,\z@, \end
    \@@BMAT}
    
\def\@@BMAT{\@easy@ifnextchar[{\@@@BMAT}{\@@@BMAT[2pt]}}

\def\@@@BMAT[#1]#2#3{
    \def\@bmat@split##1,##2,##3,##4\end{
       \@easy@xdef(@bmat@spread\romannumeral\@easy@level){##1}%
       \global\@nameuse{@easy@maxx\romannumeral\@easy@level}=##2
       \global\@nameuse{@easy@maxy\romannumeral\@easy@level}=##3
    }
    \expandafter\@bmat@split#1,\z@,\z@, \end
	\@easy@parse@cols{#2}
	\@easy@parse@rows{#3}%
	\@bmat@make@preamble%
    \def\\{\crcr}%
    \global\let\@easy@path\@empty%
 	\setbox\@nameuse{@easy@box\romannumeral\@easy@level}\@bmat@preamble%
}
\def\endBMAT{%
	\crcr\egroup\egroup%
    \@easy@glet(@easy@mainbox)   {@easy@box\romannumeral\@easy@level}%
    \@easy@glet(@easy@col@align) {@easy@col@align\romannumeral\@easy@level}%
    \@easy@glet(@easy@col@rules) {@easy@col@rules\romannumeral\@easy@level}%
    \@easy@glet(@easy@row@align) {@easy@row@align\romannumeral\@easy@level}%
    \@easy@glet(@easy@row@rules) {@easy@row@rules\romannumeral\@easy@level}%
    \@easy@glet(@easy@minx)      {@easy@minx\romannumeral\@easy@level}%
    \@easy@glet(@easy@miny)      {@easy@miny\romannumeral\@easy@level}%
    \@easy@glet(@easy@maxx)      {@easy@maxx\romannumeral\@easy@level}%
    \@easy@glet(@easy@maxy)      {@easy@maxy\romannumeral\@easy@level}%
    %
    \@easy@glet(@easy@balance)   {@bmat@balance\romannumeral\@easy@level}%
    \@easy@glet(@easy@spread)    {@bmat@spread\romannumeral\@easy@level}%
    %
    \global\let\@easy@size@dash\@bmat@size@dash
    \global\let\@easy@size@rule\@bmat@size@rule
    %
    \@easy@evaldim%
%     \typeout{Easybmat [row:\the\@easy@nrow,col:\the\@easy@ncol]}
    \@easy@balance@row@col%
    \@easy@buildbox%
    \@easy@vlines%
    \@easy@hlines%
	\vcenter{\hbox{\rlap{\box\@ne}
	               \rlap{\box\tw@}
	               \ifx\@easy@path\@empty\else\@easy@dopath\rlap{\box\thr@@}\fi
	               \box\@easy@mainbox}}%
    \advance\@easy@level\m@ne%
}

\@easy@enable@space

\endinput
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
