Add elsys-design template
parent
eaa4594f73
commit
ac541b5179
|
@ -0,0 +1,220 @@
|
|||
\NeedsTeXFormat{LaTeX2e}
|
||||
\LoadClassWithOptions{article}
|
||||
\ProvidesClass{homework}[2014/12/16 Class file for homework assignments]
|
||||
|
||||
% ----- Options ---------------------------------------------------------------
|
||||
\newcommand\@opanon{0}
|
||||
\DeclareOption{anonymous}{\renewcommand\@opanon{1}}
|
||||
\newcommand\@opnewpage{0}
|
||||
\DeclareOption{newpage}{\renewcommand\@opnewpage{1}}
|
||||
\newcommand\@oplargemargins{0}
|
||||
\DeclareOption{largemargins}{\renewcommand\@oplargemargins{1}}
|
||||
\ProcessOptions
|
||||
|
||||
% ----- Packages --------------------------------------------------------------
|
||||
|
||||
% Better fonts with accents
|
||||
\RequirePackage[T1]{fontenc}
|
||||
\RequirePackage{babel}
|
||||
|
||||
|
||||
% Required for starred commands
|
||||
\RequirePackage{suffix}
|
||||
|
||||
% Math and electronic symbols
|
||||
\RequirePackage{amsmath}
|
||||
\RequirePackage{amsfonts}
|
||||
\RequirePackage{amsthm}
|
||||
\RequirePackage{amssymb}
|
||||
\RequirePackage{mathrsfs}
|
||||
\RequirePackage{centernot}
|
||||
\RequirePackage{siunitx}
|
||||
\RequirePackage{textcomp}
|
||||
\RequirePackage{gensymb}
|
||||
|
||||
% Nice lists
|
||||
\RequirePackage{enumerate}
|
||||
\RequirePackage{enumitem}
|
||||
|
||||
% Nice images, figures, and listings
|
||||
\RequirePackage{graphicx}
|
||||
\RequirePackage{grffile}
|
||||
\RequirePackage[all]{xy}
|
||||
\RequirePackage{wrapfig}
|
||||
\RequirePackage{fancyvrb}
|
||||
\RequirePackage{listings}
|
||||
|
||||
% Drawing
|
||||
\RequirePackage{pgf}
|
||||
\RequirePackage{tikz}
|
||||
\RequirePackage{pgfplots}
|
||||
\pgfplotsset{compat=1.15}
|
||||
\usetikzlibrary{arrows}
|
||||
|
||||
% Electronic drawing
|
||||
\RequirePackage[european, american currents, american voltages,siunitx]{circuitikz}
|
||||
\newcommand*{\eq}{=}
|
||||
|
||||
% Conditionals
|
||||
\RequirePackage{ifthen}
|
||||
|
||||
% Header & Page Setup
|
||||
\RequirePackage[left=1in,right=1in,top=1in,bottom=1in]{geometry}
|
||||
\RequirePackage{fancyhdr}
|
||||
\ifthenelse{\equal{\@oplargemargins}{1}}{}{\RequirePackage{fullpage}}
|
||||
|
||||
% Links
|
||||
\RequirePackage[hidelinks]{hyperref}
|
||||
|
||||
% ----- Questions -------------------------------------------------------------
|
||||
\newcounter{questionCounter}
|
||||
\newcounter{partCounter}[questionCounter]
|
||||
|
||||
% Prefix for questions
|
||||
\newcommand{\questiontype}[0]{Question}
|
||||
|
||||
% Use this if your "written" questions are all under one section
|
||||
% For example, if the homework handout has Section 5: Written Questions
|
||||
% and all questions are 5.1, 5.2, 5.3, etc. set this to 5
|
||||
% Use for 0 no prefix. Redefine as needed per-question.
|
||||
\newcommand{\writtensection}[0]{0}
|
||||
|
||||
% Numbered question
|
||||
\providecommand{\question}{}
|
||||
\renewcommand{\question}[0]{%
|
||||
% Emit \newpage if option `newpage` is present
|
||||
\ifthenelse{\equal{\@opnewpage}{1}}{%
|
||||
\newpage
|
||||
}{}
|
||||
|
||||
% Wrap in minipage so that we don't get a line break enywhere in between
|
||||
\begin{minipage}{\linewidth}%
|
||||
\stepcounter{questionCounter}%
|
||||
\vspace{.2in}%
|
||||
\ifx\writtensection\undefined{}
|
||||
\noindent{\bf \questiontype\ \arabic{questionCounter}.}%
|
||||
\else
|
||||
\ifnum\writtensection=0
|
||||
\noindent{\bf \questiontype\ \arabic{questionCounter}.}%
|
||||
\else
|
||||
\noindent{\bf \questiontype\ \writtensection.\arabic{questionCounter}}%
|
||||
\fi
|
||||
\vspace{0.3em} \hrule \vspace{.1in}%
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
% Named question, takes one argument
|
||||
\WithSuffix\providecommand\question*{}
|
||||
\WithSuffix\renewcommand\question*[1]{%
|
||||
% Emit \newpage if option `newpage` is present
|
||||
\ifthenelse{\equal{\@opnewpage}{1}}{%
|
||||
\newpage%
|
||||
}{}%
|
||||
% Wrap in minipage so that we don't get a line break enywhere in between
|
||||
\begin{minipage}{\linewidth}%
|
||||
\addtocounter{questionCounter}{1}%
|
||||
\setcounter{partCounter}{0}%
|
||||
\vspace{.2in}%
|
||||
\noindent{\bf \arabic{questionCounter}. #1}%
|
||||
\vspace{0.3em} \hrule \vspace{.1in}%
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
% Override normal section defintions
|
||||
\renewcommand{\section}[0]{\question}
|
||||
\WithSuffix\newcommand\section*[1]{\question*{#1}}
|
||||
|
||||
% ----- Question Parts --------------------------------------------------------
|
||||
|
||||
\newenvironment{alphaparts}[0]{%
|
||||
\begin{enumerate}[label=\textbf{(\alph*)}]%
|
||||
}{\end{enumerate}}
|
||||
|
||||
\newenvironment{arabicparts}[0]{%
|
||||
\begin{enumerate}[label=\textbf{\arabic{questionCounter}.\arabic*})]%
|
||||
}{\end{enumerate}}
|
||||
|
||||
\newcommand{\questionpart}[0]{\item}
|
||||
|
||||
% ----- Induction Environment -------------------------------------------------
|
||||
|
||||
\newenvironment{induction}[0]{%
|
||||
\begin{description}
|
||||
}{\end{description}}
|
||||
|
||||
\newcommand{\basecase}{\item[Base Case]\mbox{}\\}
|
||||
\newcommand{\indhyp}{\item[Induction Hypothesis]\mbox{}\\}
|
||||
\newcommand{\indstep}{\item[Induction Step]\mbox{}\\}
|
||||
|
||||
% ----- Answer Box ------------------------------------------------------------
|
||||
|
||||
\newcommand{\answerbox}[1]{%
|
||||
\begin{framed}
|
||||
\vspace{#1}
|
||||
\end{framed}}
|
||||
|
||||
% ----- Page Setup ------------------------------------------------------------
|
||||
|
||||
% Use block style paragraphs
|
||||
\setlength{\parindent}{0pt}
|
||||
\setlength{\parskip}{5pt plus 1pt}
|
||||
|
||||
\def\indented#1{\list{}{}\item[]}
|
||||
\let\indented=\endlist
|
||||
|
||||
% ----- Title & Header --------------------------------------------------------
|
||||
\pagestyle{empty}
|
||||
\pagestyle{fancy}
|
||||
|
||||
%\if\@opanon%
|
||||
\ifthenelse{\equal{\@opanon}{0}}{%
|
||||
\renewcommand{\maketitle}[0]{%
|
||||
% Setup header
|
||||
\setlength{\headheight}{15.2pt}
|
||||
\setlength{\headsep}{0.2in}
|
||||
\lhead{\hwclass{} \hwlecture\hwsection}%
|
||||
\chead{\hwname{} (\hwemail)}%
|
||||
\rhead{\hwtype{} \hwnum}%
|
||||
|
||||
% Setup hrule in header
|
||||
\renewcommand{\headrulewidth}{0pt}
|
||||
\headrule{}
|
||||
|
||||
% Don't put header on first page
|
||||
\thispagestyle{plain}
|
||||
|
||||
\begin{center}
|
||||
{\Large \hwclass{} \hwtype{} \hwnum}
|
||||
|
||||
\hwname{} (\hwemail)
|
||||
|
||||
\today
|
||||
\end{center}
|
||||
\renewcommand{\headrulewidth}{0.4pt}
|
||||
}
|
||||
|
||||
}%
|
||||
{%
|
||||
\renewcommand{\maketitle}[0]{%
|
||||
% Make all pages plain
|
||||
\pagestyle{plain}
|
||||
|
||||
% Put header on it's own page
|
||||
\begin{center}
|
||||
{\Large \hwclass{} \hwtype{} \hwnum}
|
||||
|
||||
\hwname{} (\hwemail)
|
||||
|
||||
\today
|
||||
\end{center}
|
||||
\renewcommand{\headrulewidth}{0.4pt}
|
||||
\newpage
|
||||
}
|
||||
}
|
||||
|
||||
% ----- For usage with pandoc converted documents -----------------------------
|
||||
|
||||
\providecommand{\tightlist}{%
|
||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
|
||||
% -----------------------------------------------------------------------------
|
Loading…
Reference in New Issue