(no commit message)
[ozzloy@gmail.com/cv] / examples / mike_lundy / resume.cls
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 :