% ---------------------------------------------------------------------
% Identification
% ---------------------------------------------------------------------

\ProvidesClass{awe-homework}
\NeedsTeXFormat{LaTeX2e}

% ---------------------------------------------------------------------
% Class Options
% ---------------------------------------------------------------------

% Inherit options of article.
\DeclareOption*{%
    \PassOptionsToClass{\CurrentOption}{article}
}
\ProcessOptions\relax
\LoadClass{article}

% ---------------------------------------------------------------------
% Package Dependencies
% ---------------------------------------------------------------------

% Math symbols.
\RequirePackage{amsmath}
% More math symbols.
\RequirePackage{amssymb}
% Colored text.
\RequirePackage{color}
% Better enumerations.
\RequirePackage{enumerate}
% More customization for enumerations.
\RequirePackage{enumitem}
% Fancy headers and footers!
\RequirePackage{fancyhdr}
% Configure page layout.
\RequirePackage{geometry}
% Automatic hyperlinks!
\RequirePackage{hyperref}
% Configure text hyphenation.
\RequirePackage{hyphenat}
% Even more math symbols.
\RequirePackage{mathabx}
% Typesetting formulas and inference rules.
\RequirePackage{mathpartir}
% Space saving efforts.
\RequirePackage{microtype}
% Syntax highlighting.
\RequirePackage{minted}
% Support for multicolumn, used for lists.
\RequirePackage{multicol}
% Used for Tikz pictures, e.g. for finite state machines.
\RequirePackage{tikz}

% ---------------------------------------------------------------------
% Color Definitions
% ---------------------------------------------------------------------

\definecolor{belize-hole}{RGB}{41, 128, 185}
\definecolor{code}{RGB}{241, 240, 236}

% ---------------------------------------------------------------------
% Configuration Commands
% ---------------------------------------------------------------------

% Setters
\newcommand*{\name}[1]{\def\@name{#1}}
\newcommand*{\doctitle}[1]{\def\@doctitle{#1}}
\newcommand*{\course}[1]{\def\@course{#1}}

% Getters
\newcommand*{\getname}{\@name}
\newcommand*{\getdoctitle}{\@doctitle}
\newcommand*{\getcourse}{\@course}

% ---------------------------------------------------------------------
% Layout Setup
% ---------------------------------------------------------------------

% Margins
\geometry{margin=1in}

% Header and footer
\pagestyle{fancy}
\lhead{\getdoctitle}
\rhead{\getname}
\cfoot{\thepage}

% Hyperlinks
\hypersetup{
    colorlinks=true,
    linkcolor=black,
    citecolor=black,
    filecolor=black,
    urlcolor=belize-hole
}

% Footnote style
\renewcommand{\thefootnote}{[\arabic{footnote}]}

% Non-bold description enumerations
\setlist[description]{font=\normalfont}

% Syntax highlighting
\setminted{autogobble, bgcolor=code}
\setmintedinline{bgcolor=white}

% ---------------------------------------------------------------------
% Layout Commands
% ---------------------------------------------------------------------


\SetEnumitemKey{twocol}{%
    before=\raggedcolumns\begin{multicols}{2},
    after=\end{multicols}
}

\SetEnumitemKey{threecol}{%
    before=\raggedcolumns\begin{multicols}{3},
    after=\end{multicols}
}

\newcommand*{\makeheader}{%
    \thispagestyle{plain}
    \begin{center}
        {\Large \getdoctitle} \\
        \getcourse \\
        \getname \\
    \end{center}
}

\newcommand*{\question}[2]{%
    \vspace{.25in}\hrule\vspace{0.5em}
    \noindent{\bf#1.} #2\vspace{0.5em}
    \hrule\vspace{.25in}
}
