% REPORT DOCUMENT STYLE -- version 0.6 for LaTeX version 0.9 % Copyright (C) 1983 by Leslie Lamport \warning{Document Style 'report' -- version 0.6 for LaTeX version 0.9} \warning{} % CHANGES THAT SHOULD BE MADE TO REPORT: % % - change \chapter, \section etc. so they work right with names more % than one line long. Requires ragged-righting and turning off % hyphenation, as per 4 Feb 83 message from DEK. % - make table of contents, list of figure, etc. entries work right % for titles longer than one line. Not clear how to do this. % % **************************************** % * FONTS * % **************************************** % \let\@mainsize=\tenpoint \tenpoint \def\@parskip{4pt plus 1pt} \parskip\@parskip \parindent 11pt % Environment names for type styles % Note that the \@end... commands are left undefined, since % TeX turns an undefined \begincsname ... \endcsname into \relax \def\@beginroman{\rm\ignorespaces} \def\@beginitalic{\it\ignorespaces} \def\@begintypewriter{\tt\ignorespaces} \def\@beginboldface{\bf\ignorespaces} \def\@beginsansserif{\sf\ignorespaces} \def\@beginsmallcaps{\sc\ignorespaces} % type size commands \def\@beginnormal{\tenpoint\def\@parskip{4pt plus 1pt}\parskip\@parskip \ignorespaces} \def\tit{\twelvepoint\def\@parskip{5pt plus 2pt}\parskip\@parskip} \def\@begintitle{\tit\ignorespaces} \def\Tit{\eighteenpoint} \def\@beginTitle{\Tit\ignorespaces} \def\@beginsmall{\ninepoint\def\@parskip{3pt plus 1pt}\parskip\@parskip \ignorespaces} \def\@beginfootnotesize{\eightpoint \def\@parskip{3pt plus 1pt}\parskip\@parskip\ignorespaces} \def\@beginscriptsize{\sevenpoint \def\@parskip{3pt plus 1pt}\parskip\@parskip\ignorespaces} % **************************************** % * PAGE STYLES * % **************************************** % % To get heads and feet defined for different styles, the text % to be put on the left- or right-hand page heading is defined % by the macro \@lhead or \@rhead. (left-hand = even page number) % These can be set by the user commands \lhead, \rhead and % \head. % % The macros \@chapmark, \@secmark, etc. are called by \chapter, \section, % etc. to make appropriate changes to the running heads. % \@chapmark, etc. take a single argument, which is the argument of the % \chapter, etc. macro from which they're called. % The page style \@ps@... macros change the running heads by % redefining \@chapmark, etc. \def\lhead#1{\def\@lhead{#1}} \def\rhead#1{\def\@rhead{#1}} \def\head#1{\def\@lhead{#1}\def\@rhead{#1}} \def\@chapmark#1{} % INITIAL DEFAULT DEFINITIONS \def\@secmark#1{} \def\@subsecmark#1{} \def\@subsubsecmark#1{} \def\@lhead{} \def\@rhead{} % NOTE USE OF \hbox{} IN CASE OF EMPTY HEADING FIELDS IN THE % FOLLOWING DEFINITIONS OF \@ps@... \def\@ps@myheadings{\def\@oddhead{\sl\hbox{}\hfil\@rhead \hfil \rm\@pagenum}% \def\@oddfoot{}\def\@evenhead{\rm\@pagenum\hfil\sl\@lhead\hfil}% \def\@evenfoot{}\def\@chapmark##1{}\def\@secmark##1{}} % NOTE USE OF \tokens IN THE DEFINITION OF \@chapmark and \@secmark % \if\@twoside F% \def\@ps@headings{\def\@oddhead{\sl\hbox{}\firstmark \hfil \rm\@pagenum}% \def\@oddfoot{}\def\@chapmark##1{\tokens{\@cr@chapter}% \mark{{Chapter \the\tokens\@ca@chapter}}}% \def\@secmark##1{\tokens{\@cx@section}% \mark{{Section \the\tokens\@ca@section}}}}% \else \def\@ps@headings{\def\@oddfoot{}\def\@oddhead% {\sl\hbox{}\firstmark\hfil\rm\@pagenum}\def\@evenfoot{}% \def\@evenhead{\rm\@pagenum\hss\sl\@lhead\hss}\def% \@chapmark##1{\mark{}\def\@lhead{##1}}% \def\@secmark##1{\tokens{\@cx@section}% \mark{{\hfil\the\tokens\@ca@section}\hskip 1em##1}}}\fi \def\@ps@empty{\def\@oddhead{}\def\@oddfoot{}% \def\@evenhead{}\def\@evenfoot{}} \def\@ps@plain{\def\@oddhead{}\def\@oddfoot{\rm\hfil\@pagenum \hfil}\def\@evenhead{}\def\@evenfoot{\rm\hfil\@pagenum\hfil}} \let\@ps@newchapter=\@ps@plain \let\@ps@endchapter=\@ps@plain % **************************************** % * SUBSTYLES * % **************************************** % % SUBSTYLE heada CHANGES \pagestyle{headings} TO PRODUCE % 6 Chapter Title | Section Title 7 % IN TWO-SIDED PAGE LAYOUTS AND % Chapter Title 7 % IN SINGLE SIDE % \def\@ds@heada{\if\@twoside F\def\@ps@headings{\def\@oddhead{\sl\hfil\@rhead \hfil\rm\@pagenum}\def\@oddfoot{}\def\@chapmark####1{\def\@rhead{####1}}% \def\@secmark####1{}}\else\def\@ps@headings{\def\@oddfoot{}\def\@oddhead% {\sl\hfil\firstmark\hfil\rm\@pagenum}\def\@evenfoot{}% \def\@evenhead{\rm\@pagenum\hfil\sl\@lhead\hfil}\def% \@chapmark####1{\mark{}\def\@lhead{####1}}\def\@secmark####1{\mark{####1}}}\fi} % **************************************** % * ENVIRONMENTS * % **************************************** % % titlepage % \def\@begintitlepage{\newpage\thispagestyle{empty}} \def\@endtitlepage{\newpage} % DEFAULT VALUES FOR list ENVIRONMENT % \def\@d@leftmargin{15pt} \def\@d@labelwidth{11pt} \def\@d@labelsep{4pt} % PARAGRAPH-FORMATTING ENVIRONMENTS % --------------------------------- % VERSE % \CR ends line % Line continuations indented further. % Blank line makes new paragraph with \parskip space % \def\@beginverse{\def\CR{\item}\def\CRSP##1{\par\vskip ##1 \item}\@beginlist {}{\itemsep{0pt} \listparindent{-15pt}\leftmargin{30pt}\rightmargin{15pt}}\item} \let\@endverse=\@endlist % QUOTATION % Fills lines % Indents paragraph % \def\@beginquotation{\@beginlist{}{\listparindent{15pt}}\item} \let\@endquotation=\@endlist % QUOTE -- same as quotation except no paragraph indentation, \def\@beginquote{\@beginlist{}{}\item} \let\@endquote=\@endlist % LIST-MAKING ENVIRONMENTS % ------------------------ % % PARAMETERS FOR enumerate % \namedef{@co@enum1}{\@arabic{\backslash{@c@enum1}}.} \namedef{@co@enum2}{(\@alph{\backslash{@c@enum2}})} \namedef{@co@enum3}{\@roman{\backslash{@c@enum3}}.} \namedef{@co@enum4}{\@Alph{\backslash{@c@enum4}}.} \pnamedef{@cr@enum1}{#1}{\@arabic{#1}} \pnamedef{@cr@enum2}{#1#2}{\@arabic{#1}(\@alph{#2})} \pnamedef{@cr@enum3}{#1#2#3}{\@arabic{#1}(\@alph{#2})\@roman{#3}} \pnamedef{@cr@enum4}{#1#2#3#4}{\@arabic{#1}(\@alph{#2})\@roman{#3}-\@Alph{#4}} \namedef{@ca@enum1}{{\backslash{@c@enum1}}} \namedef{@ca@enum2}{{\backslash{@c@enum1}}{\backslash{@c@enum2}}} \namedef{@ca@enum3}{\backslash{@ca@enum2}{\backslash{@c@enum3}}} \namedef{@ca@enum4}{\backslash{@ca@enum3}{\backslash{@c@enum4}}} \namedef{@enum1margin}{26pt} \namedef{@enum2margin}{25pt} \namedef{@enum3margin}{25pt} \namedef{@enum4margin}{25pt} \@definecounter{enum1} \@definecounter{enum2} \@definecounter{enum3} \@definecounter{enum4} % PARAMETERS FOR itemize % \namedef{@item1}{$\bullet$} \namedef{@item2}{--} \namedef{@item3}{$\ast$} \namedef{@item4}{$\cdot$} \namedef{@item1margin}{26pt} \namedef{@item2margin}{25pt} \namedef{@item3margin}{25pt} \namedef{@item4margin}{25pt} % THEOREM ENVIRONMENTS % -------------------- % \def\@thmnumber#1{\@arabic{#1}} \def\@localthmnumber#1#2{\@cr@chapter{#1}.\@arabic{#2}} \def\@applocalthmnumber#1#2{\@cra@chapter{#1}.\@arabic{#2}} \def\@@beginthmenv#1#2{\@refstepcounter{#1}\par\noindent{\bf #2 \backslash{@co@#1}:}\hskip 3pt\it} \def\@@endthmenv{\rm\@parhack} \theoremdef{theorem}{Theorem} % BIBLIOGRAPHY % \def\@beginbibliography#1{\par\goodpagebreak\vskip 20pt \hbox to \the\hsize{\hss\@bibtitle\hss}\nobreak\vskip 10pt \@beginlist{\@bibitems}{\labelwidthof{#1}}} \let\@endbibliography=\@endlist \def\@bibtitle{REFERENCES} \def\@bibnumcite{[\arabic]} \def\@biblabelcite#1{[#1]} \def\@bibitems{\arabic.} \def\@biblabel#1{#1:} % THE index ENVIRONMENT % Produces double column format. % Each paragraph is a separate entry. % \def\@beginindex{\def\@columnseprule{.4pt}% \def\@columnsep{15pt}\@makedoublecolumn \@topnewpage{\vskip 30pt\hbox{\hss\tit INDEX\hss}\vskip 20pt} \pagestyle{myheadings}\head{Index}\thispagestyle{plain}\parindent0pt \everypar{\hangindent 20pt}\parskip0pt plus 1pt} \def\@endindex{\@makesinglecolumn\head{}} \def\indexspace{\vspace{10pt plus 5pt minus 3pt}} % array AND tabular ENVIRONMENT PARAMETERS % TEMPORARY DEFINITIONS \def\@ar@spacer{\hbox to 11pt{}} \def\@ar@rule{\hbox to 5.3pt{}\vrule width .4pt\hbox to 5.3pt{}} \def\@tb@spacer{\hbox to 11pt{}} \def\@tb@rule{\hbox to 5.3pt{}\vrule width .4pt\hbox to 5.3pt{}} \def\@tb@lrule{\vrule width .4pt\hbox to 5.3pt{}} \def\@tb@rrule{\hbox to 5.3pt{}\vrule width .4pt} \def\hline{\hrule height .4pt} % **************************************** % * MISCELLANEOUS * % **************************************** % % Spacing and rule width for \boxit % \def\@maxmsgs{24} \def\@boxitsep{.2em} \def\@boxitrule{.4pt} % Date % \def\today{\ifcase\the\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\the\day, \number\the\year} % **************************************** % * CHAPTERS AND SECTIONS * % **************************************** % % DEFINE COUNTERS \@definecounter{chapter} \@definecounter{section} \@definecounter{subsection} \@definecounter{subsubsection} \@addtoreset{section}{chapter} \@addtoreset{subsection}{section} \@addtoreset{subsubsection}{subsection} \def\@co@chapter{\@arabic{\@c@chapter}} \def\@co@section{\@co@chapter.\@arabic{\@c@section}} \def\@co@subsection{\@co@section .\@arabic{\@c@subsection}} \def\@co@subsubsection{\@co@subsection .\@arabic{\@c@subsubsection}} \def\@ca@chapter{{\@c@chapter}} \def\@ca@section{\@ca@chapter{\@c@section}} \def\@ca@subsection{\@ca@section{\@c@subsection}} \def\@ca@subsubsection{\@ca@subsection{\@c@subsubsection}} \def\@cr@chapter#1{\@arabic{#1}} \def\@cra@chapter#1{\@Alph{#1}} \def\@cr@section#1#2{\@cr@chapter{#1}.\@arabic{#2}} \let\@cx@section=\@cr@section %% USED FOR RUNNING HEADS \def\@cr@subsection#1#2#3{\@cr@chapter{#1}.\@arabic{#2}.\@arabic{#3}} \def\@cr@subsubsection#1#2#3#4{\@cr@chapter{#1}.\@arabic{#2}.\@arabic {#3}.\@arabic{#4}} \def\@cra@section#1#2{\@cra@chapter{#1}.\@arabic{#2}} \def\@cra@subsection#1#2#3{\@cra@chapter{#1}.\@arabic{#2}.\@arabic{#3}} \def\@cra@subsubsection#1#2#3#4{\@cra@chapter{#1}.\@arabic{#2}.\@arabic {#3}.\@arabic{#4}} % \chapter, \section, \subsection and \subsubsection % % NOTE USE OF \everypar AND \parskip TO GET PROPER SPACE BEFORE AND AFTER % \section EVEN WHEN FOLLOWED IMMEDIATELY BY \subsection OR PRECEDED BY % \chapter, AND SIMILARLY FOR \subsection and \subsubsection \def\@chapapp{Chapter} % reset to Appendix by \appendix \def\chapter#1{\clearpage % clear end of chapter \@refstepcounter{chapter} % step counter \warning{\@chapapp\space\@c@chapter.} % type message \thispagestyle{newchapter} % special page style \@chapmark{#1} \vspacer{50pt} % blank space at top of page \vbox % chapter heading {\noindent \Tit \@chapapp{} \@co@chapter.} \vspace{20pt} \vbox {\Tit \noindent #1} \@addtableentry{toc}{\string % add table of contents line \@chappage\@ca@chapter{#1}} \parskip40pt % space in front of first par. \def\@nobreak{T} \everypar{\parskip\@parskip\@everypar % first par will restore \parskip \def\@nobreak{F}\everypar{\@everypar}}} \def\section#1{\@refstepcounter{section} % step counter \par % end previous paragraph \vspace{25pt} % extra vertical space \if\@nobreak F\goodpagebreak\fi % good place for page break if \@secmark{#1} % not following \chapter \vbox % section heading {\@mainsize\bf\@hangfrom{\@co@section.\hskip 10pt}#1} \@addtableentry{toc}{\string % add table of contents line \@secpage\@ca@section{#1}} \nobreak % very bad place for page break \def\@nobreak{T} \parskip15pt % space in front of first par. \everypar{\parskip\@parskip\@everypar % first par will restore \parskip \def\@nobreak{F}\everypar{\@everypar}}} \def\subsection#1{\@refstepcounter{subsection} % step counter \par % end previous paragraph \vspace{15pt} % extra vertical space \if\@nobreak F\goodpagebreak\fi % good place for page break if \@subsecmark{#1} \vbox % subsection heading {\@mainsize\bf\@hangfrom{\@co@subsection.\hskip 10pt}#1} \@addtableentry{toc}{\string % add table of contents line \@subsecpage\@ca@subsection{#1}} \nobreak % very bad place for page break \def\@nobreak{T} \parskip10pt % space in front of first par. \everypar{\parskip\@parskip\@everypar % first par will restore \parskip \def\@nobreak{F}\everypar{\@everypar}}} \def\subsubsection#1{\@refstepcounter{subsubsection} % step counter \par % end previous paragraph \vspace{15pt} % extra vertical space \if\@nobreak F\goodpagebreak\fi % good place for page break if \@subsubsecmark{#1} \vbox % subsubsection heading {\@mainsize\bf\@hangfrom{\@co@subsubsection.\hskip 10pt}#1} \@addtableentry{toc}{\string % add table of contents line \@subsubsecpage\@ca@subsubsection{#1}} \nobreak % very bad place for page break \def\@nobreak{T} \parskip10pt % space in front of first par. \everypar{\parskip\@parskip\@everypar % first par will restore \parskip \def\@nobreak{F}\everypar{\@everypar}}} \def\@hangfrom#1{{\parindent 0pt \setbox\@tmpbox=\hbox{#1} \hangindent \wd\@tmpbox\relax$ $\box\@tmpbox}} % INITIALIZATION \def\@nobreak{F} % TABLE OF CONTENTS \def\@t@toc{F} % must initialize \@t@toc in case \def\tableofcontents{ % there's no \tableofcontents \begin{center} {\tit CONTENTS} % write ``CONTENTS'' \end{center} \vspace{20pt} % vertical space \begingroup % input previous .TOC file \@input{\jobname.toc} % inside group so \def's local \endgroup \if\@tfilesw T\gdef\@t@toc{T} \@newwrite\@tf@toc % open .TOC file (must come \openout\@tf@toc=\jobname.toc \fi} % after \@input % MACROS TO PRODUCE TABLE OF CONTENTS LINES % NOTE THE USE OF \@secsk TO PRODUCE AN EXTRA SPACE FOR A SECTION % ENTRY THAT COMES AFTER A SUBSECTION ENTRY. % FOR THE USER's \tabentry AND \tabmainentry COMMANDS % \def\@tabentry#1#2{\vskip 0pt plus .2pt\hbox to \columnwidth{#1\@lead\hbox to 1.5em{\hfil #2}}} \def\@tabmainentry#1#2{\goodpagebreak\vskip 1.0em plus 1pt\hbox to \columnwidth{\bf #1\hfill\hbox to 2em{\hfil #2}}} % COMMANDS WRITTEN BY \chapter, etc. ON TOC FILE % \def\@chappage#1#2#3{\goodpagebreak \vskip 1.0em plus 1pt\def\@secsk{T}\hbox to \columnwidth {\bf\hbox to 1.5em{\@cr@chapter{#1}.\hss}#2\hfill \hbox to 2em{\hfil #3}}\nobreak} \def\@secpage#1#2#3#4{\vskip 0pt plus .2pt\if \@secsk T\vskip .5em\def\@secsk{F}\fi \hbox to \columnwidth {\hbox to 1.5em{}\hbox to 2.3em{\@cr@chapter{#1}.#2.\hss}#3\@lead\hbox to 1.5em{\hfil #4}}} \def\@subsecpage#1#2#3#4#5{\vskip 0pt plus .2pt\def\@secsk{T}\hbox to \columnwidth {\hbox to 3.8em{}\hbox to 3.2em{\@cr@chapter{#1}.#2.#3.\hss}#4\@lead \hbox to 1.5em{\hfil #5}}} \def\@subsubsecpage#1#2#3#4#5#6{\vskip 0pt plus .2pt\hbox to \columnwidth {\hbox to 6em{}\hbox to 4.1em{\@cr@chapter{#1}.#2.#3.#4.\hss}#5\@lead \hbox to 1.5em{\hfil #6}}} \def\@lead{\leaders\hbox to .9em{\hfill.\hfill}\hfill} % **************************************** % * 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 % -- write an \@appdefs command on the .toc, .lof and .lot files % to redefine the chapter counter. % -- write a command on the .aux file to \def\@appsw{T} % -- reset the section counter to zero % -- redefine the \chapter command if appendix titles and headings are % to look different from chapter titles and headings. % -- redefine \@cx@section to \@cra@section for page headings \def\@appdefs{\def\@cr@chapter##1{\@Alph{##1}}} \def\appendix{\setcounter{chapter}{0}\setcounter{section}{0}\def\@chapapp% {Appendix}\def\@co@chapter{\@Alph{\@c@chapter}}\let\@cx@section=\@cra@section% \if\@afilesw T\immediate\write\@auxout% {\string\def\string\@appsw{T}}\fi \if \@t@toc T\write\@tf@toc{\string\@appdefs}\fi \if \@t@lof T\write\@tf@lof{\string\@appdefs}\fi \if \@t@lot T\write\@tf@lot{\string\@appdefs}\fi} % **************************************** % * FOOTNOTES * % **************************************** % \def\@footinsertskip{10pt plus2pt minus4pt} \def\@topinsertskip{20pt plus2pt minus4pt} \def\@topinsertskipdim{20pt} \def\@footruleheight{.4pt} \def\@footruleshift{4pt} \dimen\@footinsert=\textheight \skip\@footinsert=\@footinsertskip %TEMPORARY DEFINITION \splittopskip=9pt %broken footnotes will have this as the top baseline \@definecounter{footnote} \def\@co@footnote{\@arabic{\@c@footnote}} \def\@cr@footnote#1{\@arabic{#1}} \@addtoreset{footnote}{chapter} \def\@makefootnote#1#2{\eightpoint\par\noindent\hangindent 5pt\hbox to 5pt{\hss $^{#1}$}\strut #2\strut} % EQUATION -- must follow \chapter definition % \@definecounter{equation} \@addtoreset{equation}{chapter} \def\@co@equation{(\@co@chapter.\@arabic{\@c@equation})} \def\@ca@equation{{\@ca@chapter}{\@c@equation}} \def\@cr@equation#1#2{(\@cr@chapter{#1}.\@arabic{#2})} \def\@cra@equation#1#2{(\@cra@chapter{#1}.\@arabic{#2})} % **************************************** % * FIGURES AND TABLES * % **************************************** % \@definecounter{figure} \@addtoreset{figure}{chapter} \def\@co@figure{\@co@chapter.\@arabic{\@c@figure}} \def\@ca@figure{{\@c@chapter}{\@c@figure}} \def\@cr@figure#1#2{\@cr@chapter{#1}.\@arabic{#2}} \def\@cra@figure#1#2{\@cra@chapter{#1}.\@arabic{#2}} \def\@t@lof{F} % don'T produce .LOF file if no \listoffigures \def\@tr@lof#1#2#3#4{\ifnum#1>\@x@chap\relax % skip 10 pt between figures \vskip 10pt\fi\def% % for different chapters \@x@chap{#1}\hbox to \columnwidth {\hbox to 2.3em{#1.#2.\hss}#3\@lead\hbox to 1.5em{\hfil #4}}} \def\listoffigures{\begin{center} {\tit FIGURES} \end{center}\par\vskip 10pt\def\@x@chap{-1}\begingroup \@input{\jobname.lof}\endgroup\par \if\@tfilesw T\gdef\@t@lof{T}\@newwrite\@tf@lof\openout\@tf@lof=\jobname.lof\fi} \@definecounter{table} \@addtoreset{table}{chapter} \def\@co@table{\@co@chapter.\@arabic{\@c@table}} \def\@ca@table{{\@c@chapter}{\@c@table}} \def\@cr@table#1#2{\@cr@chapter{#1}.\@arabic{#2}} \def\@cra@table#1#2{\@cra@chapter{#1}.\@arabic{#2}} \def\@t@lot{F} % don'T produce .LOT file if no \listoftables \let\@tr@lot=\@tr@lof \def\listoftables{\begin{center} {\tit TABLES} \end{center}\par\vskip 10pt\def\@x@chap{-1}\begingroup \@input{\jobname.lot}\endgroup\par \if\@tfilesw T\gdef\@t@lot{T}\@newwrite\@tf@lot\openout\@tf@lot=\jobname.lot\fi} \def\@figsep{7pt} \def\@textfigsep{5pt} \def\@captionskip{6pt} \def\@caption#1#2{#1: #2} % **************************************** % * INITIALIZATION * % **************************************** % % Default initializations \@ps@plain \pagenumbering{arabic} \@makesinglecolumn