%%% Copyright   Ulf A. Lindgren
%%%             Department of Applied Electronics
%%%             Chalmers University of Technology
%%%             S-412 96 Gothenburg, Sweden
%%%             E-mail lindgren@ae.chalmers.se
%%%
%%% Note        Permission is granted to modify this file under
%%%             the condition that it is saved using another
%%%             file and package name.
%%%
%%% Revision    1.1
%%%
%%%             Jan. 8th Modified package name base date option
%%%             Jan. 22th Modified FmN and FmTi for error in book.cls
%%%                  \MakeUppercase{#}->{\MakeUppercase#}
%%%             Apr. 6th Modified Lenny option to prevent undesired 
%%%                  skip of line.
%%%             Nov. 8th Fixed \@chapapp for AMS
%%%             Feb. 11th Fixed appendix problem related to Bjarne
%%% Last modified    Feb. 11th 1998

\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{fncychap}
             [1997/04/06 v1.11
                 LaTeX package (Revised chapters)]

%%%% DEFINITION OF Chapapp variables
\newcommand{\CNV}{\huge\bfseries}
\newcommand{\ChNameVar}[1]{\renewcommand{\CNV}{#1}}


%%%% DEFINITION OF TheChapter variables
\newcommand{\CNoV}{\huge\bfseries}
\newcommand{\ChNumVar}[1]{\renewcommand{\CNoV}{#1}}

\newif\ifUCN
\UCNfalse
\newif\ifLCN
\LCNfalse
\def\ChNameLowerCase{\LCNtrue\UCNfalse}
\def\ChNameUpperCase{\UCNtrue\LCNfalse}
\def\ChNameAsIs{\UCNfalse\LCNfalse}

%%%%% Fix for AMSBook 971008

\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}


%%%%% Fix for Bjarne and appendix 980211

\newif\ifinapp
\inappfalse
\renewcommand\appendix{\par
  \setcounter{chapter}{0}%
  \setcounter{section}{0}%
  \inapptrue%
  \renewcommand\@chapapp{\appendixname}%
  \renewcommand\thechapter{\@Alph\c@chapter}}

%%%%%

\newcommand{\FmN}[1]{%
\ifUCN
   {\MakeUppercase#1}\LCNfalse
\else
   \ifLCN
      {\MakeLowercase#1}\UCNfalse
   \else #1
   \fi
\fi}


%%%% DEFINITION OF Title variables
\newcommand{\CTV}{\Huge\bfseries}
\newcommand{\ChTitleVar}[1]{\renewcommand{\CTV}{#1}}

%%%% DEFINITION OF the basic rule width
\newlength{\RW}
\setlength{\RW}{1pt}
\newcommand{\ChRuleWidth}[1]{\setlength{\RW}{#1}}

\newif\ifUCT
\UCTfalse
\newif\ifLCT
\LCTfalse
\def\ChTitleLowerCase{\LCTtrue\UCTfalse}
\def\ChTitleUpperCase{\UCTtrue\LCTfalse}
\def\ChTitleAsIs{\UCTfalse\LCTfalse}
\newcommand{\FmTi}[1]{%
\ifUCT

   {\MakeUppercase#1}\LCTfalse
\else
   \ifLCT
      {\MakeLowercase#1}\UCTfalse
   \else #1
   \fi
\fi}



\newlength{\mylen}
\newlength{\myhi}
\newlength{\px}
\newlength{\py}
\newlength{\pyy}
\newlength{\pxx}


\def\mghrulefill#1{\leavevmode\leaders\hrule\@height #1\hfill\kern\z@}

\newcommand{\DOCH}{%
  \CNV\FmN{\@chapapp}\space \CNoV\thechapter
  \par\nobreak
  \vskip 20\p@
  }
\newcommand{\DOTI}[1]{%
    \CTV\FmTi{#1}\par\nobreak
    \vskip 40\p@
    }
\newcommand{\DOTIS}[1]{%
    \CTV\FmTi{#1}\par\nobreak
    \vskip 40\p@
    }

%%%%%% SONNY DEF

\DeclareOption{Sonny}{%
  \ChNameVar{\Large\sf}
  \ChNumVar{\Huge}
  \ChTitleVar{\Large\sf}
  \ChRuleWidth{0.5pt}
  \ChNameUpperCase
  \renewcommand{\DOCH}{%
    \raggedleft
    \CNV\FmN{\@chapapp}\space \CNoV\thechapter
    \par\nobreak
    \vskip 40\p@}
  \renewcommand{\DOTI}[1]{%
    \CTV\raggedleft\mghrulefill{\RW}\par\nobreak
    \vskip 5\p@
    \CTV\FmTi{#1}\par\nobreak
    \mghrulefill{\RW}\par\nobreak
    \vskip 40\p@}
  \renewcommand{\DOTIS}[1]{%
    \CTV\raggedleft\mghrulefill{\RW}\par\nobreak
    \vskip 5\p@
    \CTV\FmTi{#1}\par\nobreak
    \mghrulefill{\RW}\par\nobreak
    \vskip 40\p@}
}

%%%%%% LENNY DEF

\DeclareOption{Lenny}{%

  \ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont}
  \ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont}
  \ChTitleVar{\Huge\bfseries\rm}
  \ChRuleWidth{1pt}
  \renewcommand{\DOCH}{%
    \settowidth{\px}{\CNV\FmN{\@chapapp}}
    \addtolength{\px}{2pt}
    \settoheight{\py}{\CNV\FmN{\@chapapp}}
    \addtolength{\py}{1pt}

    \settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter}
    \addtolength{\mylen}{1pt}
    \settowidth{\pxx}{\CNoV\thechapter}
    \addtolength{\pxx}{-1pt}

    \settoheight{\pyy}{\CNoV\thechapter}
    \addtolength{\pyy}{-2pt}
    \setlength{\myhi}{\pyy}
    \addtolength{\myhi}{-1\py}
    \par
    \parbox[b]{\textwidth}{%
    \rule[\py]{\RW}{\myhi}%
    \hskip -\RW%
    \rule[\pyy]{\px}{\RW}%
    \hskip -\px%
    \raggedright%
    \CNV\FmN{\@chapapp}\space\CNoV\thechapter%
    \hskip1pt%
    \mghrulefill{\RW}%
    \rule{\RW}{\pyy}\par\nobreak%
    \vskip -\baselineskip%
    \vskip -\pyy%
    \hskip \mylen%
    \mghrulefill{\RW}\par\nobreak%
    \vskip \pyy}%
    \vskip 20\p@}
 

  \renewcommand{\DOTI}[1]{%
    \raggedright
    \CTV\FmTi{#1}\par\nobreak
    \vskip 40\p@}

  \renewcommand{\DOTIS}[1]{%
    \raggedright
    \CTV\FmTi{#1}\par\nobreak
    \vskip 40\p@}
 }


%%%%%%% GLENN DEF


\DeclareOption{Glenn}{%
  \ChNameVar{\bfseries\Large\sf}
  \ChNumVar{\Huge}
  \ChTitleVar{\bfseries\Large\rm}
  \ChRuleWidth{1pt}
  \ChNameUpperCase
  \ChTitleUpperCase
  \renewcommand{\DOCH}{%
    \settoheight{\myhi}{\CTV\FmTi{Test}}
    \setlength{\py}{\baselineskip}
    \addtolength{\py}{\RW}
    \addtolength{\py}{\myhi}
    \setlength{\pyy}{\py}
    \addtolength{\pyy}{-1\RW}
     
    \raggedright
    \CNV\FmN{\@chapapp}\space\CNoV\thechapter
    \hskip 3pt\mghrulefill{\RW}\rule[-1\pyy]{2\RW}{\py}\par\nobreak}

  \renewcommand{\DOTI}[1]{%
    \addtolength{\pyy}{-4pt}
    \settoheight{\myhi}{\CTV\FmTi{#1}}
    \addtolength{\myhi}{\py}
    \addtolength{\myhi}{-1\RW}
    \vskip -1\pyy
    \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
    \raggedleft\CTV\FmTi{#1}\par\nobreak
    \vskip 80\p@}

  \renewcommand{\DOTIS}[1]{%
    \setlength{\py}{10pt}
    \setlength{\pyy}{\py}
    \addtolength{\pyy}{\RW}
    \setlength{\myhi}{\baselineskip}
    \addtolength{\myhi}{\pyy}
    \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak
%    \addtolength{}{}
\vskip -1\baselineskip
    \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
    \raggedleft\CTV\FmTi{#1}\par\nobreak
    \vskip 60\p@}
  }

%%%%%%% CONNY DEF

\DeclareOption{Conny}{%
  \ChNameUpperCase
  \ChTitleUpperCase  
  \ChNameVar{\centering\Huge\rm\bfseries}
  \ChNumVar{\Huge}
  \ChTitleVar{\centering\Huge\rm}
  \ChRuleWidth{2pt}

  \renewcommand{\DOCH}{%
    \mghrulefill{3\RW}\par\nobreak
    \vskip -0.5\baselineskip
    \mghrulefill{\RW}\par\nobreak
    \CNV\FmN{\@chapapp}\space \CNoV\thechapter
    \par\nobreak
    \vskip -0.5\baselineskip
   }
  \renewcommand{\DOTI}[1]{%
    \mghrulefill{\RW}\par\nobreak
    \CTV\FmTi{#1}\par\nobreak
    \vskip 60\p@
    }
  \renewcommand{\DOTIS}[1]{%
    \mghrulefill{\RW}\par\nobreak
    \CTV\FmTi{#1}\par\nobreak
    \vskip 60\p@
    }
  }

%%%%%%% REJNE DEF

\DeclareOption{Rejne}{%

  \ChNameUpperCase
  \ChTitleUpperCase  
  \ChNameVar{\centering\Large\rm}
  \ChNumVar{\Huge}
  \ChTitleVar{\centering\Huge\rm}
  \ChRuleWidth{1pt}
  \renewcommand{\DOCH}{%
    \settoheight{\py}{\CNoV\thechapter}
    \addtolength{\py}{-1pt}
    \CNV\FmN{\@chapapp}\par\nobreak
    \vskip 20\p@
    \setlength{\myhi}{2\baselineskip}
    \setlength{\px}{\myhi}
    \addtolength{\px}{-1\RW}
    \rule[-1\px]{\RW}{\myhi}\mghrulefill{\RW}\hskip
    10pt\raisebox{-0.5\py}{\CNoV\thechapter}\hskip
10pt\mghrulefill{\RW}\rule[-1\px]{\RW}{\myhi}\par\nobreak
     \vskip -1\p@
    }
  \renewcommand{\DOTI}[1]{%
    \setlength{\mylen}{\textwidth}
    \addtolength{\mylen}{-2\RW}
    {\vrule width\RW}\parbox{\mylen}{\CTV\FmTi{#1}}{\vrule
width\RW}\par\nobreak
    \vskip
-1pt\rule{\RW}{2\baselineskip}\mghrulefill{\RW}\rule{\RW}{2\baselineskip}
    \vskip 60\p@
    }
  \renewcommand{\DOTIS}[1]{%
    \setlength{\py}{\fboxrule}
    \setlength{\fboxrule}{\RW}
    \setlength{\mylen}{\textwidth}
    \addtolength{\mylen}{-2\RW}
    \fbox{\parbox{\mylen}{\vskip
2\baselineskip\CTV\FmTi{#1}\par\nobreak\vskip \baselineskip}} 
    \setlength{\fboxrule}{\py}
    \vskip 60\p@
    }
  }


%%%%%%% BJARNE DEF

\DeclareOption{Bjarne}{%
  \ChNameUpperCase
  \ChTitleUpperCase  
  \ChNameVar{\raggedleft\normalsize\rm}
  \ChNumVar{\raggedleft \bfseries\Large}
  \ChTitleVar{\raggedleft \Large\rm}
  \ChRuleWidth{1pt}


%% Note thechapter -> c@chapter fix appendix bug

  \newcounter{AlphaCnt}
  \newcounter{AlphaDecCnt}
  \newcommand{\AlphaNo}{%
    \ifcase\number\theAlphaCnt
      \ifnum\c@chapter=0
        ZERO\else{}\fi
    \or ONE\or TWO\or THREE\or FOUR\or FIVE
    \or SIX\or SEVEN\or EIGHT\or NINE\or TEN
    \or ELEVEN\or TWELV\or THIRTEEN\or FOURTEEN\or FIFTEEN
    \or SIXTEEN\or SEVENTEEN\or EIGHTEEN\or NINETEEN\fi
}

  \newcommand{\AlphaDecNo}{%
    \setcounter{AlphaDecCnt}{0}
    \@whilenum\number\theAlphaCnt>0\do
      {\addtocounter{AlphaCnt}{-10}
       \addtocounter{AlphaDecCnt}{1}}
     \ifnum\number\theAlphaCnt=0
     \else
       \addtocounter{AlphaDecCnt}{-1}
       \addtocounter{AlphaCnt}{10}
     \fi
     
     
    \ifcase\number\theAlphaDecCnt\or TEN\or TWENTY\or THIRTY\or
    FORTY\or FIFTY\or SIXTY\or SEVENTY\or EIGHTY\or NINETY\fi
    }
  \newcommand{\TheAlphaChapter}{%
    
    \ifinapp 
      \thechapter
    \else
      \setcounter{AlphaCnt}{\c@chapter}
      \ifnum\c@chapter<20
        \AlphaNo
      \else
        \AlphaDecNo\AlphaNo
      \fi
    \fi
    }  
  \renewcommand{\DOCH}{%
    \mghrulefill{\RW}\par\nobreak
    \CNV\FmN{\@chapapp}\par\nobreak 
    \CNoV\TheAlphaChapter\par\nobreak
    \vskip -1\baselineskip\vskip 5pt\mghrulefill{\RW}\par\nobreak
    \vskip 20\p@
    }
  \renewcommand{\DOTI}[1]{%
    \CTV\FmTi{#1}\par\nobreak
    \vskip 40\p@
    }
  \renewcommand{\DOTIS}[1]{%
    \CTV\FmTi{#1}\par\nobreak
    \vskip 40\p@
    }
}

\DeclareOption*{%
  \PackageWarning{fancychapter}{unknown style option}
  }

\ProcessOptions* \relax

\def\@makechapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@ \raggedright \normalfont
    \ifnum \c@secnumdepth >\m@ne
      \DOCH
    \fi
    \interlinepenalty\@M
    \DOTI{#1}
  }}
\def\@schapter#1{\if@twocolumn
                   \@topnewpage[\@makeschapterhead{#1}]%
                 \else
                   \@makeschapterhead{#1}%
                   \@afterheading
                 \fi}
\def\@makeschapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@ \raggedright
    \normalfont
    \interlinepenalty\@M
    \DOTIS{#1}
    \vskip 40\p@
  }}

\endinput


