summaryrefslogtreecommitdiff
path: root/macros/latex209/contrib/mit-press
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex209/contrib/mit-press
Initial commit
Diffstat (limited to 'macros/latex209/contrib/mit-press')
-rw-r--r--macros/latex209/contrib/mit-press/10mitprb.sty590
-rw-r--r--macros/latex209/contrib/mit-press/mit-press-book.sty1261
-rw-r--r--macros/latex209/contrib/mit-press/mitpraisf.tex68
-rw-r--r--macros/latex209/contrib/mit-press/mitprbb.tex12
-rw-r--r--macros/latex209/contrib/mit-press/mitprcogsci.tex127
-rw-r--r--macros/latex209/contrib/mit-press/mitprpn.tex45
6 files changed, 2103 insertions, 0 deletions
diff --git a/macros/latex209/contrib/mit-press/10mitprb.sty b/macros/latex209/contrib/mit-press/10mitprb.sty
new file mode 100644
index 0000000000..7202520db6
--- /dev/null
+++ b/macros/latex209/contrib/mit-press/10mitprb.sty
@@ -0,0 +1,590 @@
+%
+% 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}
+
diff --git a/macros/latex209/contrib/mit-press/mit-press-book.sty b/macros/latex209/contrib/mit-press/mit-press-book.sty
new file mode 100644
index 0000000000..e8877fcef5
--- /dev/null
+++ b/macros/latex209/contrib/mit-press/mit-press-book.sty
@@ -0,0 +1,1261 @@
+%
+% This file defines 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
+
+\typeout{Document Style 'MIT-Press-Book'. Version of 23-Oct-86.}
+
+% The type size option is handled by reading a different file for each
+% size, as follows, to define font size-specific commands:
+% 10pt : 10MITPRB, 11pt : 11MITPRB, 12pt : 12MITPRB
+% Implemented by \def'ing \@ptsize to second digit of file name.
+% However, only 10pt is available now.
+%
+
+\def\@ptsize{0} % Default is 10MITPRB.STY
+\@namedef{ds@11pt}{\def\@ptsize{1}} % 11pt option reads in 11MITPRB.STY
+\@namedef{ds@12pt}{\def\@ptsize{2}} % 12pt option reads in 12MITPRB.STY
+
+% Two-side or one-side printing: this document style only allows
+% twoside.
+%
+
+\@twosidetrue % Always two-sided printing.
+\@mparswitchtrue % Marginpars go on outside of page.
+
+\newif\if@bradford
+\newif\if@cogsci
+\@bradfordfalse
+\@cogscifalse
+
+\def\ds@bradford{\@bradfordtrue}
+ % 'bradford' option makes front matter
+ % come out as for a Bradford Book.
+
+\def\ds@cogsci{\@cogscitrue} % 'bradford,cogsci' makes front matter
+ % for Computational Models of
+ % Cognition and Perception
+
+\def\ds@twoside{} % Allows vacuous twoside option.
+
+% draft option
+%
+% \overfullrule = 0pt % Default is don't mark overfull hboxes.
+\newif\ifdraft
+\draftfalse
+\def\ds@draft{\relax
+ \overfullrule 5pt\relax % Causes overfull hboxes to be marked.
+ \drafttrue}
+
+% The \@options command causes the execution of every command \ds@FOO
+% which is defined and for which the user typed the FOO option in his
+% \documentstyle command. For every option BAR he typed for which
+% \ds@BAR is not defined, the file BAR.sty will be read after the present
+% (main) .STY file is executed.
+
+\@options
+
+\input invertedparagraphs % from texlocal
+\makeatletter
+
+\input 1\@ptsize mitprb.sty\relax
+
+\newif\if@restonecol % Used in a few places later.
+
+% This is used in the \programspacing definition in the 1xMITPRB file
+% [at least]. It causes a change in \baselinestretch to become
+% effective immediately. It has the unfortunate side-effect of
+% selecting the \rm typeface.
+
+\def\newbaselinestretch#1{\def\baselinestretch{#1}\@currsize}
+
+
+% ****************************************
+% * LISTS *
+% ****************************************
+%
+
+% ENUMERATE
+% Enumeration is done with four counters: enumi, enumii, enumiii
+% and enumiv, where enumN controls the numbering of the Nth level
+% enumeration. The label is generated by the commands \labelenumi
+% ... \labelenumiv. The expansion of \p@enumN\theenumN defines the
+% output of a \ref command.
+
+\def\labelenumi{\arabic{enumi}.}
+\def\theenumi{\arabic{enumi}}
+
+\def\labelenumii{(\alph{enumii})}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+
+\def\labelenumiii{\roman{enumiii}.}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi(\theenumii)}
+
+\def\labelenumiv{\Alph{enumiv}.}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+% ITEMIZE
+% Itemization is controlled by four commands: \labelitemi, \labelitemii,
+% \labelitemiii, and \labelitemiv, which define the labels of the various
+% itemization levels.
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
+
+% VERSE
+% The verse environment is defined by making clever use of the
+% list environment's parameters. The user types \\ to end a line.
+% This is implemented by \let'in \\ equal \@centercr.
+%
+\def\verse{\let\\=\@centercr
+ \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
+ \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
+\let\endverse\endlist
+
+% QUOTATION
+% Fills lines
+% Indents paragraph
+%
+\def\quotation{\list{}{\listparindent 1.5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin\parsep 0pt plus 1pt}\item[]}
+\let\endquotation=\endlist
+
+% QUOTE -- same as quotation except no paragraph indentation,
+%
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+% DESCRIPTION
+%
+% To change the formatting of the label, you must redefine
+% \descriptionlabel.
+
+\def\descriptionlabel#1{\hspace\labelsep \bf #1}
+\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+
+\let\enddescription\endlist
+
+\newdimen\descriptionmargin
+\descriptionmargin=3em
+
+% INVERTED PARAGRAPHS
+%
+% Used for the bibliography, in this document style.
+%
+% The dimension \invertedparindent is set in the
+% 1xMITPRB file.
+%
+% The invertedparagraphs environment is now defined by
+% another file on TEXLOCAL:, which is read before the
+% 1xMITPRB file.
+
+% TABBING BOXES
+%
+% The \begin{tabbingbox}...\end{tabbingbox} environment saves
+% a tabbing environment in a box. This is one way to make a
+% box out of a bunch of lines and have the width of the
+% box be equal to the width of the longest line. Naturally,
+% tabbing commands are also available in the box, but they aren't
+% used much.
+%
+% An optional position argument [t], [b], or [c] as for \parbox
+% may be supplied. The default is [b].
+%
+% A second optional argument [boxnumber] causes the box to be
+% saved in the indicated box number, instead of being returned.
+% Sample use of this form: \begin{tabbingbox}[b][0]...
+%
+% The definition is on texlocal now.
+
+\input tabbingbox
+\makeatletter
+
+% ALPHABETICALLY NUMBERED LISTS
+%
+% These are made part of the document style in case we want to change
+% the format of the label in a standardized way.
+%
+
+\newcounter{alphlist}
+\renewcommand{\thealphlist}{(\alph{alphlist})}
+
+\newenvironment{alphlist}%
+{\list{\thealphlist}{\usecounter{alphlist}\def\makelabel##1{##1\hfil}}}%
+{\endlist}
+
+% \tt PROGRAMS AND TRACES
+%
+% We define a \begin{program}...\end{program} environment that is
+% set in \tt with reduced line spacing. There's also a version
+% that produces a box, \begin{programbox}...\end{programbox},
+% with the same optional arguments as \begin{tabbingbox}.
+%
+% Verbatim mode is not set, so TeX features can be used.
+% \obeycr is not set either, since an \obeycr command can just
+% be typed if desired.
+%
+
+\def\program{\programspacing\tt\tabbing}
+\let\endprogram\endtabbing
+
+\def\programbox{\programspacing\tt\tabbingbox}
+\let\endprogrambox\endtabbingbox
+
+
+% ****************************************
+% * OTHER ENVIRONMENTS *
+% ****************************************
+%
+%
+% THEOREM
+% \@begintheorem ... \@endtheorem are the commands executed at the
+% beginning and end of a (user-defined) theorem-like environment,
+% except \@opargbegintheorem is executed when an optional argument is
+% given. Cf. LATEX.TEX.
+%
+% \def\@begintheorem#1#2{\it \trivlist \item[\hskip \labelsep{\bf #1\ #2}]}
+% \def\@opargbegintheorem#1#2#3{\it \trivlist
+% \item[\hskip \labelsep{\bf #1\ #2\ (#3)}]}
+% \def\@endtheorem{\endtrivlist}
+%
+% In the MIT-Press-Book document style, I set theorems in \rm type
+% instead of \it and I add a colon. I also make it easier to change
+% this behavior by introducing the macro \theoremstart, which gets
+% three arguments that are usually just concatenated but are supplied
+% separately to allow possible font-switching:
+%
+% \theoremstart{Theorem}{1.3}{}
+% \theoremstart{Theorem}{1.3}{ (Jones)}.
+%
+% Finally, I don't understand why Latex uses the \list environment
+% to do theorems, and it makes things come out wrong from my point
+% of view. I'll remove the use of \list as well.
+
+\def\theoremstart#1#2#3{\par\rm\noindent{\bf #1\ #2\rm#3\bf:\ }}
+
+\def\@begintheorem#1#2{\theoremstart{#1}{#2}{}}
+\def\@opargbegintheorem#1#2#3{\theoremstart{#1}{#2}{ (#3)}}
+
+% TITLEPAGE
+% In the normal environments, the titlepage environment does nothing but
+% start and end a page, and inhibit page numbers. It also resets the
+% page number to zero. In two-column style, it still makes a one-column
+% page.
+\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \else \newpage \fi \thispagestyle{empty}\c@page\z@}
+
+\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi}
+
+% ARRAY AND TABULAR
+%
+
+\arraycolsep 5pt % Half the space between columns in an array environment.
+\tabcolsep 6pt % Half the space between columns in a tabular environment.
+\arrayrulewidth .4pt % Width of rules in array and tabular environment.
+\doublerulesep 2pt % Space between adjacent rules in array or tabular env.
+
+% TABBING
+%
+\tabbingsep \labelsep % Space used by the \' command. (See LaTeX manual.)
+
+% MINIPAGE
+% \@minipagerestore is called upon entry to a minipage environment to
+% set up things that are to be handled differently inside a minipage
+% environment. In the current styles, it does nothing.
+%
+% \skip\@mpfootins : plays same role for footnotes in a minipage as
+% \skip\footins does for ordinary footnotes
+
+\skip\@mpfootins = \skip\footins
+
+% FRAMEBOX
+%
+\fboxsep = 3pt % Space left between box and text by \fbox and \framebox.
+\fboxrule = .4pt % Width of rules in box made by \fbox and \framebox.
+
+
+% ****************************************
+% * CHAPTERS AND SECTIONS *
+% ****************************************
+%
+% DEFINE COUNTERS:
+%
+% \newcounter{NEWCTR}[OLDCTR] : Defines NEWCTR to be a counter, which is
+% reset to zero when counter OLDCTR is stepped.
+% Counter OLDCTR must already be defined.
+
+\newcounter{part}
+\newcounter {chapter}
+\newcounter {section}[chapter]
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+\newcounter {paragraph}[subsubsection]
+\newcounter {subparagraph}[paragraph]
+
+% For any counter CTR, \theCTR is a macro that defines the printed version
+% of counter CTR. It is defined in terms of the following macros:
+%
+% \arabic{COUNTER} : The value of COUNTER printed as an arabic numeral.
+% \roman{COUNTER} : Its value printed as a lower-case roman numberal.
+% \Roman{COUNTER} : Its value printed as an upper-case roman numberal.
+% \alph{COUNTER} : Value of COUNTER printed as a lower-case letter:
+% 1 = a, 2 = b, etc.
+% \Alph{COUNTER} : Value of COUNTER printed as an upper-case letter:
+% 1 = A, 2 = B, etc.
+%
+
+\def\thepart {\Roman{part}}
+\def\thechapter {\arabic{chapter}}
+\def\thesection {\thechapter.\arabic{section}}
+\def\thesubsection {\thesection.\arabic{subsection}}
+\def\thesubsubsection {\thesubsection .\arabic{subsubsection}}
+\def\theparagraph {\thesubsubsection.\arabic{paragraph}}
+\def\thesubparagraph {\theparagraph.\arabic{subparagraph}}
+
+% This macro is like \cleardoublepage, but its inserted blank
+% page has an empty pagestyle.
+\def\cleardoublepageempty{\clearpage\if@twoside \ifodd\c@page\else
+ \hbox{}\thispagestyle{empty}\newpage\if@twocolumn
+ \hbox{}\thispagestyle{empty}\newpage\fi\fi\fi}
+
+% In this document style, \cleardoublepage should always mean
+% \cleardoublepageempty.
+
+\let\latexcleardoublepage\cleardoublepage
+\let\cleardoublepage\cleardoublepageempty
+
+\let\clearchapterpage\cleardoublepageempty
+
+% \@chapapp is initially defined to be 'Chapter'. The \appendix
+% command redefines it to be 'Appendix'.
+%
+\def\@chapapp{Chapter}
+
+
+% ****************************************
+% * TABLE OF CONTENTS, ETC. *
+% ****************************************
+%
+% A \subsection command writes a
+% \contentsline{subsection}{TITLE}{PAGE}
+% command on the .toc file, where TITLE contains the contents of the
+% entry and PAGE is the page number. If subsections are being numbered,
+% then TITLE will be of the form
+% \numberline{NUM}{HEADING}
+% where NUM is the number produced by \thesubsection. Other sectioning
+% commands work similarly.
+%
+% A \caption command in a 'figure' environment writes
+% \contentsline{figure}{\numberline{NUM}{CAPTION}}{PAGE}
+% on the .lof file, where NUM is the number produced by \thefigure and
+% CAPTION is the figure caption. It works similarly for a 'table' environment.
+%
+% The command \contentsline{NAME} expands to \l@NAME. So, to specify
+% the table of contents, we must define \l@chapter, \l@section,
+% \l@subsection, ... ; to specify the list of figures, we must define
+% \l@figure; and so on. Most of these can be defined with the
+% \@dottedtocline command, which works as follows.
+%
+% \@dottedtocline{LEVEL}{INDENT}{NUMWIDTH}{TITLE}{PAGE}
+% LEVEL : An entry is produced only if LEVEL < or = value of
+% 'tocdepth' counter. Note, \chapter is level 0, \section
+% is level 1, etc.
+% INDENT : The indentation from the outer left margin of the start of
+% the contents line.
+% NUMWIDTH : The width of a box in which the section number is to go,
+% if TITLE includes a \numberline command.
+%
+% This command uses the following three parameters, which are set
+% with a \def (so em's can be used to make them depend upon the font).
+% \@pnumwidth : The width of a box in which the page number is put.
+% \@tocrmarg : The right margin for multiple line entries. One
+% wants \@tocrmarg > or = \@pnumwidth
+% \@dotsep : Separation between dots, in mu units. Should be \def'd to
+% a number like 2 or 1.7
+%
+% The MIT-Press-Book style does not use the \@dottedtocline macro. Instead,
+% it uses a special contents style that is controlled by the parameters
+% \toc@leftwidth, \toc@rightwidth, and \toc@colsep that are set by the
+% 1xMITPRB file. The macro \toc@atpage{TITLE}{PAGE} could also be redefined.
+% In addition, there's \toc@prechapterskip and \toc@postchapterskip.
+
+\def\toc@atpage#1#2{#1~~#2\hfill}
+
+% The l@TYPE macros receive arguments l@TYPE{NUMBEREDTITLE}{PAGE},
+% where NUMBEREDTITLE is actually {\numberline{NUM}TITLE} if there's
+% a section number.
+
+\newbox\toc@leftbox
+\newbox\toc@rightbox
+
+\def\l@chapter#1#2{\bgroup
+ \pagebreak[3]\parindent\z@
+ \def\numberline##1{\global\setbox\toc@leftbox\hbox to \toc@leftwidth
+ {\large \@chapapp\ ##1\hfill}}
+ % #1 better use \numberline!
+ \setbox\toc@rightbox\hbox
+ {\parbox[t]{\toc@rightwidth}{\raggedright\bf
+ \toc@atpage{#1}{#2}\large\strut}}
+ \vspace{\toc@prechapterskip}
+ \hbox to \textwidth{\hbox to \toc@leftwidth{\hrulefill}\hskip
+ \toc@colsep\hbox to \toc@rightwidth{\hrulefill}\hfill}
+ \nopagebreak\par
+ \hbox to\textwidth{\box\toc@leftbox\hskip\toc@colsep\box\toc@rightbox\hfill}
+ \lineskip\parskip\nopagebreak\par
+ \hrule height\z@\nopagebreak
+ \vspace{\toc@postchapterskip}
+ \egroup}
+
+% The definition of \@schapter in this document style arranges for a
+% contents line entry that calls \l@schapter for a \chapter* section.
+
+\def\l@schapter#1#2{\bgroup
+ \parindent\z@
+ \hbox to \textwidth{\large\rm\toc@atpage{#1}{#2}\hfill}
+ \par\egroup}
+
+\def\l@part#1#2{\bgroup
+ \pagebreak[3]
+ \parindent\z@
+ \def\numberline##1{\global\setbox\toc@leftbox\hbox{\large\bf Part ##1: }}
+ \vspace{\toc@prechapterskip}
+ \setbox\toc@rightbox\hbox
+ {\parbox[t]{\toc@rightwidth % not really the right parameter
+ }{\large\bf #1}}
+ \hbox to \textwidth{\box\toc@leftbox\box\toc@rightbox\hfill}
+ \par
+ \nobreak
+ % Remove prechapter skip
+ \vspace{-\toc@prechapterskip}
+ \egroup}
+
+\def\l@section#1#2{\ifnum 1>\c@tocdepth \else
+ \nopagebreak[2]\bgroup\raggedright
+ \@tempdima\toc@leftwidth
+ \advance\@tempdima\toc@colsep
+ \parindent\z@\parskip\z@\leftskip\@tempdima
+ \def\numberline##1{}
+ \toc@atpage{#1}{#2}
+ \par\egroup
+ \fi}
+
+% Contents entries for subsections are turned off by
+% default. But if they were turned on, they would come out in the
+% same style (without section numbers) but indented slightly and
+% in slanted type.
+
+\def\l@subsection#1#2{\ifnum 2>\c@tocdepth \else
+ \bgroup\raggedright
+ \@tempdima\toc@leftwidth
+ \advance\@tempdima\toc@colsep
+ \advance\@tempdima 2em
+ \parindent\z@\parskip\z@\leftskip\@tempdima
+ \def\numberline##1{}
+ \toc@atpage{#1}{#2}
+ \par\egroup
+ \fi}
+
+\def\l@subsubsection#1#2{\ifnum 3>\c@tocdepth \else
+ \bgroup\raggedright
+ \@tempdima\toc@leftwidth
+ \advance\@tempdima\toc@colsep
+ \advance\@tempdima 4em
+ \parindent\z@\parskip\z@\leftskip\@tempdima
+ \def\numberline##1{}
+ {\sl\toc@atpage{#1}{#2}}
+ \par\egroup
+ \fi}
+
+% Since I don't know how anything further should come out,
+% I'll just disallow them.
+
+\def\l@paragraph#1#2{}
+\def\l@subparagraph#1#2{}
+
+% Lists of tables and figures aren't really supported in the
+% MIT-Press-Book style, but these definitions will marginally
+% work in the \begin{frontmatter}...\end{frontmatter} style.
+
+% LIST OF FIGURES
+%
+\def\listoffigures{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \fi\chapter*{List of Figures}\@starttoc{lof}\if@restonecol\twocolumn
+ \fi}
+
+\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+
+\def\@pnumwidth{1.55em}
+\def\@tocrmarg {2.55em}
+\def\@dotsep{4.5}
+
+% LIST OF TABLES
+%
+\def\listoftables{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \fi\chapter*{List of Tables}\@starttoc{lot}\if@restonecol\twocolumn
+ \fi}
+
+\let\l@table\l@figure
+
+
+
+% ****************************************
+% * BIBLIOGRAPHY *
+% ****************************************
+%
+% The thebibliography environment executes the following commands:
+%
+% \def\newblock{\hskip .11em plus .33em minus -.07em} --
+% Defines the `closed' format, where the blocks (major units of
+% information) of an entry run together.
+%
+% \sloppy -- Used because it's rather hard to do line breaks in
+% bibliographies,
+%
+% \sfcode`\.=1000\relax --
+% Causes a `.' (period) not toproduce an end-of-sentence space.
+%
+% In the MIT-Press-Book document style, the Latex bibliographic database
+% is not currently supported. References are entered by hand.
+%
+% Also, for some reason MIT Press prefers 'References' to
+% 'Bibliography' so we use that as the chapter* heading.
+%
+% This thebibliography environment doesn't take an argument.
+
+\def\thebibliography{\addtocontents{toc}{\vskip\toc@prechapterskip}
+ \chapter*{References}\invertedparagraphs
+ \def\newblock{\hskip .11em plus .33em minus -.07em}
+ \sloppy
+ \sfcode`\.=1000\relax
+ \label{start-biblio}}
+
+\def\endthebibliography{\endlist\label{end-biblio}}
+
+% \def\@biblabel#1{[#1]\hfill} % Produces the label for a \bibitem[...]
+ % command.
+% \def\@cite#1{[#1]} % Produces the output of the \cite command.
+
+
+
+% ****************************************
+% * THE INDEX *
+% ****************************************
+%
+% THE THEINDEX ENVIRONMENT
+% Produces double column format, with each paragraph a separate entry.
+% The user commands \item, \subitem and \subsubitem are used to
+% produce the entries, and \indexspace adds an extra vertical space
+% that's the right size to put above the first entry with a new letter
+% of the alphabet.
+%
+% Index entries are produced automatically by Latex, but the sorted
+% index itself must be produced by other means.
+%
+% The commands \mainentry{...}, \subentry{...}, and \newdictletter{...}
+% that are defined here correspond to the commands that are produced
+% by an index sorting system that runs on MIT-PREP (contact eb@oz).
+%
+% If that system is used, the following syntax should be used
+% for \index commands, involving certain bracketed keywords:
+%
+% \index{Main topic}
+% \index{Main topic, subtopic} %% ", " is separator
+% \index{Main,~topic,~with,~commas, subtopic} %% ",~" is not separator
+%
+% never \index{{\it Topic, subtopic}} %% NEVER do this --
+% %% topic and subtopic will be
+% %% mechanically split
+% %% apart during the sorting
+% %% process and the braces
+% %% won't match any more!!
+% \index{\it Topic, subtopic} %% This is OK but only the
+% %% topic will be italicized.
+%
+% \index{[begin] Complexity classes, discussion of} %% start a range
+% \index{[end] Complexity classes, discussion of} %% end a range
+%
+% \index{3SAT [as] three-sat} %% alphabetize as "three-sat"
+% \index{{\it Aspects\/}, contrasted with modern work} %% already alphabetizes
+% %% correctly
+% \index{3SAT [as] three-sat, 3CNF and [as] three-cnf and}
+%
+% \index{Computational complexity [see] Complexity} %% refer elsewhere
+% \index{Problem, methods for solving [see] Algorithm} %% refer elsewhere
+%
+% never \index{...&%<>@#...} -- some characters forbidden
+%
+% these \nindex{complexity classes} are...
+% % roughly like:
+% % \index{Complexity classes}complexity classes
+%
+% ... work by \nindex[N.]{Chomsky} ...
+% % \index{Chomsky,~N.}Chomsky
+%
+% ... solving the \nindex{problem}[solving the] ...
+% % roughly like
+% % \index{Problem, solving the}problem
+%
+
+\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+\columnseprule \z@
+\columnsep 15pt\relax\twocolumn
+\chapter*{Index}\small\parindent\z@\parskip\z@ plus .3pt\relax
+\raggedright
+\let\item\@idxitem\frenchspacing}
+
+\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
+
+% The \nindex macro will capitalize the first token of its argument,
+% if the first token is a letter. It will also skip over the known
+% typeface-changing commands \rm, \it, \em, \sl, \bf,
+% but over no other commands. Thus \nindex{computational complexity}
+% and \nindex{\it computational complexity} will both capitalize
+% the first "C".
+%
+% Note that \nindex{\it Aspects} capitalizes the index entry as well
+% as the text, while {\it \nindex{parallel computation}} capitalizes
+% only the text.
+
+\def\@idxredefs{\def~{\string~}\def\@tempa{ }%
+\edef\cal{\string\cal\@tempa}%
+\edef\sc{\string\sc\@tempa}%
+}
+
+\newtoks\idx@toks
+
+% \@nindexA{...} -- just one argument
+%
+\def\@nindexA#1{{\global\cap@toks{}\@caplook#1\@@capend
+ \@idxredefs\xdef\@tempa{{\the\cap@toks}}\expandafter
+ \index\@tempa}{#1}}
+
+\def\nindex{\@ifnextchar[\@nindexB\@nindexY}
+
+% \@nindexB[N.]{Chomsky}
+%
+\def\@nindexB[#1]#2{{\global\cap@toks{}\@caplook#2\@@capend
+ \@idxredefs\xdef\@tempa{{\the\cap@toks,~#1}}\expandafter
+ \index\@tempa}{#2}}
+
+% can't use \@ifnextchar here because it gobbles spaces!!
+
+\def\@nindexY#1{\def\@idxtempa{{#1}}\futurelet\@idxtempb\@nindexZ}
+\def\@nindexZ{\if[\@idxtempb\def\@idxtempb{\expandafter
+ \@nindexC\@idxtempa}\else
+ \def\@idxtempb{\expandafter\@nindexA\@idxtempa}\fi%]
+\@idxtempb}
+
+% \@nindexC{topic}[subtopic]
+%
+\def\@nindexC#1[#2]{{\global\cap@toks{}\@caplook#1\@@capend
+ \@idxredefs\xdef\@tempa{{\the\cap@toks, #2}}\expandafter
+ \index\@tempa}{#1}}
+
+% Capitalizing mechanism for ...text...\@@capend:
+% If the first token of ...text... is identifiable as a letter,
+% capitalize it. Skip over a small set of known font-changing commands when
+% looking for the first token. This only works for easy cases.
+% (Note: There's not any \capitalize any more; it was only defined
+% for testing.)
+%
+% \capitalize{foo} ==> Foo
+% \capitalize{\it foo} ==> \it Foo
+% \capitalize{{\it foo}}==> {\it foo} %% doesn't capitalize
+%
+% The special-effect typefaces \sc, \tt, \sf aren't in the list.
+% All of this is actually very hard to accomplish.
+%
+% The expansion actually involves "\uppercase{f}" instead of "F".
+
+\newtoks\cap@toks
+
+\def\@tokadd#1#2{#1=\expandafter{\the#1#2}}
+
+\def\@caplook{\futurelet\@tempa\@captest}
+
+\def\@capgobble#1\@@capend{\global\cap@toks\expandafter{\the\cap@toks #1}}
+
+\def\@capskip{\def\@tempa##1{\global\@tokadd\cap@toks{##1}\@caplook}}
+
+\def\@captest{\relax
+\ifcat a\@tempa\def\@tempa##1{\global\@tokadd\cap@toks
+ {\uppercase{##1}}\@capgobble}%
+\else\ifx \@tempa\rm \@capskip
+ \else\ifx \@tempa\it \@capskip
+ \else\ifx \@tempa\em \@capskip
+ \else\ifx \@tempa\sl \@capskip
+ \else\ifx \@tempa\bf \@capskip
+ \else\let\@tempa\@capgobble\fi\fi\fi\fi\fi\fi\@tempa}
+
+\def\@idxitem{\parindent 0\indexindent\par\hangindent 1\indexindent}
+
+\def\subitem{\parindent 2\indexindent\par\hangindent 3\indexindent}
+
+\def\subsubitem{\parindent 4\indexindent\hangindent 5\indexindent}
+
+\def\indexspace{\par \vspace{10pt plus 5pt minus 3pt}}
+
+% Routines called by output of sorting procedures
+
+\def\mainentry#1{\pagebreak[2]\item {#1}}
+
+\def\subentry#1{\subitem {#1}}
+
+\def\newdictletter#1{\indexspace}
+
+
+% ****************************************
+% * FOOTNOTES *
+% ****************************************
+%
+% \footnoterule is a macro to draw the rule separating the footnotes from
+% the text. It should take zero vertical space, so it needs a negative
+% skip to compensate for any positive space taken by the rule. (See
+% PLAIN.TEX.)
+
+\def\footnoterule{\kern-3\p@
+ \hrule width .4\columnwidth
+ \kern 2.6\p@} % The \hrule has default height of .4pt .
+
+% \newcounter{footnote}
+\@addtoreset{footnote}{chapter} % Numbers footnotes within chapters
+
+% \@makefntext{NOTE} :
+% Must produce the actual footnote, using \@thefnmark as the mark
+% of the footnote and NOTE as the text. It is called when effectively
+% inside a \parbox of width \columnwidth (i.e., with \hsize =
+% \columnwidth).
+%
+% The following macro indents all lines of the footnote by 10pt, and
+% indents the first line of a new paragraph by 1em. To change these
+% dimensions, just substitute the desired value for '10pt' [in both
+% places] or '1em'. The mark is flushright against the footnote.
+% \long\def\@makefntext#1{\@setpar{\@@par\@tempdima \hsize
+% \advance\@tempdima-10pt\parshape \@ne 10pt \@tempdima}\par
+% \parindent 1em\noindent \hbox to \z@{\hss$^{\@thefnmark}$}#1}
+%
+% A simpler macro is used, in which the footnote text is
+% set like an ordinary text paragraph, with no indentation except
+% on the first line of a paragraph, and the first line of the
+% footnote. Thus, all the macro must do is set \parindent
+% to the appropriate value for succeeding paragraphs and put the
+% proper indentation before mark.
+
+\long\def\@makefntext#1{\parindent 1em\noindent
+ \hbox to 1.8em{\hss$^{\@thefnmark}$}#1}
+
+% \@makefnmark : A macro to generate the footnote marker that goes
+% in the text. Default used.
+%
+
+
+
+% ****************************************
+% * FIGURES AND TABLES *
+% ****************************************
+%
+% Float placement parameters. See LaTeX manual for their definition.
+%
+\setcounter{topnumber}{2}
+\def\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\def\textfraction{.2}
+\def\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+% Redefine the \caption command so that the optional argument is null
+% if omitted, instead of defaulting to the caption text. This is
+% because we're assuming captions are long and will cause \caption to
+% choke if the optional argument is omitted.
+
+\long\def\nulldefault@dblarg#1{\@ifnextchar[{#1}{\ndfl@xdblarg{#1}}}
+\long\def\ndfl@xdblarg#1#2{#1[]{#2}}
+
+\def\caption{\refstepcounter\@captype \nulldefault@dblarg{\@caption\@captype}}
+
+% \@makecaption{NUMBER}{TEXT} : Macro to make a figure or table caption.
+% NUMBER : Figure or table number--e.g., 'Figure 3.2'
+% TEXT : The caption text.
+% Macro should be called inside a \parbox of right width, with \normalsize.
+% In this document style, we use footnote-style captions.
+
+\newif\iflongcaption % can be temporarily set true
+ % so it won't try the hbox bit
+
+\long\def\@makecaption#1#2{
+ \bgroup\captionsize % 10MITPRB defines \captionsize
+ \vskip\precaptionskip
+ \iflongcaption
+ #1: #2\par
+ \else
+ \setbox\@tempboxa\hbox{#1: #2}
+ \ifdim \wd\@tempboxa >\hsize % IF longer than one line:
+ \unhbox\@tempboxa\par % THEN set as ordinary paragraph.
+ \else % ELSE center.
+ \hbox to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi
+ \fi
+ \egroup}
+
+% The caption style can be temporarily redefined to produce effects like
+% "Figure 10 (facing page):", as in
+%
+% \setcaptionstyle[figure]{Figure \thefigure\ (facing page)}
+%
+% Here we make the "optional" argument required, so it can't be left out.
+%
+
+\def\setcaptionstyle[#1]#2{\expandafter\def\csname fnum@#1\endcsname}
+
+% A command for putting a separator rule at the bottom of a figure.
+
+\newcommand{\figurerule}{\par\vskip 5pt\hrule\vskip 5pt\relax}
+
+% This one goes at the top of a figure that's at the bottom of the page.
+
+\newcommand{\bottomfigurerule}{\par\hrule\relax}
+
+% Define a synonym for compatibility with some older files of ours.
+
+\let\longcaption\caption
+
+% To define a float of type TYPE (e.g., TYPE = figure), the document style
+% must define the following.
+%
+% \fps@TYPE : The default placement specifier for floats of type TYPE.
+%
+% \ftype@TYPE : The type number for floats of type TYPE. Each TYPE has
+% associated a unique positive TYPE NUMBER, which is a power
+% of two. E.g., figures might have type number 1, tables type
+% number 2, programs type number 4, etc.
+%
+% \ext@TYPE : The file extension indicating the file on which the
+% contents list for float type TYPE is stored. For example,
+% \ext@figure = 'lof'.
+%
+% \fnum@TYPE : A macro to generate the figure number for a caption.
+% For example, \fnum@TYPE == Figure \thefigure.
+%
+% The actual float-making environment commands--e.g., the commands
+% \figure and \endfigure--are defined in terms of the macros \@float
+% and \end@float, which are described below.
+%
+% \@float{TYPE}[PLACEMENT] : Macro to begin a float environment for a
+% single-column float of type TYPE with PLACEMENT as the placement
+% specifier. The default value of PLACEMENT is defined by \fps@TYPE.
+% The environment is ended by \end@float.
+% E.g., \figure == \@float{figure}, \endfigure == \end@float.
+
+
+% FIGURE
+
+\newcounter{figure}[chapter]
+\def\thefigure{\thechapter.\@arabic\c@figure}
+
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{Figure \thefigure}
+\def\figure{\@float{figure}}
+\let\endfigure\end@float
+\@namedef{figure*}{\@dblfloat{figure}}
+\@namedef{endfigure*}{\end@dblfloat}
+
+% TABLE
+%
+\newcounter{table}[chapter]
+\def\thetable{\thechapter.\@arabic\c@table}
+
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{Table \thetable}
+\def\table{\@float{table}}
+\let\endtable\end@float
+\@namedef{table*}{\@dblfloat{table}}
+\@namedef{endtable*}{\end@dblfloat}
+
+
+% ****************************************
+% * TITLE AND ABSTRACT *
+% ****************************************
+%
+%
+% The titlepage environment is omitted here, since there are more
+% specialized macros for making the half-title and full-title pages
+% in this document style.
+
+% \input titlepage.sty
+
+
+% ****************************************
+% * PAGE STYLES *
+% ****************************************
+%
+% The page style 'foo' is defined by defining the command \ps@foo. This
+% command should make only local definitions. There should be no stray
+% spaces in the definition, since they could lead to mysterious extra
+% spaces in the output.
+%
+% The \ps@... command defines the macros \@oddhead, \@oddfoot,
+% \@evenhead, and \@evenfoot to define the running heads and
+% feet---e.g., \@oddhead is the macro to produce the contents of the
+% heading box for odd-numbered pages. It is called inside an \hbox of
+% width \textwidth.
+%
+% To make headings determined by the sectioning commands, the page style
+% defines the commands \chaptermark, \sectionmark, ... , where
+% \chaptermark{TEXT} is called by \chapter to set a mark, and so on.
+% The \...mark commands and the \...head macros are defined with the
+% help of the following macros. (All the \...mark commands should be
+% initialized to no-ops.)
+%
+% MARKING CONVENTIONS:
+% LaTeX extends TeX's \mark facility by producing two kinds of marks
+% a 'left' and a 'right' mark, using the following commands:
+% \markboth{LEFT}{RIGHT} : Adds both marks.
+% \markright{RIGHT} : Adds a 'right' mark.
+% \leftmark : Used in the \@oddhead, \@oddfoot, \@evenhead or \@evenfoot
+% macro, gets the current 'left' mark. Works like TeX's
+% \botmark command.
+% \rightmark : Used in the \@oddhead, \@oddfoot, \@evenhead or \@evenfoot
+% macro, gets the current 'right' mark. Works like TeX's
+% \firstmark command.
+% The marking commands work reasonably well for right marks 'numbered
+% within' left marks--e.g., the left mark is changed by a \chapter command and
+% the right mark is changed by a \section command. However, it does
+% produce somewhat anomalous results if two \bothmark's occur on the same page.
+%
+
+\mark{{}{}} % Initializes TeX's marks
+
+% \def\ps@empty{\def\@oddhead{}
+% \def\@oddfoot{}
+% \def\@evenhead{}\def\@evenfoot{}}
+%
+% \def\ps@plain{\def\@oddhead{}
+% \def\@oddfoot{\rm\hfil\thepage\hfil}
+% \def\@evenhead{}
+% \let\@evenfoot\@oddfoot}
+
+% In this document style, I have introduced a counter 'headmarkdepth' that
+% determines whether sections, subsections, etc. change the page heading.
+
+\newcounter{headmarkdepth}
+
+\def\ps@headings{\def\@oddfoot{}% % No feet.
+\def\@evenfoot{}% % No feet.
+%
+% Heading style across two pages:
+% nn Methodological Preliminaries | Chapter 2 nn
+%
+\def\@evenhead{{\small\bf \thepage}\hfill % Left heading.
+ {\let\\ \relax\sl\leftmark}}%
+\def\@oddhead{{\sl \rightmark}\hfill
+ {\let\\ \relax\small\bf\thepage}}% % Right heading.
+%
+\def\chaptermark##1{\ifnum 0>\c@headmarkdepth\else\markboth{##1}{\@chapapp\ \thechapter}\fi}%
+\def\sectionmark##1{\ifnum 1>\c@headmarkdepth\else\markright{##1}\fi}%
+\def\subsectionmark##1{\ifnum 2>\c@headmarkdepth\else\markright{##1}\fi}%
+}
+
+\ps@headings
+
+
+% ****************************************
+% * MISCELLANEOUS *
+% ****************************************
+%
+% DATE
+%
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+
+% EQUATION and EQNARRAY -- put here because it must follow \chapter definition
+%
+% \newcounter{equation}
+%
+\@addtoreset{equation}{chapter} % Makes \chapter reset 'equation' counter.
+
+\def\theequation{\thechapter.\arabic{equation}}
+
+% \jot = 3pt % Extra space added between lines of an eqnarray environment
+
+% The macro \@eqnnum defines how equation numbers are to appear in equations.
+%
+% \def\@eqnnum{(\theequation)}
+%
+
+
+% *********************************************
+% * SPECIAL PAGE FORMAT *
+% *********************************************
+%
+% Alignment marks and a copyright notice are added.
+%
+
+\def\@vcut{\hrule height 18pt depth 0pt width .5pt\relax}
+\def\@hcut{\vrule height .5pt depth 0pt width 17.5pt\relax}
+
+\def\@ltcut{
+ \vbox to 24pt{
+ \hbox to 0pt{\hskip-30pt\vbox to 0pt{\@vcut\vss}\@hcut\hfil}
+ \vfil}}
+\def\@lbcut{
+ \vbox to 24pt{
+ \vfil
+ \hbox to 0pt{\hskip-30pt\vbox{\@vcut}\@hcut\hfil}}}
+\def\@rtcut{
+ \vbox to 24pt{
+ \hbox to 0pt{\hfil\@hcut\vbox to 0pt{\@vcut\vss}\hskip-30pt}
+ \vfil}}
+\def\@rbcut{
+ \vbox to 24pt{
+ \vfil
+ \hbox to 0pt{\hfil\@hcut\vbox{\@vcut}\hskip-30pt}}}
+
+\def\@outputpage{\begingroup\catcode`\ =10 \if@specialpage
+ \global\@specialpagefalse\@nameuse{ps@\@specialstyle}\fi
+ \if@twoside
+ \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
+ \let\@themargin\oddsidemargin
+ \else \let\@thehead\@evenhead
+ \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
+ \fi\fi
+ \shipout
+ \vbox{\normalsize \baselineskip\z@ \lineskip\z@
+ \vskip \topmargin \moveright\@themargin
+ \vbox{\hbox to 27pc{\@ltcut\hfil\@rtcut}\setbox\@tempboxa
+ \vbox to\headheight{\vfil \hbox to\textwidth{\@thehead}}
+ \dp\@tempboxa\z@
+ \box\@tempboxa
+ \vskip \headsep
+ \box\@outputbox
+ \vskip0pt
+ \hbox to 27pc{\@lbcut\hfil\@rbcut}
+ \hbox to 27pc{\hfil\vrule width 0pt height 10pt\bf
+ \arabic{page}\hfil}
+ \vskip 10pt
+ \hbox to 27pc{\hfil\presscopyright\hfil}}}
+ \global\@colht\textheight
+ \endgroup
+ \stepcounter{page}\let\firstmark\botmark}
+
+\def\presscopyright{\rm Copyright \copyright\ \today\ by the MIT Press}
+
+
+% ****************************************
+% * FRONT MATTER *
+% ****************************************
+%
+% The environment \begin{frontmatter}...\end{frontmatter} is used for
+% the title page, table of contents, preface, and so forth. It
+% redefines the page numbering. Sections should be indicated with
+% the \chapter* command.
+
+\newif\ifpluralauthors
+\pluralauthorsfalse
+
+\long\def\@contentsignore#1\@endcontentsignore{}
+
+\def\frontmatter{\def\thepage{\roman{page}}\relax
+ \let\@makeschapterhead\front@makeschapterhead
+ \clearpage
+ \setcounter{page}{1}\setcounter{footnote}{0}\relax
+ \let\@chapter\front@chapter
+ \let\clearchapterpage\clearpage
+ % no contents lines until table of contents has been output
+ \addtocontents{toc}{\protect\@contentsignore}
+ % no page numbering until table of contents has been output
+ \pagestyle{empty}}
+
+\def\endfrontmatter{\cleardoublepageempty
+ \setcounter{page}{1}\setcounter{footnote}{0}}
+
+\if@bradford
+\def\halftitlepage#1{\clearpage\bgroup
+ \@topchapterdecls\@topchapterbox{#1\vspace{0.5in}}\egroup
+ \thispagestyle{empty}\clearpage}
+\else
+\def\halftitlepage#1{\clearpage\bgroup\flushleft
+ \def\baselinestretch{1.10}\Large\bf#1\endflushleft
+ \egroup\thispagestyle{empty}\clearpage}
+\fi
+
+\if@bradford
+\def\fulltitlepage#1#2{\cleardoublepageempty
+ \begingroup
+ \let\clearpage\relax\halftitlepage{#1}\flushleft
+ \large\rm #2\vfill
+ \normalsize\bf A Bradford Book\\
+ \rm The MIT Press\\Cambridge, Massachusetts\\
+ London, England\endflushleft
+ \endgroup\thispagestyle{empty}\newpage}
+\else
+\def\fulltitlepage#1#2{\cleardoublepageempty
+ \begingroup\flushleft
+ \def\baselinestretch{1.10}\Large\bf#1\\[20pt]\large\rm#2\\
+ \vfill\normalsize The MIT Press\\Cambridge, Massachusetts\\
+ London, England\endflushleft
+ \endgroup\thispagestyle{empty}\newpage}
+\fi
+
+\if@bradford
+\if@cogsci
+\def\bookseriespage#1{\clearpage{\flushleft\rm
+\input mitprcogsci \\
+{\bf Computational Models of Cognition and Perception}\\[5pt]
+Editors\\[5pt]
+#1\\[10pt]}\raggedright\parindent\z@}
+\else
+\def\bookseriespage{\clearpage
+ \@topchapterdecls\@topchapterbox{}\normalsize\parskip\z@
+ \vspace{10pt}\mbox{\input mitprbb }\ \large\bf Bradford Books\par
+ \vspace{10pt}\small\rm
+ \invertedparagraphs}
+\fi
+\else
+\def\bookseriespage{\clearpage\flushleft\small\parskip 8pt}
+\fi
+
+\if@bradford
+\if@cogsci
+\def\seriesbook#1 #2\par{{\it #1}, #2\par}
+\else
+\def\seriesbook#1 #2/#3. \par{#2. #1. #3.\par}
+\fi
+\else
+\def\seriesbook#1 #2\par{{\sl #1\/} #2\par}
+\fi
+
+\if@bradford
+\if@cogsci
+\def\endbookseriespage{\clearpage}
+\else
+\def\endbookseriespage{\endinvertedparagraphs\clearpage}
+\fi
+\else
+\def\endbookseriespage{\endflushleft\clearpage}
+\fi
+
+% TABLEOFCONTENTS
+% In report style, \tableofcontents, \listoffigures, etc. are always
+% set in single-column style. @restonecol
+
+% This should be done inside \begin{frontmatter}...\end{frontmatter},
+% for this document style. Otherwise the \chapter* command here
+% won't work as we expect.
+
+\def\tableofcontents{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \fi
+ \chapter*{Contents}\bgroup\raggedbottom
+ \raggedright\hyphenpenalty1000\@starttoc{toc}\egroup
+ \if@restonecol\twocolumn\fi
+ \pagestyle{headings}\let\clearchapterpage\cleardoublepageempty
+ \addtocontents{toc}{\protect\@endcontentsignore}}
+
+% Sample usage of \libraryofcongress:
+%
+% \begin{copyrightpage}
+%
+% \publishersnote
+%
+% \libraryofcongress
+% \author Berwick, Robert C.
+% \title The acquisition of syntactic knowledge.
+% \series (The MIT Press series in artificial intelligence.)
+% \keywords 1.~Artificial intelligence. 2.~Linguistics---Data processing.
+% 3.~Language acquisition. 4.~Learning---Mathematical models. I.~Title.
+% II.~Series.
+% \numbers Q335.B48 1985 \and 401.9 \and 85--11460
+% \isbn 0-262-02226-5
+% \done
+%
+% \end{copyrightpage}
+
+\def\publishersnote{\input mitprpn }
+
+\def\copyrightpage{\flushleft\parskip 10pt}
+\def\endcopyrightpage{\vfill\clearpage}
+
+% redefine this if the bibliography pages have to be killed from the entry;
+% MIT Press actually says to leave them out
+\def\libraryofcongressbib{Bibliography: p.\pageref{start-biblio}--\pageref{end-biblio}}
+%\def\libraryofcongressbib{Bibliography: p.}
+
+\def\libraryofcongress\author #1\title #2\series #3\keywords #4\numbers #5\isbn #6\done
+{{\bf Library of Congress Cataloging-in-Publication Data}\par
+\begin{minipage}{3.5in}\raggedright\let\and\qquad
+\def\skip{\hskip 2em\relax}%
+#1\\
+{\skip #2}\par
+{\skip #3}\\
+{\skip \libraryofcongressbib}\\
+{\skip Includes index.}\\
+{\skip\let\and\quad #4}\\
+#5\\
+ISBN #6
+\end{minipage}}
+
+\def\aiseriesforeword{\input mitpraisf }
+
+
+% ****************************************
+% * INITIALIZATION *
+% ****************************************
+%
+% Default initializations
+
+\pagenumbering{arabic} % Arabic page numbers
+\onecolumn % Single-column.
+\flushbottom % No ragged bottom.
+
+% The value of the counter secnumdepth gives the depth of the
+% highest-level sectioning command that is to produce section numbers.
+%
+% \chapter = 0
+% \section = 1
+% \subsection = 2
+
+\setcounter{secnumdepth}{1} % Default: Sections only, not subsections.
+\setcounter{tocdepth}{1} % Contents lines for sections but not
+ % subsections.
+\setcounter{headmarkdepth}{0} % Default: Chapters only.
+
+% As for the Latex small-caps font-loading bug, we'll have none of it.
+
+\load{\normalsize}{\cal}
+\load{\small}{\cal}
+\load{\large}{\cal}
+\load{\normalsize}{\sc}
+\load{\large}{\sc}
+\load{\small}{\sc}
+\load{\normalsize}{\sf}
+
+%
+% Load some convenient abbreviations as part of the document style.
+% Also, change the format used by the \sectref command.
+%
+
+\input etcetera % on texlocal
+\makeatletter
+\def\sectref{section~\ref}
+
diff --git a/macros/latex209/contrib/mit-press/mitpraisf.tex b/macros/latex209/contrib/mit-press/mitpraisf.tex
new file mode 100644
index 0000000000..a5e5f1555e
--- /dev/null
+++ b/macros/latex209/contrib/mit-press/mitpraisf.tex
@@ -0,0 +1,68 @@
+
+% This file is logically part of MIT-Press-Book.STY, created and maintained
+% by EB@OZ. Please do not change it.
+
+% To be input within \begin{frontmatter}...\end{frontmatter}.
+
+\chapter*{Series Foreword}
+
+Artificial intelligence is the study of intelligence using the ideas
+and methods of computation. Unfortunately, a definition of
+intelligence seems impossible at the moment because intelligence
+appears to be an amalgam of so many information-processing and
+information-representation abilities.
+
+Of course psychology, philosophy, linguistics, and related disciplines
+offer various perspectives and methodologies for studying
+intelligence. For the most part, however, the theories proposed in
+these fields are too incomplete and too vaguely stated to be realized
+in computational terms. Something more is needed, even though
+valuable ideas, relationships, and constraints can be gleaned from
+traditional studies of what are, after all, impressive existence
+proofs that intelligence is in fact possible.
+
+Artificial intelligence offers a new perspective and a new
+methodology. Its central goal is to make computers intelligent, both
+to make them more useful and to understand the principles that make
+intelligence possible. That intelligent computers will be extremely
+useful is obvious. The more profound point is that artificial
+intelligence aims to understand intelligence using the ideas and
+methods of computation, thus offering a radically new and different
+basis for theory formation. Most of the people doing artificial
+intelligence believe that these theories will apply to any intelligent
+information processor, whether biological or solid state.
+
+There are side effects that deserve attention, too. Any program that
+will successfully model even a small part of intelligence will be
+inherently massive and complex. Consequently, artificial intelligence
+continually confronts the limits of computer science technology. The
+problems encountered have been hard enough and interesting enough to
+seduce artificial intelligence people into working on them with
+enthusiasm. It is natural, then, that there has been a steady flow of
+ideas from artificial intelligence to computer science, and the flow
+shows no sign of abating.
+
+%Robotics is the part of Artificial Intelligence concerned with the
+%intelligent connection of perception to action. A key issue in
+%Robotics is understanding the mechanics of manipulation as a basis for
+%the successful planning and execution of robot tasks. Currently, we
+%cannot claim to understand manipulation. Our knowledge of robotics is
+%almost entirely empirical. If fundamental principles exist, we have
+%not discovered them. We consider this book to be an important step
+%toward uncovering such principles.
+
+The purpose of this MIT Press Series in Artificial
+Intelligence is to provide people in many areas, both professionals
+and students, with timely, detailed information about what is
+happening on the frontiers in research centers all over the world.
+
+\vskip 10pt
+\noindent
+Patrick Henry Winston \hfill Michael Brady
+
+\vfill
+
+\newpage
+
+% end of Series Foreword
+
diff --git a/macros/latex209/contrib/mit-press/mitprbb.tex b/macros/latex209/contrib/mit-press/mitprbb.tex
new file mode 100644
index 0000000000..264f36ee9f
--- /dev/null
+++ b/macros/latex209/contrib/mit-press/mitprbb.tex
@@ -0,0 +1,12 @@
+% Bradford Books back-to-back "B" logo.
+% Part of MIT-PRESS-BOOK document style, maintained by EB@OZ.
+% Please do not change this.
+\hbox{\setlength{\unitlength}{2pt}\thicklines
+\begin{picture}(9,7)
+\put(3.5,1){\oval(7,2)[l]}
+\put(4.5,1){\oval(7,2)[r]}
+\put(3.5,0){\line(0,1){7}}
+\put(4.5,0){\line(0,1){7}}
+\put(3.5,7){\line(-1,0){1}}
+\put(4.5,7){\line(1,0){1}}
+\end{picture}}\endinput
diff --git a/macros/latex209/contrib/mit-press/mitprcogsci.tex b/macros/latex209/contrib/mit-press/mitprcogsci.tex
new file mode 100644
index 0000000000..46b9249132
--- /dev/null
+++ b/macros/latex209/contrib/mit-press/mitprcogsci.tex
@@ -0,0 +1,127 @@
+%%% *************************************************************************
+%%% * This file is mechanically generated by translation from an Illustrate *
+%%% * figure. Do not edit this file directly. *
+%%% *************************************************************************
+\bgroup
+\setlength{\unitlength}{0.8cm}
+\begin{picture}(1.7606295,1.4401575)(0,0)
+\thicklines
+\put(0.12992126,0.53346455){\circle*{0.06259842}}
+\put(0.16968504,0.534252){\circle*{0.06259842}}
+\put(0.20905511,0.5346457){\circle*{0.06259842}}
+\put(0.2488189,0.53385824){\circle*{0.06259842}}
+\put(0.28818896,0.53110236){\circle*{0.06259842}}
+\put(0.32755905,0.52559054){\circle*{0.06259842}}
+\put(0.36535433,0.5137795){\circle*{0.06259842}}
+\put(0.3988189,0.4929134){\circle*{0.06259842}}
+\put(0.42874014,0.46732283){\circle*{0.06259842}}
+\put(0.45511812,0.43779528){\circle*{0.06259842}}
+\put(0.47637796,0.4043307){\circle*{0.06259842}}
+\put(0.4956693,0.36968505){\circle*{0.06259842}}
+\put(0.51338583,0.33425197){\circle*{0.06259842}}
+\put(0.5283465,0.2976378){\circle*{0.06259842}}
+\put(0.5425197,0.26062992){\circle*{0.06259842}}
+\put(0.5559055,0.22322835){\circle*{0.06259842}}
+\put(0.5685039,0.18582678){\circle*{0.06259842}}
+\put(0.5807087,0.1480315){\circle*{0.06259842}}
+\put(0.5933071,0.11023622){\circle*{0.06259842}}
+\put(0.6066929,0.073228344){\circle*{0.06259842}}
+\put(0.62598425,0.03858268){\circle*{0.06259842}}
+\put(0.6559055,0.047637794){\circle*{0.06259842}}
+\put(0.67165357,0.08385827){\circle*{0.06259842}}
+\put(0.68307084,0.12165354){\circle*{0.06259842}}
+\put(0.6929134,0.16023622){\circle*{0.06259842}}
+\put(0.7011811,0.19881889){\circle*{0.06259842}}
+\put(0.7090551,0.23779528){\circle*{0.06259842}}
+\put(0.71614176,0.27677166){\circle*{0.06259842}}
+\put(0.72283465,0.31574804){\circle*{0.06259842}}
+\put(0.72913384,0.3547244){\circle*{0.06259842}}
+\put(0.73503935,0.3940945){\circle*{0.06259842}}
+\put(0.74094486,0.43307087){\circle*{0.06259842}}
+\put(0.7468504,0.47244096){\circle*{0.06259842}}
+\put(0.7519685,0.511811){\circle*{0.06259842}}
+\put(0.7574803,0.5507874){\circle*{0.06259842}}
+\put(0.76259845,0.5901575){\circle*{0.06259842}}
+\put(0.7677165,0.62952757){\circle*{0.06259842}}
+\put(0.77283466,0.6688976){\circle*{0.06259842}}
+\put(0.77755904,0.7082677){\circle*{0.06259842}}
+\put(0.7822835,0.7476378){\circle*{0.06259842}}
+\put(0.78700787,0.78700787){\circle*{0.06259842}}
+\put(0.7917323,0.8263779){\circle*{0.06259842}}
+\put(0.7964567,0.86574805){\circle*{0.06259842}}
+\put(0.8011811,0.9051181){\circle*{0.06259842}}
+\put(0.80551183,0.94448817){\circle*{0.06259842}}
+\put(0.8102362,0.9838583){\circle*{0.06259842}}
+\put(0.8145669,1.0232283){\circle*{0.06259842}}
+\put(0.81929135,1.0625985){\circle*{0.06259842}}
+\put(0.82401574,1.1019685){\circle*{0.06259842}}
+\put(0.8287402,1.1409448){\circle*{0.06259842}}
+\put(0.83346456,1.180315){\circle*{0.06259842}}
+\put(0.8385827,1.2196851){\circle*{0.06259842}}
+\put(0.84370077,1.2590551){\circle*{0.06259842}}
+\put(0.8496063,1.2984252){\circle*{0.06259842}}
+\put(0.8562992,1.3374016){\circle*{0.06259842}}
+\put(0.8645669,1.3759843){\circle*{0.06259842}}
+\put(0.88188976,1.4066929){\circle*{0.06259842}}
+\put(0.8968504,1.3708662){\circle*{0.06259842}}
+\put(0.9047244,1.3318897){\circle*{0.06259842}}
+\put(0.9110236,1.2929134){\circle*{0.06259842}}
+\put(0.9169291,1.2535433){\circle*{0.06259842}}
+\put(0.92204726,1.2141732){\circle*{0.06259842}}
+\put(0.9271653,1.1748031){\circle*{0.06259842}}
+\put(0.9318898,1.1354331){\circle*{0.06259842}}
+\put(0.93661416,1.096063){\circle*{0.06259842}}
+\put(0.9413386,1.056693){\circle*{0.06259842}}
+\put(0.946063,1.0173228){\circle*{0.06259842}}
+\put(0.9503937,0.9779528){\circle*{0.06259842}}
+\put(0.9551181,0.93858266){\circle*{0.06259842}}
+\put(0.9594488,0.8992126){\circle*{0.06259842}}
+\put(0.96417326,0.8602362){\circle*{0.06259842}}
+\put(0.96889764,0.82086617){\circle*{0.06259842}}
+\put(0.973622,0.78149605){\circle*{0.06259842}}
+\put(0.97834647,0.742126){\circle*{0.06259842}}
+\put(0.98307085,0.7027559){\circle*{0.06259842}}
+\put(0.988189,0.6633858){\circle*{0.06259842}}
+\put(0.9933071,0.62401575){\circle*{0.06259842}}
+\put(0.9984252,0.5846457){\circle*{0.06259842}}
+\put(1.0035433,0.54527557){\circle*{0.06259842}}
+\put(1.0090551,0.5062992){\circle*{0.06259842}}
+\put(1.0145669,0.46692914){\circle*{0.06259842}}
+\put(1.0200788,0.42755905){\circle*{0.06259842}}
+\put(1.0259843,0.38858268){\circle*{0.06259842}}
+\put(1.0322834,0.3492126){\circle*{0.06259842}}
+\put(1.0385827,0.31023622){\circle*{0.06259842}}
+\put(1.0452756,0.27125984){\circle*{0.06259842}}
+\put(1.052756,0.23228346){\circle*{0.06259842}}
+\put(1.0602362,0.19330709){\circle*{0.06259842}}
+\put(1.0688976,0.1547244){\circle*{0.06259842}}
+\put(1.0787401,0.11614173){\circle*{0.06259842}}
+\put(1.0905511,0.07834645){\circle*{0.06259842}}
+\put(1.1070867,0.042519685){\circle*{0.06259842}}
+\put(1.1370078,0.04330709){\circle*{0.06259842}}
+\put(1.1543307,0.07913386){\circle*{0.06259842}}
+\put(1.1669291,0.11653543){\circle*{0.06259842}}
+\put(1.1787401,0.15433072){\circle*{0.06259842}}
+\put(1.1901575,0.19212599){\circle*{0.06259842}}
+\put(1.2023622,0.22992127){\circle*{0.06259842}}
+\put(1.2153543,0.26732284){\circle*{0.06259842}}
+\put(1.2291338,0.3043307){\circle*{0.06259842}}
+\put(1.2440945,0.34133857){\circle*{0.06259842}}
+\put(1.2614173,0.37677166){\circle*{0.06259842}}
+\put(1.2807087,0.41141734){\circle*{0.06259842}}
+\put(1.3019685,0.4448819){\circle*{0.06259842}}
+\put(1.3287401,0.47401574){\circle*{0.06259842}}
+\put(1.3594488,0.4988189){\circle*{0.06259842}}
+\put(1.3937008,0.5181102){\circle*{0.06259842}}
+\put(1.4318898,0.52795273){\circle*{0.06259842}}
+\put(1.4712598,0.5322835){\circle*{0.06259842}}
+\put(1.5110236,0.53346455){\circle*{0.06259842}}
+\put(1.5507874,0.53385824){\circle*{0.06259842}}
+\put(1.5901575,0.53385824){\circle*{0.06259842}}
+\put(1.6299213,0.53346455){\circle*{0.06259842}}
+\thinlines
+\put(0.87992126,1.4086614){\line(0,-1){0.87559056}}
+\put(1.7551181,0.53346455){\line(-1,0){1.7503937}}
+\put(0.87992126,0.033464566){\line(0,1){0.5003937}}
+\end{picture}
+\egroup
diff --git a/macros/latex209/contrib/mit-press/mitprpn.tex b/macros/latex209/contrib/mit-press/mitprpn.tex
new file mode 100644
index 0000000000..97bca9020f
--- /dev/null
+++ b/macros/latex209/contrib/mit-press/mitprpn.tex
@@ -0,0 +1,45 @@
+
+% This file is logically part of MIT-Press-Book.STY, created and maintained
+% by EB@OZ. Please do not change it.
+
+% To be input within \begin{frontmatter}...\end{frontmatter}.
+
+\makeatletter
+
+\if@bradford
+\bgroup\clearpage\@topchapterdecls
+\@topchapterbox{}\egroup{\sl Publisher's Note:\/}
+\else
+\chapter*{Publisher's Note}
+\fi
+This format is intended to reduce the cost of publishing certain works
+in book form and to shorten the gap between editorial preparation and
+final publication. The time and expense of detailed editing and
+composition in print have been avoided by photographing the text of
+this book directly from the
+\ifpluralauthors authors' \else author's \fi
+typeset copy.
+
+\if@bradford\relax\else\vskip 10pt\fi
+
+Copyright \copyright\ \number\year\ by The Massachusetts Institute of
+Technology.
+
+All rights reserved. No part of this book may be reproduced, stored
+in a retrieval system, or transmitted, in any form, or by any means,
+electronic, mechanical, photocopying, recording, or otherwise, without
+the prior written permission of the publisher.
+
+This book was typeset with Donald E. Knuth's \TeX\ and Leslie
+Lamport's \LaTeX.
+
+\if@bradford\relax\else\vskip 10pt\fi
+
+Printed and bound in the United States of America.
+
+\if@bradford\relax\else\vskip 0.5in\fi
+
+% Library of Congress info goes here -- use \libraryofcongress macro.
+
+\makeatother
+