Mercurial > cortex
view thesis/mitthesis.cls @ 529:96c189d4d15e
get footnotes, work on headers.
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Fri, 25 Apr 2014 00:05:46 -0400 |
parents | 6b0f77df0e53 |
children |
line wrap: on
line source
1 % $Log: mitthesis.cls,v $2 % Revision 1.9 2012/02/15 15:48:16 jdreed3 % Tweak the "permission" statement per the Libraries' specs4 % retrieved 15-Feb-20125 %6 % Revision 1.8 2009/07/27 14:23:50 boojum7 % added changing draft mark8 %9 % Revision 1.6 2005/05/13 19:57:40 boojum10 % added leftblank option11 %12 % Revision 1.5 2002/04/18 14:10:08 boojum13 % changed doublespace into setspace for 2e compliance14 %15 % Revision 1.4 2001/02/08 18:57:13 boojum16 % turned two newpages into cleardoublepages17 %18 % Revision 1.3 2000/08/14 14:53:29 boojum19 % commented out footheight, which is relevant for drafthead20 %21 % Revision 1.2 1999/10/21 14:51:33 boojum22 % changed references to documentstyle to documentclass in comments23 %24 % Revision 1.1 1999/10/21 14:39:31 boojum25 % Initial revision26 %27 %Revision 1.7 1998/04/01 20:45:34 othomas28 %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 othomas31 %safety checkin.32 %33 %Revision 1.5 93/06/07 15:38:50 starflt34 %Altered 'vi' option copyright wording to comply with new Institute35 %Archives requirements and MIT lawyers.36 %37 %Revision 1.4 92/08/19 16:51:06 lwvanels38 %Updated Course 6 title page for new permissions.39 %40 %Revision 1.3 92/04/23 10:16:15 epeisach41 %Fixed comment character in rcs file42 %43 %Revision 1.2 92/04/22 13:12:02 epeisach44 %Fixes for 1991 course 6 requirements45 %Phrase "and to grant others the right to do so" has been added to46 %permission clause47 %Second copy of abstract is not counted as separate pages so numbering works48 %out49 %50 %Revision 1.1 90/05/04 11:45:53 lwvanels51 %Initial revision53 %54 % LaTeX format for theses at MIT55 % Based on "Specifications for Thesis Preparation"57 % `vi' and `upcase' options by Krishna Sethuraman - krishna@athena.mit.edu58 % Margins and heading types by Peter Nuth - nuth@ai.mit.edu59 % Title and abstract page by Stephen Gildea - gildea@erl.mit.edu60 % Look in this directory for example file mitthesis.doc61 % 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 % OR74 % 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 the81 % 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 both110 %% 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 and116 %% 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 command119 %% once for each.120 % \supervisor{John D. Galli}{Director, Sound Instrument Laboratory}121 %% This is the department committee chairman, not the thesis committee chairman122 % \chairman{Arthur C. Smith}123 % {Chairman, Departmental Committee on Graduate Students}124 %% Make the titlepage based on the above information. If you need125 %% something special and can't use the standard form, you can specify126 %% the exact text of the titlepage yourself. Put it in a titlepage127 %% environment and leave blank lines where you want vertical space.128 %% The spaces will be adjusted to fill the entire page. The dotted129 %% lines for the signatures are made with the \signature command.130 %131 %% The abstractpage environment sets up everything on the page except132 %% the text itself. The title and other header material are put at the133 %% top of the page, and the supervisors are listed at the bottom. A134 %% new page is begun both before and after. Of course, an abstract may135 %% be more than one page itself. If you need more control over the136 %% format of the page, you can use the abstract environment, which puts137 %% 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 additions144 %145 % documentclass options -146 % vi For MIT course VI or VIII thesis - will copyright the thesis to147 % you while giving MIT permission to copy and distribute it.148 % upcase Will put much of the cover page in uppercase, as per the149 % example on page 17 of the *Specifications for Thesis150 % 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 notice156 % Copyright (c) 1990, by Krishna Sethuraman.157 %158 % Pagestyle and header generation159 % Copyright (c) 1987, 1988 by Peter Nuth160 %161 % Original version162 % Copyright (c) 1987 by Stephen Gildea163 % Permission to copy all or part of this work is granted, provided164 % that the copies are not made or distributed for resale, and that165 % the copyright notice and this notice are retained.166 %167 % THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO168 % WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,169 % INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS170 % FOR ANY PARTICULAR PURPOSE.171 %%%%%%%%173 \NeedsTeXFormat{LaTeX2e}174 \ProvidesClass{mitthesis}[1999/10/20]176 \def\mystretch{1.5} % Double spacing hack177 \DeclareOption{doublespace}{} % This is default178 % So we do not read this style twice179 \DeclareOption{singlespace}{ % If he explicitly wants single spacing180 \typeout{Single spaced}181 \def\mystretch{1}}183 %% `vi' and `upcase' document style options. Krishna Sethuraman (1990)184 \newcount\vithesis185 \DeclareOption{vi}{\typeout{Course VI/VIII thesis style.}\advance\vithesis by1}186 \vithesis=0188 \DeclareOption{upcase}{\typeout{Uppercase cover page.}189 \gdef\choosecase#1{\uppercase\expandafter{#1}}}190 \def\choosecase#1{#1}192 %% leftblank option by Kevin Fu193 \newif\if@leftblank \@leftblankfalse195 \DeclareOption{leftblank}{\typeout{Intentionally Leaving Pages Blank}196 \@leftblanktrue}198 % Thesis looks much like report199 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}200 \ProcessOptions201 \LoadClass{report}203 % If the user wants single spacing, set baselinestretch=1.205 \usepackage{setspace}207 % Note - doublespace.sty has some float-related troubles in208 % combination with graphics or color, and is not officially compliant209 % with 2e. setspace is a replacement which is 2e-compliant.211 % Read the doublespace style that we got from Rochester:212 %\input setdoublespace.sty214 \def\baselinestretch{\mystretch} % Double spacing hack216 %%%%%%% Set up margins and formatting params %%%218 % Margins.219 % Note we want 1in top margin assuming no header line, so push header220 % into 1in margin.221 % Draft mode brings the header back down.223 \setlength{\oddsidemargin}{0.25in} % 1.25in left margin224 \setlength{\evensidemargin}{0.25in} % 1.25in left margin (even pages)225 \setlength{\topmargin}{0.0in} % 1in top margin226 \setlength{\textwidth}{6.0in} % 6.0in text - 1.25in rt margin227 \setlength{\textheight}{9in} % Body ht for 1in margins228 \addtolength{\topmargin}{-\headheight} % No header, so compensate229 \addtolength{\topmargin}{-\headsep} % for header height and separation231 % The next two macros compensate page style for headers and footers232 % 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 top235 \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 bottom241 \def\pullupfooter{ % Shift footer up242 \addtolength{\textheight}{-\footskip}243 % \addtolength{\textheight}{-\footheight} %footheight doesn't244 % exist in 2e245 }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 easier258 \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 warning265 \if@twoside % If two-sided printing.266 \def\ps@drafthead{267 \let\@mkboth\markboth268 \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@ne273 \@chapapp\ \thechapter. \ \fi ##1}}{}}274 \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@275 \thesection. \ \fi ##1}}}276 \pulldownheader % Bring header down from edge277 \pullupfooter % Bring footer up278 }279 \else % If one-sided printing.280 \def\ps@drafthead{281 \let\@mkboth\markboth282 \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@ne285 \@chapapp\ \thechapter. \ \fi ##1}}}286 \pulldownheader % Bring header down from edge287 \pullupfooter % Bring footer up288 }289 \fi291 % I redefine these formats that were defined in report.sty292 % Definition of 'headings' page style293 % Note the use of ##1 for parameter of \def\chaptermark inside the294 % \def\ps@headings.295 %297 \if@twoside % If two-sided printing.298 \def\ps@headings{\let\@mkboth\markboth299 \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@ne304 \@chapapp\ \thechapter. \ \fi ##1}}{}}305 \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@306 \thesection. \ \fi ##1}}}307 \pulldownheader % Bring header down from edge308 }309 \else % If one-sided printing.310 \def\ps@headings{\let\@mkboth\markboth311 \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@ne315 \@chapapp\ \thechapter. \ \fi ##1}}}316 \pulldownheader % Bring header down from edge317 }318 \fi320 % Redefinition of 'myheadings' page style.321 %322 \def\ps@myheadings{\let\@mkboth\@gobbletwo323 \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 edge330 }332 % Redefine '/chapter' to always start on an odd page.333 % Should make no difference in singleside mode.334 %335 \if@leftblank336 % Prints "THIS PAGE INTENTIONALLY LEFT BLANK" on blank pages.337 \def\chapter{\clearpage\ifodd\c@page\else338 \hbox{}\par\vfill\centerline%339 {THIS PAGE INTENTIONALLY LEFT BLANK}%340 \vfill\newpage\fi341 \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. Change344 \secdef\@chapter\@schapter} % to \@afterindenttrue to have indent.345 \else346 \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. Change350 \secdef\@chapter\@schapter} % to \@afterindenttrue to have indent.351 \fi352 % 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 Gildea360 % Permission to copy all or part of this work is granted, provided361 % that the copies are not made or distributed for resale, and that362 % 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 exist368 \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 \@degreeword375 \gdef\@degree{#1}}377 % \and is used inside the \degree argument to separate two degrees378 \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 the384 % page; it defaults to ``Copyright MIT 19xx. All rights reserved.''385 % \copyrightnoticetext takes an argument and defined \@copyrightnotice386 % to that argument. \copyrightnotice takes an argument, and calls387 % \copyrightnoticetext with that argument, preceeded by a copyright388 % symbol and followed by ``All rights reserved.'' and the standard389 % permission notice.390 %391 % If you use the 'vi' option, \copyrightnoticetext is used to set the392 % 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 MIT396 % holds the copyright. This commands adds the copyright symbol to the397 % beginning, and puts the standard permission notice below.398 %% ``All rights reserved'' added. Krishna Sethuraman (1990)399 \def\copyrightnotice#1{\copyrightnoticetext{\copyright\ #1. All rights400 reserved.\par\permission}}402 % Occacionally you will need to exactly specify the text of the403 % 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 automatically408 %% copyrights the thesis to the author and gives MIT permission to copy and409 %% distribute the document. If you want, you can still specify410 %% \copyrightnotice{stuff} to copyright to someone else, or411 %% \copyrightnoticetext{stuff} to specify the exact text of the copyright412 %% notice.413 \ifodd\vithesis \copyrightnoticetext{\copyright\ \@author,414 \uppercase\expandafter{\romannumeral\@degreeyear}. All rights reserved.\par\permission}415 %% or just416 %%\@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 \fi422 \def\thesisdate#1{\gdef\@thesisdate{#1}}424 % typically just a month and year425 \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 and433 % the abstractpage as the user makes multiple calls434 % to \supervisor435 \newbox\@titlesupervisor \newbox\@abstractsupervisor437 \def\supervisor#1#2{\setbox\@titlesupervisor\vbox438 {\unvbox\@titlesupervisor \vskip 10pt% plus 1fil minus 1fil439 \def\baselinestretch{1}\large440 \signature{Certified by}{#1 \\ #2 \\ Thesis Supervisor}}441 \setbox\@abstractsupervisor\vbox{\unvbox\@abstractsupervisor442 \vskip\baselineskip \def\baselinestretch{1}\@normalsize443 \par\noindent Thesis Supervisor: #1 \\ Title: #2}}445 % department chairman, not thesis committee chairman446 \def\chairman#1#2{\gdef\@chairmanname{#1}\gdef\@chairmantitle{#2}}448 %% `upcase' documentclass option: \choosecase is defined either as a dummy or449 %% a macro to change the (expanded) argument to uppercase.450 \def\maketitle{\begin{titlepage}451 \large452 {\def\baselinestretch{1.2}\Large\bf \choosecase{\@title} \par}453 by\par454 {\Large \choosecase{\@author}}455 \par456 \@prevdegrees457 \par458 \choosecase{Submitted to the} \choosecase{\@department} \\459 \choosecase{in partial fulfillment of the requirements for the}460 \choosecase{\@degreeword}461 \choosecase{of}462 \par463 \choosecase{\@degree}464 \par465 at the466 \par\MIT\par467 \@degreemonth\ \@degreeyear468 \par469 \@copyrightnotice470 \par471 \vskip 3\baselineskip472 \signature{Author}{\@department \\ \@thesisdate}473 \par474 \vfill475 \unvbox\@titlesupervisor476 \par477 \vfill478 \signature{Accepted by}{\@chairmanname \\ \@chairmantitle}479 \vfill480 \end{titlepage}}482 % this environment should probably be called abstract,483 % but we want people to also be able to get at the more484 % basic abstract environment485 \def\abstractpage{\cleardoublepage486 \begin{center}{\large{\bf \@title} \\487 by \\488 \@author \\[\baselineskip]}489 \par490 \def\baselinestretch{1}\@normalsize491 Submitted to the \@department \\492 on \@thesisdate, in partial fulfillment of the \\493 requirements for the \@degreeword\ of \\494 \@degree495 \end{center}496 \par497 \begin{abstract}}499 %% Changed from \unvbox to \unvcopy for use with multiple copies of abstract500 %% page.501 %% Krishna Sethuraman (1990)502 \def\endabstractpage{\end{abstract}\noindent503 \unvcopy\@abstractsupervisor \newpage}505 %% This counter is used to save the page number for the second copy of506 %% the abstract.507 \newcounter{savepage}509 % You can use the titlepage environment to do it all yourself if you510 % don't want to use \maketitle. If the titlepage environment, the511 % paragraph skip is infinitely stretchable, so if you leave a blank line512 % between lines that you want space between, the space will stretch so513 % that the title page fills up the entire page.514 \def\titlepage{\cleardoublepage\centering515 \thispagestyle{empty}516 \parindent 0pt \parskip 10pt plus 1fil minus 1fil517 \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{\centering525 The author hereby grants to MIT permission to reproduce and to526 distribute publicly paper and electronic copies of this thesis527 document in whole or in part in any medium now known or hereafter528 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}