\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{nccsections}
         [2006/01/19 v1.01 Custom sectioning styles (NCC)]
%
% \changes{v1.00}{2006/01/01}{This version is uploaded to CTAN}
% \changes{v1.01}{2006/01/17}{addtopackage -> afterpackage}
% \changes{v1.01}{2006/01/19}{Add modification of \NCC@secflush hook}
%
\RequirePackage{afterpackage}
\RequirePackage{nccsect}[2006/01/19]
%
% The style parameter in section declaration commands is applied
% to the section text only
%
\DeclareOption{newsecstyle}{%
  \def\NCC@preparesectag#1#2{\def\NCC@makesectag##1{#1{#2##1\NCC@asecnum}}}
  \def\NCC@secttitle#1#2#3{#2#1{#3}}
  \let\NCC@secptitle\NCC@secttitle
  \let\NCC@secxtitle\NCC@secttitle
  \DeclareSection*1{section}{\Large\bff}%
                  {3.5ex \@plus 1ex \@minus .2ex}%
                  {2.3ex \@plus .2ex}{\Large\bff}
  \DeclareSection*2{subsection}{\large\bff}%
                  {3.25ex \@plus 1ex \@minus .2ex}%
                  {1.5ex \@plus .2ex}{\large\bff}
  \DeclareSection*3{subsubsection}{\normalsize\bff}%
                  {3ex \@plus 1ex \@minus .2ex}%
                  {1.5ex \@plus .2ex}{\normalsize\bff}
  \DeclareSection4{paragraph}{\normalsize\bff}%
                  {\NCC@runskip}{-1em}{\normalsize\bff}
  \DeclareSection5{subparagraph}[\parindent]{\normalsize\bff}%
                  {\NCC@runskip}{-1em}{\normalsize\bff}
  \AfterPackage{ncclatex}{%
    \ifNCC@small
      \DeclareSection*1{section}{\large\bff}%
                       {3.1ex \@plus 1ex \@minus .2ex}%
                       {1.5ex \@plus .2ex}{\large\bff}
      \DeclareSection*2{subsection}{\normalsize\bff}%
                       {2.7ex \@plus 1ex \@minus .2ex}%
                       {1.5ex \@plus .2ex}{\normalsize\bff}
      \DeclareSection*3{subsubsection}{\normalsize\bff\itshape}%
                       {\NCC@runskip}%
                       {1.5ex \@plus .2ex}{\normalsize\bff\itshape}
    \else
      \DeclareSection*1{section}{\Large\bff}%
                      {3.5ex \@plus 1ex \@minus .2ex}%
                      {2.3ex \@plus .2ex}{\Large\bff}
      \DeclareSection*2{subsection}{\large\bff}%
                      {3.1ex \@plus 1ex \@minus .2ex}%
                      {1.5ex \@plus .2ex}{\large\bff}
      \DeclareSection*3{subsubsection}{\normalsize\bff}%
                      {2.7ex \@plus 1ex \@minus .2ex}%
                      {1.5ex \@plus .2ex}{\normalsize\bff}
    \fi
    \DeclareSection4{paragraph}{\normalsize\bff}{\NCC@runskip}%
                    {-.6em \@plus -.2em \@minus -.1em}{\normalsize\bff}
    \DeclareSection5{subparagraph}[\parindent]{\normalsize\bff}{\NCC@runskip}%
                    {-.6em \@plus -.2em \@minus -.1em}{\normalsize\bff}
  }
}
%
% The style parameter in toc-entry declaration commands is applied
% to the toc-entry text only
%
\DeclareOption{newtocstyle}{%
  \let\NCC@tocnumprototype\@secondoftwo
  \def\NCC@nexttocnum#1#2{#1{#2\NCC@atocnum}}
  \def\NCC@preparetocnum#1#2{\def\NCC@maketocnum##1{#2{##1\NCC@atocnum}}}
  \def\NCC@tocentrytitle#1#2{%
    \def\@tempa##1{#1{\ignorespaces##1}}%
    \NCC@parsetocnum#2\NCC@do
  }
  \def\NCC@parsetocnum{\futurelet\@tempb\NCC@testtocnum}
  \def\NCC@testtocnum{%
    \ifx\@tempb\numberline
      \expandafter\NCC@gettocnum
    \else
      \expandafter\NCC@gettoctext
    \fi
  }
  \def\NCC@gettocnum#1#2{#1{#2}\NCC@gettoctext}
  \def\NCC@gettoctext#1\NCC@do{\@tempa{#1}}
  \@ifundefined{chapter}{%
    \DeclareTOCEntry0{\runinsectionskip\def\@dotsep{1000}}%
                     {\bff}{III}{\bff}[]
  }{%
    \DeclareTOCPart{\NCC@secskip{4ex \@plus .2ex}\def\@dotsep{1000}}%
                   {\large\bff}{II}{\large\bff}
    \DeclareTOCEntry0{\runinsectionskip\def\@dotsep{1000}%
                      \aftergroup\penalty\aftergroup\@highpenalty}%
                     {\bff}{9}{\bff}
  }
}
%
% A chapter tag goes inline with title
%
\DeclareOption{chapterinline}{%
  \@ifundefined{chapter}{\NCC@secoptionerror}{%
    \let\NCC@chap@@gobble\@empty
    \def\NCC@secflush{\NCC@secsave}
    \@ifpackagewith{nccsections}{newsecstyle}{%
      \def\NCC@makechaptitle#1#2#3{\NCC@chap@@gobble
        \ifx\NCC@sec@@main\@empty #1\@svsec \else \NCC@sec{\@svsec}#1\fi
        \interlinepenalty \@M #2{#3\@@par}%
      }
    }{%
      \def\NCC@makechaptitle#1#2#3{\NCC@chap@@gobble
        \ifx\NCC@sec@@main\@empty \def\NCC@sec@@main{#1\@svsec}\else
          \def\NCC@sec@@main{\protect\NCC@sec{\@svsec}#1}\fi
        #2{\NCC@sec@@main\interlinepenalty \@M #3\@@par}%
      }
    }
    \DeclareSection*0{chapter}{\huge\bff}{10ex}%
                     {8ex \@plus .2ex}{\huge\bff}
    \AfterPackage{ncclatex}{%
      \ifNCC@small
        \DeclareSection*0{chapter}{\Large\bff}{\z@}%
                         {6ex \@plus .2ex}{\Large\bff}
      \else
        \DeclareSection*0{chapter}{\LARGE\bff}{\z@}%
                         {8ex \@plus .2ex}{\LARGE\bff}
      \fi
    }
  }
}
%
% Chapter like a section
%
\DeclareOption{chaptersection}{%
  \@ifundefined{chapter}{\NCC@secoptionerror}{%
    \@ifpackagewith{nccsections}{chapterinline}{}{%
      \ExecuteOptions{chapterinline}%
    }
    \def\NCC@chap@@gobble{\let\@chapapp\@gobble}
    \AtBeginDocument{%
      \def\NCC@thetocchapter{\thechapter}
      \let\NCC@makechapfinal\NCC@makechapfinalgobble
    }
  }
}
%
% A part tag goes inline with title
%
\DeclareOption{partinline}{%
  \let\NCC@part@@gobble\@empty
  \@ifundefined{chapter}{%
    \def\NCC@secflush{\NCC@secsave}
    \@ifpackagewith{nccsections}{newsecstyle}{%
      \def\NCC@makeparttitle#1#2#3{\NCC@part@@gobble
        \ifx\NCC@sec@@main\@empty #1\@svsec \else \NCC@sec{\@svsec}#1\fi
        \interlinepenalty \@M #2{#3\@@par}%
      }
    }{%
      \def\NCC@makeparttitle#1#2#3{\NCC@part@@gobble
        \ifx\NCC@sec@@main\@empty \def\NCC@sec@@main{#1\@svsec}\else
          \def\NCC@sec@@main{\protect\NCC@sec{\@svsec}#1}\fi
        #2{\NCC@sec@@main\interlinepenalty \@M #3\@@par}%
      }
    }
    \DeclareSection*0{part}{\LARGE\bff}%
                     {5ex \@plus 1ex \@minus .2ex}%
                     {4ex \@plus .2ex}{\LARGE\bff}
    \AfterPackage{ncclatex}{%
      \ifNCC@small
        \DeclareSection*0{part}{\Large\bff}%
                         {4ex \@plus 1ex \@minus .2ex}%
                         {2.8ex \@plus .2ex}{\Large\bff}
      \else
        \DeclareSection*0{part}{\LARGE\bff}%
                         {5ex \@plus 1ex \@minus .2ex}%
                         {3.8ex \@plus .2ex}{\LARGE\bff}
      \fi
    }
  }{%
    \@ifpackagewith{nccsections}{newsecstyle}{%
      \def\NCC@makeparttitle#1#2#3{#1\NCC@part@@gobble
        \@svsec\interlinepenalty \@M #2{#3\@@par}%
      }
    }{%
      \def\NCC@makeparttitle#1#2#3{#1\NCC@part@@gobble
        #2{\@svsec\interlinepenalty \@M #3\@@par}%
      }
    }
    \DeclarePart{\StartFromTextArea\vfil\centering}%
                {\vfil\newpage \if@twoside\if@openright
                   \mbox{}\thispagestyle{empty}\newpage\fi\fi}%
                {\huge\bff}{\huge\bff}
    \AfterPackage{ncclatex}{%
      \ifNCC@small
        \DeclarePart{\StartFromTextArea\vspace{\stretch{.5}}\centering}
                    {\vfill\newpage}{\LARGE\bff}{\LARGE\bff}
      \else
        \DeclarePart{\StartFromTextArea\vspace{\stretch{.5}}\centering}
                    {\vfill\newpage}{\huge\bff}{\huge\bff}
      \fi
    }
  }
}
%
% Part like a section
%
\DeclareOption{partsection}{%
  \@ifpackagewith{nccsections}{partinline}{}{%
    \ExecuteOptions{partinline}%
  }
  \def\NCC@part@@gobble{\let\partname\@gobble}
  \@ifundefined{chapter}{}{%
    \AtBeginDocument{%
      \def\NCC@thetocpart{\thepart}
      \let\NCC@makepartfinal\NCC@makepartfinalgobble
    }
  }
}
\def\NCC@secoptionerror{%
  \PackageError{nccsections}%
    {Option `\CurrentOption' useful in book-like classes only}{}%
}
\@onlypreamble\NCC@secoptionerror
\ProcessOptions\relax
\endinput