|
@@ -0,0 +1,844 @@
|
|
1
|
+% RESUME DOCUMENT STYLE -- Released 23 Nov 1989
|
|
2
|
+% for LaTeX version 2.09
|
|
3
|
+% Copyright (C) 1988,1989 by Michael DeCorte
|
|
4
|
+
|
|
5
|
+\typeout{Document Style `resume' <26 Sep 89, Dec 07, April 09>.}
|
|
6
|
+
|
|
7
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
8
|
+% resume.sty
|
|
9
|
+%
|
|
10
|
+% \documentstyle{resume}
|
|
11
|
+%
|
|
12
|
+% Copyright (c) 1988 by Michael DeCorte
|
|
13
|
+% Permission to copy all or part of this work is granted, provided
|
|
14
|
+% that the copies are not made or distributed for resale, and that
|
|
15
|
+% the copyright notice and this notice are retained.
|
|
16
|
+%
|
|
17
|
+% THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO
|
|
18
|
+% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
|
|
19
|
+% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
|
|
20
|
+% FOR ANY PARTICULAR PURPOSE.
|
|
21
|
+%
|
|
22
|
+% If you make any improvements, I'd like to hear about them.
|
|
23
|
+%
|
|
24
|
+% Michael DeCorte
|
|
25
|
+% P.O. Box 652
|
|
26
|
+% Potsdam NY 13676
|
|
27
|
+% mrd@sun.soe.clarkson.edu
|
|
28
|
+% mrd@clutx.bitnet
|
|
29
|
+%
|
|
30
|
+% Changes for LaTeX2e -- Venkat Krishnamurthy (Aug 7, 2001)
|
|
31
|
+%
|
|
32
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
33
|
+% You can have multiple style options the legal options ones are:
|
|
34
|
+%
|
|
35
|
+% centered the name and address are centered at the top of the
|
|
36
|
+% page (default)
|
|
37
|
+%
|
|
38
|
+% line the name is the left with a horizontal line then
|
|
39
|
+% the address to the right
|
|
40
|
+%
|
|
41
|
+% overlapped the section titles overlap the body text (default)
|
|
42
|
+%
|
|
43
|
+% margin the section titles are to the left of the body text
|
|
44
|
+%
|
|
45
|
+% 11pt use 11 point fonts instead of 10 point fonts
|
|
46
|
+%
|
|
47
|
+% 12pt use 12 point fonts instead of 10 point fonts
|
|
48
|
+%
|
|
49
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
50
|
+% Commands
|
|
51
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
52
|
+% \Resume prints the word resume but typeset nicely
|
|
53
|
+%
|
|
54
|
+% \newsectionwidth{dimen}
|
|
55
|
+% defines the amount of space the labels extend
|
|
56
|
+% into the left margin.
|
|
57
|
+% DO NOT TRY to change any of the dimensions
|
|
58
|
+% yourself. You will probably confuse the style file.
|
|
59
|
+%
|
|
60
|
+% \name{text} defines your name
|
|
61
|
+%
|
|
62
|
+% \address{text}
|
|
63
|
+% defines your address
|
|
64
|
+% this can be called twice if you have two addresses
|
|
65
|
+% use \\'s to indicate where either line breaks or
|
|
66
|
+% comas should go
|
|
67
|
+%
|
|
68
|
+% \opening this prints your name and address at that spot
|
|
69
|
+% this is not normally needed, as \begin{resume}
|
|
70
|
+% does this but is provided just in case you need
|
|
71
|
+% to do something odd
|
|
72
|
+%
|
|
73
|
+% \begin{resume} ... \end{resume}
|
|
74
|
+% all of the resume should go inside of this
|
|
75
|
+% environment
|
|
76
|
+%
|
|
77
|
+% \section{text}
|
|
78
|
+% This prints 'text' in the left hand margin.
|
|
79
|
+% Its exact placement depends on what the style
|
|
80
|
+% options has been set to. (overlapped or margin)
|
|
81
|
+% You should use \\ to start a new line. If the
|
|
82
|
+% style option is margin, the \\ is converted
|
|
83
|
+% to a space.
|
|
84
|
+% To use this in any of the list environments, put
|
|
85
|
+% the \section after the \item[] but before the
|
|
86
|
+% text.
|
|
87
|
+% Eg.
|
|
88
|
+% \begin{itemize}
|
|
89
|
+% \item\section{text}
|
|
90
|
+% text
|
|
91
|
+% \end{itemize}
|
|
92
|
+%
|
|
93
|
+% \begin{ncolumn}{n} ... \end{ncolumn}
|
|
94
|
+% creates a tabular environment with n equally
|
|
95
|
+% spaced columns. Separate columns by & and
|
|
96
|
+% end them with \\
|
|
97
|
+%
|
|
98
|
+% \begin{position} ... \end{position}
|
|
99
|
+% this is used to print a job description. There should
|
|
100
|
+% be only one job description in it. Information
|
|
101
|
+% related to the job (such as title, dates...) will
|
|
102
|
+% be printed.
|
|
103
|
+%
|
|
104
|
+% \begin{format} ... \end{format}
|
|
105
|
+% used to change the default format for the position
|
|
106
|
+% environment. Within it the recognized commands are:
|
|
107
|
+% \title{option}
|
|
108
|
+% \employer{option}
|
|
109
|
+% \location{option}
|
|
110
|
+% \dates{option}
|
|
111
|
+% \body
|
|
112
|
+% \\
|
|
113
|
+% where option is one of l,r,c standing for left, right, center.
|
|
114
|
+% The format will eventually be used to make several
|
|
115
|
+% tabular environments and you are defining the number of columns
|
|
116
|
+% and the placement of text within the columns of the tabulars.
|
|
117
|
+% Each row is terminated by a \\. Any number of options can
|
|
118
|
+% be on a line, they will each be set in their own columns.
|
|
119
|
+% Any of the options except \body may be left out.
|
|
120
|
+%
|
|
121
|
+% Eg.
|
|
122
|
+% \begin{format}
|
|
123
|
+% \title{l}\employer{r}\\
|
|
124
|
+% \dates{r}\\
|
|
125
|
+% \body\\
|
|
126
|
+% \location{l}\\
|
|
127
|
+% \end{format}
|
|
128
|
+%
|
|
129
|
+% In this example the title and employer information
|
|
130
|
+% are set in 2 columns left justified and right justified
|
|
131
|
+% respectively. Then the date is set right justified.
|
|
132
|
+% Then the body is set. Then the location is set left
|
|
133
|
+% justified.
|
|
134
|
+%
|
|
135
|
+% \employer{text}
|
|
136
|
+% \title{text}
|
|
137
|
+% \dates{text}
|
|
138
|
+% \location{text}
|
|
139
|
+% declare text for the next invocation of the position
|
|
140
|
+% environment
|
|
141
|
+%
|
|
142
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
143
|
+% Glue
|
|
144
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
145
|
+%
|
|
146
|
+% sectionskip the amount of horizontal before a section
|
|
147
|
+%
|
|
148
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
149
|
+% Dimensions
|
|
150
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
151
|
+%
|
|
152
|
+% sectionwidth the amount that the section titles go in the
|
|
153
|
+% left margin
|
|
154
|
+%
|
|
155
|
+% resumewidth the width of the total resume from the left
|
|
156
|
+% margin to the right. Don't use textwidth
|
|
157
|
+%
|
|
158
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
159
|
+% Definitions
|
|
160
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
161
|
+%
|
|
162
|
+% sectionfont the font used to print section titles
|
|
163
|
+% use \renewcommand to change it
|
|
164
|
+%
|
|
165
|
+% namefont the font used to print your name
|
|
166
|
+% use \renewcommand to change it
|
|
167
|
+%
|
|
168
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
169
|
+% THINGS TO DO
|
|
170
|
+%
|
|
171
|
+% add lm,rm options to format style to allow things to be placed
|
|
172
|
+% in the left or right margin respectivly
|
|
173
|
+%
|
|
174
|
+% add capability so that \body doesn't have to be proceeded (followed)
|
|
175
|
+% by a \\ allowing part of the description (eg. location) to be the
|
|
176
|
+% first (last) thing of the body
|
|
177
|
+%
|
|
178
|
+% clean up the list building procedures
|
|
179
|
+%
|
|
180
|
+% write docs to tell people how to use this
|
|
181
|
+
|
|
182
|
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
|
183
|
+\ProvidesClass{resume}[2000/05/19 v1.4b Resume class]
|
|
184
|
+
|
|
185
|
+%\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
|
|
186
|
+%\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
|
|
187
|
+
|
|
188
|
+\PassOptionsToClass{11pt,12pt}{article}
|
|
189
|
+\LoadClassWithOptions{article}
|
|
190
|
+
|
|
191
|
+\newif\if@line
|
|
192
|
+\newif\if@margin
|
|
193
|
+
|
|
194
|
+\DeclareOption{line}{\@linetrue}
|
|
195
|
+\DeclareOption{centered}{\@linefalse}
|
|
196
|
+
|
|
197
|
+\DeclareOption{margin}{\@margintrue}
|
|
198
|
+\DeclareOption{overlapped}{\@marginfalse}
|
|
199
|
+
|
|
200
|
+\ExecuteOptions{overlapped,centered}
|
|
201
|
+\ProcessOptions\relax
|
|
202
|
+
|
|
203
|
+\nofiles % resume's don't need .aux files
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+\newtoks\tabular@text % holds the current list being processed
|
|
207
|
+\newtoks\tabular@head % holds the head tabular list
|
|
208
|
+\newtoks\tabular@tail % holds the tail tabular list
|
|
209
|
+\newtoks\@ta % used by \@append
|
|
210
|
+\newtoks\undefined@token\undefined@token={}
|
|
211
|
+
|
|
212
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
213
|
+% prints a centered name with the address centered
|
|
214
|
+% or the two address on opposite sides of the page
|
|
215
|
+%
|
|
216
|
+\def\@printcentername{\begingroup
|
|
217
|
+ % print the name centered
|
|
218
|
+ \leavevmode\hbox to \textwidth{\hfil\@tablebox{\namefont\@name}\hfil}\par
|
|
219
|
+ \@ifundefined{@addressone}{%
|
|
220
|
+ % do nothing
|
|
221
|
+ }{%
|
|
222
|
+ \@ifundefined{@addresstwo}{
|
|
223
|
+ % only one address
|
|
224
|
+ \leavevmode\hbox to \textwidth{\hfil\@tablebox{\@addressone}\hfil}\par
|
|
225
|
+ }{
|
|
226
|
+ % two addresses
|
|
227
|
+ \leavevmode\hbox to \textwidth{\@tablebox{\@addressone}\hfil
|
|
228
|
+ \@tablebox{\@addresstwo}}\par
|
|
229
|
+ }%
|
|
230
|
+ }%
|
|
231
|
+\endgroup}
|
|
232
|
+
|
|
233
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
234
|
+% this is used to print the name and address at the top of
|
|
235
|
+% the page with a hline in between
|
|
236
|
+%
|
|
237
|
+\def\namefont{\large\bf}
|
|
238
|
+\def\@linename{\begingroup
|
|
239
|
+ \def\\{, }
|
|
240
|
+ {\namefont\@name}
|
|
241
|
+ \vskip 2pt
|
|
242
|
+ \fullline
|
|
243
|
+ \vskip 2pt
|
|
244
|
+ % where do you live?
|
|
245
|
+ \@ifundefined{@addressone}{%
|
|
246
|
+ % do nothing
|
|
247
|
+ }{%
|
|
248
|
+ \leavevmode\hbox to \textwidth
|
|
249
|
+ {\hfill\vbox{\hbox{\@addressone}
|
|
250
|
+ \hbox{\@addresstwo}
|
|
251
|
+ }%
|
|
252
|
+ }\par
|
|
253
|
+ }
|
|
254
|
+\endgroup}
|
|
255
|
+
|
|
256
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
257
|
+% HEADINGS:
|
|
258
|
+% There are two types of headings:
|
|
259
|
+% 1) one with the name centered and the address centered or
|
|
260
|
+% in the left and right side if there are two address
|
|
261
|
+% 2) one where the name is in the upper left corner
|
|
262
|
+% the a line accross the paper
|
|
263
|
+% then the address all on one line in the right corner
|
|
264
|
+% the second address will be directly below the first if defined
|
|
265
|
+%
|
|
266
|
+\let\print@name\relax
|
|
267
|
+\def\ds@centered{\ifx\print@name\relax\let\print@name\@printcentername\fi}
|
|
268
|
+\def\ds@line{\ifx\print@name\relax\let\print@name\@linename\fi}
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
272
|
+% Use this to set the sectionwidth.
|
|
273
|
+% It adjust the width of the text as well as the hoffset
|
|
274
|
+% You probably shouldn't touch any of the size paramaters
|
|
275
|
+% unless you really understand all of this but it is not
|
|
276
|
+% hard. Either way, it can only be executed once
|
|
277
|
+%
|
|
278
|
+\def\sectionfont{\bf}
|
|
279
|
+\newdimen\sectionwidth
|
|
280
|
+\newskip\sectionskip
|
|
281
|
+\newdimen\resumewidth
|
|
282
|
+
|
|
283
|
+\resumewidth=6.5in
|
|
284
|
+\sectionskip=3.5ex plus 1ex minus -.2ex % values stolen from LaTeX
|
|
285
|
+
|
|
286
|
+\def\newsectionwidth#1{%
|
|
287
|
+ \sectionwidth=#1
|
|
288
|
+ \textwidth=\resumewidth
|
|
289
|
+ \advance\textwidth-\sectionwidth
|
|
290
|
+ \hsize=\textwidth
|
|
291
|
+ \hoffset=\sectionwidth
|
|
292
|
+}
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
296
|
+% This is for sectiontitles that are entirely in the left margin.
|
|
297
|
+% multiline sectiontitles are permited and will be broken by
|
|
298
|
+% \TeX{} to fit into a box \verb|\sectionwidth| wide. It is advised
|
|
299
|
+% that \verb|\\| be used to break the lines by hand as \TeX{} will
|
|
300
|
+% probably not do what you want.
|
|
301
|
+%
|
|
302
|
+% When using this with {\tt tabbing} and {\tt list} (or anything
|
|
303
|
+% that is made out of {\tt list}) put the \section's inside of
|
|
304
|
+% the \verb|\begin{}| and the \verb|\item|Eg.
|
|
305
|
+% \begin{verbatim}
|
|
306
|
+% \begin{trivlist}
|
|
307
|
+% \item[]
|
|
308
|
+% \section{foo}
|
|
309
|
+% text
|
|
310
|
+% \end{trivlist}
|
|
311
|
+% \end{verbatim}
|
|
312
|
+%
|
|
313
|
+\def\boxed@sectiontitle#1{%
|
|
314
|
+ % this macro may be called in a tabular. Special code must be written
|
|
315
|
+ % to accomodate this. In LaTeX, a tabular is made out of hboxes.
|
|
316
|
+ % TeX never goes into horizontal mode because of this; it only
|
|
317
|
+ % gets into vertical mode and restricted horizontal mode. Certain
|
|
318
|
+ % indenting problems must be handled because of this. They
|
|
319
|
+ % are delt with at the end of this routine.
|
|
320
|
+ % It is also necessary to close the hbox that was created before
|
|
321
|
+ % the \section and create a new one when this macro has ended.
|
|
322
|
+ % This macro therefore simulates a \kill, so that any text before
|
|
323
|
+ % the \section not be printed. The proper use is therefore
|
|
324
|
+ % ...
|
|
325
|
+ % text\\
|
|
326
|
+ % \section{foo}
|
|
327
|
+ % more text\\
|
|
328
|
+ % ...
|
|
329
|
+ \ifx\\\@tabcr % is this in a tabular? (this *should* work but is a cludge)
|
|
330
|
+ \@stopfield % the is the first part of a \kill
|
|
331
|
+ \else
|
|
332
|
+ \@@par % This will end the previous paragraph if needed and
|
|
333
|
+ % go into vertical mode. If this was already in
|
|
334
|
+ % vertical mode then the \par does nothing.
|
|
335
|
+
|
|
336
|
+ \fi
|
|
337
|
+ \begingroup
|
|
338
|
+ \everypar={}%
|
|
339
|
+ \def\par{\@@par}%
|
|
340
|
+ \let\\=\@normalcr
|
|
341
|
+ \addpenalty{\@secpenalty} % this would be a good place for a page break
|
|
342
|
+ % \@secpenalty is what LaTeX uses before its
|
|
343
|
+ % section's. It happens to be -300
|
|
344
|
+ \addvspace{\sectionskip} % put in a bit of glue
|
|
345
|
+ % The following hbox will be contributed to the page list without going
|
|
346
|
+ % into horizontal mode. Therefore, any \parindent's, \parshape's, \leftskip
|
|
347
|
+ % will be ignored but \hoffset's are not. The result is that the box will
|
|
348
|
+ % only by \hoffset. This is what I want
|
|
349
|
+ \hbox to 0pt{%
|
|
350
|
+ \hss % this is an llap. In other words, this glue
|
|
351
|
+ % will shrink by the width of the stuff in the vbox
|
|
352
|
+ % (\sectionwidth) into the left margin and then
|
|
353
|
+ % insert the contents of the vbox.
|
|
354
|
+ \vtop to 0pt{% make a 0pt height paragraph, with the baseline at the
|
|
355
|
+ % lined up with the baseline of the first box in the list
|
|
356
|
+ \leftskip=0pt
|
|
357
|
+ \hsize=\sectionwidth
|
|
358
|
+ \textwidth=\sectionwidth
|
|
359
|
+ \raggedright % you don't want this filled out to the right margin
|
|
360
|
+ \sectionfont
|
|
361
|
+ #1\vss % Go into horizontal mode; do the paragraph;
|
|
362
|
+ % go into vertical mode; add some negative glue
|
|
363
|
+ % to give a box of 0pt height and depth
|
|
364
|
+ }%
|
|
365
|
+ }%
|
|
366
|
+ \addpenalty{-\@secpenalty} % this would be a bad place for a page break
|
|
367
|
+ \vskip-\baselineskip % when the next box is processed, baselineskip glue
|
|
368
|
+ % glue will be added (the box has no depth because of
|
|
369
|
+ % the \vss; therefore, we don't have to worry about
|
|
370
|
+ % \lineskiplimit). This -\baselineskip glue
|
|
371
|
+ % is to undo this. \nointerlineskip doesn't
|
|
372
|
+ % work because the baseline of this line would be lined
|
|
373
|
+ % up with the top of the top of the next box. We
|
|
374
|
+ % want the baselines lined up.
|
|
375
|
+ %
|
|
376
|
+ % It may have been possible to do this by forcing the
|
|
377
|
+ % baseline of this box to be the top of the box but
|
|
378
|
+ % then the interline skip between this box and the
|
|
379
|
+ % previous box would be off as the baselines of the
|
|
380
|
+ % this box (the one that being made above) and the
|
|
381
|
+ % previous line would be separated by \baselineskip
|
|
382
|
+ % (probably, it may be separted by the depth of the
|
|
383
|
+ % previous box + \lineskip) but as the baseline of
|
|
384
|
+ % this box has been moved to the top, the box's would
|
|
385
|
+ % separted by to much glue. The exact amount being
|
|
386
|
+ % the height of this box.
|
|
387
|
+ \endgroup
|
|
388
|
+ \ifx\\\@tabcr % is this in a tabular? (this *should* work but is a cludge)
|
|
389
|
+ % this is the second part of the \kill; it starts the next tabbing line
|
|
390
|
+ % Because this routine will never get into paragraph mode when used in
|
|
391
|
+ % tabbing the \parskip that is discussed below will never be inserted.
|
|
392
|
+ % Therefore it should not be negated as done below.
|
|
393
|
+ \@startline
|
|
394
|
+ \ignorespaces
|
|
395
|
+ \else
|
|
396
|
+ \vskip-\parskip % The next thing to be contributed will be a paragraph.
|
|
397
|
+ % Right before being contributed though a \vskip\parskip
|
|
398
|
+ % will be inserted. This is to negate it.
|
|
399
|
+ %
|
|
400
|
+ % I do consider this to be a bit of a cludge but
|
|
401
|
+ % I can not find a way to write \unskipfutureskip
|
|
402
|
+ % or a way to make TeX think that nothing has
|
|
403
|
+ % been contributed to the page list.
|
|
404
|
+ \fi
|
|
405
|
+}
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
409
|
+% This is for sectiontitles that are entirely above the section text
|
|
410
|
+%
|
|
411
|
+\def\unboxed@sectiontitle#1{%
|
|
412
|
+ \ifx\\\@tabcr % see boxed@sectiontitle for explation
|
|
413
|
+ \@stopfield
|
|
414
|
+ \else
|
|
415
|
+ \@@par
|
|
416
|
+ \fi
|
|
417
|
+ \begingroup
|
|
418
|
+ \everypar={}%
|
|
419
|
+ \def\par{\@@par}%
|
|
420
|
+ \def\\{ }
|
|
421
|
+ \addpenalty{\@secpenalty}
|
|
422
|
+ \addvspace{\sectionskip}
|
|
423
|
+ \hbox to 0pt{\hss\hbox to \sectionwidth{\sectionfont#1\hss}}
|
|
424
|
+ \addpenalty{-\@secpenalty} % this would be a bad place for a page break
|
|
425
|
+ \endgroup
|
|
426
|
+ \ifx\\\@tabcr % see boxed@sectiontitle for explation
|
|
427
|
+ \@startline
|
|
428
|
+ \else
|
|
429
|
+ \vskip-\parskip
|
|
430
|
+ \fi
|
|
431
|
+ \ignorespaces
|
|
432
|
+}
|
|
433
|
+
|
|
434
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
435
|
+% There are two types of section headings:
|
|
436
|
+% 1) the section heading is all on one line and directly
|
|
437
|
+% below it, is the body of the text
|
|
438
|
+% 2) the section heading is entirely in the left margin
|
|
439
|
+% (possibly taking multiple lines) with the body of
|
|
440
|
+% the text next to it
|
|
441
|
+%
|
|
442
|
+\let\@@section\relax
|
|
443
|
+\def\ds@overlapped{\ifx\@@section\relax\newsectionwidth{0.5in}\let\@@section\unboxed@sectiontitle\fi}
|
|
444
|
+%\def\ds@margin{\ifx\@@section\relax\newsectionwidth{1.3in}\let\@@section\boxed@sectiontitle\fi}
|
|
445
|
+\def\ds@margin{\ifx\@@section\relax\newsectionwidth{1.1in}\let\@@section\boxed@sectiontitle\fi}
|
|
446
|
+
|
|
447
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
448
|
+% DEFAULTS: (some of them)
|
|
449
|
+%
|
|
450
|
+% centered name
|
|
451
|
+% overlapped section titles
|
|
452
|
+%
|
|
453
|
+% format is:
|
|
454
|
+% title employer
|
|
455
|
+% location dates
|
|
456
|
+% body
|
|
457
|
+% with everything in the left of its column
|
|
458
|
+
|
|
459
|
+%\input article.sty
|
|
460
|
+
|
|
461
|
+\if@line\ds@line\else\ds@centered\fi
|
|
462
|
+\if@margin\ds@margin\else\ds@overlapped\fi
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
466
|
+% typeset resume all nice and pretty
|
|
467
|
+%
|
|
468
|
+\def\Resume{{R\'{e}sum\'{e}}}
|
|
469
|
+
|
|
470
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
471
|
+% makes a line of width \textwidth starting at -\hoffset
|
|
472
|
+%
|
|
473
|
+\def\fullline{ % hrules only listen to \hoffset
|
|
474
|
+ \nointerlineskip % so I have this code
|
|
475
|
+ \moveleft\hoffset\vbox{\hrule width\textwidth}
|
|
476
|
+ \nointerlineskip
|
|
477
|
+}
|
|
478
|
+
|
|
479
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
480
|
+% create a multiline box.
|
|
481
|
+%
|
|
482
|
+\def\@tablebox#1{\begin{tabular}[t]{@{}l@{\extracolsep{\fill}}}#1\end{tabular}}
|
|
483
|
+
|
|
484
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
485
|
+% use this to define your name
|
|
486
|
+%
|
|
487
|
+\def\name#1{\def\@name{#1}}
|
|
488
|
+
|
|
489
|
+\def\@name{}
|
|
490
|
+
|
|
491
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
492
|
+% use this to define your address, this may be called more than once.
|
|
493
|
+%
|
|
494
|
+\let\@addressone\relax
|
|
495
|
+\let\@addresstwo\relax
|
|
496
|
+
|
|
497
|
+\def\address#1{
|
|
498
|
+ \@ifundefined{@addressone}{\def\@addressone{#1}}{\def\@addresstwo{#1}}}
|
|
499
|
+
|
|
500
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
501
|
+% if you want to print your name and address is a slightly
|
|
502
|
+% different format than sugessted, then this can be used
|
|
503
|
+% to place it exactly where you want
|
|
504
|
+%
|
|
505
|
+\def\opening{\def\@opening{}
|
|
506
|
+ \begingroup
|
|
507
|
+ \leftskip=-\hoffset % I use leftskip to move things to the left as
|
|
508
|
+ \advance\textwidth\hoffset % changing hoffset doesn't work. But this
|
|
509
|
+ \hsize=\textwidth % doesn't really work as hboxes are rules
|
|
510
|
+ % are unaffeted
|
|
511
|
+ \let\par=\@@par
|
|
512
|
+ \parindent=0pt
|
|
513
|
+ \parskip=0pt
|
|
514
|
+ \print@name
|
|
515
|
+ \endgroup
|
|
516
|
+}
|
|
517
|
+
|
|
518
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
519
|
+% all of the resume goes in the resume environment
|
|
520
|
+%
|
|
521
|
+\newenvironment{resume}{\begingroup
|
|
522
|
+ \@ifundefined{@opening}{\opening}{}
|
|
523
|
+}{\endgroup}
|
|
524
|
+
|
|
525
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
526
|
+% gives you a tabular environment with n equally spaced columns
|
|
527
|
+% \begin{ncolumn}{#} ... \end{ncolumn}
|
|
528
|
+%
|
|
529
|
+% The p option of LaTeX is broken in all but the newest verion
|
|
530
|
+% of latex.tex, this is how to fix it
|
|
531
|
+%
|
|
532
|
+\def\@endpbox{\par\egroup\hfil}
|
|
533
|
+\let\@@endpbox=\@endpbox
|
|
534
|
+
|
|
535
|
+\newdimen\@columnwidth % the width of each column equal to
|
|
536
|
+\def\ncolumn#1{%
|
|
537
|
+ % \@columnwidth = \textwidth / #1
|
|
538
|
+ \@columnwidth=\textwidth \divide\@columnwidth by #1
|
|
539
|
+ \begin{tabular*}{\textwidth}[t]%
|
|
540
|
+ {*{#1}{@{}p{\@columnwidth}@{\extracolsep{\fill}}}}
|
|
541
|
+}
|
|
542
|
+
|
|
543
|
+\def\endncolumn{\end{tabular*}}
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
547
|
+% \employer{text} defines employer to be text
|
|
548
|
+% \location{text} defines location to be text
|
|
549
|
+% \dates{text} defines dates to be text
|
|
550
|
+% \title{text} defines title to be text
|
|
551
|
+% \body
|
|
552
|
+%
|
|
553
|
+
|
|
554
|
+\def\employer#1{\def\@employer{\print@employer{#1}}}
|
|
555
|
+\def\location#1{\def\@location{\print@location{#1}}}
|
|
556
|
+\def\dates#1{\def\@dates{\print@dates{#1}}}
|
|
557
|
+\def\title#1{\def\@title{\print@title{#1}}}
|
|
558
|
+
|
|
559
|
+\let\l@justify\raggedright
|
|
560
|
+\let\r@justify\raggedleft
|
|
561
|
+\let\c@justify\centering
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
565
|
+% \@format{name}{justify}
|
|
566
|
+% will define \print@#1 to print it's one argument
|
|
567
|
+% justified according to #2 which can be
|
|
568
|
+% l = left
|
|
569
|
+% r = right
|
|
570
|
+% c = center
|
|
571
|
+%
|
|
572
|
+% eg.
|
|
573
|
+% \@format{employer}{c}
|
|
574
|
+% is the same as \def\print@employer#1{{\centering #1\par}}
|
|
575
|
+%
|
|
576
|
+\def\@format#1#2{%
|
|
577
|
+ \expandafter\gdef\csname print@#1\endcsname##1{%
|
|
578
|
+ {\csname#2@justify\endcsname##1\par}}
|
|
579
|
+}
|
|
580
|
+
|
|
581
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
582
|
+% this is used to define how the position environment should
|
|
583
|
+% formated.
|
|
584
|
+%
|
|
585
|
+% \begin{format} positioning text \end{format}
|
|
586
|
+% where positioning text may be
|
|
587
|
+% \employer{pos}
|
|
588
|
+% \location{pos}
|
|
589
|
+% \dates{pos}
|
|
590
|
+% \title{pos}
|
|
591
|
+% \body (for the body of the position environment)
|
|
592
|
+% where pos is
|
|
593
|
+% l for left
|
|
594
|
+% r for right
|
|
595
|
+% c for center
|
|
596
|
+% use \\ to break the line
|
|
597
|
+% you don't have to use all of the options.
|
|
598
|
+% on any one line, you should indicate what you want on that line
|
|
599
|
+% and where it should go within its column.
|
|
600
|
+% eg.
|
|
601
|
+% the following prints the employer in the left with the location
|
|
602
|
+% centered within that its column. It then prints the date on the
|
|
603
|
+% right. Then it prints the body of the position environment. Then
|
|
604
|
+% it prints the title centered within its column; as there is only
|
|
605
|
+% one column here it is really just centered.
|
|
606
|
+%
|
|
607
|
+% \begin{format}
|
|
608
|
+% \employer{l}\location{c}\\
|
|
609
|
+% \dates{r}\\
|
|
610
|
+% \body\\
|
|
611
|
+% \title{c}\\
|
|
612
|
+% \end{format}
|
|
613
|
+
|
|
614
|
+\newcounter{numberofcolumns}
|
|
615
|
+\newenvironment{format}{%
|
|
616
|
+ \def\end@line@head{\append@tabular@head{tabular@text}\tabular@text={}%
|
|
617
|
+ \c@numberofcolumns 0}
|
|
618
|
+ \def\end@line@tail{\append@tabular@tail{tabular@text}\tabular@text={}%
|
|
619
|
+ \c@numberofcolumns 0}
|
|
620
|
+ \tabular@text={}
|
|
621
|
+ \tabular@head={}
|
|
622
|
+ \tabular@tail={}
|
|
623
|
+ \c@numberofcolumns 0
|
|
624
|
+ \let\\=\end@line@head
|
|
625
|
+ \def\employer##1{\advance\c@numberofcolumns 1
|
|
626
|
+ \@format{employer}{##1}
|
|
627
|
+ \append@tabular@text{employer}}
|
|
628
|
+ \def\location##1{\advance\c@numberofcolumns 1
|
|
629
|
+ \@format{location}{##1}
|
|
630
|
+ \append@tabular@text{location}}
|
|
631
|
+ \def\dates##1{\advance\c@numberofcolumns 1
|
|
632
|
+ \@format{dates}{##1}
|
|
633
|
+ \append@tabular@text{dates}}
|
|
634
|
+ \def\title##1{\advance\c@numberofcolumns 1
|
|
635
|
+ \@format{title}{##1}
|
|
636
|
+ \append@tabular@text{title}}
|
|
637
|
+ \def\body{\iftoks\tabular@head\undefined@token\then
|
|
638
|
+ \else
|
|
639
|
+ \@append{\noexpand\\}\to\tabular@head
|
|
640
|
+ \skotfi
|
|
641
|
+ \let\\=\end@line@tail}}{}
|
|
642
|
+
|
|
643
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
644
|
+%taken from page 378 of TeXbook but freely hacked
|
|
645
|
+%
|
|
646
|
+% appends the expansion of #1 to the token list #2
|
|
647
|
+
|
|
648
|
+\def\@append#1\to#2{%
|
|
649
|
+ \@ta=\expandafter{#1}%
|
|
650
|
+ \xdef\@append@temp{\the#2\the\@ta}
|
|
651
|
+ \global#2=\expandafter{\@append@temp}%
|
|
652
|
+}
|
|
653
|
+
|
|
654
|
+
|
|
655
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
656
|
+% CHAA006%vaxb.rhbnc.ac.uk@NSS.Cs.Ucl.AC.UK
|
|
657
|
+% texhax.88.078
|
|
658
|
+% is used to see if two token lists are equal
|
|
659
|
+% there must be a better way
|
|
660
|
+%
|
|
661
|
+
|
|
662
|
+\let \then = \empty
|
|
663
|
+\def \iftoks #1#2\then #3\else #4\skotfi{
|
|
664
|
+ \edef \1{\the #1}
|
|
665
|
+ \edef \2{\the #2}
|
|
666
|
+ \ifx \1\2\then #3\else #4\fi}
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
670
|
+% \append@tabular@text{command}
|
|
671
|
+%
|
|
672
|
+% appends command to the end of \tabular@text.
|
|
673
|
+% NOTE: command MUST be a command but without the \
|
|
674
|
+% Eg. \append@tabular@text{relax}
|
|
675
|
+%
|
|
676
|
+% used to define \tabular@text for the tabular environment
|
|
677
|
+% used by append@tabular@head and append@tabular@tail
|
|
678
|
+%
|
|
679
|
+
|
|
680
|
+\def\append@tabular@text#1{%
|
|
681
|
+\iftoks\tabular@text\undefined@token\then
|
|
682
|
+ \global\tabular@text=\expandafter{\csname @#1\endcsname}
|
|
683
|
+\else
|
|
684
|
+ \@append{&}\to\tabular@text
|
|
685
|
+ \@append{\csname @#1\endcsname}\to\tabular@text
|
|
686
|
+\skotfi
|
|
687
|
+}
|
|
688
|
+
|
|
689
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
690
|
+% append@tabular@head
|
|
691
|
+%
|
|
692
|
+% appends command to the end of \tabular@text@head
|
|
693
|
+% NOTE: command MUST be a command but without the \
|
|
694
|
+% Eg. \append@tabular@head{relax}
|
|
695
|
+%
|
|
696
|
+% used to define \tabular@head for the tabular environment
|
|
697
|
+% used by the position environment
|
|
698
|
+%
|
|
699
|
+\def\append@tabular@head#1{%
|
|
700
|
+ \ifnum\the\c@numberofcolumns=0\relax
|
|
701
|
+ \else
|
|
702
|
+ \iftoks\tabular@head\undefined@token\then
|
|
703
|
+ \relax
|
|
704
|
+ \else
|
|
705
|
+ \@append{\noexpand\\}\to\tabular@head
|
|
706
|
+ \@append{\noexpand\penalty-\@secpenalty}\to\tabular@head
|
|
707
|
+ \skotfi
|
|
708
|
+ \@append{\noexpand\begin{ncolumn}}\to\tabular@head
|
|
709
|
+ \@append{\expandafter{\the\c@numberofcolumns}}\to\tabular@head
|
|
710
|
+ \@append{\the\csname#1\endcsname}\to\tabular@head
|
|
711
|
+ \@append{\noexpand\end{ncolumn}}\to\tabular@head
|
|
712
|
+ \fi
|
|
713
|
+}
|
|
714
|
+
|
|
715
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
716
|
+% append@tabular@tail
|
|
717
|
+%
|
|
718
|
+% appends command to the end of \tabular@text@htail
|
|
719
|
+% NOTE: command MUST be a command but without the \
|
|
720
|
+% Eg. \append@tabular@tail{relax}
|
|
721
|
+%
|
|
722
|
+% used to define \tabular@tail for the tabular environment
|
|
723
|
+% used by the position environment
|
|
724
|
+%
|
|
725
|
+\def\append@tabular@tail#1{%
|
|
726
|
+ \ifnum\the\c@numberofcolumns=0\relax
|
|
727
|
+ \else
|
|
728
|
+ \iftoks\tabular@tail\undefined@token\then
|
|
729
|
+ \else
|
|
730
|
+ \@append{\noexpand\\}\to\tabular@tail
|
|
731
|
+ \@append{\noexpand\penalty-\@secpenalty}\to\tabular@tail
|
|
732
|
+ \skotfi
|
|
733
|
+ \@append{\noexpand\begin{ncolumn}}\to\tabular@tail
|
|
734
|
+ \@append{\expandafter{\the\c@numberofcolumns}}\to\tabular@tail
|
|
735
|
+ \@append{\the\csname#1\endcsname}\to\tabular@tail
|
|
736
|
+ \@append{\noexpand\end{ncolumn}}\to\tabular@tail
|
|
737
|
+ \fi
|
|
738
|
+}
|
|
739
|
+
|
|
740
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
741
|
+% put the actual job descriptions here
|
|
742
|
+% \begin{postion} ... \end{position}
|
|
743
|
+% in the ... describe the position.
|
|
744
|
+% don't put the \dates \location etc in here. define them before hand
|
|
745
|
+\newenvironment{position}%
|
|
746
|
+ {%
|
|
747
|
+ \begingroup
|
|
748
|
+ \par
|
|
749
|
+ \the\tabular@head
|
|
750
|
+% \addpenalty{-\@secpenalty}% bad place for a page break
|
|
751
|
+ \penalty -\@secpenalty % bad place for a page break
|
|
752
|
+ \penalty 10000
|
|
753
|
+ \ignorespaces
|
|
754
|
+ }{%
|
|
755
|
+ \the\tabular@tail
|
|
756
|
+% \addpenalty{\@secpenalty}% good place for a page break
|
|
757
|
+ \penalty \@secpenalty % good place for a page break
|
|
758
|
+ \endgroup
|
|
759
|
+}
|
|
760
|
+
|
|
761
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
762
|
+% DEFAULTS: (the rest of them)
|
|
763
|
+%
|
|
764
|
+% centered name
|
|
765
|
+% overlapped section titles
|
|
766
|
+%
|
|
767
|
+% format is:
|
|
768
|
+% title employer
|
|
769
|
+% location dates
|
|
770
|
+% body
|
|
771
|
+% with everything in the left of its column
|
|
772
|
+
|
|
773
|
+\@secpenalty = -500
|
|
774
|
+\topmargin 0pt
|
|
775
|
+\headheight 0pt
|
|
776
|
+\headsep 0pt
|
|
777
|
+\textheight 9in
|
|
778
|
+\parindent 0pt
|
|
779
|
+\topmargin 0in
|
|
780
|
+\oddsidemargin 0pt
|
|
781
|
+\evensidemargin 0pt
|
|
782
|
+\marginparwidth 0pt
|
|
783
|
+\parindent 0pt
|
|
784
|
+\parskip \baselineskip
|
|
785
|
+\setcounter{secnumdepth}{0}
|
|
786
|
+\def\@listI{\leftmargin\leftmargini
|
|
787
|
+\topsep 0pt
|
|
788
|
+\parskip 0pt
|
|
789
|
+\partopsep 10pt plus 2pt
|
|
790
|
+\parsep 2pt plus 2pt
|
|
791
|
+\itemsep \parsep}
|
|
792
|
+
|
|
793
|
+\pagestyle{empty} % don't want page numbers
|
|
794
|
+
|
|
795
|
+\begin{format}
|
|
796
|
+\title{l}\employer{r}\\
|
|
797
|
+\location{l}\dates{r}\\
|
|
798
|
+\body\\
|
|
799
|
+\end{format}
|
|
800
|
+
|
|
801
|
+\let\section\@@section
|
|
802
|
+
|
|
803
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
804
|
+
|
|
805
|
+% @brief LaTeX2e Resume Style Config
|
|
806
|
+% @url http://linux.dsplabs.com.au/?p=54
|
|
807
|
+% @date Decemebr 2007
|
|
808
|
+% @author Kamil K Wojcicki
|
|
809
|
+% @info This a fusion of resume template code by Chris Paciorek
|
|
810
|
+% (url: http://www.biostat.harvard.edu/~paciorek/computingTips/Latex_template_creating_CV_.html)
|
|
811
|
+% and res.cls class by Michael DeCorte.
|
|
812
|
+% I have merged these for educational purposes only.
|
|
813
|
+
|
|
814
|
+\oddsidemargin -11mm
|
|
815
|
+\evensidemargin -11mm
|
|
816
|
+%\textwidth=150mm
|
|
817
|
+\textwidth=154mm
|
|
818
|
+\itemsep=0cm
|
|
819
|
+\parsep=0cm
|
|
820
|
+\topmargin -12mm
|
|
821
|
+%\textheight 265mm
|
|
822
|
+\textheight 275mm
|
|
823
|
+
|
|
824
|
+\newenvironment{list1}{
|
|
825
|
+ \begin{list}{\ding{113}}{%
|
|
826
|
+ \setlength{\itemsep}{0in}
|
|
827
|
+ \setlength{\parsep}{0in} \setlength{\parskip}{0in}
|
|
828
|
+ \setlength{\topsep}{0in} \setlength{\partopsep}{0in}
|
|
829
|
+ \setlength{\leftmargin}{0in}}}{\end{list}}
|
|
830
|
+
|
|
831
|
+\newenvironment{list2}{
|
|
832
|
+ \begin{list}{$\bullet$}{%
|
|
833
|
+ \setlength{\itemsep}{0in}
|
|
834
|
+ \setlength{\parsep}{0in} \setlength{\parskip}{0in}
|
|
835
|
+ \setlength{\topsep}{0in} \setlength{\partopsep}{0in}
|
|
836
|
+ \setlength{\leftmargin}{0.25in}}}{\end{list}}
|
|
837
|
+
|
|
838
|
+%\newcommand{\mysidestyle}{\footnotesize\sc}
|
|
839
|
+\newcommand{\mysidestyle}{\small\sc}
|
|
840
|
+\newcommand{\myheadingstyle}{\sl}
|
|
841
|
+\newcommand{\mysubheadingstyle}{\sl}
|
|
842
|
+
|
|
843
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
844
|
+
|