%
% This file helps define the MIT-Press-Book document style, created and
% maintained by EB@OZ.  Please do not modify it.
%
% Modified from REPORT DOCUMENT STYLE -- Released 23 September 1985
%    for LaTeX version 2.09
% which was
% Copyright (C) 1985 by Leslie Lamport

%  ****************************************
%  *               FONTS                  *
%  ****************************************
%

\lineskip 1pt            % \lineskip is 1pt for all font sizes.
\normallineskip 1pt
\def\baselinestretch{1}  % see also \programspacing below

% LaTex (LFONTS.TEX) leaves out some font sizes that we'll be using.
% Therefore we redefine \vipt and \viipt to remove the corresponding
% \@subfont calls.  However, if we do this we must also create
% pxl font files of the proper magnifications for our printers.
% Since we've created new pxl font files for small \tt sizes only,
% we'll remove \@subfont calls for \tt alone.

\def\vipt{\textfont\z@\sixrm 
  \scriptfont\z@\sixrm \scriptscriptfont\z@\sixrm
\textfont\@ne\sixmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\sixmi
\textfont\tw@\sixsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\sixsy
\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex
\def\prm{\fam\z@\sixrm}%
\def\unboldmath{\everymath{}\everydisplay{}\@nomath
  \unboldmath\@boldfalse}\@boldfalse
\def\boldmath{\@subfont\boldmath\unboldmath}%
\def\pit{\@subfont\it\rm}%
\def\psl{\@subfont\sl\rm}%
\def\pbf{\@getfont\pbf\bffam\@vipt{ambx7 scaled857}}%
\def\ptt{\@getfont\ptt\ttfam\@vipt{amtt8 at 6pt}}%      %% NEW
\def\psf{\@subfont\sf\rm}%
\def\psc{\@subfont\sc\rm}%
\def\ly{\fam\lyfam\sixly}\textfont\lyfam\sixly 
    \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\sixly 
\@setstrut\rm}

\def\viipt{\textfont\z@\sevrm 
  \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm
\textfont\@ne\sevmi \scriptfont\@ne\fivmi \scriptscriptfont\@ne\fivmi
\textfont\tw@\sevsy \scriptfont\tw@\fivsy \scriptscriptfont\tw@\fivsy
\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex
\def\prm{\fam\z@\sevrm}%
\def\unboldmath{\everymath{}\everydisplay{}\@nomath
\unboldmath\@boldfalse}\@boldfalse
\def\boldmath{\@subfont\boldmath\unboldmath}%
\def\pit{\fam\itfam\sevit}\textfont\itfam\sevit 
   \scriptfont\itfam\sevit \scriptscriptfont\itfam\sevit 
\def\psl{\@subfont\sl\it}%
\def\pbf{\@getfont\pbf\bffam\@viipt{ambx7}}%
\def\ptt{\@getfont\ptt\ttfam\@vipt{amtt8 at 7pt}}%      %% NEW
\def\psf{\@subfont\sf\rm}%
\def\psc{\@subfont\sc\rm}%
\def\ly{\fam\lyfam\sevly}\textfont\lyfam\sevly 
    \scriptfont\lyfam\fivly \scriptscriptfont\lyfam\fivly 
\@setstrut \rm}

% Each size-changing command \SIZE executes the command
%        \@setsize\SIZE{BASELINESKIP}\FONTSIZE\@FONTSIZE
% where:
%   BASELINESKIP = Normal value of \baselineskip for that size.  (Actual 
%                  value will be \baselinestretch * BASELINESKIP.)
%
%  \FONTSIZE     = Name of font-size command.  The currently available
%                  (preloaded) font sizes are: \vpt (5pt), \vipt (6pt),
%                  \viipt (etc.), \viiipt, \ixpt, \xpt, \xipt, \xiipt,
%                  \xivpt, \xviipt, \xxpt, \xxvpt.
%  \@FONTSIZE    = The same as the font-size command except with an
%                  '@' in front---e.g., if \FONTSIZE = \xivpt then
%                  \@FONTSIZE = \@xivpt.
%
% For reasons of efficiency that needn't concern the designer,
% the document style defines \@normalsize instead of \normalsize .  This is
% done only for \normalsize, not for any other size-changing commands.

\def\@normalsize{\@setsize\normalsize{13pt}\xpt\@xpt
\abovedisplayskip 10pt plus2pt minus5pt%
\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip  \z@ plus3pt%   
\belowdisplayshortskip  6pt plus3pt minus3pt}

\def\small{\@setsize\small{11pt}\ixpt\@ixpt
\abovedisplayskip 8.5pt plus 3pt minus 4pt%
\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip \z@ plus2pt%
\belowdisplayshortskip 4pt plus2pt minus 2pt
\def\@listi{\topsep 4pt plus 2pt minus 2pt\parsep 2pt plus 1pt minus 1pt
\itemsep \parsep}}

% We add several sizes in between \small and \tiny.
% They are mainly for use in typesetting large \tt programs
% or traces; they are not standard.
% In order, the sizes go \small \smaller \verysmall \quitesmall \tiny.
%
\def\smaller{\@setsize\smaller{10pt}\viiipt\@viiipt
\abovedisplayskip 7.5pt plus 3pt minus 4pt%
\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip \z@ plus2pt%
\belowdisplayshortskip 4pt plus2pt minus 2pt
\def\@listi{\topsep 3pt plus 2pt minus 2pt\parsep 2pt plus 1pt minus 1pt
\itemsep \parsep}}

\def\verysmall{\@setsize\verysmall{9pt}\viipt\@viipt
\abovedisplayskip 6.5pt plus 3pt minus 4pt%
\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip \z@ plus2pt%
\belowdisplayshortskip 4pt plus2pt minus 2pt
\def\@listi{\topsep 3pt plus 2pt minus 2pt\parsep 2pt plus 1pt minus 1pt
\itemsep \parsep}}

\def\tiny{\@setsize\tiny{8pt}\vipt\@vipt}

\def\footnotesize{\@setsize\footnotesize{9.5pt}\viiipt\@viiipt
\abovedisplayskip 6pt plus 2pt minus 4pt%
\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip \z@ plus 1pt%
\belowdisplayshortskip 3pt plus 1pt minus 2pt
\def\@listi{\topsep 3pt plus 1pt minus 1pt\parsep 2pt plus 1pt minus 1pt
\itemsep \parsep}}

% This one is new in the MIT-Press-Book style; it's not used in the
% REPORT style.
\def\captionsize{\@setsize\captionsize{10pt}\ixpt\@ixpt
\abovedisplayskip 6pt plus 2pt minus 4pt%
\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip \z@ plus 1pt%
\belowdisplayshortskip 3pt plus 1pt minus 2pt
\def\@listi{\topsep 3pt plus 1pt minus 1pt\parsep 2pt plus 1pt minus 1pt
\itemsep \parsep}}

% This one is new as well.  It's used in the 'program' environment.
%
\def\programspacing{\newbaselinestretch{0.75}}

\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
\def\large{\@setsize\large{14pt}\xiipt\@xiipt}
\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
\def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
\def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}

\normalsize  % Choose the normalsize font.

% PICTURE ENVIRONMENT BUG:
%
% Change \the\fontdimen8\tenlnw to a larger value so that
% \thicklines will work better with horizontal and vertical
% lines.  I don't know what's wrong here; it may be our
% printers.
%

\fontdimen8\tenlnw=1.0pt %% empirically determined value


%  ****************************************
%  *            PAGE LAYOUT               *
%  ****************************************
%
% All margin dimensions measured from a point one inch from top and side
% of page.  

% SIDE MARGINS:
\oddsidemargin 56pt      %   Left margin on odd-numbered pages.
\evensidemargin 56pt     %   Left margin on even-numbered pages.
\marginparwidth 107pt    %   Width of marginal notes.
\marginparsep 11pt       %   Horizontal space between outer margin and 
                         %   marginal note


% VERTICAL SPACING:        

                         % Top of page:
\topmargin 27pt          %    Nominal distance from top of page to top of
                         %    box containing running head.
\headheight 12pt         %    Height of box containing running head.
\headsep 24pt            %    Space between running head and text.
% \topskip = 10pt        %    '\baselineskip' for first line of page.

                         % Bottom of page:
\footheight 0pt          %    Height of box containing running foot.
\footskip 0pt            %    Distance from baseline of box containing foot 
                         %    to baseline of last line of text.


% DIMENSION OF TEXT:

\textheight 500pt        % Height of text (including footnotes and figures, 
                         % excluding running head and foot).
\textwidth 334pt         % Width of text line.
                         % For two-column mode: 
\columnsep 10pt          %    Space between columns 
\columnseprule 0pt       %    Width of rule between columns.

% Parameters used by the special table of contents format that's used
% in the MIT-Press-Book style.

\newdimen\toc@leftwidth
\toc@leftwidth 7.5pc
\newdimen\toc@rightwidth
\toc@rightwidth 18.7pc
\newdimen\toc@colsep
\toc@colsep .8pc
\newdimen\toc@prechapterskip
\toc@prechapterskip 20pt
\newdimen\toc@postchapterskip
\toc@postchapterskip 8pt

% A \raggedbottom command causes 'ragged bottom' pages: pages set to
% natural height instead of being stretched to exactly \textheight.

% FOOTNOTES:

\footnotesep 6.65pt   % Height of strut placed at the beginning of every
                      % footnote = height of normal \footnotesize strut,
                      % so no extra space between footnotes.

\skip\footins 9pt plus 4pt minus 2pt  % Space between last line of text and 
                                      % top of first footnote.

% CAPTIONSKIP -- Made a parameter in this document style.

\newdimen\precaptionskip
\precaptionskip 0pt             % default is none

% FLOATS: (a float is something like a figure or table)
%
%  FOR FLOATS ON A TEXT PAGE:
%
%    ONE-COLUMN MODE OR SINGLE-COLUMN FLOATS IN TWO-COLUMN MODE:
\floatsep 12pt plus 2pt minus 2pt        % Space between adjacent floats moved
                                         % to top or bottom of text page.
\textfloatsep 20pt plus 2pt minus 4pt    % Space between main text and floats
                                         % at top or bottom of page.
\intextsep 12pt plus 2pt minus 2pt       % Space between in-text figures and 
                                         % text.
\@maxsep 20pt                            % The maximum of \floatsep, 
                                         % \textfloatsep and \intextsep (minus
                                         % the stretch and shrink).
%    TWO-COLUMN FLOATS IN TWO-COLUMN MODE:
\dblfloatsep 12pt plus 2pt minus 2pt     % Same as \floatsep for double-column
                                         % figures in two-column mode.
\dbltextfloatsep 20pt plus 2pt minus 4pt % \textfloatsep for double-column 
                                         % floats.
\@dblmaxsep 20pt                         % The maximum of \dblfloatsep and 
                                         % \dbltexfloatsep.

%  FOR FLOATS ON A SEPARATE FLOAT PAGE OR COLUMN:
%    ONE-COLUMN MODE OR SINGLE-COLUMN FLOATS IN TWO-COLUMN MODE:
\@fptop 0pt plus 1fil    % Stretch at top of float page/column. (Must be    
                         % 0pt plus ...)                                    
\@fpsep 8pt plus 2fil    % Space between floats on float page/column.       
\@fpbot 0pt plus 1fil    % Stretch at bottom of float page/column. (Must be 
                         % 0pt plus ... )                                   

%   DOUBLE-COLUMN FLOATS IN TWO-COLUMN MODE.
\@dblfptop 0pt plus 1fil % Stretch at top of float page. (Must be 0pt plus ...)
\@dblfpsep 8pt plus 2fil % Space between floats on float page.
\@dblfpbot 0pt plus 1fil % Stretch at bottom of float page. (Must be 
                         % 0pt plus ... )                                   
% MARGINAL NOTES:
%
\marginparpush 5pt       % Minimum vertical separation between two marginal 
                         % notes.


%  ****************************************
%  *           PARAGRAPHING               *
%  ****************************************
%
\parskip 4.4pt plus 1pt            % Extra vertical space between paragraphs.
\parindent 22pt                    % Width of paragraph indentation.
\topsep 8pt plus 2pt minus 4pt     % Extra vertical space, in addition to 
                                   % \parskip, added above and below list and
                                   % paragraphing environments.
\partopsep 2pt plus 1pt minus 1pt  % Extra vertical space, in addition to 
                                   % \parskip and \topsep, added when user
                                   % leaves blank line before environment.
\itemsep 4pt plus 2pt minus 1pt    % Extra vertical space, in addition to
                                   % \parskip, added between list items.

\invertedparindent\parindent       % This dimension is defined in the
                                   % texlocal:invertedparagraphs file,
                                   % which is read before this file is.

% The following page-breaking penalties are defined

\@lowpenalty   51      % Produced by \nopagebreak[1] or \nolinebreak[1]
\@medpenalty  151      % Produced by \nopagebreak[2] or \nolinebreak[2]
\@highpenalty 301      % Produced by \nopagebreak[3] or \nolinebreak[3]

\@beginparpenalty -\@lowpenalty    % Before a list or paragraph environment.
\@endparpenalty   -\@lowpenalty    % After a list or paragraph environment.
\@itempenalty     -\@lowpenalty    % Between list items.

% \clubpenalty         % 'Club line'  at bottom of page.
% \widowpenalty        % 'Widow line' at top of page.
% \displaywidowpenalty % Math display widow line.
% \predisplaypenalty   % Breaking before a math display.
% \postdisplaypenalty  % Breaking after a math display.
% \interlinepenalty    % Breaking at a line within a paragraph.
% \brokenpenalty       % Breaking after a hyphenated line.

\widowpenalty 10000
\clubpenalty 10000


%    ****************************************
%    *        CHAPTERS AND SECTIONS         *
%    ****************************************
%
%

\def\part{\cleardoublepageempty   % Starts new page.
  \thispagestyle{empty}      % Page style of part page is 'empty'
  \if@twocolumn              % IF two-column style
     \onecolumn              %  THEN \onecolumn
     \@tempswatrue           %       @tempswa := true
    \else \@tempswafalse     %  ELSE @tempswa := false
  \fi                        % FI
  \bgroup\parindent 0pt\raggedright\secdef\@part\@spart}     

\def\@part[#1]#2{\ifnum \c@secnumdepth >-2\relax  % IF secnumdepth > -2
        \refstepcounter{part}                     %   THEN step part counter
        \addcontentsline{toc}{part}
           {\protect\numberline{\thepart} #1}\else% ELSE add unnumbered line
        \addcontentsline{toc}{part}{#1}\fi        % FI
   \markboth{}{}
   \ifnum \c@secnumdepth >-2\relax  % IF secnumdepth > -2
      \@chapterheadlayout{Part \thepart:}{#1}\else
      \@chapterheadlayout{}{#1}\fi
   \@endpart}
    
% \@endpart finishes the part page
%
\def\@endpart{\par\egroup     % END centering 
   \vfil\newpage              % End page with 1fil glue.
   \if@twoside                % IF twoside printing
       \hbox{}                %   THEN Produce totally blank page
       \thispagestyle{empty}  
       \newpage        
   \fi                        % FI
   \if@tempswa                % IF @tempswa = true       
     \twocolumn               %   THEN \twocolumn 
   \fi}                       % FI

\def\@spart#1{\@chapterheadlayout{}{#1}\@endpart}

% The chapter headings will be formatted as follows:
%
%     Chapter 27
%     ---------------------------------------------
%     Still Further Considerations
%
% The \@chapterheadlayout definition helps keep the line the same distance from
% the top of the page and the text regardless of what happens.
% However, things could be changed so that the text moves downward if
% the chapter has a long title.
%
% A \chapter*{...} chapter DOES appear in the table of contents,
% in this document style; however, it appears in a different format
% from a normal chapter.

\def\@topchapterdecls{\parindent\z@\raggedright\Large\bf}

\def\@topchapterbox#1{\hbox{\vbox to 58pt{\vfill
     \parbox[b]{\textwidth}{\raggedright\hyphenpenalty5000 #1}}}\par
     \hbox to \textwidth{\hrulefill}}

\def\@bottomchapterbox#1{\hbox{}\par
   \vbox to 65pt{\parbox[b]{\textwidth}{\raggedright\hyphenpenalty1000 #1}\vfill}}

\def\@chapterheadlayout#1#2{\@topchapterbox{#1}\@bottomchapterbox{#2}}

% \@makechapterhead {TEXT} : Makes the heading for the \chapter command.
%

\def\@makechapterhead#1{             % Heading for \chapter command
    \bgroup
    \@topchapterdecls
    % IF secnumdepth > -1 THEN
    % print 'Chapter' and number.
    \ifnum \c@secnumdepth >\m@ne
      \@chapterheadlayout{\@chapapp\ \thechapter}{#1}\else
      \@chapterheadlayout{}{#1}\fi
    \nobreak
    \egroup}

% \@makeschapterhead {TEXT} : Makes the heading for the \chapter* command.
%

\def\@makeschapterhead#1{             % Heading for \chapter* command
  \bgroup
  \@topchapterdecls
  \@chapterheadlayout{}{#1}\nobreak
  \egroup}

% \secdef{UNSTARCMDS}{STARCMDS} :
%    When defining a \chapter or \section command without using
%    \@startsection, you can use \secdef as follows:
%       \def\chapter { ... \secdef \CMDA \CMDB }
%       \def\CMDA    [#1]#2{ ... }  % Command to define \chapter[...]{...}
%       \def\CMDB    #1{ ... }      % Command to define \chapter*{...}

\def\chapter{\clearchapterpage  % Starts new page, possibly leaving a blank one.
   \thispagestyle{empty}     % Page style of chapter page is empty
   \global\@topnum\z@        % Prevents figures from going at top of page.
   \@afterindentfalse        % Suppresses indent in first paragraph.  Change
   \secdef\@chapter\@schapter}   % to \@afterindenttrue to have indent.

\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
        \refstepcounter{chapter}
        \typeout{Book \@chapapp\space\thechapter.}
        \addcontentsline{toc}{chapter}{\protect
        \numberline{\thechapter}#2}\else
      \addcontentsline{toc}{chapter}{#1}\fi
   \chaptermark{#1}
   \addtocontents{lof}{\protect\addvspace{10pt}} % Adds between-chapter space
   \addtocontents{lot}{\protect\addvspace{10pt}} % to lists of figs & tables.
   \if@twocolumn                                 % Tests for two-column mode.  
           \@topnewpage[\@makechapterhead{#2}]  
     \else \@makechapterhead{#2}
           \@afterheading                  % Routine called after chapter and
     \fi}                                  % section heading.

% We arrange for \chapter* entries to appear in the table of contents, but
% indicated with "schapter" rather than "chapter".

\def\@schapter#1{\addcontentsline{toc}{schapter}{#1}\if@twocolumn
        \@topnewpage[\@makeschapterhead{#1}]
        \else \@makeschapterhead{#1}\@afterheading\fi
        \markboth{#1}{#1}}

% \chapter{...} isn't supposed to be used in the front matter;
% \chapter*{...} is supposed to be used instead.

\def\front@chapter[#1]#2{\front@schapter{#2}}

\def\front@makeschapterhead#1{\bgroup      % Heading for \chapter* command in
  \parindent 0pt\raggedright               % front matter
  \large\uppercase{#1}\par\nobreak
  \vspace{20pt}
  \egroup
  \@afterindenttrue
  \@afterheading}


% \@startsection {NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE} 
%            optional * [ALTHEADING]{HEADING}
%    Generic command to start a section.  
%    NAME       : e.g., 'subsection'
%    LEVEL      : a number, denoting depth of section -- e.g., chapter=1,
%                 section = 2, etc.  A section number will be printed if
%                 and only if LEVEL < or = the value of the secnumdepth
%                 counter.
%    INDENT     : Indentation of heading from left margin
%    BEFORESKIP : Absolute value = skip to leave above the heading.  
%                 If negative, then paragraph indent of text following 
%                 heading is suppressed.
%    AFTERSKIP  : if positive, then skip to leave below heading,
%                       else - skip to leave to right of run-in heading.
%    STYLE      : commands to set style
%  If '*' missing, then increments the counter.  If it is present, then
%  there should be no [ALTHEADING] argument.  A sectioning command
%  is normally defined to \@startsection + its first six arguments.

% In the MIT-Press-Book style, I've set up only chapters and sections
% to suppress paragraph indentation -- not subsections.

\def\section{\@startsection{section}{1}{\z@}{-3.5ex plus -1ex minus 
    -.2ex}{2.3ex plus .2ex}{\Large\bf\raggedright}}
\def\subsection{\@startsection{subsection}{2}{\z@}{3.25ex plus 1ex minus 
   .2ex}{1.5ex plus .2ex}{\large\bf\raggedright}}
\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{3.25ex plus
 1ex minus .2ex}{1.5ex plus .2ex}{\large\sl\raggedright}}
\def\paragraph{\@startsection
     {paragraph}{4}{\z@}{3.25ex plus 1ex minus .2ex}{-1em}{\normalsize
                                                           \sl\raggedright}}
\def\subparagraph{\@startsection
     {subparagraph}{4}{\parindent}{3.25ex plus 1ex minus 
     .2ex}{-1em}{\normalsize\sl\raggedright}}

% Default initializations of \...mark commands.  (See below for their
% use in defining page styles.
%

\def\chaptermark#1{}
% \def\sectionmark#1{}           % Preloaded definitions
% \def\subsectionmark#1{}
% \def\subsubsectionmark#1{}
% \def\paragraphmark#1{}
% \def\subparagraphmark#1{}

% APPENDIX
%
% The \appendix command must do the following:
%    -- reset the chapter counter to zero
%    -- set \@chapapp to Appendix (for messages)
%    -- redefine the chapter counter to produce appendix numbers
%    -- reset the section counter to zero
%    -- redefine the \chapter command if appendix titles and headings are
%       to look different from chapter titles and headings.
%
% In this document style, we also set the tocdepth counter to
% zero so that sections of appendices will not go in the table
% of contents.
%
% Also, we do a \clearpage in the \appendix command in this document
% style.  Among other things, that allows us to do an \immediate\write
% instead of a \write for the \addtocontents.

\def\appendix{\clearpage
  \setcounter{chapter}{0}
  \setcounter{section}{0}
  \def\@chapapp{Appendix}
  \bgroup
  \let\latexwrite\write
  \def\write{\immediate\latexwrite}
  \addtocontents{toc}{\protect\@tocappendix}
  \egroup
  \def\thechapter{\Alph{chapter}}}

\def\@tocappendix{\def\@chapapp{Appendix}\setcounter{tocdepth}{0}}



% INDEX INDENTATION

\newlength\indexindent
{\small \global\indexindent=0.6em}


%    ****************************************
%    *                LISTS                 *
%    ****************************************
%

% The following commands are used to set the default values for the list
% environment's parameters. See the LaTeX manual for an explanation of
% the meanings of the parameters.  Defaults for the list environment are
% set as follows.  First, \rightmargin, \listparindent and \itemindent
% are set to 0pt.  Then, for a Kth level list, the command \@listK is
% called, where 'K' denotes 'i', 'ii', ... , 'vi'.  (I.e., \@listiii is
% called for a third-level list.)  By convention, \@listK should set
% \leftmargin to \leftmarginK.
%
% For efficiency, level-one list's values are defined at top level, and
% \@listi is defined to set only \leftmargin.

\leftmargini 25pt
\leftmarginii 22pt     % > \labelsep + width of '(m)'
\leftmarginiii 18.7pt  % > \labelsep + width of 'vii.'
\leftmarginiv 17pt     % > \labelsep + width of 'M.'
\leftmarginv 10pt
\leftmarginvi 10pt

\leftmargin\leftmargini
\labelsep 5pt
\labelwidth\leftmargini\advance\labelwidth-\labelsep
\parsep 4pt plus 2pt minus 1pt

\def\@listi{\leftmargin\leftmargini}

\def\@listii{\leftmargin\leftmarginii
   \labelwidth\leftmarginii\advance\labelwidth-\labelsep
   \topsep 4pt plus 2pt minus 1pt
   \parsep 2pt plus 1pt minus 1pt
   \itemsep \parsep}

\def\@listiii{\leftmargin\leftmarginiii
    \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
    \topsep 2pt plus 1pt minus 1pt 
    \parsep \z@ \partopsep 1pt plus 0pt minus 1pt
    \itemsep \topsep}

\def\@listiv{\leftmargin\leftmarginiv
     \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}

\def\@listv{\leftmargin\leftmarginv
     \labelwidth\leftmarginv\advance\labelwidth-\labelsep}

\def\@listvi{\leftmargin\leftmarginvi
     \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}

