|
|
%% |
|
|
%% This is file `mcmthesis.cls', |
|
|
%% generated with the docstrip utility. |
|
|
%% |
|
|
%% The original source files were: |
|
|
%% |
|
|
%% mcmthesis.dtx (with options: `class') |
|
|
%% |
|
|
%% ----------------------------------- |
|
|
%% This is a generated file. |
|
|
%% |
|
|
%% Copyright (C) 2010 -- 2015 by latexstudio |
|
|
%% 2014 -- 2019 by Liam Huang |
|
|
%% 2019 -- present by latexstudio.net |
|
|
%% |
|
|
%% This work may be distributed and/or modified under the |
|
|
%% conditions of the LaTeX Project Public License, either version 1.3 |
|
|
%% of this license or (at your option) any later version. |
|
|
%% The latest version of this license is in |
|
|
%% http: |
|
|
%% and version 1.3 or later is part of all distributions of LaTeX |
|
|
%% version 2005/12/01 or later. |
|
|
%% |
|
|
%% The Current Maintainer of this work is latexstudio.net. |
|
|
%% |
|
|
\NeedsTeXFormat{LaTeX2e}[1999/12/01] |
|
|
\ProvidesClass{mcmthesis} |
|
|
[2024/01/22 v6.3.3 The Thesis Template Designed For MCM/ICM] |
|
|
\typeout{The Thesis Template Designed For MCM/ICM} |
|
|
\def\MCMversion{v6.3.3} |
|
|
\RequirePackage{xkeyval} |
|
|
\RequirePackage{etoolbox} |
|
|
\define@boolkey{MCM}[MCM@opt@]{CTeX}[false]{} |
|
|
\define@boolkey{MCM}[MCM@opt@]{titlepage}[true]{} |
|
|
\define@boolkey{MCM}[MCM@opt@]{abstract}[true]{} |
|
|
\define@boolkey{MCM}[MCM@opt@]{sheet}[true]{} |
|
|
\define@boolkey{MCM}[MCM@opt@]{titleinsheet}[false]{} |
|
|
\define@boolkey{MCM}[MCM@opt@]{keywordsinsheet}[false]{} |
|
|
\define@cmdkeys{MCM}[MCM@opt@]{tcn,problem,tstyle} |
|
|
\define@key{MCM}{tcn}[0000]{\gdef\MCM@opt@tcn{#1}} |
|
|
\define@key{MCM}{problem}[A]{\gdef\MCM@opt@problem{#1}} |
|
|
\define@key{MCM}{tstyle}[A]{\gdef\MCM@opt@tstyle{#1}} |
|
|
\setkeys{MCM}{tcn=0000,problem=B,tstyle=\color{red}\bfseries} |
|
|
|
|
|
\define@key{mcmthesis.cls}{tcn}[0000]{\gdef\MCM@opt@tcn{#1}} |
|
|
\define@key{mcmthesis.cls}{problem}[A]{\gdef\MCM@opt@problem{#1}} |
|
|
\define@key{mcmthesis.cls}{tstyle}[A]{\gdef\MCM@opt@tstyle{#1}} |
|
|
\define@boolkey{mcmthesis.cls}[MCM@opt@]{CTeX}{} |
|
|
\define@boolkey{mcmthesis.cls}[MCM@opt@]{titlepage}{} |
|
|
\define@boolkey{mcmthesis.cls}[MCM@opt@]{abstract}{} |
|
|
\define@boolkey{mcmthesis.cls}[MCM@opt@]{sheet}{} |
|
|
\define@boolkey{mcmthesis.cls}[MCM@opt@]{titleinsheet}{} |
|
|
\define@boolkey{mcmthesis.cls}[MCM@opt@]{keywordsinsheet}{} |
|
|
\MCM@opt@sheettrue |
|
|
\MCM@opt@titlepagetrue |
|
|
\MCM@opt@titleinsheetfalse |
|
|
\MCM@opt@keywordsinsheetfalse |
|
|
\MCM@opt@abstracttrue |
|
|
\newcommand{\mcmsetup}[1]{\setkeys{MCM}{#1}} |
|
|
\ProcessOptionsX\relax |
|
|
\LoadClass[letterpaper, 12pt]{article} |
|
|
\newcommand{\team}{Team \#\ \MCM@opt@tcn} |
|
|
\RequirePackage{fancyhdr, fancybox} |
|
|
\RequirePackage{ifthen} |
|
|
\RequirePackage{listings} |
|
|
\RequirePackage[toc, page, title, titletoc, header]{appendix} |
|
|
\RequirePackage{paralist} |
|
|
\RequirePackage{amsthm, amsfonts} |
|
|
\RequirePackage{amsmath, bm} |
|
|
\RequirePackage{amssymb, mathrsfs} |
|
|
\RequirePackage{latexsym} |
|
|
\RequirePackage{longtable, multirow, hhline, tabularx, array} |
|
|
\RequirePackage{flafter} |
|
|
\RequirePackage{pifont, calc} |
|
|
\RequirePackage{colortbl, booktabs} |
|
|
\RequirePackage{geometry} |
|
|
\RequirePackage[T1]{fontenc} |
|
|
\RequirePackage[scaled]{berasans} |
|
|
\RequirePackage{hyperref} |
|
|
\RequirePackage{ifpdf, ifxetex} |
|
|
\ifMCM@opt@CTeX |
|
|
\else |
|
|
\RequirePackage{environ} |
|
|
\fi |
|
|
\ifpdf |
|
|
\RequirePackage{graphicx} |
|
|
\RequirePackage{epstopdf} |
|
|
\else |
|
|
\ifxetex |
|
|
\RequirePackage{graphicx} |
|
|
\else |
|
|
\RequirePackage[dvipdfmx]{graphicx} |
|
|
\RequirePackage{bmpsize} |
|
|
\fi |
|
|
\fi |
|
|
\RequirePackage[svgnames]{xcolor} |
|
|
\ifpdf |
|
|
\hypersetup{hidelinks} |
|
|
\else |
|
|
\ifxetex |
|
|
\hypersetup{hidelinks} |
|
|
\else |
|
|
\hypersetup{dvipdfm, hidelinks} |
|
|
\fi |
|
|
\fi |
|
|
\geometry{letterpaper, margin = 1in} |
|
|
\fancypagestyle{main}{ |
|
|
\fancyhf{} |
|
|
\lhead{\small\sffamily \team} |
|
|
\rhead{\small\sffamily Page \thepage\ of \pageref{LastPage}} |
|
|
} |
|
|
\pagestyle{main} |
|
|
|
|
|
\fancypagestyle{aimain}{ |
|
|
\fancyhf{} |
|
|
\lhead{\small\sffamily \team} |
|
|
\rhead{\small\sffamily Page \thepage } |
|
|
} |
|
|
\setlength\parskip{.5\baselineskip} |
|
|
\renewcommand\tableofcontents{% |
|
|
\centerline{\normalfont\Large\bfseries\sffamily\contentsname |
|
|
\@mkboth{% |
|
|
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}% |
|
|
\vskip 5ex% |
|
|
\@starttoc{toc}% |
|
|
} |
|
|
\setcounter{totalnumber}{4} |
|
|
\setcounter{topnumber}{2} |
|
|
\setcounter{bottomnumber}{2} |
|
|
\renewcommand{\textfraction}{0.15} |
|
|
\renewcommand{\topfraction}{0.85} |
|
|
\renewcommand{\bottomfraction}{0.65} |
|
|
\renewcommand{\floatpagefraction}{0.60} |
|
|
\renewcommand{\figurename}{Figure} |
|
|
\renewcommand{\tablename}{Table} |
|
|
\graphicspath{{./}{./img/}{./fig/}{./image/}{./figure/}{./picture/} |
|
|
{./imgs/}{./figs/}{./images/}{./figures/}{./pictures/}} |
|
|
\def\maketitle{% |
|
|
%\let\saved@thepage\thepage |
|
|
%\let\thepage\relax |
|
|
\ifMCM@opt@sheet |
|
|
\makesheet |
|
|
\fi |
|
|
\newpage |
|
|
\setcounter{page}{1} |
|
|
\pagestyle{fancy} |
|
|
\ifMCM@opt@titlepage |
|
|
\MCM@maketitle |
|
|
\fi |
|
|
\newpage |
|
|
} |
|
|
\def\abstractname{Summary} |
|
|
\ifMCM@opt@CTeX |
|
|
\newbox\@abstract% |
|
|
\setbox\@abstract\hbox{}% |
|
|
\long\def\abstract{\bgroup\global\setbox\@abstract\vbox\bgroup\hsize\textwidth\leftskip1cm\rightskip1cm}% |
|
|
\def\endabstract{\egroup\egroup}% |
|
|
\def\make@abstract{% |
|
|
\begin{center}% |
|
|
\textbf{\abstractname}% |
|
|
\end{center}% |
|
|
\usebox\@abstract\par |
|
|
} |
|
|
\else |
|
|
\RenewEnviron{abstract}{\xdef\@abstract{\expandonce\BODY}} |
|
|
\def\make@abstract{% |
|
|
\begin{center}% |
|
|
\textbf{\abstractname}% |
|
|
\end{center}% |
|
|
\@abstract\par |
|
|
} |
|
|
\fi |
|
|
\newenvironment{letter}[1]{% |
|
|
\par% |
|
|
\bgroup\parindent0pt% |
|
|
\begin{minipage}{5cm} |
|
|
\flushleft #1% |
|
|
\end{minipage}} |
|
|
{\egroup\smallskip} |
|
|
|
|
|
\def\keywordsname{Keywords} |
|
|
\ifMCM@opt@CTeX |
|
|
\newbox\@keywords |
|
|
\setbox\@keywords\hbox{} |
|
|
\def\keywords{\global\setbox\@keywords\vbox\bgroup\noindent\leftskip0cm} |
|
|
\def\endkeywords{\egroup}% |
|
|
\def\make@keywords{% |
|
|
\par\hskip.4cm\textbf{\keywordsname}: \usebox\@keywords\hfill\par |
|
|
} |
|
|
\else |
|
|
\NewEnviron{keywords}{\xdef\@keywords{\expandonce\BODY}} |
|
|
\def\make@keywords{% |
|
|
\par\noindent\textbf{\keywordsname}: |
|
|
\@keywords\par |
|
|
} |
|
|
\fi |
|
|
\newcommand{\headset}{{\the\year}\\MCM/ICM\\Summary Sheet} |
|
|
\newcommand{\problem}[1]{\mcmsetup{problem = #1}} |
|
|
\def\makesheet{% |
|
|
\thispagestyle{empty}% |
|
|
\null% |
|
|
\vspace*{-5pc}% |
|
|
\begin{center} |
|
|
\begingroup |
|
|
\setlength{\parindent}{0pt} |
|
|
\begin{minipage}[t]{0.33\linewidth} |
|
|
\centering% |
|
|
\textbf{Problem Chosen}\\[0.7pc] |
|
|
{\Large \MCM@opt@tstyle {\MCM@opt@problem}}\\[2.8pc] |
|
|
\end{minipage}% |
|
|
\begin{minipage}[t]{0.33\linewidth} |
|
|
\centering% |
|
|
\textbf{\headset}% |
|
|
\end{minipage}% |
|
|
\begin{minipage}[t]{0.33\linewidth} |
|
|
\centering% |
|
|
\textbf{Team Control Number}\\[0.7pc] |
|
|
{\Large\MCM@opt@tstyle{\MCM@opt@tcn}}\\[2.8pc] |
|
|
\end{minipage}\par |
|
|
\rule{\linewidth}{1.5pt} |
|
|
\endgroup |
|
|
\vskip 5pt% |
|
|
\ifMCM@opt@titleinsheet |
|
|
\normalfont \LARGE \@title \par |
|
|
\fi |
|
|
\end{center} |
|
|
\ifMCM@opt@keywordsinsheet |
|
|
\make@abstract |
|
|
\make@keywords |
|
|
\else |
|
|
\make@abstract |
|
|
\fi} |
|
|
\newcommand{\MCM@maketitle}{% |
|
|
%\let\thepage\saved@thepage |
|
|
%\setcounter{page}{1} |
|
|
\begin{center}% |
|
|
\let \footnote \thanks% |
|
|
\pagestyle{fancy}% |
|
|
{\LARGE \@title \par}% |
|
|
\vskip 1.5em% |
|
|
{\large |
|
|
\lineskip .5em% |
|
|
\begin{tabular}[t]{c}% |
|
|
\@author |
|
|
\end{tabular}\par}% |
|
|
\vskip 1em% |
|
|
{\large \@date}% |
|
|
\end{center}% |
|
|
\par |
|
|
\vskip 1.5em% |
|
|
\ifMCM@opt@abstract% |
|
|
\make@abstract |
|
|
\make@keywords |
|
|
\fi% |
|
|
} |
|
|
\def\MCM@memoto{\relax} |
|
|
\newcommand{\memoto}[1]{\gdef\MCM@memoto{#1}} |
|
|
\def\MCM@memofrom{\relax} |
|
|
\newcommand{\memofrom}[1]{\gdef\MCM@memofrom{#1}} |
|
|
\def\MCM@memosubject{\relax} |
|
|
\newcommand{\memosubject}[1]{\gdef\MCM@memosubject{#1}} |
|
|
\def\MCM@memodate{\relax} |
|
|
\newcommand{\memodate}[1]{\gdef\MCM@memodate{#1}} |
|
|
\def\MCM@memologo{\relax} |
|
|
\newcommand{\memologo}[1]{\gdef\MCM@memologo{\protect #1}} |
|
|
\def\@letterheadaddress{\relax} |
|
|
\newcommand{\lhaddress}[1]{\gdef\@letterheadaddress{#1}} |
|
|
\newenvironment{memo}[1][Memorandum]{% |
|
|
\pagestyle{fancy}% |
|
|
\ifthenelse{\equal{\MCM@memologo}{\relax}}{% |
|
|
% without logo specified. |
|
|
}{% |
|
|
% with logo specified |
|
|
\begin{minipage}[t]{\columnwidth}% |
|
|
\begin{flushright} |
|
|
\vspace{-0.2in} |
|
|
\MCM@memologo |
|
|
\vspace{0.5in} |
|
|
\par\end{flushright}% |
|
|
\end{minipage}% |
|
|
} |
|
|
\begin{center} |
|
|
\LARGE\bfseries\scshape |
|
|
#1 |
|
|
\end{center} |
|
|
\begin{description} |
|
|
\ifthenelse{\equal{\MCM@memoto}{\relax}}{}{\item [{To:}] \MCM@memoto} |
|
|
\ifthenelse{\equal{\MCM@memofrom}{\relax}}{}{\item [{From:}] \MCM@memofrom} |
|
|
\ifthenelse{\equal{\MCM@memosubject}{\relax}}{}{\item [{Subject:}] \MCM@memosubject} |
|
|
\ifthenelse{\equal{\MCM@memodate}{\relax}}{}{\item [{Date:}] \MCM@memodate} |
|
|
\end{description} |
|
|
\par\noindent |
|
|
\rule[0.5ex]{\linewidth}{0.1pt}\par |
|
|
\bigskip{} |
|
|
}{% |
|
|
\clearpage |
|
|
\pagestyle{fancy}% |
|
|
} |
|
|
\newtheorem{Theorem}{Theorem}[section] |
|
|
\newtheorem{Lemma}[Theorem]{Lemma} |
|
|
\newtheorem{Corollary}[Theorem]{Corollary} |
|
|
\newtheorem{Proposition}[Theorem]{Proposition} |
|
|
\newtheorem{Definition}[Theorem]{Definition} |
|
|
\newtheorem{Example}[Theorem]{Example} |
|
|
\renewcommand\section{\@startsection{section}{1}{\z@}% |
|
|
{-1sp\@plus -.2ex \@minus -.2ex}% |
|
|
{1pt \@plus .2ex}% |
|
|
{\rmfamily\Large\bfseries}} |
|
|
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% |
|
|
{-1sp\@plus -.2ex \@minus -.2ex}% |
|
|
{1pt \@plus .2ex}% |
|
|
{\rmfamily\large\bfseries}} |
|
|
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% |
|
|
{-.5ex\@plus -1ex \@minus -.2ex}% |
|
|
{.25ex \@plus .2ex}% |
|
|
{\rmfamily\normalsize\bfseries}} |
|
|
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% |
|
|
{1ex \@plus1ex \@minus.2ex}% |
|
|
{-1em}% |
|
|
{\rmfamily\normalsize}} |
|
|
|
|
|
\providecommand{\dif}{\mathop{}\!\mathrm{d}} |
|
|
\providecommand{\me}{\mathrm{e}} |
|
|
\providecommand{\mi}{\mathrm{i}} |
|
|
|
|
|
\definecolor{grey}{rgb}{0.8,0.8,0.8} |
|
|
\definecolor{darkgreen}{rgb}{0,0.3,0} |
|
|
\definecolor{darkblue}{rgb}{0,0,0.3} |
|
|
\def\lstbasicfont{\fontfamily{pcr}\selectfont\footnotesize} |
|
|
\lstset{% |
|
|
% numbers=left, |
|
|
% numberstyle=\small,% |
|
|
showstringspaces=false, |
|
|
showspaces=false,% |
|
|
tabsize=4,% |
|
|
frame=lines,% |
|
|
basicstyle={\footnotesize\lstbasicfont},% |
|
|
keywordstyle=\color{darkblue}\bfseries,% |
|
|
identifierstyle=,% |
|
|
commentstyle=\color{darkgreen},%\itshape,% |
|
|
stringstyle=\color{black},% |
|
|
breaklines=true,% |
|
|
postbreak=\mbox{\textcolor{red}{$\hookrightarrow$}\space} |
|
|
} |
|
|
\lstloadlanguages{C,C++,Java,Matlab,python,Mathematica} |
|
|
|
|
|
|
|
|
\def\AIcite{\@newl@bel b} |
|
|
\let\citation\@gobble |
|
|
\DeclareRobustCommand\AIcite{% |
|
|
\@ifnextchar [{\@tempswatrue\@AIcitex}{\@tempswafalse\@AIcitex[]}} |
|
|
\def\@AIcitex[#1]#2{\leavevmode |
|
|
\let\@AIcitea\@empty |
|
|
\@AIcite{\@for\@AIciteb:=#2\do |
|
|
{\@AIcitea\def\@AIcitea{,\penalty\@m\ }% |
|
|
\edef\@AIciteb{\expandafter\@firstofone\@AIciteb\@empty}% |
|
|
\if@filesw\immediate\write\@auxout{\string\citation{\@AIciteb}}\fi |
|
|
\@ifundefined{b@\@AIciteb}{\hbox{\reset@font\bfseries ?}% |
|
|
\G@refundefinedtrue |
|
|
\@latex@warning |
|
|
{Citation `\@AIciteb' on page \thepage \space undefined}}% |
|
|
{\@AIcite@ofmt{\csname b@\@AIciteb\endcsname}}}}{#1}} |
|
|
\def\@AIcite#1#2{[AI: {#1\if@tempswa , #2\fi}]} |
|
|
\let\@AIcite@ofmt\hbox |
|
|
|
|
|
\def\reportname{Report on Use of AI} |
|
|
|
|
|
\providecommand\@AIlabel[1]{#1.~} |
|
|
|
|
|
\newenvironment{ReportAiUse}[1] |
|
|
{\centerline{\underline{\large\sffamily\bfseries\reportname}}% |
|
|
\vspace*{-.2em} |
|
|
\@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}% |
|
|
\list{\@AIlabel{\@arabic\c@enumiv}}% |
|
|
{\settowidth\labelwidth{\@AIlabel{#1}}% |
|
|
\leftmargin\labelwidth |
|
|
\advance\leftmargin\labelsep |
|
|
\@openbib@code |
|
|
\usecounter{enumiv}% |
|
|
\let\p@enumiv\@empty |
|
|
\renewcommand\theenumiv{\@arabic\c@enumiv}}% |
|
|
\sloppy |
|
|
\clubpenalty4000 |
|
|
\@clubpenalty \clubpenalty |
|
|
\widowpenalty4000% |
|
|
\sfcode`\.\@m} |
|
|
{\def\@noitemerr |
|
|
{\@latex@warning{Empty `thebibliography' environment}}% |
|
|
\endlist} |
|
|
\def\AImatter{\label{LastPage}\clearpage\pagestyle{aimain}} |
|
|
\endinput |
|
|
%% |
|
|
%% This work consists of these files mcmthesis.dtx, |
|
|
%% figures/ and |
|
|
%% code/, |
|
|
%% and the derived files mcmthesis.cls, |
|
|
%% mcmthesis-demo.tex, |
|
|
%% README, |
|
|
%% LICENSE, |
|
|
%% mcmthesis.pdf and |
|
|
%% mcmthesis-demo.pdf. |
|
|
%% |
|
|
%% End of file `mcmthesis.cls'. |
|
|
|