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