Advertisement
fortin

LaTeX resume class

Jun 6th, 2023
1,514
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Latex 25.93 KB | Writing | 0 0
  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>.}
  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.  
  845.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement