view thesis/mitthesis.cls @ 425:efba8526a662

happy with code formatting.
author Robert McIntyre <rlm@mit.edu>
date Fri, 21 Mar 2014 02:48:23 -0400
parents 6b0f77df0e53
children
line wrap: on
line source
1 % $Log: mitthesis.cls,v $
2 % Revision 1.9 2012/02/15 15:48:16 jdreed
3 % Tweak the "permission" statement per the Libraries' specs
4 % retrieved 15-Feb-2012
5 %
6 % Revision 1.8 2009/07/27 14:23:50 boojum
7 % added changing draft mark
8 %
9 % Revision 1.6 2005/05/13 19:57:40 boojum
10 % added leftblank option
11 %
12 % Revision 1.5 2002/04/18 14:10:08 boojum
13 % changed doublespace into setspace for 2e compliance
14 %
15 % Revision 1.4 2001/02/08 18:57:13 boojum
16 % turned two newpages into cleardoublepages
17 %
18 % Revision 1.3 2000/08/14 14:53:29 boojum
19 % commented out footheight, which is relevant for drafthead
20 %
21 % Revision 1.2 1999/10/21 14:51:33 boojum
22 % changed references to documentstyle to documentclass in comments
23 %
24 % Revision 1.1 1999/10/21 14:39:31 boojum
25 % Initial revision
26 %
27 %Revision 1.7 1998/04/01 20:45:34 othomas
28 %removed offending phrase ", and to grant others the right to do so" from copyright notice.
29 %
30 %Revision 1.6 96/06/26 15:07:29 othomas
31 %safety checkin.
32 %
33 %Revision 1.5 93/06/07 15:38:50 starflt
34 %Altered 'vi' option copyright wording to comply with new Institute
35 %Archives requirements and MIT lawyers.
36 %
37 %Revision 1.4 92/08/19 16:51:06 lwvanels
38 %Updated Course 6 title page for new permissions.
39 %
40 %Revision 1.3 92/04/23 10:16:15 epeisach
41 %Fixed comment character in rcs file
42 %
43 %Revision 1.2 92/04/22 13:12:02 epeisach
44 %Fixes for 1991 course 6 requirements
45 %Phrase "and to grant others the right to do so" has been added to
46 %permission clause
47 %Second copy of abstract is not counted as separate pages so numbering works
48 %out
49 %
50 %Revision 1.1 90/05/04 11:45:53 lwvanels
51 %Initial revision
53 %
54 % LaTeX format for theses at MIT
55 % Based on "Specifications for Thesis Preparation"
57 % `vi' and `upcase' options by Krishna Sethuraman - krishna@athena.mit.edu
58 % Margins and heading types by Peter Nuth - nuth@ai.mit.edu
59 % Title and abstract page by Stephen Gildea - gildea@erl.mit.edu
60 % Look in this directory for example file mitthesis.doc
61 % Also for propcover.tex - Boilerplate for PHD proposal.
63 % To use this style - say something like:
64 % for dull, boring thesis format:
65 % \documentclass[12pt]{mitthesis}
66 % \pagestyle{plain}
67 % OR for fast drafts:
68 % \documentclass[11pt,singlespace,draft]{mitthesis}
69 % \pagestyle{drafthead}
70 % OR for Tech Reports:
71 % \documentclass[12pt,twoside]{mitthesis}
72 % \pagestyle{headings}
73 % OR
74 % some other combination...
75 %
76 %%%% New options:
77 %
78 % Option `twoside':
79 % Good for producing Tech Reports.
80 % The default is single-sided printing, which is what M.I.T. wants on the
81 % thesis document itself.
82 %
83 % Option `singlespace':
84 % Good for drafts.
85 % Double-spaced theses are the default.
86 % That is what M.I.T. asks for in the formal specifications.
87 %
88 % Note that MIT does not REQUIRE all theses to be double-spaced anymore.
89 % Someone in the library system said that it's OK to be single-spaced.
90 % (Regardless of what the specs. say...)
91 % To get singlespacing in an area - Use the 'singlespace' environment.
92 %
93 % Option `draft':
94 % Puts `overfull' boxes at the end of lines that are too long.
95 %
96 % Pagestyle `drafthead':
97 % Puts the date and the label ``*DRAFT*'' in the footer.
98 %
99 %%%%%%%%%%
100 %
101 %%%% Parameters to initialize for boilerplate page:
102 %
103 % \title{Mixed Circular Cylindrical Shells}
104 % \author{J. Casey Salas}
105 % \prevdegrees{B.S., University of California (1978) \\
106 % S.M., Massachusetts Institute of Technology (1981)}
107 % \department{Department of Electrical Engineering and Computer Science}
108 % \degree{Doctor of Philosophy}
109 %% If the thesis is for two degrees simultaneously, list them both
110 %% separated by \and like this:
111 % \degree{Doctor of Philosophy \and Master of Science}
112 % \degreemonth{February}
113 % \degreeyear{1987}
114 % \thesisdate{December 10, 1986}
115 %% If the thesis is copyright by the Institute, leave this line out and
116 %% the standard copyright line will be used instead.
117 % \copyrightnotice{J. Casey Salas, 1986}
118 %% If there is more than one supervisor, use the \supervisor command
119 %% once for each.
120 % \supervisor{John D. Galli}{Director, Sound Instrument Laboratory}
121 %% This is the department committee chairman, not the thesis committee chairman
122 % \chairman{Arthur C. Smith}
123 % {Chairman, Departmental Committee on Graduate Students}
124 %% Make the titlepage based on the above information. If you need
125 %% something special and can't use the standard form, you can specify
126 %% the exact text of the titlepage yourself. Put it in a titlepage
127 %% environment and leave blank lines where you want vertical space.
128 %% The spaces will be adjusted to fill the entire page. The dotted
129 %% lines for the signatures are made with the \signature command.
130 %
131 %% The abstractpage environment sets up everything on the page except
132 %% the text itself. The title and other header material are put at the
133 %% top of the page, and the supervisors are listed at the bottom. A
134 %% new page is begun both before and after. Of course, an abstract may
135 %% be more than one page itself. If you need more control over the
136 %% format of the page, you can use the abstract environment, which puts
137 %% the word "Abstract" at the beginning and single spaces its text.
138 %
139 % \begin{abstractpage}
140 % Abstract goes here.
141 % \end{abstractpage}
142 %
143 %%%%%%%% Newer additions
144 %
145 % documentclass options -
146 % vi For MIT course VI or VIII thesis - will copyright the thesis to
147 % you while giving MIT permission to copy and distribute it.
148 % upcase Will put much of the cover page in uppercase, as per the
149 % example on page 17 of the *Specifications for Thesis
150 % Preparation*, (revised 1989)
151 % Also added ``All Rights Reserved'' to default copyright notice.
152 %
153 %%%%%%%%%%%
154 %
155 % Documentclass options (vi and upcase) and changes to copyright notice
156 % Copyright (c) 1990, by Krishna Sethuraman.
157 %
158 % Pagestyle and header generation
159 % Copyright (c) 1987, 1988 by Peter Nuth
160 %
161 % Original version
162 % Copyright (c) 1987 by Stephen Gildea
163 % Permission to copy all or part of this work is granted, provided
164 % that the copies are not made or distributed for resale, and that
165 % the copyright notice and this notice are retained.
166 %
167 % THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO
168 % WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
169 % INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
170 % FOR ANY PARTICULAR PURPOSE.
171 %%%%%%%%
173 \NeedsTeXFormat{LaTeX2e}
174 \ProvidesClass{mitthesis}[1999/10/20]
176 \def\mystretch{1.5} % Double spacing hack
177 \DeclareOption{doublespace}{} % This is default
178 % So we do not read this style twice
179 \DeclareOption{singlespace}{ % If he explicitly wants single spacing
180 \typeout{Single spaced}
181 \def\mystretch{1}}
183 %% `vi' and `upcase' document style options. Krishna Sethuraman (1990)
184 \newcount\vithesis
185 \DeclareOption{vi}{\typeout{Course VI/VIII thesis style.}\advance\vithesis by1}
186 \vithesis=0
188 \DeclareOption{upcase}{\typeout{Uppercase cover page.}
189 \gdef\choosecase#1{\uppercase\expandafter{#1}}}
190 \def\choosecase#1{#1}
192 %% leftblank option by Kevin Fu
193 \newif\if@leftblank \@leftblankfalse
195 \DeclareOption{leftblank}{\typeout{Intentionally Leaving Pages Blank}
196 \@leftblanktrue}
198 % Thesis looks much like report
199 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
200 \ProcessOptions
201 \LoadClass{report}
203 % If the user wants single spacing, set baselinestretch=1.
205 \usepackage{setspace}
207 % Note - doublespace.sty has some float-related troubles in
208 % combination with graphics or color, and is not officially compliant
209 % with 2e. setspace is a replacement which is 2e-compliant.
211 % Read the doublespace style that we got from Rochester:
212 %\input setdoublespace.sty
214 \def\baselinestretch{\mystretch} % Double spacing hack
216 %%%%%%% Set up margins and formatting params %%%
218 % Margins.
219 % Note we want 1in top margin assuming no header line, so push header
220 % into 1in margin.
221 % Draft mode brings the header back down.
223 \setlength{\oddsidemargin}{0.25in} % 1.25in left margin
224 \setlength{\evensidemargin}{0.25in} % 1.25in left margin (even pages)
225 \setlength{\topmargin}{0.0in} % 1in top margin
226 \setlength{\textwidth}{6.0in} % 6.0in text - 1.25in rt margin
227 \setlength{\textheight}{9in} % Body ht for 1in margins
228 \addtolength{\topmargin}{-\headheight} % No header, so compensate
229 \addtolength{\topmargin}{-\headsep} % for header height and separation
231 % The next two macros compensate page style for headers and footers
232 % We only need them in page styles that USE headers and footers.
233 % If we have a header, it must be 1in from top of page.
234 \def\pulldownheader{ % Shift header down 1in from top
235 \addtolength{\topmargin}{\headheight}
236 \addtolength{\topmargin}{\headsep}
237 \addtolength{\textheight}{-\headheight}
238 \addtolength{\textheight}{-\headsep}
239 }
240 % If we have a footer, put it 1in up from bottom
241 \def\pullupfooter{ % Shift footer up
242 \addtolength{\textheight}{-\footskip}
243 % \addtolength{\textheight}{-\footheight} %footheight doesn't
244 % exist in 2e
245 }
247 %%%%%%% End of margins and formatting params %%%
249 %%%%%%% Fix various header and footer problems %%%
251 % Draft mark on the right side of left pages (outside)
252 % this mark is also the only one visible on single sided.
253 \newcommand{\draftrmark}{**DRAFT**}
254 % Draft mark on the left side of right pages (outside)
255 \newcommand{\draftlmark}{**DRAFT**} %
257 % Macros to make changing the Draft easier
258 \newcommand{\drmark}[1]{\renewcommand{\draftrmark}{#1}}
259 \newcommand{\dlmark}[1]{\renewcommand{\draftlmark}{#1}}
260 \newcommand{\dmark}[1]{\drmark{#1}\dlmark{#1}}
262 % Format for draft of thesis. Define our own PageStyle -
263 % Just like headings, but has foot lines with the date and warning
265 \if@twoside % If two-sided printing.
266 \def\ps@drafthead{
267 \let\@mkboth\markboth
268 \def\@oddfoot{\rm \today \hfil \sc \draftrmark}
269 \def\@evenfoot{\sc \draftlmark \hfil \rm \today }
270 \def\@evenhead{\rm \thepage\hfil \sl \leftmark}
271 \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}
272 \def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
273 \@chapapp\ \thechapter. \ \fi ##1}}{}}
274 \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
275 \thesection. \ \fi ##1}}}
276 \pulldownheader % Bring header down from edge
277 \pullupfooter % Bring footer up
278 }
279 \else % If one-sided printing.
280 \def\ps@drafthead{
281 \let\@mkboth\markboth
282 \def\@oddfoot{\rm \today \hfil \sc \draftrmark}
283 \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}
284 \def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
285 \@chapapp\ \thechapter. \ \fi ##1}}}
286 \pulldownheader % Bring header down from edge
287 \pullupfooter % Bring footer up
288 }
289 \fi
291 % I redefine these formats that were defined in report.sty
292 % Definition of 'headings' page style
293 % Note the use of ##1 for parameter of \def\chaptermark inside the
294 % \def\ps@headings.
295 %
297 \if@twoside % If two-sided printing.
298 \def\ps@headings{\let\@mkboth\markboth
299 \def\@oddfoot{}
300 \def\@evenfoot{} % No feet.
301 \def\@evenhead{\rm \thepage\hfil \sl \leftmark} % Left heading.
302 \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage} % Right heading.
303 \def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
304 \@chapapp\ \thechapter. \ \fi ##1}}{}}
305 \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
306 \thesection. \ \fi ##1}}}
307 \pulldownheader % Bring header down from edge
308 }
309 \else % If one-sided printing.
310 \def\ps@headings{\let\@mkboth\markboth
311 \def\@oddfoot{}
312 \def\@evenfoot{} % No feet.
313 \def\@oddhead{\hbox {}\sl \rightmark \hfil \rm\thepage} % Heading.
314 \def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
315 \@chapapp\ \thechapter. \ \fi ##1}}}
316 \pulldownheader % Bring header down from edge
317 }
318 \fi
320 % Redefinition of 'myheadings' page style.
321 %
322 \def\ps@myheadings{\let\@mkboth\@gobbletwo
323 \def\@oddfoot{}
324 \def\@evenfoot{}
325 \def\sectionmark##1{}
326 \def\subsectionmark##1{}
327 \def\@evenhead{\rm \thepage\hfil\sl\leftmark\hbox {}} %
328 \def\@oddhead{\hbox{}\sl\rightmark \hfil \rm\thepage} %
329 \pulldownheader % Bring header down from edge
330 }
332 % Redefine '/chapter' to always start on an odd page.
333 % Should make no difference in singleside mode.
334 %
335 \if@leftblank
336 % Prints "THIS PAGE INTENTIONALLY LEFT BLANK" on blank pages.
337 \def\chapter{\clearpage\ifodd\c@page\else
338 \hbox{}\par\vfill\centerline%
339 {THIS PAGE INTENTIONALLY LEFT BLANK}%
340 \vfill\newpage\fi
341 \thispagestyle{plain} % Page style of chapter page is 'plain'
342 \global\@topnum\z@ % Prevents figures from going at top of page.
343 \@afterindentfalse % Suppresses indent in first paragraph. Change
344 \secdef\@chapter\@schapter} % to \@afterindenttrue to have indent.
345 \else
346 \def\chapter{\cleardoublepage % Starts new page.
347 \thispagestyle{plain} % Page style of chapter page is 'plain'
348 \global\@topnum\z@ % Prevents figures from going at top of page.
349 \@afterindentfalse % Suppresses indent in first paragraph. Change
350 \secdef\@chapter\@schapter} % to \@afterindenttrue to have indent.
351 \fi
352 % If using the report style, use - instead of . in the figure number.
353 \@ifundefined{thechapter}{}{\def\thefigure{\thechapter-\arabic{figure}}}
356 %%%%%%%%% End of Style parameters %%%%
358 % Here's Gildea's Boilerplate Stuff.
359 % Copyright (c) 1987 by Stephen Gildea
360 % Permission to copy all or part of this work is granted, provided
361 % that the copies are not made or distributed for resale, and that
362 % the copyright notice and this notice are retained.
364 %% Define all the pieces that go on the title page and the abstract.
366 % \title and \author already exist
368 \def\prevdegrees#1{\gdef\@prevdegrees{#1}}
369 \def\@prevdegrees{}
371 \def\department#1{\gdef\@department{#1}}
373 % If you are getting two degrees, use \and between the names.
374 \def\degree#1{\setbox0\hbox{#1} %for side effect of setting \@degreeword
375 \gdef\@degree{#1}}
377 % \and is used inside the \degree argument to separate two degrees
378 \def\and{\gdef\@degreeword{degrees} \par and \par}
379 \def\@degreeword{degree}
381 % The copyright notice stuff is a tremendous mess.
382 %
383 % \@copyrightnotice is used by \maketitle to actually put text on the
384 % page; it defaults to ``Copyright MIT 19xx. All rights reserved.''
385 % \copyrightnoticetext takes an argument and defined \@copyrightnotice
386 % to that argument. \copyrightnotice takes an argument, and calls
387 % \copyrightnoticetext with that argument, preceeded by a copyright
388 % symbol and followed by ``All rights reserved.'' and the standard
389 % permission notice.
390 %
391 % If you use the 'vi' option, \copyrightnoticetext is used to set the
392 % copyright to ``(C) Your Name, Current Year in Roman Numerals.''
393 % followed by the permission notice.
395 % If there is no \copyrightnotice command, it is asssumed that MIT
396 % holds the copyright. This commands adds the copyright symbol to the
397 % beginning, and puts the standard permission notice below.
398 %% ``All rights reserved'' added. Krishna Sethuraman (1990)
399 \def\copyrightnotice#1{\copyrightnoticetext{\copyright\ #1. All rights
400 reserved.\par\permission}}
402 % Occacionally you will need to exactly specify the text of the
403 % copyright notice. The \copyrightnoticetext command is then useful.
404 \long\def\copyrightnoticetext#1{\gdef\@copyrightnotice{#1}}
405 \def\@copyrightnotice{\copyright\ \Mit\ \@degreeyear. All rights reserved.}
407 %% `vi' documentclass option: Specifying this option automatically
408 %% copyrights the thesis to the author and gives MIT permission to copy and
409 %% distribute the document. If you want, you can still specify
410 %% \copyrightnotice{stuff} to copyright to someone else, or
411 %% \copyrightnoticetext{stuff} to specify the exact text of the copyright
412 %% notice.
413 \ifodd\vithesis \copyrightnoticetext{\copyright\ \@author,
414 \uppercase\expandafter{\romannumeral\@degreeyear}. All rights reserved.\par\permission}
415 %% or just
416 %%\@degreeyear}}
417 \typeout{Copyright given to author,
418 permission to copy/distribute given to MIT.}
419 \else \typeout{Thesis document copyright MIT unless otherwise (manually) specified}
420 \fi
422 \def\thesisdate#1{\gdef\@thesisdate{#1}}
424 % typically just a month and year
425 \def\degreemonth#1{\gdef\@degreemonth{#1}}
426 \def\degreeyear#1{\gdef\@degreeyear{#1}}
428 % Usage: \supervisor{name}{title}
429 % \chairman{name}{title}
431 % since there can be more than one supervisor,
432 % we build the appropriate boxes for the titlepage and
433 % the abstractpage as the user makes multiple calls
434 % to \supervisor
435 \newbox\@titlesupervisor \newbox\@abstractsupervisor
437 \def\supervisor#1#2{\setbox\@titlesupervisor\vbox
438 {\unvbox\@titlesupervisor \vskip 10pt% plus 1fil minus 1fil
439 \def\baselinestretch{1}\large
440 \signature{Certified by}{#1 \\ #2 \\ Thesis Supervisor}}
441 \setbox\@abstractsupervisor\vbox{\unvbox\@abstractsupervisor
442 \vskip\baselineskip \def\baselinestretch{1}\@normalsize
443 \par\noindent Thesis Supervisor: #1 \\ Title: #2}}
445 % department chairman, not thesis committee chairman
446 \def\chairman#1#2{\gdef\@chairmanname{#1}\gdef\@chairmantitle{#2}}
448 %% `upcase' documentclass option: \choosecase is defined either as a dummy or
449 %% a macro to change the (expanded) argument to uppercase.
450 \def\maketitle{\begin{titlepage}
451 \large
452 {\def\baselinestretch{1.2}\Large\bf \choosecase{\@title} \par}
453 by\par
454 {\Large \choosecase{\@author}}
455 \par
456 \@prevdegrees
457 \par
458 \choosecase{Submitted to the} \choosecase{\@department} \\
459 \choosecase{in partial fulfillment of the requirements for the}
460 \choosecase{\@degreeword}
461 \choosecase{of}
462 \par
463 \choosecase{\@degree}
464 \par
465 at the
466 \par\MIT\par
467 \@degreemonth\ \@degreeyear
468 \par
469 \@copyrightnotice
470 \par
471 \vskip 3\baselineskip
472 \signature{Author}{\@department \\ \@thesisdate}
473 \par
474 \vfill
475 \unvbox\@titlesupervisor
476 \par
477 \vfill
478 \signature{Accepted by}{\@chairmanname \\ \@chairmantitle}
479 \vfill
480 \end{titlepage}}
482 % this environment should probably be called abstract,
483 % but we want people to also be able to get at the more
484 % basic abstract environment
485 \def\abstractpage{\cleardoublepage
486 \begin{center}{\large{\bf \@title} \\
487 by \\
488 \@author \\[\baselineskip]}
489 \par
490 \def\baselinestretch{1}\@normalsize
491 Submitted to the \@department \\
492 on \@thesisdate, in partial fulfillment of the \\
493 requirements for the \@degreeword\ of \\
494 \@degree
495 \end{center}
496 \par
497 \begin{abstract}}
499 %% Changed from \unvbox to \unvcopy for use with multiple copies of abstract
500 %% page.
501 %% Krishna Sethuraman (1990)
502 \def\endabstractpage{\end{abstract}\noindent
503 \unvcopy\@abstractsupervisor \newpage}
505 %% This counter is used to save the page number for the second copy of
506 %% the abstract.
507 \newcounter{savepage}
509 % You can use the titlepage environment to do it all yourself if you
510 % don't want to use \maketitle. If the titlepage environment, the
511 % paragraph skip is infinitely stretchable, so if you leave a blank line
512 % between lines that you want space between, the space will stretch so
513 % that the title page fills up the entire page.
514 \def\titlepage{\cleardoublepage\centering
515 \thispagestyle{empty}
516 \parindent 0pt \parskip 10pt plus 1fil minus 1fil
517 \def\baselinestretch{1}\@normalsize\vbox to \vsize\bgroup\vbox to 9in\bgroup}
518 % The \kern0pt pushes any depth into the height. Thanks to Richard Stone.
519 \def\endtitlepage{\par\kern 0pt\egroup\vss\egroup\newpage}
521 \def\MIT{MASSACHUSETTS INSTITUTE OF TECHNOLOGY}
522 \def\Mit{Massachusetts Institute of Technology}
524 \def\permission{\par\noindent{\centering
525 The author hereby grants to MIT permission to reproduce and to
526 distribute publicly paper and electronic copies of this thesis
527 document in whole or in part in any medium now known or hereafter
528 created.}\par}
530 \def\signature#1#2{\par\noindent#1\dotfill\null\\*
531 {\raggedleft #2\par}}
533 \def\abstract{\subsection*{Abstract}\small\def\baselinestretch{1}\@normalsize}
534 \def\endabstract{\par}