\raggedbottom
\clubpenalty=10000
\widowpenalty=10000
\brokenpenalty=5000
\hbadness=2000
\hfuzz=2pt

\def\frontpath{/c/wsnow/progress}

\newif\ifbook

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% sets the page size for the overall LCS report.  Has no effect unless you
%% say \booktrue before calling \setpagesizes.

\def\setpagesizes{\ifbook
\setlength{\evensidemargin}{2.1pc}
\setlength{\oddsidemargin}{2.1pc}
\setlength{\topmargin}{1.9pc}
\setlength{\textwidth}{35pc}
\setlength{\textheight}{50pc}
\setlength{\parindent}{0pt}
\setlength{\parskip}{0.75\baselineskip}
\setlength{\topsep}{0pt}
\setlength{\partopsep}{0pt}
\renewcommand{\topfraction}{0.85}
\renewcommand{\bottomfraction}{0.85}
\renewcommand{\textfraction}{0.05}
\makeatletter
\define@mathsizes{11}{8}{7}%% sets font sizes in math mode
\makeatother
\fi}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% macros for publication-bibliography information

\def\beginpubs{\begingroup\parskip=0.75\baselineskip}
\def\endpubs{\par\endgroup}

\def\plainbibentry#1{\par\noindent\ignorespaces}

\let\bibentry=\plainbibentry

{\setbox0=\hbox{[99]\enspace}
\global\newdimen\mybibboxwd
\global\mybibboxwd=\wd0}

\newcounter{mybibnumber}
\def\numberedbibentry#1{\par\hangindent=\mybibboxwd
\hangafter0
\addtocounter{mybibnumber}{1}
\noindent\llap{\hbox to \mybibboxwd{\hfil[\themybibnumber]\enspace}}%
\ignorespaces}

\def\Publications{%
\section{Publications, Theses, and Talks}
\subsection*{Publications}\setcounter{mybibnumber}{0}}
\def\ThesesCompleted{%
\subsection*{Theses Completed}\setcounter{mybibnumber}{0}}
\def\ThesesinProgress{%
\subsection*{Theses in Progress}\setcounter{mybibnumber}{0}}
\def\Talks{\subsection*{Talks}\setcounter{mybibnumber}{0}}
\def\Lectures{\Talks}
\def\References{\subsection*{References}}

\begin{small}
\newbox\pubnumber
\setbox\pubnumber=\hbox{{\bf TM-999.b}\enspace}
\global\newdimen\pubnumberwidth
\global\pubnumberwidth=\wd\pubnumber
\end{small}

\newenvironment{techpubs}{\begin{small}
\parskip=0.5\baselineskip
\raggedright
\def\\{\hfill\break}
\def\item##1{\par\noindent
\hangindent=\pubnumberwidth
\hangafter=1
\hbox to \pubnumberwidth{\bf##1\hfil}\ignorespaces}}%
{\par\end{small}}

\newenvironment{LCSreports}{\begin{small}
\parskip=0.39\baselineskip
\raggedright
\def\item{\par\noindent$\bullet$\enspace
\hangindent=\pubnumberwidth
\hangafter=1}}{\par\end{small}}

%% and sundry for the Publications:

\def\doAuthors#1{#1\eol}
\def\doTitle#1{#1}
\def\doThesis#1{#1 thesis,}
\def\PHDdissertation{Ph.D.\ dissertation}
\def\doDate#1{#1.}
\def\MACreport{Project MAC Progress Report}
\def\LCSreport{Laboratory for Computer Science Progress Report}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% useful abbreviations for consistency

\newcommand{\thesis}[1]{#1\ thesis}
\newcommand{\bach}{\thesis{Bachelor's}}
\newcommand{\mast}{\thesis{Master's}}
\newcommand{\meng}{\thesis{\Meng}}
\newcommand{\phd}{\thesis{\PhD}}
\newcommand{\Meng}{M.Eng.}
\newcommand{\PhD}{PhD}

\newcommand{\Procs}{Proceedings of}
\newcommand{\editor}{Editor}
\newcommand{\editors}{Editors}

\newcommand{\Prof}{Professor}
\newcommand{\Profs}{Professors}
\newcommand{\Dr}{Dr.{}}
\newcommand{\Drs}{Drs.{}}

\newcommand{\MIT}{MIT{}}
\newcommand{\LCS}{Laboratory for Computer Science}
\newcommand{\EECS}{Department of Electrical Engineering and Computer Science}
\newcommand{\AILab}{A.~I. Laboratory}
\newcommand{\CAG}{Computer Architecture Group}
\newcommand{\CSG}{Computation Structures Group}
\newcommand{\IM}{Information Mechanics Group}
\newcommand{\PM}{Programming Methodology Group}
\newcommand{\VLSI}{Concurrent VLSI Architecture Group}

\newcommand{\MITLCS}{\LCS, \MIT}
\newcommand{\MITAILab}{\AILab, \MIT}
\newcommand{\MITEECS}{\MIT\ \EECS}

\newcommand{\AIMemo}[1]{AI~Lab.\ Memo {#1}, \AILab, \MITLCS, Cambridge, MA}
\newcommand{\AlewifeMemo}[1]{ALEWIFE Memo {#1}, \CAG, \MITLCS, Cambridge, MA}
\newcommand{\CSGMemo}[1]{CSG Memo {#1}, \CSG, \MITLCS, Cambridge, MA}
\newcommand{\CVAMemo}[1]{VLSI Memo {#1}, \VLSI, \MITLCS, Cambridge, MA}
\newcommand{\IMMemo}{\IM\ Memo, \MITLCS, Cambridge, MA}
\newcommand{\PMMemo}[1]{\PM\ Memo {#1}, \MITLCS, Cambridge, MA}
\newcommand{\VLSIMemo}[1]{VLSI Memo {#1}, \MITAILab, Cambridge, MA}
\newcommand{\LCSTReport}[1]{Technical Report MIT\slash LCS\slash TR-{#1},
\MITLCS, Cambridge, MA}
\newcommand{\LCSTMemo}[1]{Technical Memo MIT\slash LCS\slash TM-{#1},
\MITLCS, Cambridge, MA}

\newcommand{\LNCS}{Springer-Verlag {\bib Lecture Notes in Computer Science}}
\newcommand{\lncs}[1]{\LNCS\ {\bib#1}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% useful miscellaney

\newdimen\border
\border=1pc

\newcommand{\code}[1]{\leavevmode\hbox{\tt#1}}
\newcommand{\bold}[1]{\leavevmode{\bf#1}}

\newcommand{\wyn}[1]{}

\newcommand{\thin}{{$\,$}}
\newcommand{\0}{\phantom{0}}
\newcommand{\eol}{\hfil\break}

\newcommand{\bib}{\sl}
\newcommand{\etal}{{et al}}

%% center-lap box, like rlap and llap
\newcommand{\clap}[1]{\hbox to 0pt{\hss#1\hss}}

%% makes a plus sign that is higher and smaller than the regular plus sign.
\newcommand{\plus}{\raise2pt\hbox{$\scriptstyle+$}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% macro for the Table of Contents---space between 12.11Section Heading.

\newcommand{\sectskip}{\hskip 0.5em}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% macro for PostScript figures

\def\pix#1#2#3#4{%
%% #1 = name of PS file
%% #2 = caption
%% #3 = label
%% #4 = tbh
\begin{figure}[#4]
%\centerline{\psfig{figure=\grouppathname/#1}}
\centerline{\psfig{figure=\herepath #1}}
\caption{#2}
\label{#3}
\end{figure}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% special macros for the page style, chapter headings, and sections

\makeatletter

\def\@makechapterhead#1{\newpage
\ifodd\thepage\else
\thispagestyle{plain}
\null
\newpage\fi
\hrule\bigskip
\centerline{\LARGE\bf#1}
\bigskip\hrule
\vskip 0.5in
\def\thechaptitle{#1}
\markboth{#1}{#1}
\thispagestyle{plain}}

\let\makearticletitle=\maketitle
\def\maketitle{\ifbook\chapter{\@title}\else
\makearticletitle\newpage\fi}

\def\ps@myheadings{\let\@mkboth\@gobbletwo
\def\@oddhead{\null\hfil\sl\leftmark}
\def\@oddfoot{\centerline{\rm\thepage}}
\def\@evenhead{\sl\rightmark \hfil\null}
\def\@evenfoot{\centerline{\rm\thepage}}
\def\sectionmark##1{}\def\subsectionmark##1{}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% the following information is here for reference purposes
%%
% \@startsection {NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE} 
%
% \def\section{\@startsection {section}{1}
% {\z@}{-3.5ex plus -1ex minus -.2ex}{2.3ex plus .2ex}{\Large\bf}}
%
% \def\subsection{\@startsection{subsection}{2}
% {\z@}{-3.25ex plus -1ex minus -.2ex}{1.5ex plus .2ex}{\large\bf}}
%
% \def\subsubsection{\@startsection{subsubsection}{3}
% {\z@}{-3.25ex plus -1ex minus -.2ex}{1.5ex plus .2ex}{\normalsize\bf}}
%
% \def\paragraph{\@startsection{paragraph}{4}
% {\z@}{3.25ex plus 1ex minus .2ex}{-1em}{\normalsize\bf}}
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\def\section{\@startsection{section}{1}%
{\z@}{-1.20ex plus -1.0ex minus -.2ex}{0.50ex plus .2ex}%
{\large\bf}}

\def\subsection{\@startsection{subsection}{2}%
{\z@}{-0.60ex plus -0.5ex minus -.2ex}{0.25ex plus .2ex}%
{\normalsize\bf}}

\def\subsubsection{\@startsection{subsubsection}{3}%
{\z@}{-0.20ex plus -0.25ex minus -.2ex}{0.01ex plus .2ex}%
{\normalsize\bf}}

\def\paragraph{\@startsection{paragraph}{4}
{\z@}{0.20ex plus 0.1ex minus .2ex}{-1em}{\normalsize\bf}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% the following information is for reference only
%%
%\def\@normalsize{\@setsize\normalsize{12.5pt}\xpt\@xpt
%\abovedisplayskip 10pt plus2pt minus5pt%
%\belowdisplayskip \abovedisplayskip
%\abovedisplayshortskip  \z@ plus3pt%   
%\belowdisplayshortskip  6pt plus3pt minus3pt%
%\let\@listi\@listI}   % Setting of \@listi added 9 Jun 87
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\def\@normalsize{\@setsize\normalsize{13.5pt}\xipt\@xipt
\abovedisplayskip 11pt plus3pt minus6pt%
\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip  \z@ plus3pt%   
\belowdisplayshortskip  6.5pt plus3.5pt minus3pt%
\let\@listi\@listI}   % Setting of \@listi added 9 Jun 87

\makeatother

\pagestyle{myheadings}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% new macros especially for the report, both Group and LCS

\newdimen\peopleskip \peopleskip=2em

\newcommand{\staff}[1]%
{\centerline{\bf#1}\kern\medskipamount\ignorespaces}

\newenvironment{Hpeople}{\tabskip=\peopleskip
\def\\{\crcr}
\hbox to \hsize\bgroup\hss\vbox\bgroup
\halign\bgroup&##\hfil\crcr}{\crcr\egroup\egroup\hss\egroup\bigskip}

\newenvironment{people}{\def\\{\crcr}
\divide\peopleskip by 2
\hbox to \hsize\bgroup\hss\offinterlineskip
\valign\bgroup&\hbox{\strut\hskip\peopleskip##\hskip\peopleskip}\crcr}%
{\crcr\egroup\hss\egroup\medskip}

\newenvironment{shortitems}{\begin{itemize}
\advance\parskip by -1.5ex}{\end{itemize}}

\newenvironment{shortenums}{\begin{enumerate}
\advance\parskip by -1.5ex}{\end{enumerate}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% ``magic'' from previous years that makes bibliographies work correctly

\def\thebibliography#1{\list
  {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
    \advance\leftmargin\labelsep
    \usecounter{enumi}}}
\def\newblock{\hskip .11em plus .33em minus .07em}

\makeatletter
 \def\@biblabel#1{\hfill}  % Produces the label for a \bibitem[...]
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% more room for floats

\renewcommand{\topfraction}{0.8}
\renewcommand{\bottomfraction}{0.5}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% macros for specific groups

\newcommand{\by}{$\times$}
\newcommand{\Unix}{Unix}

%% for cag
\newtheorem{example}{Example}

%% for cva

\newcommand{\hzline}{\makebox[\textwidth]{\hrulefill}}

%% for im

\newcommand{\cam}{{\sc cam}}

%% for pia

\makeatletter
\newenvironment{inset}
 {\bgroup\parskip=1ex plus 1ex\begin{list}{}%
        {\topsep=0pt\rightmargin\leftmargin}%
        \item[]}%
 {\end{list}\leavevmode\egroup\global\@ignoretrue}
\makeatother

%% for psr

%\newcommand{\ufxsdc}{\mbox{$\mu$FX/SDC}}
%\newcommand{\slb}       {\mbox{$\;$}\linebreak[1]}
%\newcommand{\lslb}      {\mbox{$\,$}\linebreak[1]}
%\newcommand{\SubR}[3]{{\tt #1\slb\raisebox{.93ex}{\underline{$_{\mbox{~}}$#2\,}}\raisebox{-.33ex}{$\!\!\!\!\rightarrow$}\lslb#3}}
%\newcommand{\kkvar}{\keyword{C\_var}}
%%\newcommand{\kknum}{\keyword{C\_num}}
%\newcommand{\knumof}{\keyword{numof}}
%\newcommand{\kkcall}{\keyword{C\_call}}
%\newcommand{\keyword}[1]{\mbox{\tt#1}}%
%\newcommand{\kfunc}{\keyword{->}}
%\newcommand{\klistof}{\keyword{listof}}
%\newcommand{\meta}[1]{\mbox{\it #1\/}}
%\newcommand{\metaT}{\meta{T}}
%\newcommand{\metaN}{\meta{N}}
%\newcommand{\metaC}{\meta{C}}

%% for sls

\def\student#1{\subsubsection{#1}}

%% for spd

\newcommand{\LP}{{\sc lp}}
\newcommand{\LSL}{{\sc lsl}}
\newcommand{\LCLint}{{\sc lcl}{\small int}}
\newcommand{\ANSIC}{{\sc ansi c}}
\newcommand{\LCL}{{\sc lcl}}
\newcommand{\PSC}{{\sc psc}}
\newcommand{\C}{{C}}

%% for toc

\newcommand{\Bbb}{\bf}
\newtheorem{lemma}{Lemma}

