\def\fileversion{v28href}
\def\filedate{1999/05/17}
% minitoc-hyper.sty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Jean-Pierre Drucbert
% ONERA/CERT/GPI
% Office National d'\'Etudes et de Recherches A\'erospatiales
% Centre d'\'Etudes et de Recherches de Toulouse
% Groupe de Prestations Informatiques
% Complexe Scientifique de Rangueil
% 2, Avenue \'Edouard Belin
% BP 4025
% F-31055 TOULOUSE CEDEX
% FRANCE
%
% Phone +33-62-25-25-15
%
% Email: drucbert@onecert.fr
%
% Please send me any (constructive) suggestions and comments.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Temporarily patched by Bernd Jaehne [Bernd.Jaehne@aeon.de] 
% and Didier Verna [verna@inf.enst.fr] to
% work with hyperref.sty from s.rahtz@elsevier.co.uk
% using input from Tony Roberts [aroberts@usq.edu.au]
% For changes see comments %%BJ and %DV
%
% However: this patch works only when  hyperref.sty is used,
% otherwise errors occur. Thus it may be advisable to add code
% so that minitoc runs both in standard and hyperref mode.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% History (contains some obsolete things... it is NOT
% the REAL documentation)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% minitoc.sty --- redefines the \chapter command to display a
%  mini-table-of-contents at the beginning of every chapter.
%  Oct-90       Original version, by Nigel Ward.
%  Nov-91       Revised to reuse \chapter, \section, \subsection commands
%               transparently, generate toc-file-name automatically,
%               assorted other cleanup.  Dan Jurafsky
%  Jun/Jul-93   New design, to avoid allocating a newwrite
%               for each chapter (!)
%               Added \chapterend to terminate the scope of a minitoc.
%               (IF YOU FORGOT PUTTING \chapterend at the end
%               of EACH chapter, an entry for the next chapter
%               will appear in each minitoc.) (Thanks to Yufan Hu).
%               Replaced ``minipage'' environnement by a ``verse''
%               environnement, to allow a minitoc split across pages.
%               All the layout of the minitoc is in the
%               \minitableofcontents command, so if someboby wants
%               to redefine that layout, he has just to
%               rewrite it (and only it).
%
%               You can inhibit the minitoc for the next chapter
%               by preceding it with \minitocno. (\minitocyes
%               is useless for the user: it is implicit AFTER
%               the \chapter* pseudo-chapters).
%
%               Problems: you MUST have \chapterend to terminate each
%               chapter with a minitoc.
%               How about avoiding this constraint?
%
%               The depth of the minitoc is user-adjustable with
%               the counter `minitocdepth' (as `tocdepth' for the table
%               of contents).
%               At least three passes (3!!!) of LaTeX are necessary to get
%               correct minitoc's (the first pass creates the .mtcX files,
%               the second uses them (but they may contain wrong page
%               numbers) and recreates them, the third should be ok).
%
%               Works with \chapter[xxx]{yyy} and floating bodies.
%               Works with two columns (but the minitoc is in composed in
%               one column; how to make it to spread over the two column?)
%               Some mods added to work with xr.sty (external references).
%               xr.sty version 5 is much more tolerant.
%   05Jul93     Version 2
%               Added compatibility with hangcaption.sty (the option
%               hangcaption (if present) must be given BEFORE minitoc
%               option.)
%               BEWARE to options modifying \@caption
%               Version 3 not released (buggy)
%   09Jul93     Version 4
%               Added \if@realch to avoid contentslines from
%               pseudo-chapters to go into the toc!
%               The option file mtcoff.sty allows to use a latex
%               document with minitoc commands and to make them
%               transparent: just replace the minitoc option by
%               mtcoff.
%   13Jul93     Version 5
%               Added a selection mechanism to not write spurious things
%               in the minitoc's.
%   15Jul93     Version 6
%               Fixed problems about chapters in the toc,
%               removed obsolete \caption stuff (filters are better)
%               added compatibility with toch.sty
%               (toch.sty makes a table of chapters. If used,
%               must be loaded BEFORE minitoc.sty)
%   22Jul93     Version 7 (MAJOR DIFFERENCES)
%               Completely rewritten, using tricks from xr.sty
%               (the version 5, by David Carlisle). The info
%               for minitocs is directly stolen from the .toc
%               file.
%               \chapterend and \minitocno are suppressed
%               \minitoc, \dominitoc and \faketableofcontents added
%   29Jul93     Version 8
%               Spacing adjustements.
%   04Aug93     Version 9
%               Added mods for MS-DOS (search MS-DOS, uncomment;
%               search UNIX, comment out). MS-DOS allows only
%               3 characters for extensions in file names (what a pity!).
%   05Aug93     Version 10
%               Works with appendices.
%               Detects obsolete versions of latex.tex.
%               (\@inputcheck or \reset@font not defined).
%   18Aug93     Version 11
%               Added \mtcSfont, font for section entries,
%               \mtcSSfont for subsection entries,
%               \mtcSSSfont for subsubsection entries,
%               \mtcPfont for paragraph entries,
%               \mtcSPfont for subparagraph entries.
%
%   16Dec93     Version 12
%               Use \kern's in place of \vspace*'s,
%               and added penalties (\nopagebreak) to
%               avoid a page break just before last \mtc@rule.
%               Also added a \samepage environnement.
%               Removed old commented out lines from
%               previous versions.
%
%   17Dec93     Version 13
%               Added minilof and minilot stuff.
%               For MS-DOS, uncomment the definition of \SHORTEXT.
%
%   03Jan94     Version 14
%               Corrected space under minitoc/lof/lot and added a
%               \raggedright to avoid ``underfull'' warnings.
%               Corrected some spacing problems (avoiding ~'s).
%               \mtifont changed from \normalsize\bf to
%               \large\bf.
%               Some mods suggested by Donald Arseneau (thanks):
%               \@newread becomes \newread, not outer
%               version of \newread.
%               \empty replaced by \relax in the spare definition
%               of \reset@font.
%               Removed \clubpenalty=10000 and \widowpenalty=10000
%               (done by \samepage), and \noindent.
%               Simplified processing of optional argument in
%               \minitoc, \minilof and \minilot.
%
%   27Jan94     Version 15
%               Added parttoc, partlof and partlot for books,
%               with commands and parameters parallel to
%               those for mini-things.
%
%               Added secttoc, sectlof and sectlot for articles,
%               with commands and parameters parallel to
%               those for mini-things.
%
%   02Feb94     Version 16
%               Bug fixes (typos).
%
%   23Jun94     Version 17
%               Keyword 'n' (null) synonym of 'e' (empty).
%               Compatibility with LaTeX ``2e''.
%               Thanks to Denis Roegel (who found
%               the problem) and Frank Mittelbach
%               (who gave the hints to solve).
%
%   26Jun94     Version 18
%               Make minitoc really compatible with latex2e
%               Introduce the language files as options
%               Thanks to Michel Goossens (via Frank Mittelbach)
%               who was inspired by the code of babel (Johannes Braams).
%
%   16Aug94     Version 19
%               Added stuff for numbering of chapters (parts,
%               sections) not starting at 1.
%               \firstchapteris etc. commands added.
%               \mtcrule, \nomtcrule etc. commands added.
%               Corrected a bug in \c@mti.
%               Corrected mtcswedish.sty (Jan Michel Rynning)
%               Corrected appendix in articles
%
%   25Aug94     Version 20
%               Corrected spacing before and after minitocs
%               and siblings.
%               Added \mtcpagenumbers and \nomtcpagenumbers
%               (and siblings) to make minitocs with/without
%               page numbers. Default: page numbers.
%               Corrected (difficult bug) appendix in articles.
%               Corrected vertical spacing.
%               Corrected a problem with chapters numbered
%               with (uppercase) roman numbers.
%
%   07Sep94     Version 21
%               Corrected typos in minitoc.sty and minitoc.tex.
%
%   10Oct94     Version 22
%               Corrected typos in minitoc.sty.
%
%   08Nov94     Version 23
%               Added a missing line in \sectlof@.
%               Works with document classes resetting
%               chapter (or section) number at each part.
%               (Thanks to Denis Roegel)
%               Removed stuff for \firstchapteris and co.
%               These commands are obsolete.
%               Removed appendix stuff.
%
%   21Dec94     Version 24
%               The \protect commands have been removed from
%               the .toc, .lot and .lot files, so some internal
%               macros have been corrected to be compatible
%               with the LaTeX2e release of December 1994.
%               Thanks to Denis Roegel who did the work.
%
%   13Sep96     Version 25
%               Updated mtcnorsk.sty and added mtcnynorsk.sty
%               on a suggestion from Dag Langmyhr (dag@ifi.uio.no).
%
%   14Nov96     Version 26
%               Language specific commands are now names <language>.mld
%               (in place of mtc<language>.sty) because there are not
%               packages and it makes shorter names.
%               Added breton, estonian, germanb, greek, irish,
%               russianb, scottish, lower and upper sorbian;
%               renamed esperanto into esperant like in Babel.
%
%   20Dec96     Version 27
%               Corrections for starred sectionning commands.
%               english.mld loaded as default language.
%               Added vietnam.mld.
%               Added arab.mld.
%               Renamed minitocoff.sty into mtcoff.sty to
%               keep the name short.
%
%
%               Jean-Pierre Drucbert
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}[1994/12/01]%
%%% This file will not work with latex2.09
\ProvidesPackage{minitoc}[\filedate\space\fileversion\space
                        The minitoc package]
\typeout{*** minitoc package, version 27p ***}%
\@ifundefined{part}%
{}%
{\typeout{*** part level macros available ***}
\let\mtc@svpart\part %23
\def\part{\stepcounter{ptc}\mtc@svpart}} %23
\@ifundefined{chapter}%
{%
\@ifundefined{section}%
{\typeout{*** no section or chapter level macros available ***}%
\typeout{*** PLEASE VERIFY YOUR MAIN DOCUMENT CLASS ***}}%
{\typeout{*** section level macros available ***}
\let\mtc@svsection\section %23
\def\section{\stepcounter{stc}\mtc@svsection} %23
\let\mtc@svss\@ssect %23
%v25 \def\@ssect{\addtocounter{stc}{-1}\mtc@svss} %23
}%
}%
{\typeout{*** chapter level macros available ***}
\let\mtc@svchapter\@chapter %23
\def\@chapter{\stepcounter{mtc}\mtc@svchapter} %23
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%         *****  ****   ***  *****
%         *      *   *   *     *
%         ***    *   *   *     *
%         *      *   *   *     *
%         *****  ****   ***    *
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\def\SHORTEXT{SHORTEXT}    %%% UNCOMMENT FOR DOS AND
                            %%% SYSTEMS WITH SHORT EXTENSIONS
                            %%% TO FILE NAMES
                            %%% LEAVE IT COMMENTED OUT
                            %%% FOR UNIX AND O.S. WITH
                            %%% LONG EXTENSIONS
                            %%% YOU CAN VERIFY BY LATEXING
                            %%% AN EXAMPLE DOCUMENT
                            %%% ONE OF THE FOLLOWING MESSAGES APPEARS
                            %%% PLEASE CORRECT IF THE MESSAGE IS WRONG
% v27 : claim the type of system!
\@ifundefined{SHORTEXT}%
{\typeout{==> this version is configured for UNIX-like (long extensions) file names.}}%
{\typeout{==> this version is configured for MSDOS-like (8+3) file names.}}
%
%not outer version of \newread
\def\newread{\alloc@6\read\chardef\sixt@@n}
\@ifundefined{@inputcheck}%
  {\typeout{Your version of latex.tex is obsolete.}%
  \typeout{Trying to continue...}\newread\@inputcheck\relax}{}
\@ifundefined{reset@font}%
  {\typeout{Your version of latex.tex is very obsolete.}%
  \typeout{Trying to continue...}\let\reset@font\relax}{}
\newwrite\tf@mtc  % a file descriptor to write minitocs
\newtoks\mtc@toks
\def\mtc@string{\relax}
\newbox\mtc@strutbox
\setbox\mtc@strutbox=\hbox{\vrule height2.5ex
      depth1.8ex width\z@}
\def\mtc@strut{\relax\ifmmode\copy\mtc@strutbox\else\unhcopy\mtc@strutbox\fi}
\def\mtc@v{\leavevmode%
     \mtc@strut\vphantom{Lp$^{l^l}_{p_p}$}}  % a pseudo-strut ?
% \@BBR discourages page breaks
\def\@BBR{\unpenalty\nopagebreak[4]}
% Modified version to ignore the dots and the page number.              % 17b
\def\@undottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else             % 17b
  \vskip \z@ plus.2\p@                                                  % 17b
  {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip    % 17b
    \parindent #2\relax\@afterindenttrue                                % 17b
   \interlinepenalty\@M                                                 % 17b
   \leavevmode                                                          % 17b
   \@tempdima #3\relax \advance\leftskip \@tempdima \hbox{}%            % 17b
   \hskip -\leftskip                                                    % 17b
    #4\nobreak\hfill \nobreak                                           % 17b
           \null\par}\fi}                                               % 17b
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17b
\def\mtcpagenumbers{\let\mtc@pgno\null}         %17b
\mtcpagenumbers %default                        %17b
\def\nomtcpagenumbers{\let\mtc@pgno\relax}      %17b
\def\stcpagenumbers{\let\stc@pgno\null}         %17b
\stcpagenumbers %default                        %17b
\def\nostcpagenumbers{\let\stc@pgno\relax}      %17b
\def\ptcpagenumbers{\let\ptc@pgno\null}         %17b
\ptcpagenumbers %default                        %17b
\def\noptcpagenumbers{\let\ptc@pgno\relax}      %17b
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17b
\def\mlfpagenumbers{\let\mlf@pgno\null}         %17b
\mlfpagenumbers %default                        %17b
\def\nomlfpagenumbers{\let\mlf@pgno\relax}      %17b
\def\slfpagenumbers{\let\slf@pgno\null}         %17b
\slfpagenumbers %default                        %17b
\def\noslfpagenumbers{\let\slf@pgno\relax}      %17b
\def\plfpagenumbers{\let\plf@pgno\null}         %17b
\plfpagenumbers %default                        %17b
\def\noplfpagenumbers{\let\plf@pgno\relax}      %17b
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17b
\def\mltpagenumbers{\let\mlt@pgno\null}         %17b
\mltpagenumbers %default                        %17b
\def\nomltpagenumbers{\let\mlt@pgno\relax}      %17b
\def\sltpagenumbers{\let\slt@pgno\null}         %17b
\sltpagenumbers %default                        %17b
\def\nosltpagenumbers{\let\slt@pgno\relax}      %17b
\def\pltpagenumbers{\let\plt@pgno\null}         %17b
\pltpagenumbers %default                        %17b
\def\nopltpagenumbers{\let\plt@pgno\relax}      %17b
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17b
% if you don't want a table of contents, but want minitocs,
% you need to create the .toc file, without inputing it
% into your document. This command is a stripped off version
% of \tableofcontents
\def\faketableofcontents{\fake@starttoc{toc}}
% idem for list of figures
\def\fakelistoffigures{\fake@starttoc{lof}}
% idem for list of tables
\def\fakelistoftables{\fake@starttoc{lot}}
\def\fake@starttoc#1{\begingroup
  \makeatletter
  \if@filesw \expandafter\newwrite\csname tf@#1\endcsname
             \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
  \fi \global\@nobreakfalse \endgroup}
%%
\global\let\mtc@markboth\markboth
\global\let\@mkboth\markboth
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\@ifundefined{chapter}{}{%
\def\The@chapter{\arabic{mtc}} %23
\def\firstchapteris#1%
  {\typeout{^^JWARNING*** \string\firstchapteris}%
   \typeout{ is an obsolete command^^J}}
\newcounter{mtc}  % counter of minitocs
\setcounter{mtc}{0}
\gdef\themtc{\arabic{mtc}}
\newcounter{minitocdepth} % analog to tocdepth, but for minitocs
\setcounter{minitocdepth}{2} % default value
\def\mtc@rule{\kern-3\p@%
  \hrule width \columnwidth \kern2.6\p@} % the \hrule is .4pt high

\newlength\mtcindent % indentation (left/right) of minitocs
\mtcindent=24pt      % defaut value
\def\mtcfont{\small\rm}    % font for the minitoc
\def\mtcSfont{\small\bf}   % font for the minitoc (sections)
\def\mtcSSfont{\mtcfont}   % font for the minitoc (subsections)
\def\mtcSSSfont{\mtcfont}  % font for the minitoc (subsubsections)
\def\mtcPfont{\mtcfont}    % font for the minitoc (paragraphs)
\def\mtcSPfont{\mtcfont}   % font for the minitoc (subparagraphs)
\def\mlffont{\mtcfont}     % font for the minilof (figures)
\def\mltfont{\mtcfont}     % font for the minilot (tables)
\def\mtifont{\large\bf}    % font for titles

% Centering, flushleft, flushright or empty titles.
\def\c@mti#1{\null\hfill #1\hfill\null}
\def\l@mti#1{\null #1\hfill\null}
\def\r@mti#1{\null\hfill #1\null}
\def\e@mti#1{\relax}
\def\n@mti#1{\relax}

% Default: titles on left
\let\do@mtitc\l@mti
\let\df@mtitc\l@mti
\let\do@mtilf\l@mti
\let\df@mtilf\l@mti
\let\do@mtilt\l@mti
\let\df@mtilt\l@mti

%v27 Language dependent names: default values. Now
%v27 english.mld is loaded first.
%v27 \@ifundefined{mtctitle}{\def\mtctitle{Contents}}{\relax}
%v27 \@ifundefined{mlftitle}{\def\mlftitle{Figures}}{\relax}
%v27 \@ifundefined{mlttitle}{\def\mlttitle{Tables}}{\relax}

\def\mtc@verse{\let\\=\@centercr
  \list{}{\itemsep\z@\itemindent \z@\listparindent \itemindent
          \leftmargin\mtcindent
          \rightmargin\leftmargin}\item[]}
\def\endmtc@verse{\nopagebreak[4]\endlist}

% this command must be used after \chapter
% if you need a minitoc (no automatic minitoc)
\def\minitoc{\@ifnextchar[{\minitoc@}{\minitoc@[d]}}

\def\minitoc@[#1]{%
        \relax\begin{samepage}% we begin a local group here, using samepage
        \if #1e\let\do@mtitc\e@mti
        \else\if #1n\let\do@mtitc\n@mti
        \else\if #1c\let\do@mtitc\c@mti
        \else\if #1l\let\do@mtitc\l@mti
        \else\if #1r\let\do@mtitc\r@mti
        \else\if #1d\let\do@mtitc\df@mtitc
        \fi\fi\fi\fi\fi\fi
        \raggedright % added #14
        \parskip=\z@%
        \reset@font\mtcfont%
        \parindent=\z@%
        \nopagebreak[4]%
        \kern-0.8\baselineskip\nopagebreak[4]%
        \par\noindent %%
        \ifx\mtc@rule\relax
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\mtifont\do@mtitc{\mtc@v\mtctitle}}\\
        \end{tabular}\else
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\mtifont\do@mtitc{\mtc@v\mtctitle}}\\\hline
        \end{tabular}\fi
        \nopagebreak[4]\null\leavevmode\vrule width \z@
        height \z@ depth \z@\\\@BBR%
        \leftmargin\mtcindent
        \rightmargin\mtcindent
        \itemindent=\z@\labelwidth=\z@%
        \labelsep=\z@\listparindent=\z@%
        \begin{mtc@verse}\c@tocdepth=\c@minitocdepth%
        \leavevmode\\\@BBR% this blank line is necessary to avoid
                % a wild negative indentation
        \vskip -.5\baselineskip
\begingroup
  \makeatletter
  \@ifundefined{mtc@pgno}%
  {\let\@dottedtocline\@undottedtocline}{}
\@ifundefined{SHORTEXT}%
{\def\@tocfile{mtc\The@chapter}}%  % UNIX
{\def\@tocfile{M\The@chapter}}%    % MS-DOS
  \@input{\jobname.\@tocfile}\if@filesw
  \fi%
  \global\@nobreakfalse\endgroup
        \end{mtc@verse}%
        \kern0.\baselineskip%
        \nopagebreak[4]\mtc@rule\null\leavevmode\\%
        \vskip-1.0\baselineskip
        \vrule width \z@ height \z@
        depth \z@\end{samepage}% %## the \\ is essential
        \par\pagebreak[1]\vspace*{-1ex}}%
        % some space under the minitoc

% Added in version #13
% this command must be used after \chapter
% if you need a minilof (no automatic minilof)
\def\minilof{\@ifnextchar[{\minilof@}{\minilof@[d]}}

\def\minilof@[#1]{%
        \relax\begin{samepage}% we begin a local group here, using samepage
        \if #1e\let\do@mtilf\e@mti
        \else\if #1n\let\do@mtilf\n@mti
        \else\if #1c\let\do@mtilf\c@mti
        \else\if #1l\let\do@mtilf\l@mti
        \else\if #1r\let\do@mtilf\r@mti
        \else\if #1d\let\do@mtilf\df@mtilf
        \fi\fi\fi\fi\fi\fi
        \raggedright % added #14
        \parskip=\z@%
        \reset@font\mlffont%
        \parindent=\z@%
        \nopagebreak[4]%
        \kern-0.8\baselineskip\nopagebreak[4]%
        \par\noindent
        \ifx\mtc@rule\relax
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\mtifont\do@mtilf{\mtc@v\mlftitle}}\\
        \end{tabular}\else
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\mtifont\do@mtilf{\mtc@v\mlftitle}}\\\hline
        \end{tabular}\fi
        \nopagebreak[4]\null\leavevmode\vrule width \z@
        height \z@ depth \z@\\\@BBR%
        \leftmargin\mtcindent
        \rightmargin\mtcindent
        \itemindent=\z@\labelwidth=\z@%
        \labelsep=\z@\listparindent=\z@%
        % depth does not matter for minilof
        \begin{mtc@verse}%\c@tocdepth=\c@minitocdepth%
        \leavevmode\\\@BBR% this blank line is necessary to avoid
                % a wild negative indentation
        \vskip -.5\baselineskip
\begingroup
  \makeatletter
  \@ifundefined{mlf@pgno}%
  {\let@dottedtocline\@undottedtocline}{}
\@ifundefined{SHORTEXT}%
{\def\@tocfile{mlf\The@chapter}}%  % UNIX
{\def\@tocfile{F\The@chapter}}%    % MS-DOS
  \@input{\jobname.\@tocfile}\if@filesw
  \fi%
  \global\@nobreakfalse\endgroup
        \end{mtc@verse}%
        \kern0.\baselineskip%
        \nopagebreak[4]\mtc@rule\null\leavevmode\\%
        \vskip-1.0\baselineskip
        \vrule width \z@ height \z@
        depth \z@\end{samepage}% %## the \\ is essential
        \par\pagebreak[1]\vspace*{-1ex}}%
        % some space under the minilof

% Added in version #13
% this command must be used after \chapter
% if you need a minilot (no automatic minilot)
\def\minilot{\@ifnextchar[{\minilot@}{\minilot@[d]}}

\def\minilot@[#1]{%
        \relax\begin{samepage}% we begin a local group here, using samepage
        \if #1e\let\do@mtilt\e@mti
        \else\if #1n\let\do@mtilt\n@mti
        \else\if #1c\let\do@mtilt\c@mti
        \else\if #1l\let\do@mtilt\l@mti
        \else\if #1r\let\do@mtilt\r@mti
        \else\if #1d\let\do@mtilt\df@mtilt
        \fi\fi\fi\fi\fi\fi
        \raggedright % added #14
        \parskip=\z@%
        \reset@font\mltfont%
        \parindent=\z@%
        \nopagebreak[4]%
        \kern-0.8\baselineskip\nopagebreak[4]%
        \par\noindent
        \ifx\mtc@rule\relax
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\mtifont\do@mtilt{\mtc@v\mlttitle}}\\
        \end{tabular}\else
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\mtifont\do@mtilt{\mtc@v\mlttitle}}\\\hline
        \end{tabular}\fi
        \nopagebreak[4]\null\leavevmode\vrule width \z@
        height \z@ depth \z@\\\@BBR%
        \leftmargin\mtcindent
        \rightmargin\mtcindent
        \itemindent=\z@\labelwidth=\z@%
        \labelsep=\z@\listparindent=\z@%
        % depth does not matter for minilot
        \begin{mtc@verse}%\c@tocdepth=\c@minitocdepth%
        \leavevmode\\\@BBR% this blank line is necessary to avoid
                % a wild negative indentation
        \vskip -.5\baselineskip
\begingroup
  \makeatletter
  \@ifundefined{mlt@pgno}%
  {\let\@dottedtocline\@undottedtocline}{}
\@ifundefined{SHORTEXT}%
{\def\@tocfile{mlt\The@chapter}}%  % UNIX
{\def\@tocfile{T\The@chapter}}%    % MS-DOS
  \@input{\jobname.\@tocfile}\if@filesw
  \fi%
  \global\@nobreakfalse\endgroup
        \end{mtc@verse}%
        \kern0.\baselineskip%
        \nopagebreak[4]\mtc@rule\null\leavevmode\\%
        \vskip-1.0\baselineskip
        \vrule width \z@ height \z@
        depth \z@\end{samepage}% %## the \\ is essential
        \par\pagebreak[1]\vspace*{-1ex}}%
        % some space under the minilot

% I use a depth of 10000 to inhibit the printing of
% that contentsline.
\def\l@xchapter{\@dottedtocline{\@M}{1em}{2.3em}}
\def\xchapter{xchapter}

\let\sv@chapter\@chapter
\def\@chapter[#1]#2{\sv@chapter[{#1}]{#2}\relax%
\addcontentsline{lof}{xchapter}{#1}%
\addcontentsline{lot}{xchapter}{#1}%
}

% tricky code to deal with \chapter*
\let\mtc@schapter\@schapter
\def\@schapter{%
\addtocontents{toc}{\protect\chapterend}\mtc@schapter%
}
\def\@schapter{%
\addtocontents{toc}{\protect\chapterbegin}\mtc@schapter%
}
\let\chapterend\relax
\let\chapterbegin\relax

\let\appendixmtc\relax

% this command extracts info from the .toc file
% and create the .mtcN files (.mtc -> .M on MS-DOS)
\def\@dominitoc#1{{%
  \makeatletter
  \setcounter{mtc}{0} % START VALUE
  \MTC@next#1.toc\relax\\}\setcounter{mtc}{0}} %23: raz
% this command extracts info from the .lof file
% and create the .mlfN files (.mlf -> .F on MS-DOS)
\def\@dominilof#1{{%
  \makeatletter
  \setcounter{mtc}{0} % START VALUE
  \MLF@next#1.lof\relax\\}\setcounter{mtc}{0}} %23: raz
% this command extracts info from the .lot file
% and create the .mltN files (.mlt -> .T on MS-DOS)
\def\@dominilot#1{{%
  \makeatletter
  \setcounter{mtc}{0} % START VALUE
  \MLT@next#1.lot\relax\\}\setcounter{mtc}{0}} %23: raz

\def\dominitoc{\@ifnextchar[{\dominitoc@}{\dominitoc@[l]}}
\def\dominilof{\@ifnextchar[{\dominilof@}{\dominilof@[l]}}
\def\dominilot{\@ifnextchar[{\dominilot@}{\dominilot@[l]}}

\def\dominitoc@[#1]{%
\if #1e\let\df@mtitc\e@mti%
\else\if #1n\let\df@mtitc\n@mti%
\else\if #1c\let\df@mtitc\c@mti%
\else\if #1l\let\df@mtitc\l@mti%
\else\if #1r\let\df@mtitc\r@mti%
\fi\fi\fi\fi\fi%
\@@dominitoc}

\def\dominilof@[#1]{%
\if #1e\let\df@mtilf\e@mti%
\else\if #1n\let\df@mtilf\n@mti%
\else\if #1c\let\df@mtilf\c@mti%
\else\if #1l\let\df@mtilf\l@mti%
\else\if #1r\let\df@mtilf\r@mti%
\fi\fi\fi\fi\fi%
\@@dominilof}

\def\dominilot@[#1]{%
\if #1e\let\df@mtilt\e@mti%
\else\if #1n\let\df@mtilt\n@mti%
\else\if #1c\let\df@mtilt\c@mti%
\else\if #1l\let\df@mtilt\l@mti%
\else\if #1r\let\df@mtilt\r@mti%
\fi\fi\fi\fi\fi%
\@@dominilot}

\def\@@dominitoc{\@dominitoc{\jobname}\immediate\closeout\tf@mtc}
\def\@@dominilof{\@dominilof{\jobname}\immediate\closeout\tf@mtc}
\def\@@dominilot{\@dominilot{\jobname}\immediate\closeout\tf@mtc}

\def\MTC@next#1\relax#2\\{%
  \edef\MTC@list{#2}%
  \MTC@loop{#1}}
\def\MTC@toc{%
  \ifx\MTC@list\@empty\else\expandafter\MTC@explist\fi}

%%%%%%% patch minitoc to write *.mtc files with link name at end
% so that hyperref contentsline works properly---I hope
\def\MTC@contentsline#1#2#3#4{% %%BJ: 4 instead of 3 parameters
\gdef\themtc{\arabic{mtc}}
\expandafter%
 \ifx\csname #1\endcsname\chapter\relax
 \stepcounter{mtc}% % the mtc counter simulates the chapter counter
\@ifundefined{SHORTEXT}%
{\typeout{Writing\space\jobname.mtc\themtc}%     % UNIX
\def\mtcname{\jobname.mtc\themtc}}%              % UNIX
{\typeout{Writing\space\jobname.M\themtc}%       % MS-DOS
\def\mtcname{\jobname.M\themtc}}%                % MS-DOS
 \immediate\closeout\tf@mtc % close current .mtcN .mtc->.M on MS-DOS
 \immediate\openout\tf@mtc=\mtcname % open next .mtcN (.mtc->.M if MS-DOS)
 \fi
\expandafter% % extracts and writes info for sections, etc.
 \ifx\csname #1\endcsname\section\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\mtcSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSfont%
      \space #3}{#4}}}}\@tempa%   %%BJ: #4 is hyperlink
 \fi
\expandafter%
 \ifx\csname #1\endcsname\subsection\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\mtcSSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSSfont%
      \space #3}{#4}}}}\@tempa%   %%BJ: #4 is hyperlink
 \fi
\expandafter%
 \ifx\csname #1\endcsname\subsubsection\relax
     \mtc@toks{\noexpand \leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\mtcSSSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSSSfont%
      \space #3}{#4}}}}\@tempa%   %%BJ: #4 is hyperlink
 \fi
\expandafter%
 \ifx\csname #1\endcsname\paragraph\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\mtcPfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcPfont%
      \space #3}{#4}}}}\@tempa%   %%BJ: #4 is hyperlink
 \fi
\expandafter%
 \ifx\csname #1\endcsname\subparagraph\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\mtcSPfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSPfont
      \space #3}{#4}}}}\@tempa%   %%BJ: #4 is hyperlink
 \fi
% Added v25: \starchapter and co.
\expandafter% % extracts and writes info for sections, etc.
 \ifx\csname #1\endcsname\starchapter\relax
\stepcounter{mtc}% % the mtc counter simulates the chapter counter
\@ifundefined{SHORTEXT}%
{\typeout{Writing\space\jobname.mtc\themtc}%     % UNIX
\def\mtcname{\jobname.mtc\themtc}}%              % UNIX
{\typeout{Writing\space\jobname.M\themtc}%       % MS-DOS
\def\mtcname{\jobname.M\themtc}}%                % MS-DOS
 \immediate\closeout\tf@mtc % close current .mtcN .mtc->.M on MS-DOS
 \immediate\openout\tf@mtc=\mtcname % open next .mtcN (.mtc->.M if MS-DOS)
 \fi
\expandafter% % extracts and writes info for sections, etc.
 \ifx\csname #1\endcsname\starsection\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\mtcSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSfont%
      \space #3}{#4}}}}\@tempa%   %%BJ: #4 is hyperlink
 \fi
\expandafter%
 \ifx\csname #1\endcsname\starsubsection\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\mtcSSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSSfont%
      \space #3}{#4}}}}\@tempa%   %%BJ: #4 is hyperlink
 \fi
\expandafter%
 \ifx\csname #1\endcsname\starsubsubsection\relax
     \mtc@toks{\noexpand \leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\mtcSSSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSSSfont%
      \space #3}{#4}}}}\@tempa%   %%BJ: #4 is hyperlink
 \fi
\expandafter%
 \ifx\csname #1\endcsname\starparagraph\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\mtcPfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcPfont%
      \space #3}{#4}}}}\@tempa%   %%BJ: #4 is hyperlink
 \fi
\expandafter%
 \ifx\csname #1\endcsname\starsubparagraph\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\mtcSPfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\mtcSPfont
      \space #3}{#4}}}}\@tempa%   %%BJ: #4 is hyperlink
 \fi
}


\def\MTC@explist{\expandafter\MTC@next\MTC@list\\}
\def\MTC@loop#1{\openin\@inputcheck#1\relax
  \ifeof\@inputcheck
    \typeout{^^JNo file #1^^JMINITOCS NOT PREPARED.^^J}%
    \expandafter\MTC@toc
  \else
    \typeout{PREPARING MINITOCS FROM #1}%
    \expandafter\MTC@read\fi}
\def\MTC@read{%
  \read\@inputcheck to\MTC@line
  \expandafter\MTC@test\MTC@line....\MTC@%
  }%
% now patch MTC@test %   %%BJ: call \MTC@contentsline with 4 instead of 3 parameters
\newcommand{\scrubdots}[5]{#1} %%BJ: added by Tony Roberts
\long\def\MTC@test#1#2#3#4#5\MTC@{%
  \ifx#1\contentsline
    \let\mtc@string\string
    \MTC@contentsline{#2}{#3}{#4}{\scrubdots#5}% %%BJ: 4. parameter added by Tony Roberts
    \let\mtc@string\relax
  \else\ifx#1\@input
     \edef\MTC@list{\MTC@list#2\relax}%
  \else\ifx#1\chapterend % \chapter* closes .mtcN (.mtc->.M on MS-DOS)
     \immediate\closeout\tf@mtc
     \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
  \else\ifx#1\chapterbegin
     \addtocounter{mtc}{-1}% % \chapter* has done a parasite increment
  \fi\fi\fi\fi
  \ifeof\@inputcheck\expandafter\MTC@toc
  \else\expandafter\MTC@read\fi}%
%%%%%%%%%% end of minitoc patches


\def\MLF@next#1\relax#2\\{%
  \edef\MLF@list{#2}%
  \MLF@loop{#1}}
\def\MLF@lof{%
  \ifx\MLF@list\@empty\else\expandafter\MLF@explist\fi}

\def\MLF@contentsline#1#2#3{%
\gdef\themtc{\arabic{mtc}}
\expandafter%
 \ifx\csname #1\endcsname\xchapter\relax
 \stepcounter{mtc}% % the mtc counter simulates the chapter counter
\@ifundefined{SHORTEXT}%
{\typeout{Writing\space\jobname.mlf\themtc}%     % UNIX
\def\mlfname{\jobname.mlf\themtc}}%              % UNIX
{\typeout{Writing\space\jobname.F\themtc}%       % MS-DOS
\def\mlfname{\jobname.F\themtc}}%                % MS-DOS
 \immediate\closeout\tf@mtc % close current .mlfN .mlf->.F on MS-DOS
 \immediate\openout\tf@mtc=\mlfname % open next .mlfN (.mlf->.F if MS-DOS)
 \fi
\expandafter% % extracts and writes info for sections, etc.
 \ifx\csname #1\endcsname\figure\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\mlffont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\mlffont%
      \space #3}}}}\@tempa
 \fi
}

\def\MLF@explist{\expandafter\MLF@next\MLF@list\\}
\def\MLF@loop#1{\openin\@inputcheck#1\relax
  \ifeof\@inputcheck
    \typeout{^^JNo file #1^^JMINILOFS NOT PREPARED.^^J}%
    \expandafter\MLF@lof
  \else
    \typeout{PREPARING MINILOFS FROM #1}%
    \expandafter\MLF@read\fi}
\def\MLF@read{%
  \read\@inputcheck to\MLF@line
  \expandafter\MLF@test\MLF@line....\MLF@%
  }%
\long\def\MLF@test#1#2#3#4#5\MLF@{%
  \ifx#1\contentsline
    \let\mtc@string\string
    \MLF@contentsline{#2}{#3}{#4}%
    \let\mtc@string\relax
  \else\ifx#1\@input
     \edef\MLF@list{\MLF@list#2\relax}%
  \else\ifx#1\chapterend % \chapter* closes .mlfN (.mlf->.F on MS-DOS)
     \immediate\closeout\tf@mtc
     \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
  \else\ifx#1\chapterbegin
     \addtocounter{mtc}{-1}% % \chapter* has done a parasite increment
  \fi\fi\fi\fi
  \ifeof\@inputcheck\expandafter\MLF@lof
  \else\expandafter\MLF@read\fi}%

\def\MLT@next#1\relax#2\\{%
  \edef\MLT@list{#2}%
  \MLT@loop{#1}}
\def\MLT@lot{%
  \ifx\MLT@list\@empty\else\expandafter\MLT@explist\fi}

\def\MLT@contentsline#1#2#3{%
\gdef\themtc{\arabic{mtc}}
\expandafter%
 \ifx\csname #1\endcsname\xchapter\relax
 \stepcounter{mtc}% % the mtc counter simulates the chapter counter
\@ifundefined{SHORTEXT}%
{\typeout{Writing\space\jobname.mlt\themtc}%     % UNIX
\def\mltname{\jobname.mlt\themtc}}%              % UNIX
{\typeout{Writing\space\jobname.T\themtc}%       % MS-DOS
\def\mltname{\jobname.T\themtc}}%                % MS-DOS
 \immediate\closeout\tf@mtc % close current .mltN .mlt->.T on MS-DOS
 \immediate\openout\tf@mtc=\mltname % open next .mltN (.mlt->.T if MS-DOS)
 \fi
\expandafter% % extracts and writes info for sections, etc.
 \ifx\csname #1\endcsname\table\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\mltfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\mltfont%
      \space #3}}}}\@tempa
 \fi
}

\def\MLT@explist{\expandafter\MLT@next\MLT@list\\}
\def\MLT@loop#1{\openin\@inputcheck#1\relax
  \ifeof\@inputcheck
    \typeout{^^JNo file #1^^JMINILOTS NOT PREPARED.^^J}%
    \expandafter\MLT@lot
  \else
    \typeout{PREPARING MINILOTS FROM #1}%
    \expandafter\MLT@read\fi}
\def\MLT@read{%
  \read\@inputcheck to\MLT@line
  \expandafter\MLT@test\MLT@line....\MLT@%
  }%
\long\def\MLT@test#1#2#3#4#5\MLT@{%
  \ifx#1\contentsline
    \let\mtc@string\string
    \MLT@contentsline{#2}{#3}{#4}%
    \let\mtc@string\relax
  \else\ifx#1\@input
     \edef\MLT@list{\MLT@list#2\relax}%
  \else\ifx#1\chapterend % \chapter* closes .mltN (.mlt->.T on MS-DOS)
     \immediate\closeout\tf@mtc
     \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
  \else\ifx#1\chapterbegin
     \addtocounter{mtc}{-1}% % \chapter* has done a parasite increment
  \fi\fi\fi\fi
  \ifeof\@inputcheck\expandafter\MLT@lot
  \else\expandafter\MLT@read\fi}%
} % end of chapter level

%%%%%%%%%%%%%%%%%%%%%%%%%
%%
% If \part is defined (book or article-like document),
% the following macros are allowed
% Sometimes, we need to make a difference between book and
% article (is \chapter defined?), to have a different layout.
\@ifundefined{part}{}%
{%
\def\xpart{xpart}
\def\Thepart{\arabic{part}}
\def\firstpartis#1%
  {\typeout{^^JWARNING*** \string\firstpartis}%
   \typeout{ is an obsolete command^^J}}
\newcounter{ptc}  % counter of parttocs
\setcounter{ptc}{0}
\def\theptc{\arabic{ptc}}
\newcounter{parttocdepth} % analog to tocdepth, but for parttocs
\setcounter{parttocdepth}{2}

\@ifundefined{chapter}{%
\def\ptc@rule{\kern-3\p@%
  \hrule width \columnwidth \kern2.6\p@}% the \hrule is .4pt high
}{\let\ptc@rule\relax} % no rule before/after parttoc/partlof/partlot
                       % for books

\newlength\ptcindent % indentation (left/right) of parttocs
\@ifundefined{chapter}{\ptcindent=24pt}{\ptcindent=0pt} % defaut value

\@ifundefined{chapter}{%
\def\ptcfont{\small\rm}    % font for the parttoc
\def\ptcSfont{\small\bf}   % font for the parttoc (sections)
\def\ptcSSfont{\ptcfont}   % font for the parttoc (subsections)
\def\ptcSSSfont{\ptcfont}  % font for the parttoc (subsubsections)
\def\ptcPfont{\ptcfont}    % font for the parttoc (paragraphs)
\def\ptcSPfont{\ptcfont}   % font for the parttoc (subparagraphs)
\def\plffont{\ptcfont}     % font for the partlof (figures)
\def\pltfont{\ptcfont}     % font for the partlot (tables)
\def\ptifont{\large\bf}    % font for titles
}{%
\def\ptcfont{\normalsize\rm}    % font for the parttoc
\def\ptcCfont{\normalsize\bf}   % font for the parttoc (chapters)
\def\ptcSfont{\normalsize\rm}   % font for the parttoc (sections)
\def\ptcSSfont{\ptcfont}   % font for the parttoc (subsections)
\def\ptcSSSfont{\ptcfont}  % font for the parttoc (subsubsections)
\def\ptcPfont{\ptcfont}    % font for the parttoc (paragraphs)
\def\ptcSPfont{\ptcfont}   % font for the parttoc (subparagraphs)
\def\plffont{\ptcfont}     % font for the partlof (figures)
\def\pltfont{\ptcfont}     % font for the partlot (tables)
\def\ptifont{\Huge\bf}     % font for titles
}

% Centering, flushleft, flushright or empty titles.
\@ifundefined{chapter}{%
\def\c@pti#1{\null\hfill #1\hfill\null}
\def\l@pti#1{\null #1\hfill\null}
\def\r@pti#1{\null\hfill #1\null}
\def\e@pti#1{\relax}
\def\n@pti#1{\relax}
}{%
\def\e@pti#1{\relax}
\def\n@pti#1{\relax}
\def\l@pti#1{\if@twocolumn
    \@topnewpage[\@makephead@l{#1}]%
    \else
    \@makephead@l{#1}%
    \@afterheading
    \fi}
\def\@makephead@l#1{%
    \vspace*{50\p@}%
    {\parindent \z@ \raggedright
     \ptifont
     #1\par
     \nobreak
     \vskip 40\p@
    }}
\def\r@pti#1{\if@twocolumn
    \@topnewpage[\@makephead@r{#1}]%
    \else
    \@makephead@r{#1}%
    \@afterheading
    \fi}
\def\@makephead@r#1{%
    \vspace*{50\p@}%
    {\parindent \z@ \raggedleft
     \ptifont
     #1\par
     \nobreak
     \vskip 40\p@
    }}
\def\c@pti#1{\if@twocolumn
    \@topnewpage[\@makephead@c{#1}]%
    \else
    \@makephead@c{#1}%
    \@afterheading
    \fi}
\def\@makephead@c#1{%
    \vspace*{50\p@}%
    {\parindent \z@ \centering
     \ptifont
     #1\par
     \nobreak
     \vskip 40\p@
    }}%
}

% Default: titles on left
\let\do@ptitc\l@pti
\let\df@ptitc\l@pti
\let\do@ptilf\l@pti
\let\df@ptilf\l@pti
\let\do@ptilt\l@pti
\let\df@ptilt\l@pti

%v27 % Language dependent names: default values
%v27 \@ifundefined{chapter}{%
%v27 \@ifundefined{ptctitle}{\def\ptctitle{Contents}}{\relax}
%v27 \@ifundefined{plftitle}{\def\plftitle{Figures}}{\relax}
%v27 \@ifundefined{plttitle}{\def\plttitle{Tables}}{\relax}}%
%v27 {%
%v27 \@ifundefined{ptctitle}{\def\ptctitle{Table of Contents}}{\relax}
%v27 \@ifundefined{plftitle}{\def\plftitle{List of Figures}}{\relax}
%v27 \@ifundefined{plttitle}{\def\plttitle{List of Tables}}{\relax}
%v27 }

\def\ptc@verse{\let\\=\@centercr
  \list{}{\itemsep\z@\itemindent \z@\listparindent \itemindent
          \leftmargin\ptcindent
          \rightmargin\leftmargin}\item[]}
\def\endptc@verse{\nopagebreak[4]\endlist}

% this command must be used after \part
% if you need a parttoc (no automatic parttoc)
\def\parttoc{\@ifnextchar[{\parttoc@}{\parttoc@[d]}}

\def\parttoc@[#1]{%
        \@ifundefined{chapter}{}{\cleardoublepage
        \global\let\mtc@markboth\markboth
        \global\let\@mkboth\markboth
        \thispagestyle{empty}
        \mtc@markboth{\uppercase{\ptctitle}}{\uppercase{\ptctitle}}%
        }%
        \relax\begin{samepage}% we begin a local group here, using samepage
        \if #1e\let\do@ptitc\e@pti
        \else\if #1n\let\do@ptitc\n@pti
        \else\if #1c\let\do@ptitc\c@pti
        \else\if #1l\let\do@ptitc\l@pti
        \else\if #1r\let\do@ptitc\r@pti
        \else\if #1d\let\do@ptitc\df@ptitc
        \fi\fi\fi\fi\fi\fi
        \raggedright % added #14
        \parskip=\z@%
        \reset@font\ptcfont%
        \parindent=\z@%
        \nopagebreak[4]%
        \kern-0.8\baselineskip\nopagebreak[4]%
        \par\noindent
        \nopagebreak[4]%
        \ifx\ptc@rule\relax
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\ptifont\do@ptitc{\mtc@v\ptctitle}}\\
        \end{tabular}\else
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\ptifont\do@ptitc{\mtc@v\ptctitle}}\\\hline
        \end{tabular}\fi
        \nopagebreak[4]\null\leavevmode\vrule width \z@
        height \z@ depth \z@\\\@BBR%
        \leftmargin\ptcindent
        \rightmargin\ptcindent
        \itemindent=\z@\labelwidth=\z@%
        \labelsep=\z@\listparindent=\z@%
        \begin{ptc@verse}\c@tocdepth=\c@parttocdepth%
        \leavevmode\\\@BBR% this blank line is necessary to avoid
                % a wild negative indentation
        \vskip -.5\baselineskip
\begingroup
  \makeatletter
  \@ifundefined{ptc@pgno}%
  {\let\@dottedtocline\@undottedtocline}{}
\@ifundefined{SHORTEXT}%
{\def\@tocfile{ptc\Thepart}}%  % UNIX
{\def\@tocfile{P\Thepart}}%    % MS-DOS
  \@input{\jobname.\@tocfile}\if@filesw
  \fi%
  \global\@nobreakfalse\endgroup
        \end{ptc@verse}%
        \kern0.\baselineskip%
        \nopagebreak[4]\ptc@rule\null\leavevmode\\%
        \vskip-1.0\baselineskip
        \vrule width \z@ height \z@
        depth \z@\end{samepage}% %## the \\ is essential
        \par\@ifundefined{chapter}{\pagebreak[1]\vspace*{-1ex}}%
        {\cleardoublepage}}

% this command must be used after \part
% if you need a partlof (no automatic partlof)
\def\partlof{\@ifnextchar[{\partlof@}{\partlof@[d]}}

\def\partlof@[#1]{%
        \@ifundefined{chapter}{}{\cleardoublepage
        \global\let\mtc@markboth\markboth
        \global\let\@mkboth\markboth
        \thispagestyle{empty}
        \mtc@markboth{\uppercase{\plftitle}}{\uppercase{\plftitle}}%
        }%
        \relax\begin{samepage}% we begin a local group here, using samepage
        \if #1e\let\do@ptilf\e@pti
        \else\if #1n\let\do@ptilf\n@pti
        \else\if #1c\let\do@ptilf\c@pti
        \else\if #1l\let\do@ptilf\l@pti
        \else\if #1r\let\do@ptilf\r@pti
        \else\if #1d\let\do@ptilf\df@ptilf
        \fi\fi\fi\fi\fi\fi
        \raggedright % added #14
        \parskip=\z@%
        \reset@font\plffont%
        \parindent=\z@%
        \nopagebreak[4]%
        \kern-0.8\baselineskip\nopagebreak[4]%
        \par\noindent
        \ifx\ptc@rule\relax
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\ptifont\do@ptilf{\mtc@v\plftitle}}\\
        \end{tabular}\else
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\ptifont\do@ptilf{\mtc@v\plftitle}}\\
        \@ifundefined{chapter}{\hline}{}
        \end{tabular}\fi
        \nopagebreak[4]\null\leavevmode\vrule width \z@
        height \z@ depth \z@\\\@BBR%
        \leftmargin\ptcindent
        \rightmargin\ptcindent
        \itemindent=\z@\labelwidth=\z@%
        \labelsep=\z@\listparindent=\z@%
        % depth does not matter for partlof
        \begin{ptc@verse}%\c@tocdepth=\c@parttocdepth%
        \leavevmode\\\@BBR% this blank line is necessary to avoid
                % a wild negative indentation
        \vskip -.5\baselineskip
\begingroup
  \makeatletter
  \@ifundefined{plf@pgno}%
  {\let\@dottedtocline\@undottedtocline}{}
\@ifundefined{SHORTEXT}%
{\def\@tocfile{plf\Thepart}}%  % UNIX
{\def\@tocfile{G\Thepart}}%    % MS-DOS
  \@input{\jobname.\@tocfile}\if@filesw
  \fi%
  \global\@nobreakfalse\endgroup
        \end{ptc@verse}%
        \kern0.\baselineskip%
        \nopagebreak[4]\ptc@rule\null\leavevmode\\%
        \vskip-1.0\baselineskip
        \vrule width \z@ height \z@
        depth \z@\end{samepage}% %## the \\ is essential
        \par\@ifundefined{chapter}{\pagebreak[1]\vspace*{-1ex}}%
        {\cleardoublepage}}

% Added in version #13
% this command must be used after \part
% if you need a minilot (no automatic partlot)
\def\partlot{\@ifnextchar[{\partlot@}{\partlot@[d]}}

\def\partlot@[#1]{%
        \@ifundefined{chapter}{}{\cleardoublepage
        \global\let\mtc@markboth\markboth
        \global\let\@mkboth\markboth
        \thispagestyle{empty}
        \mtc@markboth{\uppercase{\plttitle}}{\uppercase{\plttitle}}%
        }%
        \relax\begin{samepage}% we begin a local group here, using samepage
        \if #1e\let\do@ptilt\e@pti
        \else\if #1n\let\do@ptilt\n@pti
        \else\if #1c\let\do@ptilt\c@pti
        \else\if #1l\let\do@ptilt\l@pti
        \else\if #1r\let\do@ptilt\r@pti
        \else\if #1d\let\do@ptilt\df@ptilt
        \fi\fi\fi\fi\fi\fi
        \raggedright % added #14
        \parskip=\z@%
        \reset@font\pltfont%
        \parindent=\z@%
        \nopagebreak[4]%
        \kern-0.8\baselineskip\nopagebreak[4]%
        \par\noindent
        \ifx\ptc@rule\relax
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\ptifont\do@ptilt{\mtc@v\plttitle}}\\
        \end{tabular}\else
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\ptifont\do@ptilt{\mtc@v\plttitle}}\\
        \@ifundefined{chapter}{\hline}{}
        \end{tabular}\fi
        \nopagebreak[4]\null\leavevmode\vrule width \z@
        height \z@ depth \z@\\\@BBR%
        \leftmargin\ptcindent
        \rightmargin\ptcindent
        \itemindent=\z@\labelwidth=\z@%
        \labelsep=\z@\listparindent=\z@%
        % depth does not matter for partlot
        \begin{ptc@verse}%\c@tocdepth=\c@parttocdepth%
        \leavevmode\\\@BBR% this blank line is necessary to avoid
                % a wild negative indentation
        \vskip -.5\baselineskip
\begingroup
  \makeatletter
  \@ifundefined{plt@pgno}%
  {\let\@dottedtocline\@undottedtocline}{}
\@ifundefined{SHORTEXT}%
{\def\@tocfile{plt\Thepart}}%  % UNIX
{\def\@tocfile{U\Thepart}}%    % MS-DOS
  \@input{\jobname.\@tocfile}\if@filesw
  \fi%
  \global\@nobreakfalse\endgroup
        \end{ptc@verse}%
        \kern0.\baselineskip%
        \nopagebreak[4]\ptc@rule\null\leavevmode\\%
        \vskip-1.0\baselineskip
        \vrule width \z@ height \z@
        depth \z@\end{samepage}% %## the \\ is essential
        \par\@ifundefined{chapter}{\pagebreak[1]\vspace*{-1ex}}%
        {\cleardoublepage}}

% I use a depth of 10000 to inhibit the printing of
% that contentsline.
\def\l@xpart{\@dottedtocline{\@M}{1.0em}{2.3em}}
\def\l@pchapter{\@dottedtocline{1}{1.0em}{2.3em}}

\def\pchapter{pchapter}

\let\sv@part\@part
\def\@part[#1]#2{\sv@part[{#1}]{#2}\relax%
\addcontentsline{lof}{xpart}{#1}%
\addcontentsline{lot}{xpart}{#1}%
}

% tricky code to deal with \part*
\let\ptc@spart\@spart
\def\@spart{%
\addtocontents{toc}{\protect\partend}\ptc@spart%
}
\def\@spart{%
\addtocontents{toc}{\protect\partbegin}\ptc@spart%
}
\let\partend\relax
\let\partbegin\relax

\let\appendixmtc\relax

% this command extracts info from the .toc file
% and create the .ptcN files (.ptc -> .P on MS-DOS)
\def\@doparttoc#1{{%
  \makeatletter
  \setcounter{ptc}{0} % START VALUE
  \PTC@next#1.toc\relax\\}\setcounter{ptc}{0}} %23; raz
% this command extracts info from the .lof file
% and create the .plfN files (.plf -> .G on MS-DOS)
\def\@dopartlof#1{{%
  \makeatletter
  \setcounter{ptc}{0} % START VALUE
  \PLF@next#1.lof\relax\\}\setcounter{ptc}{0}} %23: raz
% this command extracts info from the .lot file
% and create the .pltN files (.plt -> .U on MS-DOS)
\def\@dopartlot#1{{%
  \setcounter{ptc}{0} % START VALUE
  \makeatletter
  \PLT@next#1.lot\relax\\}\setcounter{ptc}{0}} %23: raz

\def\doparttoc{\@ifnextchar[{\doparttoc@}{\doparttoc@[l]}}
\def\dopartlof{\@ifnextchar[{\dopartlof@}{\dopartlof@[l]}}
\def\dopartlot{\@ifnextchar[{\dopartlot@}{\dopartlot@[l]}}

\def\doparttoc@[#1]{%
\if #1e\let\df@ptitc\e@pti%
\else\if #1n\let\df@ptitc\n@pti%
\else\if #1c\let\df@ptitc\c@pti%
\else\if #1l\let\df@ptitc\l@pti%
\else\if #1r\let\df@ptitc\r@pti%
\fi\fi\fi\fi\fi%
\@@doparttoc}

\def\dopartlof@[#1]{%
\if #1e\let\df@ptilf\e@pti%
\else\if #1n\let\df@ptilf\n@pti%
\else\if #1c\let\df@ptilf\c@pti%
\else\if #1l\let\df@ptilf\l@pti%
\else\if #1r\let\df@ptilf\r@pti%
\fi\fi\fi\fi\fi%
\@@dopartlof}

\def\dopartlot@[#1]{%
\if #1e\let\df@ptilt\e@pti%
\else\if #1n\let\df@ptilt\n@pti%
\else\if #1c\let\df@ptilt\c@pti%
\else\if #1l\let\df@ptilt\l@pti%
\else\if #1r\let\df@ptilt\r@pti%
\fi\fi\fi\fi\fi%
\@@dopartlot}

\def\@@doparttoc{\@doparttoc{\jobname}\immediate\closeout\tf@mtc}
\def\@@dopartlof{\@dopartlof{\jobname}\immediate\closeout\tf@mtc}
\def\@@dopartlot{\@dopartlot{\jobname}\immediate\closeout\tf@mtc}

\def\PTC@next#1\relax#2\\{%
  \edef\PTC@list{#2}%
  \PTC@loop{#1}}
\def\PTC@toc{%
  \ifx\PTC@list\@empty\else\expandafter\PTC@explist\fi}

\def\PTC@contentsline#1#2#3#4{% %%DV: 4 instead of 3 parameters
\expandafter%
 \ifx\csname #1\endcsname\part\relax
 \stepcounter{ptc}% % the ptc counter simulates the part counter
\@ifundefined{SHORTEXT}%
{\typeout{Writing\space\jobname.ptc\theptc}%     % UNIX
\def\ptcname{\jobname.ptc\theptc}}%              % UNIX
{\typeout{Writing\space\jobname.P\theptc}%       % MS-DOS
\def\ptcname{\jobname.P\theptc}}%                % MS-DOS
 \immediate\closeout\tf@mtc % close current .ptcN .ptc->.P on MS-DOS
 \immediate\openout\tf@mtc=\ptcname % open next .ptcN (.ptc->.P if MS-DOS)
 \fi
\expandafter% % extracts and writes info for chapters, sections, etc.
 \ifx\csname #1\endcsname\chapter\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\ptcCfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcCfont%
      \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
 \fi
\expandafter%
 \ifx\csname #1\endcsname\section\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\ptcSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSfont%
      \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
 \fi
\expandafter%
 \ifx\csname #1\endcsname\subsection\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\ptcSSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSSfont%
      \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
 \fi
\expandafter%
 \ifx\csname #1\endcsname\subsubsection\relax
     \mtc@toks{\noexpand \leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\ptcSSSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSSSfont%
      \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
 \fi
\expandafter%
 \ifx\csname #1\endcsname\paragraph\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\ptcPfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcPfont%
      \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
 \fi
\expandafter%
 \ifx\csname #1\endcsname\subparagraph\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\ptcSPfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSPfont
      \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
 \fi
% Added v25: \starchapter & co.
\expandafter% % extracts and writes info for chapters, sections, etc.
 \ifx\csname #1\endcsname\starchapter\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\ptcCfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcCfont%
      \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
 \fi
\expandafter%
 \ifx\csname #1\endcsname\starsection\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\ptcSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSfont%
      \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
 \fi
\expandafter%
 \ifx\csname #1\endcsname\starsubsection\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\ptcSSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSSfont%
      \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
 \fi
\expandafter%
 \ifx\csname #1\endcsname\starsubsubsection\relax
     \mtc@toks{\noexpand \leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\ptcSSSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSSSfont%
      \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
 \fi
\expandafter%
 \ifx\csname #1\endcsname\starparagraph\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\ptcPfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcPfont%
      \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
 \fi
\expandafter%
 \ifx\csname #1\endcsname\starsubparagraph\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\ptcSPfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\ptcSPfont
      \space #3}{#4}}}}\@tempa% %%DV: 4 instead of 3 parameters
 \fi
}

\def\PTC@explist{\expandafter\PTC@next\PTC@list\\}
\def\PTC@loop#1{\openin\@inputcheck#1\relax
  \ifeof\@inputcheck
    \typeout{^^JNo file #1^^JPARTTOCS NOT PREPARED.^^J}%
    \expandafter\PTC@toc
  \else
    \typeout{PREPARING PARTTOCS FROM #1}%
    \expandafter\PTC@read\fi}
\def\PTC@read{%
  \read\@inputcheck to\PTC@line
  \expandafter\PTC@test\PTC@line....\PTC@%
  }%
\long\def\PTC@test#1#2#3#4#5\PTC@{%
  \ifx#1\contentsline
    \let\mtc@string\string
    \PTC@contentsline{#2}{#3}{#4}{\scrubdots#5}% %%DV: 4 instead of 3 params
    \let\mtc@string\relax
  \else\ifx#1\@input
     \edef\PTC@list{\PTC@list#2\relax}%
  \else\ifx#1\partend % \part* closes .ptcN (.ptc->.P on MS-DOS)
     \immediate\closeout\tf@mtc
     \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
  \else\ifx#1\partbegin
     \addtocounter{ptc}{-1}% % \part* has done a parasite increment
  \fi\fi\fi\fi
  \ifeof\@inputcheck\expandafter\PTC@toc
  \else\expandafter\PTC@read\fi}%

\def\PLF@next#1\relax#2\\{%
  \edef\PLF@list{#2}%
  \PLF@loop{#1}}
\def\PLF@lof{%
  \ifx\PLF@list\@empty\else\expandafter\PLF@explist\fi}

\def\PLF@contentsline#1#2#3{%
\expandafter%
 \ifx\csname #1\endcsname\xpart\relax
 \stepcounter{ptc}% % the ptc counter simulates the part counter
\@ifundefined{SHORTEXT}%
{\typeout{Writing\space\jobname.plf\theptc}%     % UNIX
\def\plfname{\jobname.plf\theptc}}%              % UNIX
{\typeout{Writing\space\jobname.G\theptc}%       % MS-DOS
\def\plfname{\jobname.G\theptc}}%                % MS-DOS
 \immediate\closeout\tf@mtc % close current .plfN .plf->.G on MS-DOS
 \immediate\openout\tf@mtc=\plfname % open next .plfN (.plf->.G if MS-DOS)
 \fi
\expandafter% % extracts and writes info for sections, etc.
 \ifx\csname #1\endcsname\figure\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\plffont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\plffont%
      \space #3}}}}\@tempa
 \fi
}

\def\PLF@explist{\expandafter\PLF@next\PLF@list\\}
\def\PLF@loop#1{\openin\@inputcheck#1\relax
  \ifeof\@inputcheck
    \typeout{^^JNo file #1^^JPARTLOFS NOT PREPARED.^^J}%
    \expandafter\PLF@lof
  \else
    \typeout{PREPARING PARTLOFS FROM #1}%
    \expandafter\PLF@read\fi}
\def\PLF@read{%
  \read\@inputcheck to\PLF@line
  \expandafter\PLF@test\PLF@line....\PLF@%
  }%
\long\def\PLF@test#1#2#3#4#5\PLF@{%
  \ifx#1\contentsline
    \let\mtc@string\string
    \PLF@contentsline{#2}{#3}{#4}%
    \let\mtc@string\relax
  \else\ifx#1\@input
     \edef\PLF@list{\PLF@list#2\relax}%
  \else\ifx#1\partend % \part* closes .plfN (.plf->.G on MS-DOS)
     \immediate\closeout\tf@mtc
     \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
  \else\ifx#1\partbegin
     \addtocounter{ptc}{-1}% % \part* has done a parasite increment
  \fi\fi\fi\fi
  \ifeof\@inputcheck\expandafter\PLF@lof
  \else\expandafter\PLF@read\fi}%

\def\PLT@next#1\relax#2\\{%
  \edef\PLT@list{#2}%
  \PLT@loop{#1}}
\def\PLT@lot{%
  \ifx\PLT@list\@empty\else\expandafter\PLT@explist\fi}

\def\PLT@contentsline#1#2#3{%
\expandafter%
 \ifx\csname #1\endcsname\xpart\relax
 \stepcounter{ptc}% % the ptc counter simulates the part counter
\@ifundefined{SHORTEXT}%
{\typeout{Writing\space\jobname.plt\theptc}%     % UNIX
\def\pltname{\jobname.plt\theptc}}%              % UNIX
{\typeout{Writing\space\jobname.U\theptc}%       % MS-DOS
\def\pltname{\jobname.U\theptc}}%                % MS-DOS
 \immediate\closeout\tf@mtc % close current .pltN .plt->.U on MS-DOS
 \immediate\openout\tf@mtc=\pltname % open next .pltN (.plt->.U if MS-DOS)
 \fi
\expandafter% % extracts and writes info for chapters, sections, etc.
 \ifx\csname #1\endcsname\table\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\pltfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\pltfont%
      \space #3}}}}\@tempa
 \fi
}

\def\PLT@explist{\expandafter\PLT@next\PLT@list\\}
\def\PLT@loop#1{\openin\@inputcheck#1\relax
  \ifeof\@inputcheck
    \typeout{^^JNo file #1^^JPARTLOTS NOT PREPARED.^^J}%
    \expandafter\PLT@lot
  \else
    \typeout{PREPARING PARTLOTS FROM #1}%
    \expandafter\PLT@read\fi}
\def\PLT@read{%
  \read\@inputcheck to\PLT@line
  \expandafter\PLT@test\PLT@line....\PLT@%
  }%
\long\def\PLT@test#1#2#3#4#5\PLT@{%
  \ifx#1\contentsline
    \let\mtc@string\string
    \PLT@contentsline{#2}{#3}{#4}%
    \let\mtc@string\relax
  \else\ifx#1\@input
     \edef\PLT@list{\PLT@list#2\relax}%
  \else\ifx#1\partend % \part* closes .pltN (.plt->.U on MS-DOS)
     \immediate\closeout\tf@mtc
     \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
  \else\ifx#1\partbegin
     \addtocounter{ptc}{-1}% % \part* has done a parasite increment
  \fi\fi\fi\fi
  \ifeof\@inputcheck\expandafter\PLT@lot
  \else\expandafter\PLT@read\fi}%
} % end of part stuff

%%%%%%%%%%%%%%%%%%%%%%%
%%% If \chapter is not defined but \section is, then
%%% the following macros are available (for article-like documents).
%%% Braces are inscrutable!
\@ifundefined{chapter}%
{\@ifundefined{section}{}{%
\def\firstsectionis#1%
  {\typeout{^^JWARNING*** \string\firstsectionis}%
   \typeout{ is an obsolete command^^J}}
\newcounter{stc}  % counter of secttocs
\setcounter{stc}{0}
\newcounter{secttocdepth} % analog to tocdepth, but for secttocs
\setcounter{secttocdepth}{2}

% rule before/after secttoc/sectlof/sectlot
\def\stc@rule{\kern-3\p@%
  \hrule width \columnwidth \kern2.6\p@} % the \hrule is .4pt high

\newlength\stcindent % indentation (left/right) of secttocs
\stcindent=24pt      % defaut value
\def\stcfont{\small\rm}    % font for the secttoc
\def\stcSSfont{\normalsize\bf}   % font for the secttoc (subsections)
\def\stcSSSfont{\stcfont}  % font for the secttoc (subsubsections)
\def\stcPfont{\stcfont}    % font for the secttoc (paragraphs)
\def\stcSPfont{\stcfont}   % font for the secttoc (subparagraphs)
\def\slffont{\stcfont}     % font for the sectlof (figures)
\def\sltfont{\stcfont}     % font for the sectlot (tables)
\def\stifont{\Large\bf}    % font for titles

% Centering, flushleft, flushright or empty titles.
\def\c@sti#1{\null\hfill #1\hfill\null}
\def\l@sti#1{\null #1\hfill\null}
\def\r@sti#1{\null\hfill #1\null}
\def\e@sti#1{\relax}
\def\n@sti#1{\relax}

% Default: titles on left
\let\do@stitc\l@sti
\let\df@stitc\l@sti
\let\do@stilf\l@sti
\let\df@stilf\l@sti
\let\do@stilt\l@sti
\let\df@stilt\l@sti

%v27 % Language dependent names: default values
%v27 \@ifundefined{stctitle}{\def\stctitle{Contents}}{\relax}
%v27 \@ifundefined{slftitle}{\def\slftitle{Figures}}{\relax}
%v27 \@ifundefined{slttitle}{\def\slttitle{Tables}}{\relax}

\def\stc@verse{\let\\=\@centercr
  \list{}{\itemsep\z@\itemindent \z@\listparindent \itemindent
          \leftmargin\stcindent
          \rightmargin\leftmargin}\item[]}
\def\endstc@verse{\nopagebreak[4]\endlist}

% this command must be used after \section
% if you need a secttoc (no automatic secttoc)
\def\secttoc{\@ifnextchar[{\secttoc@}{\secttoc@[d]}}

\def\secttoc@[#1]{%
        \relax\begin{samepage}% we begin a local group here, using samepage
        \if #1e\let\do@stitc\e@sti
        \else\if #1n\let\do@stitc\n@sti
        \else\if #1c\let\do@stitc\c@sti
        \else\if #1l\let\do@stitc\l@sti
        \else\if #1r\let\do@stitc\r@sti
        \else\if #1d\let\do@stitc\df@stitc
        \fi\fi\fi\fi\fi\fi
        \raggedright % added #14
        \parskip=\z@%
        \reset@font\stcfont%
        \parindent=\z@%
        \nopagebreak[4]%
        \kern-0.8\baselineskip\nopagebreak[4]%
        \par\noindent
        \ifx\stc@rule\relax
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\stifont\do@stitc{\mtc@v\stctitle}}\\
        \end{tabular}\else
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\stifont\do@stitc{\mtc@v\stctitle}}\\\hline
        \end{tabular}\fi
        \nopagebreak[4]\null\leavevmode\vrule width \z@
        height \z@ depth \z@\\\@BBR%
        \leftmargin\stcindent
        \rightmargin\stcindent
        \itemindent=\z@\labelwidth=\z@%
        \labelsep=\z@\listparindent=\z@%
        \begin{stc@verse}\c@tocdepth=\c@secttocdepth%
        \leavevmode\\\@BBR% this blank line is necessary to avoid
                % a wild negative indentation
        \vskip -.5\baselineskip
\begingroup
  \makeatletter
  \@ifundefined{stc@pgno}%
  {\let\@dottedtocline\@undottedtocline}{}
   \gdef\thestc{\arabic{stc}} %23
\@ifundefined{SHORTEXT}%
{\def\@tocfile{stc\thestc}}%  % UNIX
{\def\@tocfile{S\thestc}}%    % MS-DOS
  \@input{\jobname.\@tocfile}\if@filesw
  \fi%
  \global\@nobreakfalse\endgroup
        \end{stc@verse}%
        \kern0.\baselineskip%
        \nopagebreak[4]\stc@rule\null\leavevmode\\%
        \vskip-1.0\baselineskip
        \vrule width \z@ height \z@
        depth \z@\end{samepage}% %## the \\ is essential
        \par\pagebreak[1]\vspace*{-1ex}}%
        % some space under the secttoc

% this command must be used after \section
% if you need a sectlof (no automatic sectlof)
\def\sectlof{\@ifnextchar[{\sectlof@}{\sectlof@[d]}}

\def\sectlof@[#1]{%
        \relax\begin{samepage}% we begin a local group here, using samepage
        \if #1e\let\do@stilf\e@sti
        \else\if #1n\let\do@stilf\n@sti
        \else\if #1c\let\do@stilf\c@sti
        \else\if #1l\let\do@stilf\l@sti
        \else\if #1r\let\do@stilf\r@sti
        \else\if #1d\let\do@stilf\df@stilf
        \fi\fi\fi\fi\fi\fi
        \raggedright % added #14
        \parskip=\z@%
        \reset@font\slffont%
        \parindent=\z@%
        \nopagebreak[4]%
        \kern-0.8\baselineskip\nopagebreak[4]%
        \par\noindent
        \ifx\stc@rule\relax % correction 07Nov94 v23
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\stifont\do@stilf{\mtc@v\slftitle}}\\
        \end{tabular}\else
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\stifont\do@stilf{\mtc@v\slftitle}}\\\hline
        \end{tabular}\fi
        \nopagebreak[4]\null\leavevmode\vrule width \z@
        height \z@ depth \z@\\\@BBR%
        \leftmargin\stcindent
        \rightmargin\stcindent
        \itemindent=\z@\labelwidth=\z@%
        \labelsep=\z@\listparindent=\z@%
        % depth does not matter for sectlof
        \begin{stc@verse}%\c@tocdepth=\c@secttocdepth%
        \leavevmode\\\@BBR% this blank line is necessary to avoid
                % a wild negative indentation
        \vskip -.5\baselineskip
\begingroup
  \makeatletter
  \@ifundefined{slf@pgno}%
  {\let\@dottedtocline\@undottedtocline}{}
   \gdef\thestc{\arabic{stc}} %23
\@ifundefined{SHORTEXT}%
{\def\@tocfile{slf\thestc}}%  % UNIX
{\def\@tocfile{H\thestc}}%    % MS-DOS
  \@input{\jobname.\@tocfile}\if@filesw
  \fi%
  \global\@nobreakfalse\endgroup
        \end{stc@verse}%
        \kern0.\baselineskip%
        \nopagebreak[4]\stc@rule\null\leavevmode\\%
        \vskip-1.0\baselineskip
        \vrule width \z@ height \z@
        depth \z@\end{samepage}% %## the \\ is essential
        \par\pagebreak[1]\vspace*{-1ex}}%
        % some space under the secttoc

% Added in version #13
% this command must be used after \section
% if you need a sectlot (no automatic sectlot)
\def\sectlot{\@ifnextchar[{\sectlot@}{\sectlot@[d]}}

\def\sectlot@[#1]{%
        \relax\begin{samepage}% we begin a local group here, using samepage
        \if #1e\let\do@stilt\e@sti
        \else\if #1n\let\do@stilt\n@sti
        \else\if #1c\let\do@stilt\c@sti
        \else\if #1l\let\do@stilt\l@sti
        \else\if #1r\let\do@stilt\r@sti
        \else\if #1d\let\do@stilt\df@stilt
        \fi\fi\fi\fi\fi\fi
        \raggedright % added #14
        \parskip=\z@%
        \reset@font\sltfont%
        \parindent=\z@%
        \nopagebreak[4]%
        \kern-0.8\baselineskip\nopagebreak[4]%
        \par\noindent
        \ifx\stc@rule\relax
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\stifont\do@stilt{\mtc@v\slttitle}}\\
        \end{tabular}\else
        \begin{tabular}{@{}p{\columnwidth}@{}}
        {\reset@font\stifont\do@stilt{\mtc@v\slttitle}}\\\hline
        \end{tabular}\fi
        \nopagebreak[4]\null\leavevmode\vrule width \z@
        height \z@ depth \z@\\\@BBR%
        \leftmargin\stcindent
        \rightmargin\stcindent
        \itemindent=\z@\labelwidth=\z@%
        \labelsep=\z@\listparindent=\z@%
        % depth does not matter for sectlot
        \begin{stc@verse}%\c@tocdepth=\c@secttocdepth%
        \leavevmode\\\@BBR% this blank line is necessary to avoid
                % a wild negative indentation
        \vskip -.5\baselineskip
\begingroup
  \makeatletter
  \@ifundefined{slt@pgno}%
  {\let\@dottedtocline\@undottedtocline}{}
    \gdef\thestc{\arabic{stc}}
\@ifundefined{SHORTEXT}%
{\def\@tocfile{slt\thestc}}%  % UNIX
{\def\@tocfile{V\thestc}}%    % MS-DOS
  \@input{\jobname.\@tocfile}\if@filesw
  \fi%
  \global\@nobreakfalse\endgroup
        \end{stc@verse}%
        \kern0.\baselineskip%
        \nopagebreak[4]\stc@rule\null\leavevmode\\%
        \vskip-1.0\baselineskip
        \vrule width \z@ height \z@
        depth \z@\end{samepage}% %## the \\ is essential
        \par\pagebreak[1]\vspace*{-1ex}}%
        % some space under the secttoc

% I use a depth of 10000 to inhibit the printing of
% that contentsline.
\def\l@xsect{\@dottedtocline{\@M}{1.0em}{2.3em}}
\def\l@schapter{\@dottedtocline{1}{1.0em}{2.3em}}

\def\xsect{xsect}
\def\schapter{schapter}

\let\sv@sect\@sect
\gdef\@sect#1#2#3#4#5#6[#7]#8{%
\ifnum #2=1
\addcontentsline{lof}{xsect}{#7}%
\addcontentsline{lot}{xsect}{#7}%
\fi
\sv@sect{#1}{#2}{#3}{#4}{#4}{#5}{#6}[{#7}]{#8}}

\def\@sect#1#2#3#4#5#6[#7]#8{
\expandafter
\ifx\csname #1\endcsname\section\relax % ADDED
\addcontentsline{lof}{xsect}{#7}%        ADDED
\addcontentsline{lot}{xsect}{#7}%        ADDED
\fi                             %        ADDED
\ifx\csname #1\endcsname\starsection\relax % ADDED v25
\addcontentsline{lof}{xsect}{#7}%        ADDED v25
\addcontentsline{lot}{xsect}{#7}%        ADDED v25
\fi                             %        ADDED v25
\ifnum #2>\c@secnumdepth
     \let\@svsec\@empty\else
     \refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname\hskip 1em}\fi
     \@tempskipa #5\relax
      \ifdim \@tempskipa>\z@
        \begingroup #6\relax
          \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}%
        \endgroup
       \csname #1mark\endcsname{#7}\addcontentsline
         {toc}{#1}{\ifnum #2>\c@secnumdepth \else
                      \protect\numberline{\csname the#1\endcsname}\fi
                    #7}\else
        \def\@svsechd{#6\hskip #3\relax  %% \relax added 2 May 90
                   \@svsec #8\csname #1mark\endcsname
                      {#7}\addcontentsline
                           {toc}{#1}{\ifnum #2>\c@secnumdepth \else
                             \protect\numberline{\csname the#1\endcsname}\fi
                       #7}}\fi
     \@xsect{#5}}

% tricky code to deal with \section*
\let\stc@ssect\@ssect
\def\@ssect{%
\addtocontents{toc}{\protect\sectend}\stc@ssect%
}
\def\@ssect{%
\addtocontents{toc}{\protect\sectbegin}\stc@ssect%
}
\let\sectend\relax
\let\sectbegin\relax

\let\appendixmtc\relax

% this command extracts info from the .toc file
% and create the .stcN files (.stc -> .S on MS-DOS)
\def\@dosecttoc#1{{%
  \makeatletter
  \setcounter{stc}{0} % START VALUE
  \STC@next#1.toc\relax\\}\setcounter{stc}{0}} %23: raz
% this command extracts info from the .lof file
% and create the .slfN files (.slf -> .H on MS-DOS)
\def\@dosectlof#1{{%
  \makeatletter
  \setcounter{stc}{0} % START VALUE
  \SLF@next#1.lof\relax\\}\setcounter{stc}{0}} %23: raz
% this command extracts info from the .lot file
% and create the .sltN files (.slt -> .V on MS-DOS)
\def\@dosectlot#1{{%
  \setcounter{stc}{0} % START VALUE
  \makeatletter
  \SLT@next#1.lot\relax\\}\setcounter{stc}{0}} %23: raz

\def\dosecttoc{\@ifnextchar[{\dosecttoc@}{\dosecttoc@[l]}}
\def\dosectlof{\@ifnextchar[{\dosectlof@}{\dosectlof@[l]}}
\def\dosectlot{\@ifnextchar[{\dosectlot@}{\dosectlot@[l]}}

\def\dosecttoc@[#1]{%
\if #1e\let\df@stitc\e@sti%
\else\if #1n\let\df@stitc\n@sti%
\else\if #1c\let\df@stitc\c@sti%
\else\if #1l\let\df@stitc\l@sti%
\else\if #1r\let\df@stitc\r@sti%
\fi\fi\fi\fi\fi%
\@@dosecttoc}

\def\dosectlof@[#1]{%
\if #1e\let\df@stilf\e@sti%
\else\if #1n\let\df@stilf\n@sti%
\else\if #1c\let\df@stilf\c@sti%
\else\if #1l\let\df@stilf\l@sti%
\else\if #1r\let\df@stilf\r@sti%
\fi\fi\fi\fi\fi%
\@@dosectlof}

\def\dosectlot@[#1]{%
\if #1e\let\df@stilt\e@sti%
\else\if #1n\let\df@stilt\n@sti%
\else\if #1c\let\df@stilt\c@sti%
\else\if #1l\let\df@stilt\l@sti%
\else\if #1r\let\df@stilt\r@sti%
\fi\fi\fi\fi\fi%
\@@dosectlot}

\def\@@dosecttoc{\@dosecttoc{\jobname}\immediate\closeout\tf@mtc}
\def\@@dosectlof{\@dosectlof{\jobname}\immediate\closeout\tf@mtc}
\def\@@dosectlot{\@dosectlot{\jobname}\immediate\closeout\tf@mtc}

\def\STC@next#1\relax#2\\{%
  \edef\STC@list{#2}%
  \STC@loop{#1}}
\def\STC@toc{%
  \ifx\STC@list\@empty\else\expandafter\STC@explist\fi}

\def\STC@contentsline#1#2#3{%
  \gdef\thestc{\arabic{stc}}
\expandafter%
 \ifx\csname #1\endcsname\section\relax
 \stepcounter{stc}% % the stc counter simulates the section counter
  \gdef\thestc{\arabic{stc}}
\@ifundefined{SHORTEXT}%
{\typeout{Writing\space\jobname.stc\thestc}%     % UNIX
\def\stcname{\jobname.stc\thestc}}%              % UNIX
{\typeout{Writing\space\jobname.S\thestc}%       % MS-DOS
\def\stcname{\jobname.S\thestc}}%                % MS-DOS
 \immediate\closeout\tf@mtc % close current .stcN .stc->.S on MS-DOS
 \immediate\openout\tf@mtc=\stcname % open next .stcN (.stc->.S if MS-DOS)
 \fi
\expandafter%
 \ifx\csname #1\endcsname\subsection\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\stcSSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\stcSSfont%
      \space #3}}}}\@tempa
 \fi
\expandafter%
 \ifx\csname #1\endcsname\subsubsection\relax
     \mtc@toks{\noexpand \leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\stcSSSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\stcSSSfont%
      \space #3}}}}\@tempa
 \fi
\expandafter%
 \ifx\csname #1\endcsname\paragraph\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\stcPfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\stcPfont%
      \space #3}}}}\@tempa
 \fi
\expandafter%
 \ifx\csname #1\endcsname\subparagraph\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\stcSPfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\stcSPfont
      \space #3}}}}\@tempa
 \fi
% Added v25: \starsection and co.
 \ifx\csname #1\endcsname\starsection\relax
 \stepcounter{stc}% % the stc counter simulates the section counter
  \gdef\thestc{\arabic{stc}}
\@ifundefined{SHORTEXT}%
{\typeout{Writing\space\jobname.stc\thestc}%     % UNIX
\def\stcname{\jobname.stc\thestc}}%              % UNIX
{\typeout{Writing\space\jobname.S\thestc}%       % MS-DOS
\def\stcname{\jobname.S\thestc}}%                % MS-DOS
 \immediate\closeout\tf@mtc % close current .stcN .stc->.S on MS-DOS
 \immediate\openout\tf@mtc=\stcname % open next .stcN (.stc->.S if MS-DOS)
 \fi
\expandafter%
 \ifx\csname #1\endcsname\starsubsection\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\stcSSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\stcSSfont%
      \space #3}}}}\@tempa
 \fi
\expandafter%
 \ifx\csname #1\endcsname\starsubsubsection\relax
     \mtc@toks{\noexpand \leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\stcSSSfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\stcSSSfont%
      \space #3}}}}\@tempa
 \fi
\expandafter%
 \ifx\csname #1\endcsname\starparagraph\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\stcPfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\stcPfont%
      \space #3}}}}\@tempa
 \fi
\expandafter%
 \ifx\csname #1\endcsname\starsubparagraph\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\stcSPfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\stcSPfont
      \space #3}}}}\@tempa
 \fi
}

\def\STC@explist{\expandafter\STC@next\STC@list\\}
\def\STC@loop#1{\openin\@inputcheck#1\relax
  \ifeof\@inputcheck
    \typeout{^^JNo file #1^^JSECTTOCS NOT PREPARED.^^J}%
    \expandafter\STC@toc
  \else
    \typeout{PREPARING SECTTOCS FROM #1}%
    \expandafter\STC@read\fi}
\def\STC@read{%
  \read\@inputcheck to\STC@line
  \expandafter\STC@test\STC@line....\STC@%
  }%
\long\def\STC@test#1#2#3#4#5\STC@{%
  \ifx#1\contentsline
    \let\mtc@string\string
    \STC@contentsline{#2}{#3}{#4}%
    \let\mtc@string\relax
  \else\ifx#1\@input
     \edef\STC@list{\STC@list#2\relax}%
  \else\ifx#1\sectend % \section* closes .stcN (.stc->.S on MS-DOS)
     \immediate\closeout\tf@mtc
     \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
  \else\ifx#1\sectbegin
     \addtocounter{stc}{-1}% % \section* has done a parasite increment
  \fi\fi\fi\fi
  \ifeof\@inputcheck\expandafter\STC@toc
  \else\expandafter\STC@read\fi}%

\def\SLF@next#1\relax#2\\{%
  \edef\SLF@list{#2}%
  \SLF@loop{#1}}
\def\SLF@lof{%
  \ifx\SLF@list\@empty\else\expandafter\SLF@explist\fi}

\def\SLF@contentsline#1#2#3{%
  \gdef\thestc{\arabic{stc}}
\expandafter%
 \ifx\csname #1\endcsname\xsect\relax
 \stepcounter{stc}% % the stc counter simulates the section counter
  \gdef\thestc{\arabic{stc}}
\@ifundefined{SHORTEXT}%
{\typeout{Writing\space\jobname.slf\thestc}%     % UNIX
\def\slfname{\jobname.slf\thestc}}%              % UNIX
{\typeout{Writing\space\jobname.G\thestc}%       % MS-DOS
\def\slfname{\jobname.H\thestc}}%                % MS-DOS
 \immediate\closeout\tf@mtc % close current .slfN .slf->.H on MS-DOS
 \immediate\openout\tf@mtc=\slfname % open next .slfN (.slf->.H if MS-DOS)
 \fi
\expandafter% % extracts and writes info for sections, etc.
 \ifx\csname #1\endcsname\figure\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\slffont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\slffont%
      \space #3}}}}\@tempa
 \fi
}

\def\SLF@explist{\expandafter\SLF@next\SLF@list\\}
\def\SLF@loop#1{\openin\@inputcheck#1\relax
  \ifeof\@inputcheck
    \typeout{^^JNo file #1^^JSECTLOFS NOT PREPARED.^^J}%
    \expandafter\SLF@lof
  \else
    \typeout{PREPARING SECTLOFS FROM #1}%
    \expandafter\SLF@read\fi}
\def\SLF@read{%
  \read\@inputcheck to\SLF@line
  \expandafter\SLF@test\SLF@line....\SLF@%
  }%
\long\def\SLF@test#1#2#3#4#5\SLF@{%
  \ifx#1\contentsline
    \let\mtc@string\string
    \SLF@contentsline{#2}{#3}{#4}%
    \let\mtc@string\relax
  \else\ifx#1\@input
     \edef\SLF@list{\SLF@list#2\relax}%
  \else\ifx#1\sectend % \section* closes .slfN (.slf->.H on MS-DOS)
     \immediate\closeout\tf@mtc
     \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
  \else\ifx#1\sectbegin
     \addtocounter{stc}{-1}% % \section* has done a parasite increment
  \fi\fi\fi\fi
  \ifeof\@inputcheck\expandafter\SLF@lof
  \else\expandafter\SLF@read\fi}%

\def\SLT@next#1\relax#2\\{%
  \edef\SLT@list{#2}%
  \SLT@loop{#1}}
\def\SLT@lot{%
  \ifx\SLT@list\@empty\else\expandafter\SLT@explist\fi}

\def\SLT@contentsline#1#2#3{%
  \gdef\thestc{\arabic{stc}}
\expandafter%
 \ifx\csname #1\endcsname\xsect\relax
 \stepcounter{stc}% % the stc counter simulates the section counter
  \gdef\thestc{\arabic{stc}}
\@ifundefined{SHORTEXT}%
{\typeout{Writing\space\jobname.slt\thestc}%     % UNIX
\def\mltname{\jobname.slt\thestc}}%              % UNIX
{\typeout{Writing\space\jobname.V\thestc}%       % MS-DOS
\def\sltname{\jobname.V\thestc}}%                % MS-DOS
 \immediate\closeout\tf@mtc % close current .sltN .slt->.V on MS-DOS
 \immediate\openout\tf@mtc=\sltname % open next .sltN (.slt->.V if MS-DOS)
 \fi
\expandafter% % extracts and writes info for subsections, etc.
 \ifx\csname #1\endcsname\table\relax
     \mtc@toks{\noexpand\leavevmode#2}%
     \edef\@tempa{\immediate\write\tf@mtc {%
     {\string\reset@font\string\sltfont\string\mtc@string%
     \string\contentsline{#1}%
     {\noexpand\the\mtc@toks}{\string\reset@font\string\sltfont%
      \space #3}}}}\@tempa
 \fi
}

\def\SLT@explist{\expandafter\SLT@next\SLT@list\\}
\def\SLT@loop#1{\openin\@inputcheck#1\relax
  \ifeof\@inputcheck
    \typeout{^^JNo file #1^^JSECTLOTS NOT PREPARED.^^J}%
    \expandafter\SLT@lot
  \else
    \typeout{PREPARING SECTLOTS FROM #1}%
    \expandafter\SLT@read\fi}
\def\SLT@read{%
  \read\@inputcheck to\SLT@line
  \expandafter\SLT@test\SLT@line....\SLT@%
  }%
\long\def\SLT@test#1#2#3#4#5\SLT@{%
  \ifx#1\contentsline
    \let\mtc@string\string
    \SLT@contentsline{#2}{#3}{#4}%
    \let\mtc@string\relax
  \else\ifx#1\@input
     \edef\SLT@list{\SLT@list#2\relax}%
  \else\ifx#1\sectend % \section* closes .sltN (.slt->.V on MS-DOS)
     \immediate\closeout\tf@mtc
     \immediate\openout\tf@mtc=\jobname.bmt % and opens a scratch file
  \else\ifx#1\sectbegin
     \addtocounter{stc}{-1}% % \section* has done a parasite increment
  \fi\fi\fi\fi
  \ifeof\@inputcheck\expandafter\SLT@lot
  \else\expandafter\SLT@read\fi}%
}}{}

\@ifundefined{section}{}{\let\l@listof\l@section} %v27
\@ifundefined{chapter}{}{\let\l@listof\l@chapter} %v27
\@ifundefined{part}{}{\let\l@starpart\l@part}
\@ifundefined{chapter}{}{\let\l@starchapter\l@chapter}
\@ifundefined{section}{}{\let\l@starsection\l@section}
\@ifundefined{subsection}{}{\let\l@starsubsection\l@subsection}
\@ifundefined{subsubsection}{}{\let\l@starsubsubsection\l@subsubsection}
\@ifundefined{paragraph}{}{\let\l@starparagraph\l@paragraph}
\@ifundefined{subparagraph}{}{\let\l@starsubparagraph\l@subparagraph}

\def\noptcrule{\let\ptc@rule\relax}
\def\nomtcrule{\let\mtc@rule\relax}
\def\nostcrule{\let\stc@rule\relax}
\def\ptcrule{\def\ptc@rule{\kern-3\p@%
  \hrule width \columnwidth \kern2.6\p@}} % the \hrule is .4pt high
\def\mtcrule{\def\mtc@rule{\kern-3\p@%
  \hrule width \columnwidth \kern2.6\p@}} % the \hrule is .4pt high
\def\stcrule{\def\stc@rule{\kern-3\p@%
  \hrule width \columnwidth \kern2.6\p@}} % the \hrule is .4pt high

%%%% Language dependent part
\DeclareOption{american}{\input{english.mld}}
\DeclareOption{austrian}{\input{german.mld}}
\DeclareOption{brazil}{\input{portuges.mld}}
\DeclareOption{breton}{\input{breton.mld}} %v26
\DeclareOption{catalan}{\input{catalan.mld}}
\DeclareOption{croatian}{\input{croatian.mld}}
\DeclareOption{czech}{\input{czech.mld}}
\DeclareOption{danish}{\input{danish.mld}}
\DeclareOption{dutch}{\input{dutch.mld}}
\DeclareOption{english}{\input{english.mld}}
\DeclareOption{esperant}{\input{esperant.mld}} %v26
\DeclareOption{esperanto}{\input{esperant.mld}} %v26
\DeclareOption{finnish}{\input{finnish.mld}}
\DeclareOption{francais}{\input{french.mld}}
\DeclareOption{french}{\input{french.mld}}
\DeclareOption{galician}{\input{galician.mld}}
\DeclareOption{german}{\input{german.mld}}
\DeclareOption{germanb}{\input{germanb.mld}} %v26
\DeclareOption{greek}{\input{greek.mld}} %v26
\DeclareOption{hungarian}{\input{magyar.mld}}
\DeclareOption{irish}{\input{irish.mld}} %v26
\DeclareOption{italian}{\input{italian.mld}}
\DeclareOption{lsorbian}{\input{lsorbian.mld}} %v26
\DeclareOption{magyar}{\input{magyar.mld}}
\DeclareOption{norsk}{\input{norsk.mld}}
\DeclareOption{nynorsk}{\input{nynorsk.mld}} %v25
\DeclareOption{polish}{\input{polish.mld}}
\DeclareOption{portuges}{\input{portuges.mld}}
\DeclareOption{romanian}{\input{romanian.mld}}
%%%%russian not supported \DeclareOption{russian}{\input{russian.mld}}
\DeclareOption{russianb}{\input{russianb.mld}} %v26
\DeclareOption{scottish}{\input{scottish.mld}} %v26
\DeclareOption{slovak}{\input{slovak.mld}}
\DeclareOption{slovene}{\input{slovene.mld}}
\DeclareOption{spanish}{\input{spanish.mld}}
\DeclareOption{swedish}{\input{swedish.mld}}
\DeclareOption{turkish}{\input{turkish.mld}}
\DeclareOption{usorbian}{\input{usorbian.mld}} %v26
\DeclareOption{vietnam}{\input{vietnam.mld}}   %v27
\DeclareOption{vietnamese}{\input{vietnam.mld}}   %v27
\DeclareOption{arab}{\input{arab.mld}}   %v27
\DeclareOption{arabic}{\input{arab.mld}}   %v27
\ExecuteOptions{english} %v27 % default
\ProcessOptions*
%%\languagespecific{russian.dtx}
%%
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
\endinput
%%
%% End of file `minitoc.sty'.
