diff --git a/samples/TeX/problemset.cls b/samples/TeX/problemset.cls new file mode 100644 index 00000000..6add7189 --- /dev/null +++ b/samples/TeX/problemset.cls @@ -0,0 +1,380 @@ +% ===================================== +% problemset Document Style +% For Problem Sets +% +% Options: +% final hides to-dos +% worksheet hides solutions and places each problem on separate page +% expand places each problem on a separate page +% ===================================== + +\ProvidesClass{problemset} +\DeclareOption*{\PassOptionsToClass{final}{article}} +\DeclareOption{worksheet}{\providecommand{\@solutionvis}{0}} +\DeclareOption{expand}{\providecommand{\@expand}{1}} +\ProcessOptions\relax + +% ================== Packages and Document Options ================== +\LoadClass[10pt,letterpaper]{article} +\RequirePackage[% + top=0.85in, + bottom=1in, + left=1in, + right=1in + ]{geometry} +\RequirePackage{pgfkeys} % For mathtable environment. +\RequirePackage{tabularx} % For pset heading +\RequirePackage{float} % Used for floats (tables, figures, etc.) +\RequirePackage{graphicx} % Used for inserting images. +\RequirePackage{enumerate} % Used for the enumerate environment. +\RequirePackage{mathtools} % Required. Loads amsmath. +\RequirePackage{amsthm} % Required. Used for theorem environments. +\RequirePackage{amssymb} % Required. +\RequirePackage{booktabs} % Required. Used for mathtable environment. +\RequirePackage{esdiff} % For derivatives and partial derivatives +\RequirePackage{mathtools} % Optional. Used for \shortintertext. +\RequirePackage{fancyhdr} % Required. For customizing headers/footers. +\RequirePackage{lastpage} % Required. For page count in header/footer. +\RequirePackage{xcolor} % Required. For setting the color of hyperlinks +\RequirePackage[% + obeyFinal, % Disable todos by setting [final] option for class + color=@todoclr, + linecolor=red + ]{todonotes} % For keeping track of to-dos. +\RequirePackage[% + colorlinks=true, + linkcolor=navy, + urlcolor=black + ]{hyperref} % For following urls and references in a document. +\RequirePackage{url} % Enables urls with the \url tag +\RequirePackage[all]{hypcap} +% hypcap: Links go to object instead of caption. [Keep as last package] + +% ================== Appearance Settings ================== +\definecolor{@todoclr}{gray}{0.80} % For To-Dos. 50% brightness +\definecolor{navy}{RGB}{0,0,150} % For coloring hyperlinks +\setlength{\parskip}{1.5ex} % Sets space between paragraphs. +\setlength{\parindent}{0pt} % Indent for first line of new paragraphs. + +% Smaller verbatim type size +\let\VERBATIM\verbatim +\def\verbatim{% + \def\verbatim@font{\small\ttfamily}% +\VERBATIM} + +% ============= Caption Modifications ============= +\usepackage[small]{caption} +\usepackage[footnotesize]{subcaption} + % For no visible number, use: \caption*{Unnumbered figure caption.} +\captionsetup[table]{labelformat=simple, labelsep=period, labelfont=bf} +\captionsetup[figure]{labelformat=simple, labelsep=period, labelfont=bf} +\captionsetup[subtable]{labelformat=parens, labelsep=space, labelfont=bf} +\captionsetup[subfigure]{labelformat=simple, labelsep=period, labelfont=bf} + +% ================== Booleans ================== +\def\TRUE{1} +\def\FALSE{0} +\def\SHOW{1} +\def\HIDE{0} + +% ============= Gets Document Info, Generates Heading ============= +\providecommand{\heading}[5][]{ + \thispagestyle{empty} + \listoftodos + \clearpage + \pagenumbering{arabic} + % + \providecommand{\shortname}{#1} + \providecommand{\authorname}{#2} + \providecommand{\coursename}{#3} + \providecommand{\assignment}{#4} + \providecommand{\duedate}{#5} + \begin{minipage}{0.5\textwidth} + \begin{flushleft} + \hypertarget{@assignment}{ + \textbf{\assignment} + }\\ + \authorname + \end{flushleft} + \end{minipage} + \begin{minipage}{0.5\textwidth} + \begin{flushright} + \coursename\\ + \duedate\\ + \end{flushright} + \end{minipage} + \thispagestyle{empty} +} + +% ============= Headers and Footers ============= +\renewcommand{\headrulewidth}{0pt} +\renewcommand{\footrulewidth}{0.5pt} +\pagestyle{fancyplain} +\fancyhf{} +\lfoot{% +\fancyplain{}{% + \hyperlink{@assignment}{% + \small{% + \color{black}{% + \assignment + } + } + } +} +} +\cfoot{% +\fancyplain{}{% + \small{% + \coursename + } +} +} +\rfoot{% +\fancyplain{}{% + \small{\shortname~\thepage~of~\pageref{LastPage}} +} +} + +% ============= Problem Command ============= +% INPUT: Points for question [#1] (Optional) +\newcounter{theproblem} % Problem counter for environment + +\providecommand{\problem}[1][]{% + \addtocounter{theproblem}{1}% + \setcounter{table}{0}% + \setcounter{figure}{0}% + \setcounter{equation}{0}% + \noindent% + \textbf{% + Problem~\arabic{theproblem}.}~\textit{\small{#1}} + +} + +% ============= QED, Page Breaks After QED? ============= +\providecommand{\@expand}{\HIDE} % Default is to omit pagebreaks after the solution +\providecommand{\qqed}{\hfill\rule{2mm}{2mm}\ifnum\@expand=\SHOW\\\pagebreak\fi} + + +% ============= Solution Command ============= +\providecommand{\@solutionvis}{1} % Default setting is to show solutions. +\providecommand{\solution}[2][\@solutionvis]{ +\vspace{0.5em}\noindent\textbf{Solution.} +\ifnum#1=\SHOW% +#2 + +\hfill\qqed\vspace{0.1em} +\else% +\pagebreak% +\fi +} + +% ============= Chapter, Section, Item Commands ============= +\providecommand{\chap}[2][0]{ +\ifnum#1=0% +\else% +\setcounter{section}{#1}% +\addtocounter{section}{-1}% +\fi% +\vspace{-1.75em}% +\section{#2} +} + +\providecommand{\sect}[2][0]{ +\ifnum#1=0% +\else% +\setcounter{subsection}{#1}% +\addtocounter{subsection}{-1}% +\fi% +\vspace{-0.5em}% +\subsection{#2} +} + +\providecommand{\subsect}[1]{\noindent\textbf{#1.}} + +% ============= Insert Non-Float Image ============= +\providecommand{\insertgraphic}[2][0.5\textwidth]{ +\vspace{-1em} +\begin{center} + \includegraphics[width=#1]{#2} +\end{center} +\vspace{-1em} +} + + + +% ============= Object Numbering by Problem ============= +\renewcommand{\thetable}{\arabic{theproblem}.\arabic{table}} +\renewcommand{\thefigure}{\arabic{theproblem}.\arabic{figure}} +\renewcommand{\theequation}{\arabic{theproblem}.\arabic{equation}} + + +% ============= Formula Environment ============= +\newcounter{formula} +\newenvironment{formula}[1][Formula \arabic{formula}] +{ + \addtocounter{formula}{1} + \begin{displaymath} + \tag*{\parbox{5em}{\textbf{\small{#1}}}} +}{ + \end{displaymath}\\ +} + +% ============= Math Table ============= +\newif\ifcaption +\pgfkeys +{ + /mypkg/title/.store in=\Caption,% Any value assigned to title will be stored in \Caption + /mypkg/title= , % Initialize so \Caption exists + /mypkg/label/.store in=\Label, % Any value assigned to label will be stored in \Label + /mypkg/label= , % Initialize so \Label exists + /mypkg/caption/.is if=caption, % Declare a boolean, defaults to false +} +\newenvironment{mathtable}[2][]{ + \pgfkeys{/mypkg/.cd, #1}% + \vspace{-1em}% + \begin{table}[ht!]% + \small \begin{center}% + \begin{displaymath}% + \begin{array}{#2}% + \toprule +}{ + \bottomrule + \end{array}% + \end{displaymath}% + \ifcaption% + \vspace{-1em}\caption{\Caption}\label{\Label}% + \fi% + \end{center}% + \end{table}% + \vspace{-1em}% +} + + +% ============= Double-line Column-Heading for table ============= +\providecommand{\double}[2]{% + \multicolumn{1}{c}{% + \genfrac{}{}{0pt}{}{\text{#1}}{\text{#2}} + } +} + + +% ============= Theorem-Style Environments ============= +\theoremstyle{plain} % Bold label, italic letters +\newtheorem{thm}{Theorem}[section] % Numbered by section +\newtheorem{lma}[thm]{Lemma} +\newtheorem{crl}[thm]{Corollary} +\newtheorem{prp}[thm]{Proposition} +\newtheorem{cnj}[thm]{Conjecture} +\newtheorem{alg}[thm]{Algorithm} + +% Associated environments (for numbered theorem environments) +\newenvironment{theorem}[2][]{\begin{thm}[#1]\label{#2}}{\end{thm}} +\newenvironment{lemma}[2][]{\begin{lma}[#1]\label{#2}}{\end{lma}} +\newenvironment{corollary}[2][]{\begin{crl}[#1]\label{#2}}{\end{thm}} +\newenvironment{proposition}[2][]{\begin{prp}[#1]\label{#2}}{\end{crl}} +\newenvironment{conjecture}[2][]{\begin{cnj}[#1]\label{#2}}{\end{cnj}} +\newenvironment{algorithm}[2][]{\begin{alg}[#1]\label{#2}}{\end{alg}} + +\theoremstyle{remark} % Italic label, roman letters +\newtheorem{rmk}{Remark}[section] % Numbered by section. Remarks are used to expand on and integrate material. +\newtheorem*{note}{Note} % Un-numbered. Notes are used to comment on specific elements of the material. +\newtheorem*{caveat}{Caveat} % Un-numbered. Caveats are used to guide the reader away from a common error. +\newtheorem*{warning}{Warning} % Un-numbered. Warnings are used to guide away from especially egregious errors. + +\theoremstyle{definition} % Bold label, roman letters +\newtheorem{dfn}{Definition}[section] % Numbered by section. Definitions of concepts and terms. +\newtheorem{exm}{Example}[section] % Numbered by section. Illustrative examples. +\newtheorem{smm}{Summary}[subsection] % Numbered by subsection. For section summaries. +\newtheorem*{question}{Question} % Un-numbered. For questions to motivate further analysis. +\newtheorem*{speculation}{Speculation} % Un-numbered. For questions that arise but will not be immediately answered. + +% Associated environments (for numbered theorem environments) +\newenvironment{remark}[2][]{\begin{rmk}[#1]\label{#2}}{\end{rmk}} +\newenvironment{definition}[2][]{\begin{dfn}[#1]\label{#2}}{\end{dfn}} +\newenvironment{example}[2][]{\begin{exm}[#1]\label{#2}}{\end{exm}} +\newenvironment{summary}[2][]{\begin{smm}[#1]\label{#2}}{\end{smm}} + + +% ============= Greek Letters ============= +\renewcommand{\a}{\ensuremath{\alpha}} +\renewcommand{\b}{\ensuremath{\beta}} +\renewcommand{\c}{\ensuremath{\gamma}} +\newcommand{\ch}{\ensuremath{\chi}} +\renewcommand{\d}{\ensuremath{\delta}} +\newcommand{\ep}{\ensuremath{\epsilon}} +\newcommand{\et}{\ensuremath{\eta}} +\newcommand{\ve}{\ensuremath{\varepsilon}} +\renewcommand{\r}{\ensuremath{\rho}} +\newcommand{\s}{\ensuremath{\sigma}} +\renewcommand{\t}{\ensuremath{\tau}} +\newcommand{\f}{\ensuremath{\psi}} +\newcommand{\w}{\ensuremath{\omega}} +\newcommand{\h}{\ensuremath{\phi}} +\newcommand{\m}{\ensuremath{\mu}} +\renewcommand{\l}{\ensuremath{\lambda}} +\renewcommand{\k}{\ensuremath{\kappa}} +\renewcommand{\v}{\ensuremath{\nu}} +\renewcommand{\i}{\ensuremath{\iota}} +\renewcommand{\o}{\ensuremath{\theta}} +\newcommand{\z}{\ensuremath{\zeta}} + +% ============= Mathematical Symbols ============= +\providecommand{\NN}{\ensuremath{\mathbb{N}}} +\providecommand{\ZZ}{\ensuremath{\mathbb{Z}}} +\providecommand{\QQ}{\ensuremath{\mathbb{Q}}} +\providecommand{\RR}{\ensuremath{\mathbb{R}}} +\providecommand{\CC}{\ensuremath{\mathbb{C}}} +\providecommand{\pd}{\partial} % 'dee' symbol for partial derivatives +\providecommand{\dd}{\mathrm{d}} % 'dee' symbol for ordinary derivatives +\providecommand{\x}{\times} +\providecommand{\n}{\scalebox{0.6}[1.0]{\ensuremath{-}}} + + + +% ============= Mathematical Macros ============= +\providecommand{\Sum}[3][n]{\ensuremath{\sum_{{#1}={#2}}^{#3}}} % Sum from [n]={1}to{2}. \Sum{1}{10} +\providecommand{\infsum}[2][n]{\ensuremath{\sum_{{#1}={#2}}^\infty}} % Infinite sum from [n]={1} \infsum{1} +\providecommand{\Int}[4][x]{\ensuremath{\int_{#3}^{#4}\!{#2}\,\mathrm{d}{#1}}} % Integrate {1} from {2} to {3} with respect to [x] +\providecommand{\Lim}[3][\infty]{\ensuremath{\displaystyle \lim_{{#2}\to{#1}}\!\!{#3}}} % Take the limit from {1} to [infinity] of {3} \Lim{x}{f(x)} +\providecommand{\Frac}[2]{\ensuremath{\,^{#1}\!/\!_{#2}}} % Slanted fraction with proper spacing. Usefule for in-line display of fractions. +\providecommand{\eval}[3]{\ensuremath{\left[ #1 \right \vert_{#2}^{#3}}} +\renewcommand{\L}{\left} % for left-hand right-sizing +\providecommand{\R}{\right} % for right-hand right-sizing +\providecommand{\D}{\diff} % for writing derivatives +\providecommand{\PD}{\diffp} % for writing partial derivatives +\providecommand{\full}{\displaystyle} % Forces display style in math mode +\providecommand{\Deg}{\ensuremath{^\circ}} % for adding a degree symbol, even if not in math mode +\providecommand{\abs}[1]{\left\vert #1 \right\vert} % Absolute Value +\providecommand{\norm}[1]{\left \Vert #1 \right \Vert} % Norm (vector magnitude) +\providecommand{\e}[1]{\ensuremath{\times 10^{#1}}} % Scientific Notation with times symbol +\providecommand{\E}[1]{\ensuremath{10^{#1}}} % Scientific Notation +\renewcommand{\u}[1]{\text{ #1}} % For inserting units in Roman text +\providecommand{\mc}{\text{,}\hspace{1em}} % For inserting comma and space into math mode +\providecommand{\mtxt}[2][]{#1\hspace{0.5em}\text{#2}\hspace{0.5em}} % For insterting text into math mode with space on either side. Option for preceding punctuation. + +% ============= Probability and Statistics ============= +\providecommand{\prob}[1]{\ensuremath{P\!\left(#1\right)} } +\providecommand{\cndprb}[2]{\ensuremath{P\!\left(#1 \left\vert #2 \right. \right)} } +\providecommand{\cov}[1]{\ensuremath{\text{Cov}\!\left(#1\right)} } +\providecommand{\ex}[1]{\ensuremath{E\!\left[#1\right]} } + +% ============= Linear Algebra ============= + +% Column vectors +\providecommand{\twovector}[3][r]{\left(\begin{array}{#1} #2 \\ #3\end{array}\right)} +\providecommand{\threevector}[4][r]{\left(\begin{array}{#1} #2 \\ #3 \\ #4\end{array}\right)} +\providecommand{\fourvector}[5][r]{\left(\begin{array}{#1} #2 \\ #3 \\ #4 \\ #5 \end{array}\right)} + +% ============= Vector Calculus ============= +% ------------- Susan Lea's notation --------------- +\providecommand{\vecs}[1]{\ensuremath{\vec{\bm{#1}}} } % bolded symbol, arrow +\providecommand{\vect}[1]{\ensuremath{\vec{\textbf{#1}}} } % bolded text, arrow +\providecommand{\unitvecs}[1]{\bm{\hat{#1}}} +\providecommand{\unitvect}[1]{\hat{\textbf{#1}}} +\providecommand{\Div}[1]{\vecs{\del} \cdot \vect{#1}} +\providecommand{\Curl}[1]{\vecs{\del} \times \vect{#1}} +\providecommand{\Grad}{\vecs{\del}} + + + +