\NeedsTeXFormat{LaTeX2e} \ProvidesClass{cv}[1999/10/12 class file ``cv'' to create Curriculum Vitae] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% (c) Copyright 1999, Alan Cibils, acibils@american.edu. All rights %% reserved. %% %% This file is based on vita.cls by Andrej Brodnik, %% ABrodnik@UWaterloo.CA. %% %% In vita.cls, Andrej specifically states: %% %% " This is a generated file. Permission is granted to to customize the %% declarations in this file to serve the needs of your installation. %% However, no permission is granted to distribute a modified version of %% this file under its original name. " %% %% Since I have modified vita.cls substantially, and to respect Andrej's %% request, I have renamed the class file to cv.cls. However, anyone %% familiar with vita.cls will see my obvious debt to the author of that file. %% %% This file was created mainly with economists in mind (see cvEconomics.clo %% for the options available), however, it should be easily customizable for %% use in any other profession. %% %% Like Andrej, I grant permission to customize declarations in this file to %% to suit your needs or those of your institution. However, I request that %% that you not circulate modified versions of this file with the same name. %% %% %%--- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % - based on vita.cls by Andrej Brodnik, ABrodnik@UWaterloo.CA. % - 1999/10/12: the first version % % User documentation: This class file only provides basic definitions % =================== of environments, which are then used in class % option files to instantiate entries for different disciplines. Thus, % create your document as follows: % % \documentclass[]{vita} % \begin{document} % \name{Your Name} % \businessAddress{First line \\ second line of bussines address} % \homeAddress{Again \\ multiline address \\ perhaps with phone number} % \begin{vita} % % here comes a real Curriculum Vitae for particular % % see the .clo file for your discipline for the different categories % % and subcategories % \end{vita} % \end{document} % % where it is assumed that file ``cv.clo'' exists and defines % proper categories used in given discipline. For detail explanation on % categories in different disciplines see individual ``.clo'' files. % % The output will have format: % % o on the first page will appear a title ``Curriculum Vitae'' (to % change it, see below under notes -- internationalization) % o below will be the date in month, year format % o below will be your name % o below will be your address or addresses. If you enter one % address (buisness or home) it will be centered. If you enter both % they will be side by side, headed by the strings ``Business address'' % and ``Home address'' respecitvely (to change these strings see % below in notes). % o then will follow the rest of CV as defined by ``.clo'' % file. % o the header of each but first page will include your name and the % page number. % o on the last page in the bottom right you will have the current % date, that is month and year (to change this, see below under % notes). % %------ % % NOTES: If you are making a CV for some other language, you have to % ====== redefine: % - title: % o use command: ``\title{}'' % o default value: ``Curriculum Vitae'' % - date: % o use command: ``\today{})'' % o default value: ``, '' (in English) % - addresses headers: % o use command: ``\HeaderBusiness{}'' % ``\HeaderHome{}'' % o default value: ``Business address'' % ``Home address'' % %------ % % System documentation: class ``cv'' is based on the class % ===================== ``article''. It changes the title into % (see notes) and the name becomes an % author. Individual categories, publications and references are % implemented using ``description'' environment. % %---------------------------------------- %%%% % % Process options and load class article: %--- \let\@optionsToInput=\@empty \DeclareOption*{ \IfFileExists{cv\CurrentOption.clo}% {\edef\@optionToInput{cv\CurrentOption.clo}}% {\PassOptionsToClass{\CurrentOption}{article}} } \ProcessOptions \LoadClass{article} %%%% % % First all definitions: %--- \title{Curriculum Vitae} \renewcommand{\today}{ \ifcase\month\or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi, \space\number\year} \newcommand\HeaderBusiness[1]{\def\@businessAddressHeader{#1}} \HeaderBusiness{Business Address} \newcommand\HeaderHome[1]{\def\@homeAddressHeader{#1}} \HeaderHome{Home Address} %%%% % % Next, header definitions: %--- \date{\relax} \newcommand{\name}[1]{ \renewcommand{\@author}{#1} \markright{\protect\small\@author} } \newcommand{\businessAddress}[1]{\def\@businessAddress{#1}} \businessAddress{} \newcommand{\homeAddress}[1]{\def\@homeAddress{#1}} \homeAddress{} %%%% % % \maketitle command, which prints out the title and the name of person %--- \renewcommand{\maketitle}{\newpage \global\@topnum\z@ % Prevents figures from going at top of page. \begin{center} {\LARGE \@title} \medskip {\normalsize \today} \bigskip \medskip {\large \@author} \end{center} %\medskip \thispagestyle{plain} \gdef\@author{}\gdef\@title{} } %%%% % % ``vita'' environment: %--- \pagestyle{empty} \newenvironment{vita}{ % first page is empty style though the following pages have on the % right side written the name from the \name command \ifx\@author\@empty\@warning{Missing name command}\fi % next we start to layout information. First the title and the % name, \maketitle % followed by one or both addresses, as provided: \ifx\@homeAddress\@empty \begin{center} \@businessAddress \end{center} \else \ifx\@businessAddress\@empty \begin{center} \@homeAddress \end{center} \else \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}ll@{}} \begin{tabular}[t]{@{}l@{}} {\small \@businessAddressHeader:} \\ \@businessAddress \end{tabular} & \begin{tabular}[t]{@{}l@{}} {\small \@homeAddressHeader:} \\ \@homeAddress \end{tabular} \end{tabular*} \fi \fi \bigskip \thispagestyle{empty} }{ % quite at the bottom of last page we have a date \par\nopagebreak\vfill\hfill \today }%end vita environment %%%% % % Curriculum vitae consists of categories which we create using % command: % % \newcategory[The name]{The label} % % where is written in bold character as a normalsize title of % category. It appears at the left margin of a page. If % parameter is missing, it takes the same value as , which, % in turn is used to refer to individual category. For example % commands: % % \newcategory{Name of category} % \newcategory[Name of category]{Name of category} % % have the same result. Now, to use category: % % \newcategory[Some category]{some other name} % % the input has form: % % \begin{some other name} % \item The first item % \item The second one etc. % \end{some other name} % % and the category will have on the output title ``Some category''. % Entries in each category are preceded by \item. % %----- % NOTE: One can use as the names of categories strings in % ===== different languages, but the labels can be the same in % the same language, which is useful if you have a single CV and you % want outputs in different languages. %--- % % The following command reduces the indentation of the nested descriptions. % \setlength{\leftmargini}{0.5em} \def\@newCategory[#1]#2{% \newenvironment{#2}{\bigskip\pagebreak[2]\par \textbf{\normalsize #1}\nopagebreak \begin{description}}{\end{description}\par} } \def\@noNameCategory#1{\@newCategory[#1]{#1}} \def\newcategory{\@ifnextchar[{\@newCategory}{\@noNameCategory}} %%%% % % Inside categories we have different ``kinds'' (such as different % publications), which we create using command \newkind. It has the % same parameters as \newcategory and all comments at command % newcategory are also valid here. %--- \def\@newKind[#1]#2{% \newenvironment{#2}{ \pagebreak[2] \item \textbf{\small #1}\nopagebreak \begin{description} }{ \end{description}\par } } \def\@noNameKind#1{\@newKind[#1]{#1}} \def\newkind{\@ifnextchar[{\@newKind}{\@noNameKind}} %%%% % % There is a special category ``plaincategory'' which entries are % simply listed without any indentation, and in particular, multiple % references are separated by \and command. It can be used for % references. %--- \def\@newPlainCategory[#1]#2{% \newenvironment{#2}{ \medskip\pagebreak[2]\par \textbf{\normalsize #1}\nopagebreak \renewcommand{\and}{ \end{tabular} \item[]\begin{tabular}[t]{l} } \begin{description} \item[] \begin{tabular}[t]{l} }{ \end{tabular} \end{description}\par } } \def\@noNamePlainCategory#1{\@newPlainCategory[#1]{#1}} \def\newplaincategory{\@ifnextchar[{\@newPlainCategory}{\@noNamePlainCategory}} %%%% % % Finally, formatting parameters and the possible option to input: %--- \pagestyle{myheadings} \parindent 0pt \nofiles \ifx\@optionToInput\@empty\relax \else \input \@optionToInput \fi