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}}
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |