(no commit message)
[ozzloy@gmail.com/cv] / examples / mike_lundy / resume.cls
CommitLineData
08cfcb08 1\NeedsTeXFormat{LaTeX2e}[1995/12/01]
2
3\ProvidesClass{resume}
4 [2007/02/18 v1.2
5 (My Resume Class)]
6
7\DeclareOption*{%
8 \PassOptionsToClass{\CurrentOption}{article}%
9 \PassOptionsToClass{\CurrentOption}{geometry}%
10}
11\ProcessOptions
12
13\LoadClass{article}
14\newlength{\@horizmargin}
15\newlength{\@vertmargin}
16
17\setlength{\@horizmargin}{0.5in}
18\setlength{\@vertmargin}{0.4in}
19
20\RequirePackage[left=\@horizmargin,right=\@horizmargin,top=\@vertmargin,bottom=\@vertmargin]{geometry}
21\RequirePackage{calc}
22\RequirePackage{enumitem}
23\RequirePackage{fancyhdr}
24\RequirePackage{eso-pic}
25
26\setitemize[1]{nolistsep}
27\setitemize[2]{nolistsep}
28
29\pagestyle{fancy}
30
31\let\@oddhead\@empty
32\let\@evenhead\@empty
33\cfoot{\thepage\ of \pageref{@End}}
34
35\newlength{\@myskip}
36\setlength{\@myskip}{5pt}
37
38\setlength{\parindent}{0pt}
39\setlength{\parskip}{0pt}
40\setlength{\tabskip}{0pt}
41
42\def\baselinestretch{0.9}
43\def\arraystretch{0.3}
44
45\newlength{\@lwidth}
46\newlength{\@mwidth}
47
48\setlength{\@lwidth}{0.65in}
49\setlength{\@mwidth}{.75cm}
50
51\newdimen\@topfirst
52\def\@uglyhack{10pt}
53
54\AddToShipoutPicture{%
55 \begingroup
56 \setlength{\@tempdima}{\@lwidth + \@horizmargin + \@mwidth}%
57 \setlength{\@tempdimb}{\paperheight-\@topfirst-\@vertmargin}%
58 \linethickness{\LenToUnit{0.4pt}}%
59 \put(\LenToUnit{\@tempdima},\LenToUnit{0pt}){%
60 \framebox(0,\LenToUnit{\@tempdimb}){}}%
61 \endgroup
62 \global\@topfirst=\@uglyhack
63}
64
65\newlength{\tmp@rule}
66\def\shiftrule#1{%
67 \vbox to #1{
68 \vss
69 \hrule width \linewidth height 0.4pt depth 0pt
70 \vss
71 }
72}
73
74\newcommand{\myline}[1][0.5\@myskip]{\shiftrule{#1}}
75
76\newlength{\tmp@block}
77\newenvironment{block}[1][]{%
78 \def\@arg{#1}%
79 \setlength{\tmp@block}{\linewidth - \@lwidth - \@mwidth - 3.65pt}%
80 \ifx\@arg\empty\else\myline\nobreak\fi
81 \halign to \linewidth\bgroup
82 \vtop{\hsize=\@lwidth \tabskip=\@mwidth ##\hfill} &
83 \vtop{\hsize=\tmp@block \tabskip=0pt ##\hfill}\cr
84
85 \vtop{\raggedright\catform{#1}} &
86 \vtop\bgroup\setlength{\linewidth}{\tmp@block}%
87}{%
88 \egroup \cr \egroup
89}
90
91\def\catform#1{\textsc{#1}}
92\def\locform#1{\textbf{#1}}
93\def\dateform#1{{\small\textsl{#1}}}
94\def\jobform#1{{\small#1}}
95
96\def\job#1#2#3{\jobform{#1}\leaders\hbox to 0.75em{\hss.\hss}\hfill\dateform{#2 -- #3}\par}
97
98\newcounter{sec}
99\newcounter{place}[sec]
100
101\def\thesec{Section: \arabic{sec}}
102\def\theplace{Place: \arabic{place}}
103
104\def\interplace{\myline[\@myskip]}
105
106\newif\ifshowrefs
107\newif\ifclosed
108
109\renewenvironment{section}[1]{%
110 \stepcounter{sec}%
111 \gdef\secname{#1}%
112 \begin{block}[\secname]%
113 \closedfalse
114}{%
115 \ifclosed\else\end{block}\fi
116}
117
118\newif\if@newpg\@newpgfalse
119\newif\if@lastodd\@lastoddtrue
120
121\def\getpagenum#1{%
122 \edef\@tempa{\@nameuse{r@#1}}
123 \edef\thispage{\expandafter\@cdr\@tempa\@nil\space}%
124 \ifx\thispage\space\def\thispage{0}\fi%
125}
126
127\def\setnew#1{%
128 \getpagenum{end-#1}
129 \ifodd\thispage
130 \if@lastodd
131 \global\@newpgfalse
132 \else
133 \global\@newpgtrue
134 \fi
135 \global\@lastoddtrue
136 \else
137 \if@lastodd
138 \global\@newpgtrue
139 \else
140 \global\@newpgfalse
141 \fi
142 \global\@lastoddfalse
143 \fi
144}
145
146\newlength{\@pagetotal}
147
148\newenvironment{place}[2][]{%
149 \setnew{#2}%
150 \stepcounter{place}%
151 \ifdim\@topfirst=\@uglyhack\else
152 \ifdim\@topfirst=0pt
153 \setlength\@pagetotal{\pagetotal-0.4pt}
154 \global\@topfirst=\@pagetotal
155 \fi
156 \fi
157 \ifnum\value{place}=\@ne
158 \else
159 \if@newpg
160 \begin{block}[\secname\space (cont.)]%
161 \global\@newpgfalse
162 \else
163 \begin{block}%
164 \interplace
165 \fi
166 \fi
167 \gdef\placename{#2}%
168 #1 \locform{\placename}\par
169}{%
170 \end{block}\label{end-\placename}\closedtrue
171}
172
173\def\items{\begin{itemize}}
174\def\enditems{\end{itemize}}
175
176% This creates a list type.
177% #1: name
178% #2: what \and expands to
179% #3: prefix
180\long\def\listtype#1#2#3{
181 \expandafter\gdef\csname#1\endcsname##1{{%
182 \expandafter\gdef\csname @#1\endcsname{{%
183 \def\and{#2}
184 #3##1%
185 }}%
186 \def\and{and }
187 \expandafter\xdef\csname my#1\endcsname{{##1}}
188 }}
189}
190
191\def\next{\par}%
192
193\listtype{address}{%
194 \egroup\hss\vtop\bgroup\hsize=0.5\linewidth %
195}{%
196 \vtop\bgroup\hsize=0.5\linewidth %
197}
198
199\def\email#1{\def\@email{#1}\def\myemail{#1}}
200\def\name#1{\def\@name{#1}\def\myname{#1}}
201
202\newlength{\@tmp@skill}
203\newenvironment{skilltable}[1]{%
204 \place[\centering]{#1}
205 \setlength{\@tmp@skill}{0.5\linewidth - .2cm - 0.09pt}
206 \begin{tabular*}{\linewidth}[t]{
207 @{\hfil}
208 p{\@tmp@skill}
209 @{\hspace{.2cm}}
210 |
211 @{\hspace{.2cm}}
212 p{\@tmp@skill}
213 @{\hfil}
214 }
215}{%
216 \end{tabular*}
217 \endplace
218}
219
220\def\skill#1#2{%
221 \raggedleft #1 & #2 \\[3pt]
222}
223
224\def\reference#1{%
225 \textbf{#1}
226 \setitemize[1]{topsep=5pt, itemsep=0pt}
227 \items
228}
229\def\endreference{%
230 \enditems
231 \setitemize[1]{nolistsep}
232}
233
234\def\exprt#1{\skill{#1}{Expert}}
235\def\inter#1{\skill{#1}{Intermediate}}
236\def\basic#1{\skill{#1}{Basic}}
237
238%\let\OldItem\item
239%\renewcommand{\item}[2][---]{\OldItem[#1] #2}
240
241\AtBeginDocument{%
242 \vtop{%
243 \centering
244 {\Large{\@name}}\par
245 \hbox to \hsize{%
246 \hfil
247 \@address \egroup
248 \hfil
249 }\par
250 \@email\par
251 \vskip 5pt
252 }%
253}%
254
255\AtEndDocument{%
256 \label{@End}
257 \getpagenum{@End}
258 \ifnum\thispage=\@ne
259 \pagestyle{empty}
260 \fi
261}
262
263\raggedbottom
264\endinput
265% vim: set ft=tex nospell :