summaryrefslogtreecommitdiff
path: root/cmuthesis.cls
diff options
context:
space:
mode:
Diffstat (limited to 'cmuthesis.cls')
-rw-r--r--cmuthesis.cls242
1 files changed, 242 insertions, 0 deletions
diff --git a/cmuthesis.cls b/cmuthesis.cls
new file mode 100644
index 0000000..f69d36d
--- /dev/null
+++ b/cmuthesis.cls
@@ -0,0 +1,242 @@
+%% dkoes 5/10/2006
+
+\LoadClassWithOptions{book}
+
+
+%% dkoes - Here's a bunch of stuff taken from mjz-titlepage.sty that makes
+% a pretty CMU techreport acceptable title page
+
+%% titlepage parameters
+%% required: title, author, date, Year, trnumber, committee
+%% optional: permission, support, disclaimer, keywords
+
+\def\title#1{\gdef\@title{#1}}
+\def\author#1{\gdef\@author{#1}}
+\def\date#1{\gdef\@date{#1}}
+\def\Year#1{\gdef\@Year{#1}}
+\def\trnumber#1{\gdef\@trnumber{#1}}
+\def\committee#1{\gdef\@committee{#1}}
+\def\permission#1{\gdef\@permission{#1}}
+\def\support#1{\gdef\@support{#1}}
+\def\disclaimer#1{\gdef\@disclaimer{#1}}
+\def\keywords#1{\gdef\@keywords{#1}}
+
+\newsavebox{\@copyrightbox}
+%\def\@copyrightnotice#1{{\small\sbox{\@copyrightbox}{#1}\ifthenelse{\lengthtest{\wd\@copyrightbox > \linewidth}}{\noindent #1 \par}{\begin{center} #1 \end{center}}}}
+\def\@copyrightnotice#1{{\small\sbox{\@copyrightbox}{#1}\ifdim\wd\@copyrightbox>\linewidth \noindent #1 \par\else\begin{center} #1 \end{center}\fi}}
+
+\def\maketitle{
+\thispagestyle{empty}
+
+% calculate skip needed to ensure that title appears in the cut-out
+\newlength{\@cutoutvskip}
+\setlength{\@cutoutvskip}{2.1875 true in} % position of cut-out
+\addtolength{\@cutoutvskip}{-1 true in} % printer margin
+\addtolength{\@cutoutvskip}{-\topmargin}
+\addtolength{\@cutoutvskip}{-\headheight}
+\addtolength{\@cutoutvskip}{-\headsep}
+
+%% Centered things on the title page must be *physically* centered
+%% on the page, so they line up with the cut-out window. So we hardwire
+%% the margins for the title page so that left margin = right margin:
+%% left margin = (8.5in - textwidth)/2
+\oddsidemargin=8.5in
+\advance\oddsidemargin by -\textwidth
+\oddsidemargin=.5\oddsidemargin
+\advance\oddsidemargin by -1in % TeX sux
+%
+\let\footnoterule\relax
+\vglue\@cutoutvskip
+\begin{center}
+%\begin{minipage}[t]{4.875in} % must be a minipage due to \thanks
+\begin{minipage}[t]{4.8in} % hackery
+\vbox to 2in{
+\vfill
+\begin{center}
+{\Large \strut \@title\par}
+\vfill
+{\large \begin{tabular}[t]{c}\@author\end{tabular}\par}
+\vfill
+{\sc \@trnumber\par}
+\smallskip
+{\large \@date\par}
+\end{center}
+\vfill}
+\end{minipage}
+\end{center}
+
+\vskip 3em
+
+\begin{center}
+ School of Computer Science \\
+ Carnegie Mellon University \\
+ Pittsburgh, PA 15213
+\end{center}
+
+\begin{center}
+ {\bf Thesis Committee:} \\
+ \@committee
+\end{center}
+\vspace{1em}
+\begin{center}
+ \em
+ Submitted in partial fulfillment of the requirements \\
+ for the degree of Doctor of Philosophy.
+\end{center}
+
+
+\vfill
+
+\@ifundefined{@permission}{\@copyrightnotice{Copyright \copyright\ \@Year\ \@author}}{\@copyrightnotice{Copyright \copyright\ \@Year\ \@author. \@permission}}
+
+\@ifundefined{@support}{}{{\medskip\footnotesize\noindent\@support\par}}
+
+\@ifundefined{@disclaimer}{}{{\medskip\footnotesize\noindent\@disclaimer\par}}
+
+% keywords go at bottom of page ii (the rear of the titlepage)
+% if keywords are omitted, this page is blank
+
+\clearpage
+\thispagestyle{empty}
+\@ifundefined{@keywords}{}{\vspace*{\fill} {\bf Keywords:} \@keywords}
+\cleardoublepage
+}
+
+\newenvironment{dedication}
+ {\cleardoublepage \thispagestyle{empty} \vspace*{\stretch{1}} \begin{center} \em}
+ {\end{center} \vspace*{\stretch{3}} \clearpage}
+
+
+\newenvironment{psuedochapter}[1]
+ {\cleardoublepage
+ \thispagestyle{empty}
+ \vspace*{\stretch{1}}
+ \begin{center} \large {\bf #1} \end{center}
+% \addcontentsline{toc}{chapter}{\numberline{}#1} --not yet mjz
+ \begin{quotation}}
+ {\end{quotation}
+ \vspace*{\stretch{3}}
+ \clearpage}
+
+\newenvironment{abstract}
+ {\begin{psuedochapter}{Abstract}}{\end{psuedochapter}}
+
+\newenvironment{acknowledgments}
+ {\begin{psuedochapter}{Acknowledgments}}{\end{psuedochapter}}
+
+
+
+
+
+%% dkoes - what follows is just a result of my personal style preferences
+% most things are shamelessly ripped from various conference class files
+
+% Utilities
+% ---------
+
+
+\newcommand{\centeroncapheight}[1]{%
+ {\setbox\@tempboxa = \hbox{#1}%
+ \@measurecapheight{\@tempdima}% % Calculate ht(CAP) - ht(text)
+ \advance \@tempdima by -\ht\@tempboxa % ------------------
+ \divide \@tempdima by 2 % 2
+ \raise \@tempdima \box\@tempboxa}}
+
+\newbox{\@measbox}
+
+\def \@measurecapheight #1{% {\dimen}
+ \setbox\@measbox = \hbox{ABCDEFGHIJKLMNOPQRSTUVWXYZ}%
+ #1 = \ht\@measbox}
+
+\long\def \@titlefootnote #1#2{%
+ \insert\footins{%
+ \reset@font\footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+ \hsize\columnwidth \@parboxrestore
+%%% \protected@edef\@currentlabel{%
+%%% \csname p@footnote\endcsname\@thefnmark}%
+ \color@begingroup
+ \def \@makefnmark {$^{#1}$}%
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#2\@finalstrut\strutbox}%
+ \color@endgroup}}
+
+% Lists
+% -----
+
+\setlength{\topsep}{1pt}
+ \setlength{\itemsep}{1pt}
+\setlength{\parsep}{3pt}
+
+\renewcommand{\labelitemi}{{\small \centeroncapheight{\textbullet}}}
+\renewcommand{\labelitemii}{\centeroncapheight{\rule{2.5pt}{2.5pt}}}
+\renewcommand{\labelitemiii}{$-$}
+\renewcommand{\labelitemiv}{{\Large \textperiodcentered}}
+
+\renewcommand{\@listi}{%
+ \leftmargin = \leftmargini
+ \listparindent = 0pt}
+
+\let \@listI = \@listi
+
+\renewcommand{\@listii}{%
+ \leftmargin = \leftmarginii
+ \topsep = 1pt
+ \labelwidth = \leftmarginii
+ \advance \labelwidth by -\labelsep
+ \listparindent = \parindent}
+
+\renewcommand{\@listiii}{%
+ \leftmargin = \leftmarginiii
+ \labelwidth = \leftmarginiii
+ \advance \labelwidth by -\labelsep
+ \listparindent = \parindent}
+
+\renewcommand{\@listiv}{%
+ \leftmargin = \leftmarginiv
+ \labelwidth = \leftmarginiv
+ \advance \labelwidth by -\labelsep
+ \listparindent = \parindent}
+
+
+% A simple style file to provide a draft marking in the background of
+% a file
+% Thank you to Will Uther who provided the base code that I rolled
+% into this package
+% ChangeLog
+% 1.1: shrunk and shifted the stamp so that it avoid the unprintable
+% area at the top of the page
+% 1.2 dkoes - made it big and rotated and light
+% 1.3 dkoes - made it small, and unrotated since Jonathan Aldrich complained
+\RequirePackage{graphicx}
+\RequirePackage{eso-pic}
+\RequirePackage{color}
+
+%Got this from Will (will@cs.cmu.edu)
+%usage: \draftstamp{date}{label}
+\newcommand{\draftstamp}[2]{\definecolor{DraftGrey}{gray}{0.7}
+ \ClearShipoutPicture\AddToShipoutPicture{
+ \begin{minipage}[b][\paperheight][t]{\paperwidth}
+ \centering
+ \vspace{.4in}
+ \textcolor{DraftGrey}{\renewcommand{\baselinestretch}{1.0}\normalsize
+ \begin{tabular}{c}
+ #1 \\
+ #2
+ \end{tabular}
+ }
+
+ \end{minipage}
+}}
+
+% mainmatter is ignoring openany, fix
+\renewcommand\mainmatter{%
+ \if@openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+ \@mainmattertrue
+ \pagenumbering{arabic}}