% % 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}