-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnmd-exam.cls
115 lines (100 loc) · 3.59 KB
/
nmd-exam.cls
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
% Nathan's exam class
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{nmd/nmd-exam}[2016/08/31 - Semester start edition]
\RequirePackage{nmd/nmd-common}
\RequirePackage{xkeyval}
\DeclareOptionX{stretch}{\def\nmdexam@baselinestretch{#1}}
\DeclareOptionX{inner}{\def\nmdexam@inner{#1}}
\DeclareOptionX{outer}{\def\nmdexam@outer{#1}}
\DeclareOptionX{top}{\def\nmdexam@top{#1}}
\DeclareOptionX{bottom}{\def\nmdexam@bottom{#1}}
\PassDownOptionToPackage{times}{nmd-fonts}
\PassDownOptionToPackage{stix}{nmd-fonts}
\PassDownOptionToPackage{utopia}{nmd-fonts}
\PassDownOptionToPackage{lucida}{nmd-fonts}
\PassDownOptionToPackage{tikz}{nmd-graphics}
\PassDownOptionToPackage{xy}{nmd-graphics}
\newboolean{nmd@draft}
\DeclareOption{draftmode}{\nmd@drafttrue}
\ExecuteOptionsX{stretch=1.1, inner=1.5cm, outer=1cm, top=1cm, bottom=1cm}
\ProcessOptionsX
\ProcessOptions
\LoadClass[12pt]{article}
\RequirePackage[letterpaper, inner=\nmdexam@inner, outer=\nmdexam@outer,
top=\nmdexam@top, bottom=\nmdexam@bottom]{geometry}
\renewcommand{\baselinestretch}{\nmdexam@baselinestretch}
\setlength{\parindent}{0pt}
\pagestyle{empty}
% Two column problem format
% Args are (width 1, width 2, text 1, text 2)
\newcommand{\twocolprob}[4]{
\begin{minipage}[t]{#1}
#3
\end{minipage}
\hspace{0.5in}
\begin{minipage}[t]{#2}
#4
\end{minipage}
}
% Problem and subproblem lists
\newcounter{probs}
\newenvironment{problems}{
\begin{list}{\textbf{\arabic{probs}.}}
{\usecounter{probs}
\setlength{\leftmargin}{1.5em}
\setlength{\itemsep}{3ex}
}
}
{\end{list}}
\newcounter{subprobs}
\newenvironment{subproblems}{
\begin{list}{(\alph{subprobs})}
{\usecounter{subprobs}
\setlength{\leftmargin}{1.5em}
\setlength{\itemsep}{2ex}
}
}
{\end{list}}
%
% Test formating macros
%
\ifnmd@draft
\newcommand{\pagebk}{\relax}
\else
\newcommand{\pagebk}{%
\vfill
\pagebreak}
\fi
\newcommand{\nmd@formatpoints}[1]{%
\ifthenelse{\equal{#1}{1}}{1 point}{#1 points}}
\newcommand{\vs}[1]{\vspace{#1}}
\newcommand{\pts}[1]{ { \bf(\nmd@formatpoints{#1})} }
\newcommand{\ptseach}[1]{{\bf(\nmd@formatpoints{#1} each)} }
% Answer boxes
\setlength{\fboxsep}{7pt}
\newcommand{\ansbox}[1]{\fbox{$\displaystyle \vphantom{\big(} #1$}}
\newcommand{\ansblank}{\hspace{0.5in}}
\newcommand{\twotuple}{\hspace{1in}, \hspace{1in}}
\newcommand{\threetuple}{\hspace{.4in}, \hspace{.4in}, \hspace{.4in}}
\newcommand{\bigthreetuple}{\hspace{1.3in}, \hspace{1.3in}, \hspace{1.3in}}
\newcommand{\Bigthreetuple}{\hspace{1.6in}, \hspace{1.6in}, \hspace{1.6in}}
\newcommand{\ansvec}{\Big\langle\threetuple\Big\rangle}
\newcommand{\anstwovec}[1]{\Big\langle \hspace{#1}, \hspace{#1} \Big\rangle}
\newcommand{\ansthreevec}[1]{\Big\langle \hspace{#1}, \hspace{#1}, \hspace{#1} \Big\rangle}
\newcommand{\ansbigvec}{\Big\langle\bigthreetuple\Big\rangle}
\newcommand{\ansBigvec}{\Big\langle\Bigthreetuple\Big\rangle}
\newcommand{\anspt}{\Big(\threetuple\Big)}
\newcommand{\anssep}{\hspace{1em}}
\newcommand{\coeffbox}{\fbox{\rule[-.3cm]{0cm}{.7cm}\hspace{2em}}\;}
\newcommand{\ansplane}{Equation: \quad\coeffbox $x +$ \coeffbox $y +$
\coeffbox $z = $ \coeffbox}
\newcommand{\checkbox}{\fbox{$\vphantom{)}$\hspace{1.0em}}}
\newcommand{\abox}{\mbox{\colorbox{white}{\checkbox}}}
\newcommand{\posnegzero}{\fbox{negative \quad zero \quad positive}}
\newcommand{\truefalse}{\fbox{true \quad false}}
%%% Load the rest of the nmd-specific styles
\RequirePackage{nmd/nmd-fonts}
\RequirePackage{nmd/nmd-graphics}
\RequirePackage{nmd/nmd-math}
\graphicspath{{images/}}
\RequirePackage[colorlinks=true, linkcolor=blue, citecolor=blue, urlcolor=blue]{hyperref}