145
resume/resume.cls
Normal file
145
resume/resume.cls
Normal file
@@ -0,0 +1,145 @@
|
||||
% resume.cls
|
||||
%
|
||||
% Copyright 2005 Daniel Burrows
|
||||
%
|
||||
% You may use, modify, and redistribute this file in any way you please, so
|
||||
% long as this copyright notice is maintained.
|
||||
|
||||
|
||||
\NeedsTeXFormat{LaTeX2e}
|
||||
\ProvidesClass{resume}
|
||||
|
||||
\LoadClassWithOptions{article}
|
||||
|
||||
% No page numbers by default.
|
||||
\pagestyle{empty}
|
||||
|
||||
\RequirePackage{calc}
|
||||
\RequirePackage{ifthen}
|
||||
\RequirePackage{url}
|
||||
\RequirePackage{tabularx}
|
||||
\RequirePackage{pgf}
|
||||
\RequirePackage{pgfshade}
|
||||
\RequirePackage{xxcolor}
|
||||
|
||||
\RequirePackage{times}
|
||||
\RequirePackage[T1]{fontenc}
|
||||
|
||||
\RequirePackage[tmargin=1in,bmargin=1in]{geometry}
|
||||
|
||||
\definecolor{rulestartcolor}{rgb}{0,0,0}
|
||||
\definecolor{ruleendcolor}{rgb}{0.4,0.4,0.4}
|
||||
|
||||
\newlength{\headerbuffer}
|
||||
\setlength{\headerbuffer}{2pt}
|
||||
\newlength{\secskip}
|
||||
\setlength{\secskip}{6pt}
|
||||
|
||||
\newlength{\@headerscratch}
|
||||
|
||||
% Usage: \@setupshading{width}{height}{start}{end}
|
||||
\newcommand{\@setupshading}[4]{%
|
||||
\pgfdeclarehorizontalshading{@ruleshading}{#2}{%
|
||||
color(0pt)=(#3); color(#1)=(#4)%
|
||||
}
|
||||
}
|
||||
|
||||
\newcommand{\pgfrule}[4]{%
|
||||
\begin{pgfpicture}{0pt}{0pt}{#1}{#2}%
|
||||
\pgfdeclarehorizontalshading{@ruleshading}{#2}{%
|
||||
color(0pt)=(#3); color(#1)=(#4)%
|
||||
}
|
||||
\pgfputat{\pgfxy(0,0)}{\pgfbox[left,bottom]{\pgfuseshading{@ruleshading}}}
|
||||
\end{pgfpicture}%
|
||||
}
|
||||
|
||||
\newcommand{\lrule}[2]{\pgfrule{#1}{#2}{rulestartcolor}{ruleendcolor}}
|
||||
\newcommand{\rrule}[2]{\pgfrule{#1}{#2}{ruleendcolor}{rulestartcolor}}
|
||||
|
||||
\newcommand{\@authorname}{}
|
||||
\newcommand{\@email}{}
|
||||
\newcommand{\@streetaddress}{}
|
||||
\newcommand{\@citystatezip}{}
|
||||
\newcommand{\@phone}{}
|
||||
\newcommand{\@webpage}{}
|
||||
|
||||
\renewcommand{\author}[1]{\renewcommand{\@authorname}{#1}}
|
||||
\newcommand{\email}[1]{\urldef{\@email}{\url}{<#1>}}
|
||||
\newcommand{\streetaddress}[1]{\renewcommand{\@streetaddress}{#1}}
|
||||
\newcommand{\citystatezip}[1]{\renewcommand{\@citystatezip}{#1}}
|
||||
\newcommand{\phone}[1]{\renewcommand{\@phone}{#1}}
|
||||
\newcommand{\webpage}[1]{\urldef{\@webpage}{\url}{#1}}
|
||||
|
||||
\renewcommand{\maketitle}{{%
|
||||
\setlength{\@headerscratch}{\linewidth*2/3}%
|
||||
\noindent \lrule{\@headerscratch}{1.5pt}%
|
||||
\vspace{\headerbuffer}%
|
||||
\ifthenelse{\equal{\@email}{}}{%
|
||||
\par\nointerlineskip\noindent\makebox[\linewidth]{\textbf{\Large{\@authorname}}}%
|
||||
} {%
|
||||
\par\nointerlineskip\noindent\makebox[\linewidth]{\textbf{\Large{\@authorname\ \@email}}}%
|
||||
}%
|
||||
\vspace{\headerbuffer}%
|
||||
\par\nointerlineskip\noindent%
|
||||
\hspace{\linewidth}%
|
||||
\hspace{-\@headerscratch}%
|
||||
\rrule{\@headerscratch}{1.5pt}%
|
||||
\par\nointerlineskip\noindent%
|
||||
% Typeset webpage/phone in columns if both are specified, or
|
||||
% just on the LHS if only one is.
|
||||
\begin{small}%
|
||||
\ifthenelse{\equal{\@webpage}{}}{%
|
||||
\ifthenelse{\equal{\@phone}{}}{}{\@phone\par\nointerlineskip\noindent}%
|
||||
} {%
|
||||
\ifthenelse{\equal{\@phone}{}}{\@webpage\par\nointerlineskip\noindent}{%
|
||||
\begin{tabular*}{\linewidth}{l@{\extracolsep{\fill}}r}%
|
||||
\@phone & \@webpage%
|
||||
\end{tabular*}%
|
||||
\par\nointerlineskip\noindent%
|
||||
}%
|
||||
}%
|
||||
\ifthenelse{\equal{\@streetaddress}{} \and%
|
||||
\equal{\@citystatezip}{}}{}{%
|
||||
\ifthenelse{\equal{\@streetaddress}{} \or %
|
||||
\equal{\@citystatezip}{}}{%
|
||||
\ClassError{resume}{%
|
||||
Only one of \protect\streetaddress and \protect\citystatezip given
|
||||
}{%
|
||||
You must either define both \protect\streetaddress and \protect\citystatezip,
|
||||
or define neither of them.
|
||||
}%
|
||||
}{%
|
||||
%
|
||||
\begin{tabular*}{\linewidth}{l@{\extracolsep{\fill}}r}%
|
||||
\@streetaddress & \@citystatezip%
|
||||
\end{tabular*}%
|
||||
}}%
|
||||
% \ifthenelse{\equal{\@webpage}{}}{}{%
|
||||
% \@webpage%
|
||||
% }%
|
||||
\end{small}
|
||||
}}
|
||||
|
||||
\renewcommand{\section}[1]{%
|
||||
\goodbreak\vspace{\secskip}%
|
||||
\par\nointerlineskip\noindent\textbf{\textsc{\large\makebox[\linewidth][l]{#1}}}\vspace{\headerbuffer}\par\nointerlineskip\noindent%
|
||||
\lrule{\linewidth}{0.4pt}%
|
||||
\vspace{\headerbuffer}\par\nointerlineskip}
|
||||
|
||||
\renewcommand{\subsection}[1]{%
|
||||
\goodbreak\vspace{\secskip}\par\nointerlineskip\vspace{-1em}\textbf{\flushleft{#1}:}\par%
|
||||
}
|
||||
|
||||
% General catch-all for either educational or job affiliation.
|
||||
%
|
||||
% Usage:
|
||||
% \affiliation[title]{institution}{years}
|
||||
\newcommand{\affiliation}[3][]{%
|
||||
\goodbreak\vspace{\secskip}\par\noindent\begin{tabularx}{\linewidth}{Xr}%
|
||||
{\bfseries #2} & \textit{#3}%
|
||||
\ifthenelse{\equal{#1}{}}{}{%
|
||||
\\ \textit{#1}%
|
||||
}%
|
||||
\end{tabularx}%
|
||||
}%
|
||||
|
||||
Reference in New Issue
Block a user