mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			381 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			381 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
% =====================================
 | 
						|
% 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}}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 |