% \iffalse -*- mode: LaTeX -*- % % curve.dtx --- Doc file for the CurVe package (code and documentation) % % Copyright (C) 2000-2002 Didier Verna. % % PRCS: $Id: curve.dtx 1.17 Wed, 03 Apr 2002 12:59:09 +0200 didier $ % % Author: Didier Verna % Maintainer: Didier Verna % Created: Thu Dec 10 16:04:01 1998 % Last Revision: Mon Jan 21 17:20:40 2002 % % This file is part of CurVe. % % CurVe may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.1 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.1 or later is part of all distributions of LaTeX % version 1999/06/01 or later. % % CurVe consists of the files listed in the file `README'. % % % Commentary: % % Contents management by FCM version 0.1. % % % Code: % %<*driver> \documentclass[a4paper]{ltxdoc} \newcommand{\curve}{% \mbox{\fontfamily{ptm}\fontseries{b}\fontshape{it}\selectfont% C% \hspace{-.3ex}\protect\raisebox{-.3ex}{\textmd{u}}% \hspace{-.1ex}\textmd{r}% \hspace{-.2ex}V% \hspace{-.6ex}\protect\raisebox{-.3ex}{\textmd{e}}}% } % \OnlyDescription % \CodelineIndex % \RecordChanges \begin{document} \DocInput{curve.dtx} \end{document} % % % \fi % % \catcode`\¡=14 % \CheckSum{425} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} % % ^^A $Format: "% \\newcommand{\\version}{v$Version$}"$ % \newcommand{\version}{v1.2} % ^^A $Format: "% \\newcommand{\\releasedate}{$ReleaseDate$}"$ % \newcommand{\releasedate}{2002/04/03} % ^^A $Format: "% \\newcommand{\\packagecopyright}{$LaTeXCopyright$}"$ % \newcommand{\packagecopyright}{Copyright \copyright{} 2000-2002 Didier Verna} % \newcommand{\auctex}{AUC-\TeX} % \MakeShortVerb{\|} % \date{\today} % \title{\curve{} -- a \LaTeXe{} class package for making \textbf{Cur}riculum % \textbf{V}ita\textbf{e}'s. \thanks{This document describes \curve{} % \version, release date \releasedate.}} % \author{Didier Verna\\ % \texttt{mailto:didier@lrde.epita.fr}\\ % \texttt{http://www.lrde.epita.fr/\~{}didier}} % \maketitle % % % \begin{abstract} % \curve{} provides a \LaTeXe{} class that hopefully will make your life % easier when you want to write your CV. It provides you with a set of % commands to create rubrics, entries in these rubrics etc. \curve{} will then % properly format your CV for you (possibly splitting it onto multiple pages), % which is usually the most painful part of CV writing. Another nice feature % of \curve{} is its ability to manage different CV ``flavors'' % simultaneously. It is in fact often the case that you want to maintain % slightly divergent versions of your CV at the same time, in order to % emphasize on different aspects of your background.\par % The \curve{} package is \packagecopyright{}, and distributed under the terms % of the LPPL license. % \end{abstract} % % % \section{Overview} % The \curve{} package provides you with a document class for writing % curriculum vitae's. The primary purpose of this package is to offer a set of % predefined commands to specify the contents of your CV, while removing from % you the burden of formatting it. This has two important consequence however: % \curve{} will impose that you conform to its document structuring scheme, % and will expect that you like the way it formats things :-). If you prefer % another structure of your CV, or if you don't like the formatting % (although it is highly configurable), then \curve{} is probably not for % you.\par % Once you have installed \curve{}, you might want to start with processing % the example file \texttt{cv.tex}. This will give you an idea of what a non % customized CV looks like with \curve. You can also throw an eye to my own CV, % which is written with \curve{} and has some more fancy hacking on top of it. % It's in French, but only the appearance is important for you\ldots. My CV % can be found at \texttt{http://www.lrde.epita.fr/\~{}didier/perso/cv.php}. % % \subsection{Document Layout} % A \curve{} CV begins with two optional headers (upper left and upper right) % in which you usually put your name, address, email, whether you're married % and so on. These headers will respectively be left and right aligned. After % these headers come an optional title and/or subtitle, which will be centered % on the page. % \subsubsection{Rubrics} % The remaining of the document is composed of sections called ``rubrics'' in % the \curve{} terminology. A rubric represents a major topic that you want % to detail in your CV. Typical rubrics are ``Education'', ``Professional % Experience'' and the like. Rubrics have a title (which will be centered) % and appear under the form of properly aligned ``entries'' (see below). If a % rubric has to be split across different pages, its title will be repeated % automatically. % \subsubsection{Entries} % An entry is % an item of information related to the rubric under which it appears. An % entry has a ``contents'', and an optional ``key'' under which it is % classified. For instance, under the ``Education'' rubric, you could state % that you got a Ph.D. in computer science in the year 2000. In that case, the % year would be the entry's key, and the ``Ph.D. in computer science'' part % would be the entry's contents. \curve{} aligns both keys and contents % together. Keys are optional in order for you to classify several entries % together (without repeating the same key over and over again). % \subsubsection{Subrubrics} % Additionally, you might want to further split your rubrics into % ``subrubrics''. For instance, in my own CV, I have a ``Professional % Experience'' rubric, with three subrubrics: ``Teaching'', ``Research'' and % ``Development''. This can be accomplished with a special command. % Subrubrics are displayed in alignment with the entries' contents, but % formatted differently so that they remain distinguishable. % % \subsection{Document Structure} % \subsubsection{Source File Splitting} % \curve{} is based on the \texttt{LTXtable} package by David Carlisle. I % won't go into gory details, but this has an important implication: % \textbf{each rubric must be in its own separate file}. In other words, your % CV's main source file is really a skeleton whose major task is to include % the different rubrics from their respective source files.\par % This is not much of a hassle, really, and it actually made my life easier % when I implemented the ``flavor'' mechanism described below. % \subsubsection{The ``flavor'' Mechanism} % It is often desirable to maintain several slightly divergent versions of % one's CV at the same time. For instance, when I was looking for a job some % time ago, I had a version of my CV emphasizing on Artificial Intelligence, % and another emphasizing on Distributed Virtual Reality. Only the title and % some entries in the ``Professional Experience'' rubric were a bit % different; the main skeleton basically remained the same.\par % \curve{} provides an easy-to-use mechanism for maintaining different % ``flavors'' of your CV at the same time. You basically write different % versions of (some of) your rubrics in different files, tell \curve{} which % flavor you want to format (\curve{} can even ask you which one to use % directly) and that's it. \curve{} will use the global skeleton, and whenever % it finds a rubric file specialized for that particular flavor, it will use % it. Otherwise, it will simply fall back to the default one (no particular % flavor). % % % \section{Using \curve{}} % First of all, please note that the \texttt{ltxtable} and \texttt{calc} % packages are required because \curve{} needs them. You don't have to call % them explicitly though. As long as \LaTeXe{} can locate them, they will be % used automatically. % % \subsection{Writing the Skeleton File} % Say |\documentclass[|\meta{options}|]{curve}| at the beginning of your % skeleton file in order to use \curve. % % \subsubsection{Making Headers} % \DescribeMacro{\leftheader}\DescribeMacro{\rightheader} % The |\leftheader| and |\rightheader| macros take one mandatory argument % which defines respectively the contents of the upper left and upper right % headers. They can be used in the document's preamble only. The headers will % respectively be flushed to the left and to the right. % \par % \DescribeMacro{\headerspace} % |\headerspace| is the amount of extra vertical space to put after the % headers. This is a \LaTeX{} length that defaults to \texttt{10pt}.\par % \DescribeMacro{\makeheaders} % If you have defined headers, make them appear by calling |\makeheaders| just % after the beginning of your document. Note that calling this macro assumes % that you have previously defined both headers (possibly empty, though). % Otherwise, an error will be signaled. % % \subsubsection{Making Titles} % \DescribeMacro{\title}\DescribeMacro{\subtitle} % The |\title| and |\subtitle| macros take one mandatory argument which % define respectively your CV's title and subtitle. They can be used in % the document's preamble only. These titles will be centered on the page.\par % \DescribeMacro{\titlespace} % |\titlespace| is the amount of extra vertical space to put after the % title(s). This is a \LaTeX{} length that defaults to \texttt{0pt}.\par % \DescribeMacro{\titlefont}\DescribeMacro{\subtitlefont} % The |\titlefont| and |\subtitlefont| macros take one mandatory argument % which redefine the fonts to use for the title and the subtitle. They can be % used in the document's preamble only. By default, |\Huge\bfseries| and % |\Huge\itshape| are used respectively.\par % \DescribeMacro{\maketitle} % If you have defined a title (and possibly a subtitle), make it (them) appear % by calling |\maketitle| after the beginning of your document, and just after % |\makeheaders| if you happen use it. It is possible to omit the subtitle, % but if you call |\maketitle| without having defined at least a title, an % error will be signaled. % % \subsubsection{Choosing a Flavor} % As you already know, each rubric must reside in its own separate file. For % instance, if you have a ``Professional Experience'' rubric, you would write % its contents into a file named \texttt{experience.tex}. The flavor mechanism % works by assigning a pre-extension to rubric file names. For instance, % suppose you want to make a special flavor of your CV emphasizing on % ``distributed virtual reality''. You would call this flavor ``dvr'', and % write the modified ``Professional Experience'' rubric into a file named % \texttt{experience.dvr.tex}.\par % \DescribeMacro{\flavor} % The |\flavor| macro takes one mandatory argument which specifies the flavor % to use (in our example, \texttt{dvr}). Although this might be of little use, % it is possible to change the flavor anywhere, even right in the middle of % your CV's skeleton.\par % \DescribeEnv{ask} % Instead of using the |\flavor| macro, you can make \curve{} ask you at % run-time which flavor to use by passing the \texttt{ask} option to it. % % \subsubsection{Including Rubrics} % Apart from making headers and titles, the body of your skeleton file will % usually contain nothing but directives to include the different rubrics of % your CV.\par % \DescribeMacro{\makerubric} % To include a rubric in your document, use |\makerubric|. This macro takes % one mandatory argument which specifies the rubric to include at that point. % The argument actually corresponds to the rubric file name \textbf{without % any extension}. Continuing our previous example, you would say % |\makerubric{experience}|. First, \curve{} will try to find such a rubric % file specific for the current flavor in use, (e.g. % \texttt{experience.dvr.tex}). If that fails, it will fall back to a % non-flavored file (here, \texttt{experience.tex}). This allows you to % specialize only the required rubrics and use the default ones otherwise. % % \subsection{Writing a Rubric File} % \subsubsection{The \texttt{rubric} Environment} % \DescribeEnv{rubric} % The whole contents of a rubric file must be enclosed in a \texttt{rubric} % environment. This environment takes one mandatory argument which specifies % the rubric's title.\par % When a rubric crosses several pages, its title is restated with a % ``continuation'' text appended. % % \DescribeMacro{\rubricfont} % The |\rubricfont| macro takes one mandatory argument which redefines the % font to use for rubric titles. By default, |\Large\bfseries| is used.\par % \DescribeMacro{\rubricspace} % |\rubricspace| is the amount of extra vertical space to put after the rubric % title. This is a \LaTeX{} length that defaults to \texttt{10pt}.\par % % \subsubsection{Making Rubric Entries} % \DescribeMacro{\entry} % You create entries in your rubrics by calling the |\entry| macro. The first % (optional) argument specifies the key, and the second (mandatory) one % specifies the contents. Both keys and contents are aligned within each % rubric.\par % \DescribeMacro{\entry*} % Actually, the |\entry| macro was somewhat ill-designed at the first place. % The |rubric| environment pretty much behaves as an |itemize| one, hence the % idea of using an |\item|-like syntax. As of version 1.2, \curve{} provides % an |\entry*| macro which behaves like |\item| in lists: it takes the same % first optional argument as the non starred version, but has no other % argument. The entry's contents simply consists of the text following the % macro call, up to the next |\entry|, |\entry*| or |\subrubrubric| (see % below) call. % % \DescribeMacro{\keyfont} % The |\keyfont| macro takes one mandatory argument which redefines the font % to use for the entries' keys. By default, the standard document font is % used.\par % \DescribeMacro{\prefix} % Each entry's contents can be prefixed with a visual clue (a symbol for % instance). This comes in handy to make a clear distinction between % different entries sharing the same key (which is not repeated). The % |\prefix| macro takes one mandatory argument which redefines the prefix to % use. By default, |\textbullet| is used. % % \subsubsection{Making Subrubrics} % \DescribeMacro{\subrubric} % Within a single rubric, you can further separate entries into subrubrics. % In order to do this, the |\subrubric| macro is provided. Its mandatory % argument specifies the subrubric's title. Subrubrics are aligned with the % entries' contents.\par % \DescribeMacro{\subrubricfont} % The |\subrubricfont| macro takes one mandatory argument which redefines the % font to use for the subrubrics. By default, |\Large\itshape| is used.\par % \DescribeMacro{\subrubricspace} % \DescribeMacro{\subrubricbeforespace} % |\subrubricspace| controls the amount of extra vertical space to put after % subrubrics. This is a \LaTeX{} length that defaults to \texttt{5pt}. % |\subrubricbeforespace| controls the amount of extra vertical space to put % \textit{before} a subrubric when there are entries above. This is a \LaTeX{} % length that defaults to \texttt{10pt}. % % \subsection{Bibliography Support} % Most scientists include their own list of publications in their CV. The % first thing you can do is create your own bibliography manually, and % although this may appear boring, I actually encourage people to do so for at % least three reasons (only my opinion of course): % \begin{itemize} % \item A CV should be strictly formatted and coherent in layout. Bibliography % is no exception to this rule. In other words, it is prettier to have your % publications formatted like the rest of your CV. % \item Automatic bibliography generation tools produce references, which is % silly in a CV because you don't actually reference your papers anywhere % (or do you ?). So better to sort them another way, like, by year of % publication as I do in my own CV. % \item Manually adding, like, what ? Half a dozen papers a year in your CV is % not that much of a burden after all. % \end{itemize} % % Some people however have expressed the wish of having standard bibliography % support in \curve. Version 1.2 provides that. % \DescribeEnv{thebibliography} % \DescribeMacro{\bibitem} % The standard |thebibliography| environment is now supported along with its % |\bibitem| companion. The behavior is actually that of a |rubric| % environment with its |\entry*| companion. This fact has two implications: % firstly, the argument to the environment is unused in \curve{} (but remains % for compatibility with the rest of \LaTeX) because \curve{} itself formats % the keys and contents properly aligned. Secondly, the bibliographic % environment \textbf{must} reside in its own file, as any other rubric. Don't % forget that if you happen to write the environment manually.\par % \DescribeMacro{\nocite} % \DescribeMacro{\bibliographystyle} % \DescribeMacro{\bibliography} % If you want to use \BibTeX, that's also possible of course. Do it as you % would do in a random paper. You will probably issue a |\nocite{*}| command % followed by a call to |\bibliography|. In \curve, this uses the |bbl| file % as a rubric one. % % \subsection{Selecting the language} % \DescribeEnv{english} % \DescribeEnv{french} % \DescribeEnv{francais} % \DescribeEnv{spanish} % \DescribeEnv{italian} % \DescribeEnv{german} % \DescribeEnv{ngerman} % \curve{} currently supports English, French, Spanish, Italian and German. % You can select the language you want to use by using the corresponding % option. The \texttt{french} and \texttt{francais} options are synonyms. The % \texttt{german} and \texttt{ngerman} options are currently equivalent.\par % If you want a finer grain on the language-dependent parts of \curve, the % following macros are provided.\par % \DescribeMacro{\continuedname} % The |\continuedname| macro takes one mandatory argument which redefines the % continuation text output when rubrics extend across several pages. By % default, ``\meta{space}(continued)'' is used in English. Although this might % be of little use, it is possible to change the continuation text in the % middle of your document, provided that you do so outside the |rubric| % environment.\par % \DescribeMacro{\listpubname} % The |\listpubname| macro takes one mandatory argument which redefines the % title of the bibliographic section (when you use the provided bibliography % support). By default, ``List of Publications'' is used in English. % % \section{Standard Class Options} % \curve{} comes with the usual standard class options, restated below.\par % % \subsection{Paper Size} % \DescribeEnv{a4paper} % \DescribeEnv{a5paper} % \DescribeEnv{b4paper} % \DescribeEnv{letterpaper} % \DescribeEnv{legalpaper} % \DescribeEnv{executivepaper} % \DescribeEnv{landscape} % The \texttt{a4}, \texttt{a5}, \texttt{b4}, \texttt{letter}, \texttt{legal} % and \texttt{executive} ``paper'' options allow you to select the type of % page format you want. By default, \texttt{letterpaper} is used. The % \texttt{landscape} options switches the horizontal and vertical settings. % I'm not sure why I propose this option. Nobody wants to write a CV in % landscape mode, right ?\par % % \subsection{Font Size} % \DescribeEnv{10pt} % \DescribeEnv{11pt} % \DescribeEnv{12pt} % The \texttt{10pt}, \texttt{11pt} and \texttt{12pt} options let you choose % the size of the default font you want to use. By default, \texttt{10pt} is % used. % % \subsection{Output Mode} % \DescribeEnv{final} % \DescribeEnv{draft} % In \texttt{draft} mode, a black rule will be drawn at the end of overfull % lines (as done by standard classes). Due to \curve{} using the % \texttt{LTXtable} package, a call to |\setlongtables| is performed in % \texttt{final} mode. Please refer to the next section for more information % on this. By default, \texttt{final} is used. % % % \section{Hints, Tricks, Tips} % Here are some tips that I use for my own CV. You might find them of some % interest.\par % % \subsection{Page Geometry} % First of all, it is common to have very thin margins in curriculum vitae's. % \curve{} does not do anything special about this because I don't think that % belongs to its duty. The \texttt{geometry} package comes in handy if you % want to reduce your margins. % % \subsection{The \texttt{ltx} Extension} % Personally, I prefer to keep \texttt{.tex} for \TeX{} files, and use the % \texttt{ltx} extension for \LaTeX. This is supported by \curve{} which will % actually prefer \texttt{ltx} files over \texttt{tex} ones, especially when % including rubrics. To be more precise, suppose you are building a flavor % \texttt{flv} of your CV. A call to |\makerubric{foo}| will try to use the % following files in that order:\\ % \texttt{foo.flv.ltx}\\ % \texttt{foo.flv.tex}\\ % \texttt{foo.ltx}\\ % \texttt{foo.tex}\par % % \subsection{Longtables} % The \texttt{LTXtable} package on which \curve{} is based is a mix of % \texttt{tabularx} and \texttt{longtables}. If you read the documentation of % the later, you will discover that for table width computing reasons % (especially when a table crosses several pages), \LaTeX{} has to be called % twice, sometimes three times, with the last run involving a call to % |\setlongtables|.\par % Normally, you shouldn't have problems with \curve{} because all tables are % set to the maximum width. However, for safety reasons (I mean, just to be % sure\ldots), \curve{} automatically calls |\setlongtables| in \texttt{final} % mode. If you experiment problems with the formatting, you should process % your document once or twice in draft mode, and a second or third time in % final mode.\par % Ah, and also, since you're basically working in tabular environments, don't % forget that you are not allowed to use the |\\| command\ldots % % % \subsection{Managing Different Flavors} % If you maintain different flavors of your CV at the same time, you probably % want to rebuild all of them after any modification. Since you have a single % skeleton file for all of them (say, \texttt{cv.tex}), the output file will % have the same name for all flavors (say, \texttt{cv.dvi}). This can bother % you if you want all flavors of your formatted CV available at the same % time.\par % To remedy this problem, I usually use the \texttt{ask} option and a % makefile to build the different flavors and move the output file to % flavor-specific name. Here is a typical makefile target that should clarify % (or maybe darken ?) what I am saying: % \begin{verbatim} %cv.$(FLAVOR).dvi: cv.ltx $(RUBRICS) % echo $(FLAVOR) | latex cv.ltx % mv cv.dvi $@ % \end{verbatim} % As you can see, the shell is responsible for answering the question. Of % course, you have to build the default version last. % % \subsection{More On Flavors} % In order to implement the flavor mechanism, the \LaTeX{} macro |\input| has % been redefined to look for flavored files first. This is actually very nice % because you can use it if you want to make different flavors of text that % does not belong in rubrics.\par % For instance, suppose you want a special version of the subtitle of your CV % for the flavor \texttt{flv}. Create a file called \texttt{subtitle.flv.ltx} % and put something like ``|\subtitle{special subtitle}|'' in it. Do something % similar for the default subtitle. Now go to the skeleton of your CV, and % write |\input{subtitle}| in the preamble. That's it. You'll have different % subtitles in your different CV flavors. % % % \section{\auctex{} support} % \auctex{} is a powerful major mode for editing \TeX{} documents in % \textsf{Emacs} or \textsf{XEmacs}. In particular, it provides automatic % completion of macro names once they are known. \curve{} supports \auctex{} % by providing a style file named \texttt{curve.el} which contains \auctex{} % definitions for the relevant macros. This file should be installed to a % location where \auctex{} can find it (usually in a subdirectory of your % \LaTeX{} styles directory). Please refer to the \auctex{} documentation for % more information on this.\par % As of version 1.2, \curve{} has an improved \auctex{} support. Most notably, % the command |M-Ret| will insert an |\entry*| macro within a |rubric| % environment. Also, the |\makerubric| macro handling now removes both the % file extension and the file flavor extension. % % % \section{Changes} % \begin{itemize} % \item[v1.2] Support for standard bibliography mechanism(s)\\ % New macro |\entry*|\\ % Improvements in \auctex{} support\\ % Support for German thanks to Harald Harders ||\\ % Support for Spanish thanks to Agust\'in Mart\'in || % \item[v1.1] Support for Italian thanks to Riccardo Murri ||. % \end{itemize} % % % \StopEventually{\par Well, I think that's it. Enjoy using \curve{}! % \vfill\hfill\small\packagecopyright{}.} % % % \section{The Code} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} ¡ $Format: "\\ProvidesClass{curve}[$ReleaseDate$ v$Version$"$ \ProvidesClass{curve}[2002/04/03 v1.2 Curriculum Vitae class for LaTeX2e] \RequirePackage{ltxtable} \RequirePackage{calc} % \end{macrocode} % % \subsection{The Rubric File} % We don't want to output an extra |subrubricbeforespace| if no entry is % present before the subrubric. This is done by using an |\@beforespace| % command which is set to |0pt| at the beginning of each rubric, and switched % to the proper value when an entry is added.\par % The |@nextentry| command is used to implement |\entry*| while maintaining % backward compatibility with |\entry| and |\subrubric|. A new entry or % a subrubric might have to close the preceding entry if it was opened using % the starred form. % \begin{macrocode} \gdef\@nextentry{} % \end{macrocode} % \subsubsection{Entries} % \DescribeMacro{\keyfont} % \DescribeMacro{\prefix} % \DescribeMacro{\entry} % \begin{macrocode} \def\@keyfont{} \newcommand\keyfont[1]{\gdef\@keyfont{#1}} \def\@prefix{\textbullet} \newcommand\prefix[1]{\gdef\@prefix{#1}} \newcommand\@entry[2][]{% \@nextentry \gdef\@nextentry{}% \gdef\@beforespace{-\subrubricbeforespace}% #1&\@prefix\\} \newcommand\@sentry[1][]{% \@nextentry \gdef\@nextentry{\\}% \gdef\@beforespace{-\subrubricbeforespace}% #1&\@prefix&} \newcommand\entry{\@ifstar{\@sentry}{\@entry}} % \end{macrocode} % \subsubsection{Subrubrics} % \DescribeMacro{\subrubricfont} % \DescribeMacro{\subrubricbeforespace} % \DescribeMacro{\subrubricspace} % \DescribeMacro{\subrubric} % \begin{macrocode} \def\@subrubricfont{\Large\itshape} \newcommand\subrubricfont[1]{\gdef\@subrubricfont{#1}} \newlength\subrubricbeforespace \setlength\subrubricbeforespace{10pt} \newlength\subrubricspace \setlength\subrubricspace{5pt} \newcommand\subrubric[1]{% \@nextentry \gdef\@nextentry{}% &\multicolumn{2}{l}{% \raisebox{\@beforespace}{\@subrubricfont#1}% \par\vspace{\subrubricspace}}\\} % \end{macrocode} % \subsubsection{Rubrics} % It seems that making boxes of exactly |\textwidth| inside a table row makes % \texttt{ltxtable} think that the table width changes all the time. So let's % use |\textwidth| slightly reduced instead. % \DescribeMacro{\rubricfont} % \DescribeMacro{\rubricspace} % \DescribeMacro{\continuedname} % \DescribeEnv{rubric} % \begin{macrocode} \newlength{\@almosttextwidth} \AtBeginDocument{\setlength\@almosttextwidth{\textwidth-\hfuzz}} \def\@rubricfont{\Large\bfseries} \newcommand\rubricfont[1]{\gdef\@rubricfont{#1}} \newlength\rubricspace \setlength\rubricspace{10pt} \def\@rubrichead#1{% \multicolumn{3}{@{}c}{% \@rubricfont% \makebox[\@almosttextwidth][c]{#1}\par\vspace\rubricspace}\\} \newcommand\continuedname[1]{\gdef\@continuedname{#1}} \newenvironment{rubric}[1]{% %% \begin{rubric} \gdef\@beforespace{0pt}% \gdef\@nexentry{}% \begin{longtable}{@{}>{\@keyfont}ll@{~}X} \@rubrichead{#1} \endfirsthead \@rubrichead{#1\@continuedname} \endhead}{% %% \end{rubric} \@nextentry \end{longtable}} % \end{macrocode} % % \subsection{The Skeleton File} % % \subsubsection{Headers} % If the user calls |\makeheaders| without specifying headers first, an error % will be generated. The same applies for the title (not the subtitle), but % this is already managed by \LaTeX{} itself. % \DescribeMacro{\leftheader} % \DescribeMacro{\rightheader} % \DescribeMacro{\headerspace} % \DescribeMacro{\makeheaders} % \begin{macrocode} \def\@leftheader{% \ClassError{curve}{No \protect\leftheader\space given}{% You have called \protect\makeheaders, % but you didn't provide a left header.\MessageBreak Type X to quit, add a call to \protect\lefheader\space % in the preamble of your CV,\MessageBreak and rerun LaTeX.}} \newcommand\leftheader[1]{\gdef\@leftheader{#1}} \@onlypreamble\leftheader \def\@rightheader{% \ClassError{curve}{No \protect\rightheader\space given}{% You have called \protect\makeheaders, % but you didn't provide a right header.\MessageBreak Type X to quit, add a call to \protect\rightheader\space % in the preamble of your CV,\MessageBreak and rerun LaTeX.}} \newcommand\rightheader[1]{\gdef\@rightheader{#1}} \@onlypreamble\rightheader \newlength\headerspace \setlength\headerspace{10pt} \newcommand\makeheaders{% \parbox{.5\textwidth}{\@leftheader}% \parbox{.5\textwidth}{\raggedleft\@rightheader}% \par\vspace\headerspace} % \end{macrocode} % \subsubsection{Titles} % \DescribeMacro{\titlefont} % \DescribeMacro{\subtitle} % \DescribeMacro{\subtitlefont} % \DescribeMacro{\titlespace} % \DescribeMacro{\maketitle} % \begin{macrocode} \def\@titlefont{\Huge\bfseries} \newcommand\titlefont[1]{\gdef\@titlefont{#1}} \@onlypreamble\titlefont \@onlypreamble\title \let\@subtitle\@undefined \newcommand\subtitle[1]{\gdef\@subtitle{#1}} \@onlypreamble\subtitle \def\@subtitlefont{\huge\itshape} \newcommand\subtitlefont[1]{\gdef\@subtitlefont{#1}} \@onlypreamble\subtitlefont \newlength\titlespace \setlength\titlespace{0pt} \newcommand\maketitle{% \begin{center} {\@titlefont\@title} \ifx\@subtitle\@undefined\else\\\@subtitlefont\@subtitle\fi \end{center} \vspace\titlespace} % \end{macrocode} % \subsubsection{Rubric Inclusion} % \DescribeMacro{\input} % \DescribeMacro{\makerubric} % \begin{macrocode} \let\@flavor\empty \newcommand\flavor[1]{\gdef\@flavor{#1} \ifx\@flavor\empty\else\edef\@flavor{.\@flavor}\fi} \DeclareOption{ask}{% \typein[\@flavor]{Please specify a CV flavor (none by default):} \ifx\@flavor\empty\else\edef\@flavor{.\@flavor}\fi} \def\@curveinput#1{% \IfFileExists{#1\@flavor.ltx}{\@iinput{#1\@flavor.ltx}}{% \IfFileExists{#1\@flavor.tex}{\@iinput{#1\@flavor.tex}}{% \IfFileExists{#1.ltx}{\@iinput{#1.ltx}}{% \IfFileExists{#1.tex}{\@iinput{#1.tex}}{% \@iinput{#1}}}}}} \renewcommand\input{\@ifnextchar\bgroup\@curveinput\@@input} \newcommand\makerubric[1]{\LTXtable{\textwidth}{#1}} % \end{macrocode} % \subsubsection{Bibliography} % \DescribeMacro{\listpubname} % \begin{macrocode} \let\newblock\par \newcounter{bibcount} \def\@lbibitem[#1]#2{\entry*[\@biblabel{#1}]% \if@filesw{% \let\protect\noexpand% \immediate\write\@auxout{\string\bibcite{#2}{#1}}} \fi% \ignorespaces} \def\@bibitem#1{\entry*[\stepcounter{bibcount}\@biblabel{\thebibcount}]% \if@filesw% \immediate\write\@auxout{\string\bibcite{#1}{\thebibcount}}% \fi% \ignorespaces} \def\bibliography#1{% \if@filesw \immediate\write\@auxout{\string\bibdata{#1}}% \fi \makerubric{\jobname.bbl}} \newcommand\listpubname[1]{\gdef\@listpubname{#1}} \newenvironment{thebibliography}[1]{% \begin{rubric}{\@listpubname} }{% \end{rubric} } % \end{macrocode} % % \subsection{Language Processing} % \begin{macrocode} \DeclareOption{english}{% \continuedname{~(continued)} \listpubname{List of Publications}} \DeclareOption{french}{% \continuedname{~(suite)} \listpubname{Liste des Publications}} \DeclareOption{francais}{% \ExecuteOptions{french}} \DeclareOption{spanish}{% \continuedname{~(contin\'ua)} \listpubname{Lista de Publicaciones}} \DeclareOption{italian}{% \continuedname{~(continua)} \listpubname{Pubblicazioni}} \DeclareOption{german}{% \continuedname{~(fortgesetzt)} \listpubname{Verzeichnis der Ver\"offentlichungen}} \DeclareOption{ngerman}{% \ExecuteOptions{german}} % \end{macrocode} % \subsection{Standard Class Processing} % \begin{macrocode} \DeclareOption{a4paper}{ \setlength\paperheight{297mm} \setlength\paperwidth{210mm}} \DeclareOption{a5paper}{ \setlength\paperheight{210mm} \setlength\paperwidth{148mm}} \DeclareOption{b5paper}{ \setlength\paperheight{250mm} \setlength\paperwidth{176mm}} \DeclareOption{letterpaper}{ \setlength\paperheight{11in} \setlength\paperwidth{8.5in}} \DeclareOption{legalpaper}{ \setlength\paperheight{14in} \setlength\paperwidth{8.5in}} \DeclareOption{executivepaper}{ \setlength\paperheight{10.5in} \setlength\paperwidth{7.25in}} \DeclareOption{landscape}{ \setlength\@tempdima{\paperheight} \setlength\paperheight{\paperwidth} \setlength\paperwidth{\@tempdima}} \DeclareOption{10pt}{\def\@ptsize{0}} \DeclareOption{11pt}{\def\@ptsize{1}} \DeclareOption{12pt}{\def\@ptsize{2}} \DeclareOption{draft}{\setlength\overfullrule{5pt}} \DeclareOption{final}{% \setlength\overfullrule{0pt} \setlongtables} \ExecuteOptions{letterpaper,10pt,english,final} \ProcessOptions \input{size1\@ptsize.clo} \setlength\parindent{0pt} \setlength\parskip{0pt} \setlength\tabcolsep{10pt} \raggedbottom \onecolumn % \end{macrocode} % ^^A \PrintChanges % ^^A \PrintIndex % \Finale % % ^^A curve.dtx ends here.