From b74c5689ba85fad8859cfcace28a92d36ec92e1f Mon Sep 17 00:00:00 2001
From: Ryan Kavanagh <rak@debian.org>
Date: Mon, 24 Feb 2020 09:58:40 -0500
Subject: Port from 'book' to 'amsbook' class

---
 cmuthesis.cls | 205 ++++++++++++++++++++--------------------------------------
 1 file changed, 69 insertions(+), 136 deletions(-)

(limited to 'cmuthesis.cls')

diff --git a/cmuthesis.cls b/cmuthesis.cls
index 285e043..af2dbe2 100644
--- a/cmuthesis.cls
+++ b/cmuthesis.cls
@@ -1,11 +1,18 @@
 %% dkoes 5/10/2006
 
-\LoadClassWithOptions{book}
+\LoadClassWithOptions{amsbook}
 
+% pass tells geometry not to mess with amsbook's defaults,
+% but instead to use them as the default.
+\PassOptionsToPackage{pass}{geometry}
+\RequirePackage{geometry}
 
 %% dkoes - Here's a bunch of stuff taken from mjz-titlepage.sty that makes
 % a pretty CMU techreport acceptable title page
 
+%% rak - Updated in 2020 to use the amsbook class and to simplify some of
+% the LaTeX code.
+
 %% titlepage parameters
 %%   required: title, author, date, Year, trnumber, committee
 %%   optional: permission, support, disclaimer, keywords
@@ -25,9 +32,14 @@
 %\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{
+\def\@maketitle{
 \thispagestyle{empty}
 
+%% 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.
+\newgeometry{hmargin={0cm, 0cm}}
+
 % calculate skip needed to ensure that title appears in the cut-out
 \newlength{\@cutoutvskip}
 \setlength{\@cutoutvskip}{2.1875 true in}       % position of cut-out
@@ -36,15 +48,6 @@
 \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}
@@ -72,7 +75,7 @@
     Carnegie Mellon University \\
     Pittsburgh, PA 15213
 \end{center}
-
+\vskip 1em
 \begin{center}
     {\bf Thesis Committee:} \\
     \@committee
@@ -96,110 +99,25 @@
 % 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}
 
+% amsbook default textwidth / textheight is 30pc / 50.5pc (p. 10
+% of amsclass manual). To save Catherine paper (and to allow us
+% slightly wider inference rule displays), we increase the width
+% by two pica and scale the height accordingly.
+% Then call \calclayout to have AMS recalculate whatever it needs
+% to recalculate (p. 80 of manual).
+% positioning of subjclass, keywords, and abstract based on p.61
+% of manual.
+\restoregeometry\thispagestyle{empty}
+%\newgeometry{textwidth=32pc,textheight=53.9pc}\thispagestyle{empty}
+\calclayout
+\begin{center}
+  \ifx\@empty\@subjclass\else\@setsubjclass\fi
+  \ifx\@empty\@keywords\else\@setkeywords\fi
+\end{center}
+\vfil
+\@setabstract
+}
 
 % A simple style file to provide a draft marking in the background of
 % a file
@@ -219,25 +137,40 @@
 %usage: \draftstamp{date}{label}
 \newcommand{\draftstamp}[2]{\definecolor{DraftGrey}{gray}{0.7}
   \ClearShipoutPicture\AddToShipoutPicture{
-    \begin{minipage}[b][0.11\paperheight][t]{\paperwidth}     
-    \centering
-    	\vspace{.4in}
-            \textcolor{DraftGrey}{\renewcommand{\baselinestretch}{1.0}\normalsize
-            \begin{tabular}{c}
-                    #1 \\
-                    #2
-             \end{tabular}            
-        }
-        
+    \begin{minipage}[b][0.11\paperheight][t]{\paperwidth}
+      \centering
+      \vspace{.5in}
+      \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}}
+  }}
+
+\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{acknowledgments}
+ {\begin{psuedochapter}{Acknowledgments}}
+   {\end{psuedochapter}}
+
+
+ \setlength{\textwidth}{32pc}
+ \setlength{\textheight}{53.9pc}
+ \calclayout
\ No newline at end of file
-- 
cgit v1.2.3

