diff --git a/resources/ormc_handout.cls b/resources/ormc_handout.cls index f70ae12..66d7fa9 100755 --- a/resources/ormc_handout.cls +++ b/resources/ormc_handout.cls @@ -10,12 +10,31 @@ % Option Definitions % % ------------------ % +% Standard LaTeX +\newcommand\@ptsize{} +\@twocolumnfalse +\@twosidefalse +\@mparswitchfalse +% ORMC-specific \newif{\if@solutions} % If false, solutions and instructor notes are hidden. \newif{\if@singlenumbering} % If true, the same counter is used for all objects. \newif{\if@nopagenumber} % If true, don't number pages. \newif{\if@shortwarning} % If true, show a smaller solutions warning \newif{\if@nowarning} % If true, do not show solution warning +% Standard LaTeX options +\DeclareOption{10pt}{\renewcommand\@ptsize{0}} +\DeclareOption{11pt}{\renewcommand\@ptsize{1}} +\DeclareOption{12pt}{\renewcommand\@ptsize{2}} +\DeclareOption{a4paper}{% + \setlength\paperheight{297mm}% + \setlength\paperwidth{210mm}% +} +\DeclareOption{letterpaper}{% + \setlength\paperheight{11in}% + \setlength\paperwidth{8.5in}% +} +% ORMC-specific options \DeclareOption{solutions}{\@solutionstrue} \DeclareOption{nosolutions}{\@solutionsfalse} \DeclareOption{multinumbering}{\@singlenumberingfalse} @@ -29,6 +48,7 @@ \DeclareOption*{\ClassWarning{ormc_handout}{\CurrentOption ignored}} \ExecuteOptions{ + letterpaper,10pt, solutions, multinumbering, pagenumber, @@ -37,6 +57,7 @@ } \ProcessOptions +\input{size1\@ptsize.clo} % Hack to allow script option override. % To force a build with solutions, compile a file containing the following: @@ -51,12 +72,198 @@ -\RequirePackage{etoolbox} +% ------------------------------- % +% Minimal LaTeX class % +% Based on a stripped article.cls % +% Version 2022/07/02 v1.4n % +% ------------------------------- % -% Based on article class -\LoadClass{article} -\undef\maketitle -\undef\section +% Lengths +\setlength\lineskip{1\p@} +\setlength\normallineskip{1\p@} +\renewcommand\baselinestretch{} +\setlength\parskip{0\p@ \@plus \p@} +\@lowpenalty 51 +\@medpenalty 151 +\@highpenalty 301 + +\setlength\leftmargini{2.5em} +\leftmargin\leftmargini +\setlength\leftmarginii{2.2em} +\setlength\leftmarginiii{1.87em} +\setlength\leftmarginiv{1.7em} +\setlength\leftmarginv{1em} +\setlength\leftmarginvi{1em} +\setlength\labelsep{.5em} +\setlength\labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty + +\setlength\arraycolsep{5\p@} +\setlength\tabcolsep{6\p@} +\setlength\arrayrulewidth{.4\p@} +\setlength\doublerulesep{2\p@} +\setlength\tabbingsep{\labelsep} +\skip\@mpfootins = \skip\footins +\setlength\fboxsep{3\p@} +\setlength\fboxrule{.4\p@} + +\newcommand\@pnumwidth{1.55em} +\newcommand\@tocrmarg{2.55em} +\newcommand\@dotsep{4.5} + +\setlength\columnsep{10\p@} +\setlength\columnseprule{0\p@} + + +% Counters +\setcounter{topnumber}{2} +\renewcommand\topfraction{.7} +\setcounter{bottomnumber}{1} +\renewcommand\bottomfraction{.3} +\setcounter{totalnumber}{3} +\renewcommand\textfraction{.2} +\renewcommand\floatpagefraction{.5} +\setcounter{dbltopnumber}{2} +\renewcommand\dbltopfraction{.7} +\renewcommand\dblfloatpagefraction{.5} +%\setcounter{secnumdepth}{3} + + +% Enum labels +\renewcommand\theenumi{\@arabic\c@enumi} +\renewcommand\theenumii{\@alph\c@enumii} +\renewcommand\theenumiii{\@roman\c@enumiii} +\renewcommand\theenumiv{\@Alph\c@enumiv} +\newcommand\labelenumi{\theenumi.} +\newcommand\labelenumii{(\theenumii)} +\newcommand\labelenumiii{\theenumiii.} +\newcommand\labelenumiv{\theenumiv.} +\renewcommand\p@enumii{\theenumi} +\renewcommand\p@enumiii{\theenumi(\theenumii)} +\renewcommand\p@enumiv{\p@enumiii\theenumiii} +\newcommand\labelitemi{\labelitemfont \textbullet} +\newcommand\labelitemii{\labelitemfont \bfseries \textendash} +\newcommand\labelitemiii{\labelitemfont \textasteriskcentered} +\newcommand\labelitemiv{\labelitemfont \textperiodcentered} +\newcommand\labelitemfont{\normalfont} + +% Required by enumitem, not sure why. +\newenvironment{description}{% + \list{}{\labelwidth\z@ \itemindent-\leftmargin\let\makelabel\descriptionlabel}% +}{\endlist} + +\newcommand*\descriptionlabel[1]{\hspace\labelsep\normalfont\bfseries #1} + + +% Font switching +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} + + +% Figures and tables +\newcommand\figurename{Figure} +\newcommand\tablename{Table} +\newcounter{figure} +\renewcommand \thefigure {\@arabic\c@figure} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{\figurename\nobreakspace\thefigure} +\newenvironment{figure}{\@float{figure}}{\end@float} +\newenvironment{figure*}{\@dblfloat{figure}}{\end@dblfloat} +\newcounter{table} +\renewcommand\thetable{\@arabic\c@table} +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{\tablename\nobreakspace\thetable} +\newenvironment{table}{\@float{table}}{\end@float} +\newenvironment{table*}{\@dblfloat{table}}{\end@dblfloat} + +\newlength\abovecaptionskip +\newlength\belowcaptionskip +\setlength\abovecaptionskip{10\p@} +\setlength\belowcaptionskip{0\p@} + +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{#1: #2}% + \ifdim \wd\@tempboxa >\hsize + #1: #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip% +} +\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +\let\l@table\l@figure + + +% Miscellaneous +\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em} +\let\@openbib@code\@empty + +\newcommand\@idxitem{\par\hangindent 40\p@} +\newcommand\subitem{\@idxitem \hspace*{20\p@}} +\newcommand\subsubitem{\@idxitem \hspace*{30\p@}} +\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax} +\renewcommand\footnoterule{% + \kern-3\p@ + \hrule\@width.4\columnwidth + \kern2.6\p@% +} +\newcommand\@makefntext[1]{% + \parindent 1em% + \noindent + \hb@xt@1.8em{\hss\@makefnmark}#1% +} + +\def\today{% + \ifcase\month\or + January\or + February\or + March\or + April\or + May\or + June\or + July\or + August\or + September\or + October\or + November\or + December + \fi% + \space\number\day, \number\year +} + +\pagenumbering{arabic} +\raggedbottom +\onecolumn + + + + + + + + +% ------------ % +% Minor Tweaks % +% ------------ % + +% We probably don't need enumitem for this. +% TODO: apply these edits above, in plain LaTeX. \newcommand\sbullet[1][.5]{\mathbin{\vcenter{\hbox{\scalebox{#1}{$\bullet$}}}}}