CurV – a LATEX2 class package for making Cur...

38
C u r V e –aL A T E X2 ε class package for making Curricula Vitae Didier Verna mailto:[email protected] http://www.lrde.epita.fr/˜didier v1.16 (2010/12/14) Abstract C u r V e provides a L A T E X2ε 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. C u r V e 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 C u r V e 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. The C u r V e package is Copyright c 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 Didier Verna, and distributed under the terms of the LPPL license. Contents 1 Installation 2 1.1 Extraction ................................ 2 1.2 TDS-compliant layout ......................... 3 1.3 AUC-T E X support ........................... 3 1.4 Examples ................................ 3 2 Overview 3 2.1 Document Layout ............................ 3 2.1.1 Headers ............................. 3 2.1.2 Titles .............................. 4 2.1.3 Rubrics ............................. 4 2.2 Document Structure .......................... 4 2.2.1 Source File Splitting ...................... 4 2.2.2 Flavors ............................. 5 * C u r V e homepage: http://www.lrde.epita.fr/˜didier/software/latex.php#curve 1

Transcript of CurV – a LATEX2 class package for making Cur...

Page 1: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe – a LATEX2ε class package for making

Curricula Vitae∗

Didier Verna

mailto:[email protected]

http://www.lrde.epita.fr/˜didier

v1.16 (2010/12/14)

Abstract

CurVe provides a LATEX2ε class that hopefully will make your life easierwhen you want to write your CV. It provides you with a set of commandsto create rubrics, entries in these rubrics etc. CurVe will then properly formatyour CV for you (possibly splitting it onto multiple pages), which is usuallythe most painful part of CV writing. Another nice feature of CurVe is itsability to manage different CV “flavors” simultaneously. It is in fact oftenthe case that you want to maintain slightly divergent versions of your CV atthe same time, in order to emphasize on different aspects of your background.

The CurVe package is Copyright c© 2000, 2001, 2002, 2003, 2004, 2005,2006, 2007, 2008, 2010 Didier Verna, and distributed under the terms of theLPPL license.

Contents

1 Installation 21.1 Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 TDS-compliant layout . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 AUC-TEX support . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Overview 32.1 Document Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.1.1 Headers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.1.2 Titles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.1.3 Rubrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2 Document Structure . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2.1 Source File Splitting . . . . . . . . . . . . . . . . . . . . . . 42.2.2 Flavors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

∗CurVe homepage: http://www.lrde.epita.fr/˜didier/software/latex.php#curve

1

Page 2: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

3 Using CurVe 53.1 Skeleton File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.1.1 Headers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.1.2 Titles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.1.3 Flavors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.1.4 Rubrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3.2 Rubric Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2.1 The rubric Environment . . . . . . . . . . . . . . . . . . . 83.2.2 Standard Entries . . . . . . . . . . . . . . . . . . . . . . . . 83.2.3 Plain text entries . . . . . . . . . . . . . . . . . . . . . . . . 93.2.4 Invisible entries . . . . . . . . . . . . . . . . . . . . . . . . . 93.2.5 Subrubrics . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.3 Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.3.1 Manual bibliography . . . . . . . . . . . . . . . . . . . . . . 103.3.2 The bibliography environment . . . . . . . . . . . . . . . 103.3.3 BibTEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.3.4 Compatibility concerns . . . . . . . . . . . . . . . . . . . . 11

3.4 Standard Class Features . . . . . . . . . . . . . . . . . . . . . . . . 113.4.1 Page Size and layout . . . . . . . . . . . . . . . . . . . . . . 113.4.2 Font Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.4.3 Output Mode . . . . . . . . . . . . . . . . . . . . . . . . . . 113.4.4 Page styles . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.4.5 Internationalization . . . . . . . . . . . . . . . . . . . . . . 12

4 Hints, Tips’n Tricks 124.1 Page Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.2 Vertical spacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.3 The ltx Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.4 Longtable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.5 Managing Different Flavors . . . . . . . . . . . . . . . . . . . . . . 134.6 More On Flavors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

A Appendix 14A.1 Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . 14A.2 Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15A.3 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

A.3.1 Rubric Files . . . . . . . . . . . . . . . . . . . . . . . . . . . 17A.3.2 Skeleton File . . . . . . . . . . . . . . . . . . . . . . . . . . 22A.3.3 Language Processing . . . . . . . . . . . . . . . . . . . . . . 33A.3.4 Standard Class Processing . . . . . . . . . . . . . . . . . . . 34

1 Installation

1.1 Extraction

If you are building CurVe from the tarball you need to execute the following steps inorder to extract the necessary files. CurVe also requires the DoX package (version2.0, release date 2009/09/21 or later), to build. It is not required to use thepackage.

2

Page 3: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

[pdf]latex curve.ins

[pdf]latex curve.dtx

[pdf]latex curve.dtx

makeindex -s gind curve.idx

[pdf]latex curve.dtx

[pdf]latex curve.dtx

After that, you need to install the generated documentation and style files to alocation where LATEX can find them.

1.2 TDS-compliant layout

For a TDS-compliant layout, the following locations are suggested:

[TEXMF]/tex/latex/curve/curve.cls

[TEXMF]/doc/latex/curve/curve.[pdf|dvi]

1.3 AUC-TEX support

AUC-TEX is a powerful major mode for editing TEX documents in Emacs. Inparticular, it provides automatic completion of command names once they areknown. CurVe supports AUC-TEX by providing a style file named curve.el whichcontains AUC-TEX definitions for the relevant commands. This file should beinstalled in a place where AUC-TEX can find it (usually in a subdirectory of yourLATEX styles directory). Please refer to the AUC-TEX documentation for moreinformation on this.

As of version 1.2, CurVe has an improved AUC-TEX 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 andthe file flavor extension.

1.4 Examples

Once you have installed CurVe, you might want to start with processing the ex-amples in the examples/ directory. This will give you an idea of what a noncustomized 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 hackery on top of it. It’s inFrench, but only the appearance is important for you. My CV can be found athttp://www.lrde.epita.fr/˜didier/about/cv.pdf.

2 Overview

2.1 Document Layout

2.1.1 Headers

A CurVe CV begins with two optional headers (upper left and upper right) inwhich you usually put your name, address, email, whether you’re married and soon. These headers will respectively be left and right aligned. As of version 1.4,

3

Page 4: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

CurVe lets you insert a small identity photo in the headers, either on the left, onthe right, or between them.

2.1.2 Titles

After these headers come an optional title and/or subtitle, which can be centeredon the page, or flushed either left or right.

2.1.3 Rubrics

The remaining of the document is composed of sections called “rubrics” in theCurVe terminology. A rubric represents a major topic that you want to detail inyour CV. Typical rubrics are “Education”, “Professional Experience” and the like.Rubrics have a title (centered by default) and appear under the form of properlyaligned “entries” (see below). If a rubric has to be split across different pages, itstitle will be repeated automatically.

2.1.3.1 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. Forinstance, under the “Education” rubric, you could state that you got a Ph.D. incomputer science in the year 2000. In that case, the year would be the entry’skey, and the “Ph.D. in computer science” part would be the entry’s contents. CurVealigns both keys and contents together. Keys are optional in order for you toclassify several entries together (without repeating the same key over and overagain).

2.1.3.2 Subrubrics

Additionally, you might want to further split your rubrics into “subrubrics”. Forinstance, in my own CV, I have a “Professional Experience” rubric, with threesubrubrics: “Teaching”, “Research” and “Development”. This can be accomplishedwith a special command. Subrubrics are displayed in alignment with the entries’contents by default, but are formatted differently so that they remain distinguish-able.

2.2 Document Structure

2.2.1 Source File Splitting

CurVe is based on the LTXtable package by David Carlisle. I won’t go into gorydetails, but this has an important implication: each rubric must be in its ownseparate file. In other words, your CV’s main source file is really a skeletonwhose major task is to include the different rubrics from their respective sourcefiles.

This is not much of a hassle, really, and it actually made my life easier whenI implemented the “flavor” mechanism described below.

4

Page 5: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

2.2.2 Flavors

It is often desirable to maintain several slightly divergent versions of one’s CV atthe same time. For instance, when I was looking for a job some time ago, I had aversion of my CV emphasizing on Artificial Intelligence, and another emphasizingon Distributed Virtual Reality. Only the title and some entries in the “ProfessionalExperience” rubric were a bit different; the main skeleton basically remained thesame.

CurVe provides an easy-to-use mechanism for maintaining different “flavors” ofyour CV at the same time. You basically write different versions of (some of) yourrubrics in different files, tell CurVe which flavor you want to format (CurVe can evenask 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 useit. Otherwise, it will simply fall back to the default one (no particular flavor).

3 Using CurVe

First of all, please note that CurVe requires the presence of ltxtable, ifthen, calcand filehook. If you’re using the identity photo feature, the graphicx packageis also needed. You don’t have to load them explicitly though. As long as LATEXcan locate them, they will be used automatically.

3.1 Skeleton File

Say \documentclass[〈options〉]{curve} at the beginning of your skeleton file inorder to use CurVe. The available options are described along the text, whereappropriate.

3.1.1 Headers

3.1.1.1 Header Components

{〈contents〉}\leftheader

. . .\rightheader

The \leftheader and \rightheader macros define respectively the contents ofthe upper left and upper right headers. They can be used in the document’spreamble only. The headers will respectively be flushed to the left and to theright.[〈hpos〉]{〈file〉}\photo

If you want to insert a small identity photo into the header part, you can usethe \photo macro (available since version 1.4). It takes a mandatory argumentin which you pass the image file name, as you would to \includegraphics. Thismacro also takes an optional argument which lets you specify the horizontal po-sition of the photo: the values can be l (the default), c or r meaning that thephoto will appear on the left, center, or right.

3.1.1.2 Header Layout

The headers’ horizontal layout is further controled by three additional macros.{〈scale〉}\photoscale

The \photoscale macro specifies the amount of text width that the photo should

5

Page 6: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

occupy. This should be a number between 0 and 1. By default, 0.1 is used(meaning 10% of \textwidth).The \photosep macro is a LATEX length that specifies the space to leave between\photosep

the side of the photo and the next headers’s text. This is used only when thephoto is on the left or right. By default, 10pt is used.{〈scale〉}\headerscale

Finally, \headerscale specifies the proportion of the remaining space that theleft textual header should occupy. It works like \photoscale and amounts to 0.5by default.

Let me take an example to make this clearer. Suppose you have a \photoscale

of 0.1 and a \photosep of 10pt. The remaining space, that is, the space occupiedby the textual headers, amounts to 90% of the text width, minus 10 points. Ifyou then specify a \headerscale of 0.6, then the left header will take 60% of thatremaining space, and the right one the other 40%.\headerspace is the amount of extra vertical space to put after the headers. This\headerspace

is a LATEX length that defaults to 10pt.

3.1.1.3 Making Headers

[〈vpos〉]\makeheaders

If you have defined headers, make them appear by calling \makeheaders just afterthe beginning of your document. Note that calling this macro assumes that youhave previously defined both headers (possibly empty, though). Otherwise, anerror will be signaled. As of version 1.4, the \makeheaders command accepts anoptional argument that controls the vertical alignment. When given, this argumentmust be either t (for top), b (for bottom) or c (for center; the default).

3.1.2 Titles

3.1.2.1 Title Components

{〈text〉}\title

. . .\subtitle

The \title and \subtitle macros take one mandatory argument which definerespectively your CV’s title and subtitle. They can be used in the document’spreamble only.

3.1.2.2 Title Layout

{〈hpos〉}\titlealignment

By default, titles are centered on the page. However, you can also have themaligned to the left or right side of the page. To specify your preferred title align-ment, call \titlealignment with an argument of either l, c or r, the meaningof which should be obvious. You can also achieve the same effect by passing anoptional argument to \maketitle (see below).\titlespace is the amount of extra vertical space to put after the title(s). This\titlespace

is a LATEX length that defaults to 0pt.{〈cmds〉}\titlefont

. . .\subtitlefont

The \titlefont and \subtitlefont macros take one mandatory argument whichredefine the fonts to use for the title and the subtitle. They can be used in the

6

Page 7: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

document’s preamble only. By default, \Huge\bfseries and \Huge\itshape areused respectively.

3.1.2.3 Making Titles

[〈hpos〉]\maketitle

If you have defined a title (and possibly a subtitle), make it (them) appearby 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 ifyou call \maketitle without having defined at least a title, an error will be sig-naled. \maketitle accepts an optional argument for specifying the title alignmentscheme. This argument is the same as in \titlealignment, and takes precedenceover it.

3.1.3 Flavors

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 intoa file named experience.tex. The flavor mechanism works by assigning a pre-extension to rubric file names. For instance, suppose you want to make a specialflavor of your CV emphasizing on “distributed virtual reality”. You would callthis flavor “dvr”, and write the modified “Professional Experience” rubric into afile named experience.dvr.tex.{〈key〉}\flavor

The \flavor macro takes one mandatory argument which specifies the flavor touse (in our example, dvr). Although this might be of little use, it is possible tochange the flavor anywhere, even right in the middle of your CV’s skeleton.Instead of using the \flavor macro, you can make CurVe ask you at run-time whichask

flavor to use by passing the ask option to it.

3.1.4 Rubrics

Apart from making headers and titles, the body of your skeleton file will usuallycontain nothing but directives to include the different rubrics of your CV.{〈name〉}\makerubric

To include a rubric in your document, use \makerubric. This macro takes onemandatory argument which specifies the rubric to include at that point. The argu-ment actually corresponds to the rubric file name without any extension. Con-tinuing 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.experience.dvr.tex). If that fails, it will fall back to a non-flavored file (here,experience.tex). This allows you to specialize only the required rubrics and usethe default ones otherwise.As of version 1.12, CurVe provides a new LATEX length, \rubricafterspace con-\rubricafterspace

trolling the amount of extra vertical space to put after a rubric (hence, before thenext one). The default is 0pt.

7

Page 8: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

3.2 Rubric Files

3.2.1 The rubric Environment

{〈title〉}rubric

The whole contents of a rubric file must be enclosed in a rubric environment.This environment takes one mandatory argument which specifies the rubric’s title.When a rubric crosses several pages, its title is restated with a “continuation” textappended.{〈hpos〉}\rubricalignment

As of version 1.6, the rubric titles horizontal alignment can be changed thanks tothe \rubricalignment macro. Possible values for its mandatory argument are l,c and r (meaning left, centered, or right relative to the whole text width), andcl and cc (meaning left or centered relative to the entries’contents). By default,rubric titles are centered (c).{〈cmds〉} The \rubricfont macro takes one mandatory argument which redefines\rubricfont

the font to use for rubric titles. By default, \Large\bfseries is used.\rubricspace is the amount of extra vertical space to put after the rubric title.\rubricspace

This is a LATEX length that defaults to 10pt.

3.2.2 Standard Entries

3.2.2.1 Creating rubric entries

[〈key〉]{〈contents〉}\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.[〈key〉]\entry*

Actually, the \entry macro was somewhat ill-designed in the first place. Therubric environment pretty much behaves as an itemize one, hence the idea ofusing an \item-like syntax. As of version 1.2, CurVe provides an \entry* macrowhich behaves like \item in lists: it takes the same first optional argument asthe non starred version, but has no other argument. The entry’s contents simplyconsists of the text following the macro call, up to the next \entry, \entry* or\subrubric (see below) call.

3.2.2.2 Entries layout

{〈hpos〉}\keyalignment

As of version 1.7, entries’keys horizontal alignment can be changed thanks to the\keyalignment macro. Possible values for its mandatory argument are l, c andr (meaning left, centered, or right). By default, keys are left aligned (l).{〈cmds〉}\keyfont

The \keyfont macro takes one mandatory argument which redefines the font touse for the entries’ keys. By default, the standard document font is used.{〈cmds〉}\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 sharingthe same key (which is not repeated). The \prefix macro takes one mandatoryargument which redefines the prefix to use. By default, \textbullet is used.

8

Page 9: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

Note that as of version 1.11, CurVe forces the prefix to be empty in bibliographicentries (see section 3.3).While maintaining your CV, you might end up reorganizing your entries and evenskipsamekey

get entries with the same key. Normally, CurVe blindly prints the keys regardlessof their values. If you don’t want repetition, you would have to remove keys byhand which can be cumbersome. As of version 1.10, CurVe can skip all but the firstof a series of identical keys automatically, provided that you use the skipsamekey

option. Note that as of version 1.11, CurVe disables this mechanism in bibliographyrubrics (see section 3.3).

3.2.3 Plain text entries

{〈contents〉}\text

Sometimes, you may feel the need to insert plain text in the middle of a rubric,without the fancy key/prefix formatting stuff. As of version 1.16, CurVe providesa \text macro for that. Plain text occupies the whole page width. If you whishto further distinguish it from the surrounding entries, you can use \par to addvertical space before and/or after the text.

3.2.4 Invisible entries

The most frequently asked question about CurVe is probably whether it is possible toalign entries across several rubrics. This is (currently) not possible automaticallybecause rubrics are typeset as independant tables. However, a manual solutionboils down to enlarging too narrow entries (keys, actually).{〈key〉}\noentry

As of version 1.11, CurVe provides a convenience macro to ease this process:\noentry. This macro takes one mandatory argument, a key that will be used inthe entries alignment calculation. However, this command will not produce anytext. So if you want all your rubrics to share the same alignment, you typicallyspot the longest key in your CV, and issue a \noentry{this long key} call inall other rubrics.

3.2.5 Subrubrics

{〈title〉}\subrubric

Within a single rubric, you can further separate entries into subrubrics. In orderto do this, the \subrubric macro is provided. Its mandatory argument specifiesthe subrubric’s title.{〈hpos〉}\subrubricalignment

As of version 1.6, the subrubrics horizontal alignment can be changed thanks tothe \subrubricalignment macro. Possible values for its mandatory argument arel, c and r (meaning left, centered, or right relative to the whole text width), andcl and cc (meaning left or centered relative to the entries’contents). By default,subrubrics are left-aligned with the entries’ contents (cl).{〈cmds〉}\subrubricfont

The \subrubricfont macro takes one mandatory argument which redefines thefont to use for the subrubrics. By default, \Large\itshape is used.\subrubricspace controls the amount of extra vertical space to put after sub-\subrubricspace

rubrics. This is a LATEX length that defaults to 5pt. \subrubricbeforespace\subrubricbeforespace

9

Page 10: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

controls the amount of extra vertical space to put before a subrubric when thereare entries above. This is a LATEX length that defaults to 20pt.

3.3 Bibliography

Most scientists include their own list of publications in their CV, so CurVe hassupport for different forms of bibliography.

3.3.1 Manual bibliography

The first thing you can do is create your own bibliography manually (I mean,just like an ordinary rubric), and although this may appear boring, I actuallyencourage people to do so for at least three reasons (only my opinion of course):

• A CV should be strictly formatted and coherent in layout. Bibliographyis no exception to this rule. In other words, it is prettier to have yourpublications formatted like the rest of your CV.

• Automatic bibliography generation tools produce references, which is sillyin a CV because you don’t actually reference your papers anywhere (or doyou?). So better to sort them another way, like, by year of publication as Ido in my own CV.

• Manually adding, like, what? Half a dozen papers a year in your CV is notthat much of a burden after all.

3.3.2 The bibliography environment

{〈key〉}thebibliography

[〈label〉]{〈ref 〉}\bibitem

Some people however have expressed the wish of having standard bibliographysupport in CurVe. Version 1.2 provides that. The standard thebibliography

environment is now supported along with its \bibitem companion. The behavioris actually that of a rubric environment with its \entry* companion (with anempty prefix however). This fact has two implications: firstly, the argument tothe environment is unused in CurVe (but remains for compatibility with the restof LATEX) because CurVe itself formats the keys and contents properly aligned.Secondly, the bibliographic environment must reside in its own file, as any otherrubric. Don’t forget that if you happen to write the environment manually.As of version 1.16, the openbib option is supported. When used, bibliographicopenbib

blocks appear on different lines instead of in a single paragraph. Note that priorto version 1.16, this was actually the default behavior, which was not quite right(the standard classes don’t openbib by default).As of version 1.14, it is possible to count bibliographic items in a reverse order,revbib

which comes in handy when you display your publications from the most recentto the oldest one. The revbib option triggers this behavior. Note that this alsoworks when you use BibTEX (see below).

3.3.3 BibTEX

{〈citations〉}\nocite

{〈style〉}\bibliographystyle

10

Page 11: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

{〈files〉}\bibliography

If you want to use BibTEX, that’s also possible of course. Do it as you would doin a random paper. You will probably issue a \nocite{*} command followed bya call to \bibliography. CurVe uses the bbl file as a rubric one.

3.3.4 Compatibility concerns

• bibentry: CurVe is compatible with the bibentry package since version 1.9.Note that there is an incompatibility between bibentry and hyperref with aworkaround described in the hyperref README file. However, CurVe takescare of this problem for you so you must not use the workaround describedthere.

• multibbl: CurVe is compatible with the multibbl package since version 1.12.

• splitbib: CurVe is compatible with the splitbib package since version 1.16.Note however that only one level of category is allowed (categories appearas subrubrics).

3.4 Standard Class Features

3.4.1 Page Size and layout

The a4, a5, b4, letter, legal and executive “paper” options allow you to se-*paper

landscape lect the type of page format you want. By default, letterpaper is used. Thelandscape options switches the horizontal and vertical settings. I’m not sure whyI propose this option. Nobody wants to write a CV in landscape mode, right?As of version 1.6, CurVe also supports the standard oneside and twoside classoneside

twoside options. By default, oneside is used. In twoside mode, odd and even pages havea different geometry and headings layout.

3.4.2 Font Size

The 10pt, 11pt and 12pt options let you choose the size of the default font you10pt

11pt

12pt

want to use. By default, 10pt is used.

3.4.3 Output Mode

In draft mode, a black rule will be drawn at the end of overfull lines (as donefinal

draft by standard classes). Due to CurVe using the LTXtable package (and in caselongtable prior to version 4 is used by it), a call to \setlongtables is performedin final mode. Please refer to the next section for more information on this. Bydefault, final is used.

3.4.4 Page styles

{〈style〉}\pagestyle

{〈style〉}\thispagestyle

As of version 1.6, CurVe supports the standard LATEX page style mechanism. Avail-able styles are empty, plain, headings and myheadings. These styles have theirusual meaning, given that rubric and subrubric names are used for marking pur-pose (the equivalent of chapters and sections in books for instance). By default,the page style is empty.

11

Page 12: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

3.4.5 Internationalization

CurVe currently supports 12 languages via the following options: english, french(or francais), spanish, portuguese (or portuges), brazilian (or brazil),italian, german, ngerman, dutch, danish, swedish and polish. The german andngerman options are currently equivalent; so are the portuguese and brazilian

ones.If you want a finer grain on the language-dependent parts of CurVe, the following

macros are provided.{〈continuation text〉}\continuedname

The \continuedname macro takes one mandatory argument which redefines thecontinuation text output when rubrics extend across several pages. By default,“〈space〉(continued)” is used in English. Although this might be of little use, it ispossible to change the continuation text in the middle of your document, providedthat you do so outside the rubric environment.{〈title〉}\listpubname

The \listpubname macro takes one mandatory argument which redefines the titleof the bibliographic section (when you use the provided bibliography support). Bydefault, “List of Publications” is used in English. Note that for compatibility withthe multibbl and multibib packages, CurVe honors the existence of \bibname or\refname macros prior to \listpubname for deciding which title to give to thebibliographic rubric.

4 Hints, Tips’n Tricks

Here are some tips that I use for my own CV. You might find them of someinterest.

4.1 Page Geometry

First of all, it is common to have very thin margins in curricula vitae. CurVe doesnot do anything special about this because I don’t think that belongs to its duty.The geometry package comes in handy if you want to reduce your margins.

4.2 Vertical spacing

Although they might look a bit like itemize environments, CurVe rubrics are imple-mented with tables. This has an important consequence: empty lines in rubricsdo affect the vertical spacing of your document (at least for the time being).

You might be tempted to leave such empty lines here and there for readability,or for this precise effect it has on vertical spacing, but I advise you against this.Better to stick entries and subrubrics together, and play with the spacing com-mands to achieve the desired layout. This will ensure a more consistent layoutwith future versions of CurVe.

If you are using BibTEX, you should also be aware of the fact that some BibTEXstyles output empty lines between \bibitem’s, and this has an unfortunate influ-ence on vertical spacing for the same technical reason. If this vertical space annoysyou, what you can do is modify the BibTEX style in order to avoid the produc-tion of these empty lines. For instance, in plain.bst, this simply boils down toremoving the call to newline$ at the beginning of the output.bibitem function.

12

Page 13: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

4.3 The ltx Extension

Personally, I prefer to keep .tex for TEX files, and use the ltx extension forLATEX. This is supported by CurVe which will actually prefer ltx files over tex

ones, especially when including rubrics. To be more precise, suppose you arebuilding a flavor flv of your CV. A call to \makerubric{foo} will try to use thefollowing files in that order:foo.flv.ltx

foo.flv.tex

foo.ltx

foo.tex

4.4 Longtable

CurVe users should be aware of the fact that the layout implementation is basedon the LTXtable package, which in turn is a mix of tabularx and longtable.This has several implications, most notably that when writing a rubric, you areactually inside a tabular environment. Here are some things to keep in mind:

• You are not allowed to use the \\ command to start a new line. However,you’re free to use \par in your entries’contents instead. Note that CurVe sets\parskip to 0pt so that starting a new paragraph looks like just starting anew line.

• You can use \raggedright and \raggedleft in your entries.

• You can use \pagebreak, \nopagebreak and \newpage at the beginning ofa line, just before starting a new entry.

• Prior to version 4, longtable used an alignment mechanism involving callsto \setlongtables (see its documentation). CurVe retains this for backwardcompatibility and still calls \setlongtables in final (not draft) mode. Ifyour version of longtable is recent enough, you shouldn’t be concerned bythis. If it is older, you might need to process your document a few times indraft mode, and then one last time in final mode. However, keep in mindthat in both cases, you might still need up to 3 or 4 passes of LATEX on yourdocument.

4.5 Managing Different Flavors

If you maintain different flavors of your CV at the same time, you probably wantto rebuild all of them after any modification. Since you have a single skeleton filefor all of them (say, cv.tex), the output file will have the same name for all flavors(say, cv.dvi). This can bother you if you want all flavors of your formatted CV

available at the same time.To remedy this problem, I usually use the ask option and a makefile to build

the different flavors and move the output file to flavor-specific name. Here is atypical makefile target that should clarify (or maybe darken?) what I am saying:

cv.$(FLAVOR).dvi: cv.ltx $(RUBRICS)

echo $(FLAVOR) | latex cv.ltx

mv cv.dvi $@

13

Page 14: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

As you can see, the shell is responsible for answering the question.

4.6 More On Flavors

In order to implement the flavor mechanism, the LATEX macro \input has beenredefined to look for “flavored” files first. This is actually very nice because youcan use it if you want to make different flavors of text that does not belong inrubrics.

For instance, suppose you want a special version of the subtitle of your CV

for the flavor flv. Create a file called subtitle.flv.ltx and put somethinglike “\subtitle{special subtitle}” in it. Do something similar for the defaultsubtitle. Now go to the skeleton of your CV, and write \input{subtitle} in thepreamble. That’s it. You’ll have different subtitles in your different CV flavors.

A Appendix

A.1 Frequently Asked Questions

1. Is there a way to align entries across several (all) rubrics?Not automatically because rubrics are typeset as individual tables. Thereare many ways to manually “trick” too narrow keys in order to enlarge themhowever. As of version 1.11, CurVe provides a new convenience macro to dosomething similar: see section 3.2.4.

2. How can I change the interline spacing?Internally, CurVe uses LATEX tabular-based environments. As such, you canplay with \arraystretch to modify the space between rows.

3. When a page break occurs in the middle of a rubric, the samealignment is kept on both pages, which might result in suboptimallayout.This is a technical limitation of the automatic alignment computation pro-cess in longtables and I don’t think there will be a solution anytime soon(page breaking is orthogonal to column width calculation). What you cando, once your CV is finalized, is manually split the concerned rubric intodifferent ones, starting at the appropriate entries to avoid page breaking inthe middle.

4. How can I make multi-line subrubrics?Here are two ideas:

• Put your text in several consecutive subrubrics (one per line). However,this might not give you the desired vertical spacing.

• Probably better, put your material in a parbox:\subrubric{\parbox{width}{first blah blah\\next blah blah}}

This is a bit dirty because you have to figure out a suitable width foryour parbox, but this will work.

5. How can I make multi-line keys?The trick is to temporarily change the key cell type to a paragraph one(remember that we’re in a tabular environment).

14

Page 15: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

(a) Recover the key formatting by doing something like this near the be-ginning of your document:\makeatletter\let\mykeyfont\@keyfont\makeatother

(b) Use something like this where you need a multi-line key (you will haveto adjust the paragraph width manually):

\entry*[\multicolumn{1}{@{}>{\mykeyfont}p{2cm}}{%

long key\newline long key}]

Entry text. Entry text. Entry ...

6. How to deal with long keys?The best thing to do is to make them multi-line manually. Please refer tothe previous question.

7. Can I change the prefix locally?Yes and no. The \prefix command can only be used in the preamble orbetween rubrics. Otherwise, there is currently no way to change the prefixfor a single entry. This limitation will disappear in a future release.

A.2 Changes

v1.16 New \text macro, suggested by Alexandre Duret-Lutz and Franco Callegati.Support for the openbib option which was implicit before, reported by VasilisBoucharas.Fix incompatibilities with the splitbib package, reported by Jean Taucol.Handle the bibentry/hyperref incompatibiity directly.Implement old font commands, letting packages using them (e.g. fancyhdr)work correctly.

v1.15 Support for itemize environments, suggested by Mirko Hessel-von MoloAdded some documentation about vertical spacing problems in bbl files,suggested by Seweryn Habdank-Wojewódzki

v1.14 Support for reverse counting bibliographic entries, suggested by JosephWrightSupport for Polish thanks to Radek Dominiak<[email protected]>

v1.13 Support for title alignment, suggested by Lars KasperSupport for footnotes, suggested by Alain ColettaLet rubrics honor the current \linewidthChanged default value of \subrubricbeforespace to 20pt

Fix some overfull boxes, reported by Nico SchlölmerFAQ and documentation update

v1.12 Support for Swedish thanks to Konrad Skeri Persson<[email protected]>

New customizable length \rubricafterspace defining the space betweeneach rubricFix incompatibilities with the multibbl package.Honor bibliography titles (if) provided by multibib or multibbl

15

Page 16: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

New command \today

FAQ updateFix implementation of skipsamekey option

v1.11 New FAQ section in the documentationNew command \noentry to manually enlarge too narrow rubricsMake \pagebreak, \nopagebreak and \newpage work in rubrics, suggestedby Alexandre Duret-LutzFix spurious right margin spacesFix usage of the bib counter, disable skipsamekey and the prefix in biblio-graphic entries

v1.10 Support automatic skipping of identical keys, suggested by Akim DemailleFix alignment problem with empty prefix, reported by Jonas Haulin

v1.9 Fix incompatibilities with the bibentry package, reported by Joris DesmetFix standard bibliography support (broken in v1.8)

v1.8 Prevent page breaks after subrubric headings

v1.7 Support for key horizontal alignment\raggedleft and \raggedright can now be used within individual entriesFix typo in Danish version of \continuedname

v1.6 Support for rubric and subrubric titles horizontal alignmentSupport for standard LATEX page style mechanismSupport for oneside and twoside optionsSupport for Portuguese thanks to Adiel Mittmann <[email protected]>

Fix bug in \bibliography: protect against non existant files, reported byAndrew ComportFix conflict with hyperref in some bibliography definitions

v1.5 Support for Dutch thanks to Thomas Delaet<[email protected]>

Fix typo in rubric environment, reported by Torsten Liesk

v1.4 Support for photo inclusionSupport for headers horizontal scalingOptional argument to \makeheaders for vertical alignment, suggested byDan Luecking

v1.3 Support for Danish thanks to Kim Rud Bille <[email protected]>

v1.2 Support for standard bibliography mechanism(s)New macro \entry*

Improvements in AUC-TEX supportSupport for German thanks to Harald Harders <[email protected]>Support for Spanish thanks to Agustín Martín <[email protected]>

v1.1 Support for Italian thanks to Riccardo Murri <[email protected]>

16

Page 17: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

A.3 Implementation

First, the class announcement and the initial requirements:

1 〈curve〉\NeedsTeXFormat{LaTeX2e}2 〈∗header〉3 \ProvidesClass{curve}[2010/12/14 v1.16 Curriculum Vitae class for LaTeX2e]

4

5 〈/header〉6 〈∗curve〉7 \RequirePackage{ltxtable}

8 \RequirePackage{ifthen}

9 \RequirePackage{calc}

10 \RequirePackage{filehook}

11

A.3.1 Rubric Files

We don’t want to output an extra subrubricbeforespace if no entry is presentbefore the subrubric. This is done by using an \@beforespace command which isset to 0pt at the beginning of each rubric, and switched to the proper value whenan entry is added.

\@nextentry The @nextentry command is used to implement \entry* while maintaining back-ward compatibility with \entry and \subrubric. A new entry or a subrubricmight have to close the preceding entry if it was opened using the starred form.

12 \gdef\@nextentry{}

13

A.3.1.1 Entries

\@keyfont

\keyfont {〈cmds〉}

14 \def\@keyfont{}

15 \newcommand\keyfont[1]{\gdef\@keyfont{#1}}

16

\keyalignment {〈hpos〉}

17 \newcolumntype{k}{>{\@keyfont}l}

18 \newcommand\keyalignment[1]{%

19 \ifthenelse{\equal{#1}{l}}{}{%

20 \ifthenelse{\equal{#1}{r}}{}{%

21 \ifthenelse{\equal{#1}{c}}{}{%

22 \ClassError{curve}{Invalid key alignment}{%

23 You have called \protect\keyalignment\space with an invalid value.%

24 \MessageBreak

25 Valid options include l, c, and r.\MessageBreak

26 Type X <return> to quit, fix the typo, and rerun LaTeX.}}}}%

27 \newcolumntype{k}{>{\@keyfont}#1}}

28

\@prefix

17

Page 18: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

\prefix {〈cmds〉}

29 \def\@prefix{\textbullet}

30 \newcommand\prefix[1]{\gdef\@prefix{#1}}

31

\@maybekey

\@alwayskey {〈key〉}skipsamekey As of version 1.10, CurVe can skip keys identical to the previous one, if the option

skipsamekey is used.

32 \def\@maybekey#1{%

33 \def\@newkey{#1}%

34 \ifx\@previouskey\@newkey\gdef\@@key{}\else%

35 \gdef\@@key{#1}\gdef\@previouskey{#1}%

36 \fi}

37

38 \def\@alwayskey#1{%

39 \gdef\@@key{#1}}

40

41 \let\@key\@alwayskey

42 \DeclareOption{skipsamekey}{\let\@key\@maybekey}

\@entry [〈key〉]{〈contents〉}\@sentry [〈key〉]

\entry

43 \newcommand\@entry[2][]{%

44 \gdef\@nextentry{}\@key{#1}%

45 \egroup% end of \noalign opened in \entry.

46 \@@key&\@prefix&#2\\\par}

47

48 \newcommand\@sentry[1][]{%

49 \gdef\@nextentry{\\\par}\@key{#1}%

50 \egroup% end of \noalign opened in \entry.

51 \@@key&\@prefix&}

52

53 \newcommand\entry{%

54 \@nextentry

55 \noalign\bgroup\gdef\@beforespace{\subrubricbeforespace}%

56 \@ifstar{\@sentry}{\@entry}}

57

\@almosttextwidth

\@text {〈contents〉}\@stext

\text

This macro wraps around \multicol to let people input plain text within a rubric.Currently, plain text doesn’t interfere with the skipsamekey mechanism, but thischoice is arguable. Note that the use of \text* is not documented yet becauseit doesn’t work quite right. It produces an undesired space before the text and Idon’t understand why.

58 \newlength{\@almosttextwidth}

59 \AtBeginDocument{\setlength\@almosttextwidth{\textwidth-\hfuzz}}

60

61 \newcommand\@text[1]{%

62 \gdef\@nextentry{}%

18

Page 19: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

63 \egroup% end of \noalign opened in \text.

64 \multicolumn{3}{@{}p{\@almosttextwidth}@{}}{#1}\\}

65

66 \newcommand\@stext{%

67 \gdef\@nextentry{\egroup\\\par}%

68 \egroup% end of \noalign opened in \text.

69 \multicolumn{3}{@{}p{\@almosttextwidth}@{}}\bgroup}

70

71 \newcommand\text{%

72 \@nextentry

73 \noalign\bgroup\gdef\@beforespace{\subrubricbeforespace}%

74 \@ifstar{\@stext}{\@text}}

75

\noentry {〈key〉}This macro is a wrapper around \kill to manually adjust too narrow rubrics.

76 \newcommand\noentry[1]{\@nextentry

77 \noalign{\gdef\@nextentry{}}#1&&\kill}

78

A.3.1.2 Subrubrics

\@subrubricfont

\subrubricfont {〈cmds〉}

79 \def\@subrubricfont{\Large\itshape}

80 \newcommand\subrubricfont[1]{\gdef\@subrubricfont{#1}}

81

\subrubricbeforespace

\subrubricspace 82 \newlength\subrubricbeforespace

83 \setlength\subrubricbeforespace{20pt}

84

85 \newlength\subrubricspace

86 \setlength\subrubricspace{5pt}

87

\@subrubricmark

\@@subrubric {〈title〉}Note that \@subrubricmark is called outside the raisebox. That’s because other-wise, the mark would not go to the toplevel page vertical box, and TEX would notnotice it.

88 \let\@subrubricmark\@gobble

89

90 \def\@@subrubric#1{%

91 \rule{0bp}{\@beforespace}

92 {\@subrubricfont#1}

93 \@subrubricmark{#1}}

94

\@clcccolsep The normal intercolumn space between the prefix and the entry’s content is re-placed with an unbreakable space. This causes a problem (fixed in version 1.10)with the [sub]rubric alignments cl and cc when the prefix is empty, because theunbreakable space in question slightly shifts the entry’s content to the right. If

19

Page 20: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

we want a proper alignment, we then have to take this offset into account in thecl and cc multicolumns, for both rubrics and subrubrics. The following macroimplements this:

95 \def\@clcccolsep{\hspace{\tabcolsep}\ifx\@prefix\@empty~\fi}

96

\@subrubric@*

\@subrubric

{〈title〉}

97

98 \def\@subrubric@l#1{\multicolumn{3}{@{}l@{}}{\@@subrubric{#1}}}

99 \def\@subrubric@c#1{\multicolumn{3}{@{}c@{}}{\@@subrubric{#1}}}

100 \def\@subrubric@r#1{\multicolumn{3}{@{}r@{}}{\@@subrubric{#1}}}

101 \def\@subrubric@cl#1{&\multicolumn{2}{@{\@clcccolsep}l@{}}{\@@subrubric{#1}}}

102 \def\@subrubric@cc#1{&\multicolumn{2}{@{\@clcccolsep}c@{}}{\@@subrubric{#1}}}

103

104 \let\@subrubric\@subrubric@cl

105

\subrubricalignment {〈hpos〉}

106 \newcommand\subrubricalignment[1]{%

107 \def\@curve@temp@a{\let\@subrubric}

108 \expandafter\@curve@temp@a\csname @subrubric@#1\endcsname

109 \@ifundefined{@subrubric}{%

110 \ClassError{curve}{Invalid subrubric alignment}{%

111 You have called \protect\subrubricalignment\space with an invalid value.%

112 \MessageBreak

113 Valid options include l, c, r, cl and cc.\MessageBreak

114 Type X <return> to quit, fix the typo, and rerun LaTeX.}}

115 }

116

\subrubric {〈title〉}

117 \newcommand\subrubric[1]{%

118 \@nextentry

119 \noalign{\gdef\@nextentry{}}%

120 \@subrubric{#1}\\*[\subrubricspace]\par}

121

A.3.1.3 Rubrics

\@rubricfont

\rubricfont {〈cmds〉}

122 \def\@rubricfont{\Large\bfseries}

123 \newcommand\rubricfont[1]{\gdef\@rubricfont{#1}}

124

\rubricspace

125 \newlength\rubricspace

126 \setlength\rubricspace{10pt}

127

\@@rubrichead {〈title〉}\@rubrichead@* . . .

20

Page 21: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

\@rubrichead

128 \def\@@rubrichead#1{\@rubricfont#1}

129

130 \def\@rubrichead@l#1{\multicolumn{3}{@{}l@{}}{\@@rubrichead{#1}}}

131 \def\@rubrichead@c#1{\multicolumn{3}{@{}c@{}}{\@@rubrichead{#1}}}

132 \def\@rubrichead@r#1{\multicolumn{3}{@{}r@{}}{\@@rubrichead{#1}}}

133 \def\@rubrichead@cl#1{&\multicolumn{2}{@{\@clcccolsep}l@{}}{\@@rubrichead{#1}}}

134 \def\@rubrichead@cc#1{&\multicolumn{2}{@{\@clcccolsep}c@{}}{\@@rubrichead{#1}}}

135

136 \let\@rubrichead\@rubrichead@c

137

\rubricalignment {〈hpos〉}

138 \newcommand\rubricalignment[1]{%

139 \def\@curve@temp@a{\let\@rubrichead} \expandafter\@curve@temp@a\csname

140 @rubrichead@#1\endcsname \@ifundefined{@rubrichead}{%

141 \ClassError{curve}{Invalid rubric alignment}{%

142 You have called \protect\rubricalignment\space with an invalid value.%

143 \MessageBreak Valid options include l, c, r, cl and cc.\MessageBreak

144 Type X <return> to quit, fix the typo, and rerun LaTeX.}} }

145

\rubricafterspace

146 \newlength\rubricafterspace

147 \setlength\rubricafterspace{0pt}

148

\@rubricmark

rubric {〈title〉}Marking commands don’t seem to work in longtable headings. So the rubric markis issued just after it.As of version 1.7, \raggedleft and \raggedright are redefined in order to workwithin individual entries. This redefinition simply consists in removing the \\

definition since it’s not available anyway, and also to remove the \parskip settingsince it’s Opt in the whole class.

149 \let\@rubricmark\@gobble

150

151 \newenvironment{rubric}[1]{%

152 %% \begin{rubric}

153 \def\raggedright{%

154 \@rightskip\@flushglue\rightskip\@rightskip\leftskip\z@skip}%

155 \def\raggedleft{%

156 \rightskip\z@skip\leftskip\@flushglue\parfillskip\z@skip}%

157 \gdef\@beforespace{0pt}%

158 \gdef\@nextentry{}%

159 \gdef\@previouskey{}%

160 \global\let\old@newpage\newpage%

161 \global\let\old@pagebreak\pagebreak%

162 \global\let\old@nopagebreak\nopagebreak

163 \begin{longtable}{@{}kl@{~}X@{}}

164 \@rubrichead{#1}\\*[\rubricspace]

165 \endfirsthead

166 \@rubrichead{#1\@continuedname}\\*[\rubricspace]

21

Page 22: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

167 \endhead

168 \noalign{\@rubricmark{#1}%

169 \global\let\in@newpage\newpage%

170 \global\let\in@pagebreak\pagebreak%

171 \global\let\in@nopagebreak\nopagebreak%

172 \gdef\newpage{\@nextentry\noalign{\gdef\@nextentry{}}\in@newpage}

173 \gdef\pagebreak{\@nextentry\noalign{\gdef\@nextentry{}}\in@pagebreak}

174 \gdef\nopagebreak{\@nextentry\noalign{\gdef\@nextentry{}}\in@nopagebreak}}}{%

175 %% \end{rubric}

176 \@nextentry

177 \end{longtable}\par\vspace\rubricafterspace

178 \global\let\newpage\old@newpage%

179 \global\let\pagebreak\old@pagebreak%

180 \global\let\nopagebreak\old@nopagebreak}

181

\continuedname {〈continuation text〉}

182 \newcommand\continuedname[1]{\gdef\@continuedname{#1}}

183

A.3.2 Skeleton File

A.3.2.1 Utilities

\today

184 \def\today{\ifcase\month\or

185 January\or February\or March\or April\or May\or June\or

186 July\or August\or September\or October\or November\or December\fi

187 \space\number\day, \number\year}

188

A.3.2.2 Headers

\header@scale

\headerscale {〈scale〉}

189 \def\header@scale{.5}

190 \newcommand\headerscale[1]{\gdef\header@scale{#1}}

191 \@onlypreamble\headerscale

192

\headerspace

193 \newlength\headerspace

194 \setlength\headerspace{10pt}

195

\@leftheader

\leftheader {〈contents〉}\@rightheader

\rightheader {〈contents〉}If the user calls \makeheaders without specifying headers first, an error will begenerated. The same applies for the title (not the subtitle), but this is alreadymanaged by LATEX itself.

196 \def\@leftheader{%

22

Page 23: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

197 \ClassError{curve}{No \protect\leftheader\space given}{%

198 You have called \protect\makeheaders, %

199 but you didn’t provide a left header.\MessageBreak

200 Type X <return> to quit, add a call to \protect\lefheader\space %

201 in the preamble of your CV,\MessageBreak

202 and rerun LaTeX.}}

203 \newcommand\leftheader[1]{\gdef\@leftheader{#1}}

204 \@onlypreamble\leftheader

205

206 \def\@rightheader{%

207 \ClassError{curve}{No \protect\rightheader\space given}{%

208 You have called \protect\makeheaders, %

209 but you didn’t provide a right header.\MessageBreak

210 Type X <return> to quit, add a call to \protect\rightheader\space %

211 in the preamble of your CV,\MessageBreak

212 and rerun LaTeX.}}

213 \newcommand\rightheader[1]{\gdef\@rightheader{#1}}

214 \@onlypreamble\rightheader

215

\photoscale {〈scale〉}\photosep {〈length〉}

\photo [〈hpos〉]{〈file〉}

216 \def\photo@scale{.1}

217 \newcommand\photoscale[1]{\gdef\photo@scale{#1}}

218 \@onlypreamble\photoscale

219

220 \newlength\photosep

221 \setlength\photosep{10pt}

222

223 \newcommand\photo[2][l]{%

224 \RequirePackage{graphicx}

225 \ifthenelse{\equal{#1}{l}}{}{%

226 \ifthenelse{\equal{#1}{r}}{}{%

227 \ifthenelse{\equal{#1}{c}}{}{%

228 \ClassError{curve}{Invalid argument to \protect\photo}{%

229 Argument 2 of \protect\photo must be ‘l’, ‘r’ or ‘c’.}}}}%

230 \def\tmp@cmd{\global\let\makeheaders@}

231 \expandafter\tmp@cmd\csname makeheaders@#1\endcsname

232 \gdef\photo@file{#2}}

233 \@onlypreamble\photo

234

\photo@width

\includephoto@*

These different versions of the photo inclusion command exist for proper alignmentof the picture itself with the left and right headers.

235 \newlength\photo@width

236

237 \def\includephoto@t{%

238 \raisebox{.7\baselineskip-\height}{%

239 \includegraphics[width=\photo@width]{\photo@file}}}

240

241 \def\includephoto@c{%

242 \raisebox{-.5\height}{%

243 \includegraphics[width=\photo@width]{\photo@file}}}

23

Page 24: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

244

245 \def\includephoto@b{\includegraphics[width=\photo@width]{\photo@file}}

246

\leftheader@width

\rightheader@width 247 \newlength\leftheader@width

248 \newlength\rightheader@width

249

And here are the different versions of the \makeheaders command:

\makeheaders@l {〈vpos〉}

250 \def\makeheaders@l#1{%

251 \setlength\photo@width{\photo@scale\textwidth} \setlength\leftheader@width{%

252 (\textwidth - \photo@width - \photosep) * \real{\header@scale}}

253 \setlength\rightheader@width{%

254 \textwidth - \photo@width - \photosep - \leftheader@width}

255 \parbox[#1]{\photo@width + \photosep}{\includephoto@\hspace\photosep}%

256 \parbox[#1]{\leftheader@width}{\@leftheader}%

257 \parbox[#1]{\rightheader@width}{\raggedleft\@rightheader}}

258

\makeheaders@c {〈vpos〉}

259 \def\makeheaders@c#1{%

260 \setlength\photo@width{\photo@scale\textwidth}

261 \setlength\leftheader@width{(\textwidth - \photo@width) * \real{.5}}

262 \setlength\rightheader@width{\leftheader@width}

263 \parbox[#1]{\leftheader@width}{\@leftheader}%

264 \parbox[#1]{\photo@width}{\includephoto@}%

265 \parbox[#1]{\rightheader@width}{\raggedleft\@rightheader}}

266

\makeheaders@r {〈vpos〉}

267 \def\makeheaders@r#1{%

268 \setlength\photo@width{\photo@scale\textwidth}

269 \setlength\leftheader@width{%

270 (\textwidth - \photo@width - \photosep) * \real{\header@scale}}

271 \setlength\rightheader@width{%

272 \textwidth - \photo@width - \photosep - \leftheader@width}

273 \parbox[#1]{\leftheader@width}{\@leftheader}%

274 \parbox[#1]{\rightheader@width}{\raggedleft\@rightheader}%

275 \parbox[#1]{\photo@width + \photosep}{\hspace\photosep\includephoto@}}

276

\makeheaders@ {〈vpos〉}

277 \def\makeheaders@#1{%

278 \setlength\leftheader@width{\header@scale\textwidth}%

279 \setlength\rightheader@width{\textwidth - \leftheader@width}%

280 \parbox[#1]{\leftheader@width}{\@leftheader}%

281 \parbox[#1]{\rightheader@width}{\raggedleft\@rightheader}}

282

\makeheaders [〈vpos〉]

283 \newcommand\makeheaders[1][c]{%

24

Page 25: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

284 \ifthenelse{\equal{#1}{t}}{}{%

285 \ifthenelse{\equal{#1}{b}}{}{%

286 \ifthenelse{\equal{#1}{c}}{}{%

287 \ClassError{curve}{Invalid argument to \protect\makeheaders}{%

288 Argument of \protect\makeheaders must be ‘t’, ‘b’ or ‘c’.}}}}%

289 \def\tmp@cmd{\global\let\includephoto@}

290 \expandafter\tmp@cmd\csname includephoto@#1\endcsname

291 \makeheaders@{#1}%

292 \par\vspace\headerspace}

293

A.3.2.3 Titles

\@titlefont

\titlefont {〈cmds〉}

294 \@onlypreamble\title

295

296 \def\@titlefont{\Huge\bfseries}

297 \newcommand\titlefont[1]{\gdef\@titlefont{#1}}

298 \@onlypreamble\titlefont

299

\titlespace

300 \newlength\titlespace

301 \setlength\titlespace{0pt}

302

\@subtitle

\subtitle {〈title〉}

303 \let\@subtitle\@undefined

304 \newcommand\subtitle[1]{\gdef\@subtitle{#1}}

305 \@onlypreamble\subtitle

306

\@subtitlefont

\subtitlefont {〈cmds〉}

307 \def\@subtitlefont{\huge\itshape}

308 \newcommand\subtitlefont[1]{\gdef\@subtitlefont{#1}}

309 \@onlypreamble\subtitlefont

310

\@titlealignment@*

\@title@lignment 311 \def\@titlealignment@l{\raggedright}

312 \def\@titlealignment@c{\centering}

313 \def\@titlealignment@r{\raggedleft}

314

315 \let\@title@lignment\@titlealignment@c

316

\@titlealignment {〈src〉}{〈hpos〉}

317 \def\@titlealignment#1#2{%

318 \def\@curve@temp@a{\let\@title@lignment}

319 \expandafter\@curve@temp@a\csname @titlealignment@#2\endcsname

25

Page 26: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

320 \@ifundefined{@title@lignment}{%

321 \ClassError{curve}{Invalid title alignment}{%

322 You have called \expandafter\string\csname#1\endcsname\space%

323 with an invalid value.%

324 \MessageBreak

325 Valid options include l, c and r.\MessageBreak

326 Type X <return> to quit, fix the typo, and rerun LaTeX.}}

327 }

328

\titlealignment {〈hpos〉}

329 \newcommand\titlealignment[1]{\@titlealignment{titlealignment}{#1}}

330

\@@maketitle

\@maketitle [〈hpos〉]\maketitle

331 \def\@@maketitle{%

332 \bgroup\trivlist\@title@lignment\item\relax {\@titlefont\@title}

333 \ifx\@subtitle\@undefined\else\\\@subtitlefont\@subtitle\fi

334 \endtrivlist\egroup

335 \vspace\titlespace}

336

337 \def\@maketitle[#1]{\@titlealignment{maketitle}{#1}\@@maketitle}

338

339 \newcommand\maketitle{\@ifnextchar[%]

340 \@maketitle\@@maketitle}

341

A.3.2.4 Rubric Inclusion

\@flavor

ask 342 \let\@flavor\empty \newcommand\flavor[1]{\gdef\@flavor{#1}

343 \ifx\@flavor\empty\else\edef\@flavor{.\@flavor}\fi}

344

345 \DeclareOption{ask}{%

346 \typein[\@flavor]{Please specify a CV flavor (none by default):}

347 \ifx\@flavor\empty\else\edef\@flavor{.\@flavor}\fi}

348

\@curveinput {〈file〉}\input \input is redefined in order to deal with flavors and the ltx extension.

349 \def\@curveinput#1{%

350 \IfFileExists{#1\@flavor.ltx}{\@iinput{#1\@flavor.ltx}}{%

351 \IfFileExists{#1\@flavor.tex}{\@iinput{#1\@flavor.tex}}{%

352 \IfFileExists{#1.ltx}{\@iinput{#1.ltx}}{%

353 \IfFileExists{#1.tex}{\@iinput{#1.tex}}{%

354 \@iinput{#1}}}}}}

355 \renewcommand\input{\@ifnextchar\bgroup\@curveinput\@@input}

356

\makerubric {〈name〉}

357 \newcommand\makerubric[1]{\LTXtable{\linewidth}{#1}}

358

26

Page 27: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

A.3.2.5 Bibliography

In case splitbib is loaded, we require it to export to the sbb file. It is simpler tomake CurVe compatible with it that way.

359 \PassOptionsToPackage{export}{splitbib}

360

openbib

361 \let\newblock\empty

362 \DeclareOption{openbib}{\let\newblock\par}

363

revbib

bibcount

bibtotal

curve@revbib

364 \newcounter{bibcount}

365 \newcounter{bibtotal}

366 \newif\ifcurve@revbib\curve@revbibfalse

367 \AtEndDocument{

368 \if@filesw

369 \immediate\write\@auxout{\string\setcounter{bibtotal}{\thebibcount}}%

370 \fi}

371 \DeclareOption{revbib}{\curve@revbibtrue}

372

\@listpubname

\listpubname {〈title〉}

373 \newcommand\listpubname[1]{\gdef\@listpubname{#1}}

374

\@curve@input@ {〈file〉}Emulation of \@input@ for bibliographic inclusion:

375 \def\@curve@input@#1{%

376 \IfFileExists{#1}{\makerubric{#1}}{\typeout{No file #1.}}}

377

Redefine \bibitem and its internal implementation to behave like \entry.

\@curveltx@lbibitem [〈label〉]{〈ref 〉}\@curve@lbibitem . . .

\@lbibitem

378 \let\@curveltx@lbibitem\@lbibitem

379 \def\@curve@lbibitem[#1]#2{\@sentry[\@biblabel{#1}]%

380 \if@filesw

381 {\let\protect\noexpand%

382 \immediate\write\@auxout{\string\bibcite{#2}{#1}}}%

383 \fi%

384 \ignorespaces}

385 \let\@lbibitem\@curve@lbibitem

386

\@curveltx@bibitem {〈ref 〉}\@curve@bibitem . . .

27

Page 28: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

\@bibitem

387 \let\@curveltx@bibitem\@bibitem

388 \def\@curve@bibitem#1{\stepcounter{bibcount}%

389 \@sentry[\@biblabel{\ifcurve@revbib\thebibtotal\else\thebibcount\fi}]%

390 \ifcurve@revbib\addtocounter{bibtotal}{-1}\fi%

391 \if@filesw

392 \immediate\write\@auxout{\string\bibcite{#1}{\thebibcount}}%

393 \fi%

394 \ignorespaces}

395 \let\@bibitem\@curve@bibitem

396

\@curveltxbibitem

\@curvebibitem

\bibitem397 \let\@curveltxbibitem\bibitem

398 \def\@curvebibitem{%

399 %% #### FIXME: Dirty code duplication from \entry.

400 \@nextentry

401 \noalign\bgroup\gdef\@beforespace{\subrubricbeforespace}%

402 \@ifnextchar[%]

403 \@lbibitem\@bibitem}

404 \let\bibitem\@curvebibitem

405

Special cases:

• bibentry (version 1.9): restore standard definitions because bibentry justinlines bibliographic contents.

406 \AtBeginOfFile{bibentry.sty}{

407 \let\@lbibitem\@curveltx@lbibitem

408 \let\@bibitem\@curveltx@bibitem

409 \let\bibitem\@curveltxbibitem}

410

• splitbib (version 1.16): restore standard definitions because ours are usedonly as part of the \endthebibliography redefinition.

411 \AtBeginOfFile{splitbib.sty}{

412 \let\@lbibitem\@curveltx@lbibitem

413 \let\@bibitem\@curveltx@bibitem

414 \let\bibitem\@curveltxbibitem}

415

• hyperref: restore whatever previous behavior we had. It is arguablewhether we should preserve hyperref’s functionality, but this answer is no,at least for the time being. Note that we assume that hyperref is loadedlate in the process. Also, hyperref does not affect \bibitem.

416 \AtBeginOfFile{hyperref.sty}{

417 \let\@curveprevious@lbibitem\@lbibitem

418 \let\@curveprevious@bibitem\@bibitem}

419 \AtEndOfFile{hyperref.sty}{

420 \let\@lbibitem\@curveprevious@lbibitem

421 \let\@bibitem\@curveprevious@bibitem}

422

28

Page 29: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

thebibliography {〈key〉}bibentry overrides this definition in its own group in \BR@nobib, but this is infact okay because it’s not supposed to print anything. The same goes for splitbibwhich saves this definition and restores it when it actually matters.

423 \newenvironment{thebibliography}[1]{%

Disable the skipsamekey mechanism and the prefix which would get in the way.

424 \let\@key\@alwayskey

425 \def\@prefix{}

For compatibility with bibliographic packages such as multibib, the bibliographytitle is set (by order of priority) to either \bibname, \refname or \@listpubname.

426 \begin{rubric}{\@ifundefined{bibname}{%

427 \@ifundefined{refname}{\@listpubname}{\refname}}{%

428 \bibname}}

429 }{%

430 \end{rubric}

431 }

432

\@curveltxbibliography {〈bibs〉}\bibliography . . .

Define \bibliography to issue a \makerubric call on the bbl file.

433 \let\@curveltxbibliography\bibliography

434 \def\bibliography#1{%

435 \if@filesw

436 \immediate\write\@auxout{\string\bibdata{#1}}%

437 \fi%

438 \@curve@input@{\jobname.bbl}}

439

Special cases:

• multibbl (version 1.12): merge definitions.

440 \AtEndOfFile{multibbl.sty}{

441 \def\bibliography##1##2##3{%

442 \@ifundefined{##1@auxfile}{}{%

443 \expandafter\immediate\write\csname ##1@auxfile\endcsname%

444 {\string\bibdata{##2}}}%

445 \def\bibname{##3}%

446 \def\refname{##3}%

447 \@curve@input@{##1.bbl}}}

448

• splitbib: restore original version because ours are used only as part of the\endthebibliography redefinition.

449 \AtBeginOfFile{splitbib.sty}{

450 \let\bibliography\@curveltxbibliography}

451

Apart from that, completing splitbib support is a pain in the ass. We needto do two things. First, redefine the abominable \NMSB@writeentry in order tooutput a correctly typeset rubric (titles are converted to subrubrics for instance).

29

Page 30: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

Next we need to redefine \endthebibliography to restore our own definitions for\bibitem, \@bibitem and \@lbibitem, and make it use \@curve@input@ insteadof \@input@.

452 \AtEndOfFile{splitbib.sty}{

453 \def\NMSB@writeentry##1##2##3##4##5,{\ifx\relax ##5\relax

454 \else

455 \def\NMSB@currcat{##1##2##3##4}%

456 \def\NMSB@currcatlevelone{##1##2}%

457 \ifx\NMSB@currcatlevelone\NMSB@prevcatlevelone\else

458 \expandafter\ifx\csname NMSBtitle@\NMSB@currcatlevelone

459 \endcsname\relax

460 \else

461 \if@filesw

462 \expandafter\let\expandafter\NMSB@tempentry

463 \csname NMSBtitle@\NMSB@currcatlevelone\endcsname

464 \edef\NMSB@tempentry{\@backslashchar subrubric{\NMSB@tempentry}}

465 \expandafter\NMSB@writecatbib\expandafter{\NMSB@tempentry}

466 \expandafter\ifx\csname

467 NMSBcomment@\NMSB@currcatlevelone\endcsname\relax

468 \else

469 \immediate\write\NMSB@catbib{\string\vskip2ex^^J%

470 \string\hspace{-\leftmargin}\string\relax^^J%

471 \string\begin{minipage}{\textwidth}^^J%

472 \string\addtolength\string\parindent{20pt}^^J%

473 \string\noindent}

474 \expandafter\let\expandafter\NMSB@tempentry

475 \csname NMSBcomment@\NMSB@currcatlevelone\endcsname

476 \expandafter\NMSB@writecatbib\expandafter{%

477 \NMSB@tempentry^^J}%

478 \immediate\write\NMSB@catbib{\string\end{minipage}^^J%

479 \string\par\string\addpenalty{\NMSB@penalty}

480 \string\vskip2ex}

481 \fi

482 \fi

483 \fi

484 \xdef\NMSB@prevcatlevelone{##1##2}%

485 \ifnum\theSBresetdepth>0\relax

486 \setcounter{\@listctr}{0}%

487 \fi

488 \expandafter\ifx\csname NMSBprefix@\NMSB@prevcatlevelone

489 \endcsname\relax

490 \NMSB@currprefixlevelonetok{\relax}%

491 \else

492 \expandafter\expandafter\expandafter\NMSB@currprefixlevelonetok

493 \expandafter\expandafter\expandafter{%

494 \csname NMSBprefix@\NMSB@prevcatlevelone\endcsname}%

495 \fi

496 \fi

497 \ifx\NMSB@currcat\NMSB@prevcat\else

498 \ifnum\NMSB@currcat=9999\else

499 \expandafter\ifx\csname NMSBtitle@\NMSB@currcat\endcsname

500 \relax

501 \else

502 \if@filesw

30

Page 31: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

503 \immediate\write\NMSB@catbib{%

504 \string\par\string\addpenalty{-\NMSB@halfpenalty}%

505 \string\relax^^J%

506 \string\item[]%

507 \string\SBsubtitle}%

508 \expandafter\let\expandafter\NMSB@tempentrya

509 \csname NMSBtitle@\NMSB@currcatlevelone\endcsname

510 \expandafter\let\expandafter\NMSB@tempentryb

511 \csname NMSBtitle@\NMSB@currcat\endcsname

512 \expandafter\NMSB@writecatbib\expandafter{%

513 \expandafter{\NMSB@tempentrya}}

514 \expandafter\NMSB@writecatbib\expandafter{%

515 \expandafter{\NMSB@tempentryb}}

516 \immediate\write\NMSB@catbib{\string\relax^^J%

517 \string\par\string\addpenalty{\NMSB@penalty}%

518 \string\relax}%

519 \expandafter\ifx\csname

520 NMSBcomment@\NMSB@currcat\endcsname\relax

521 \else

522 \immediate\write\NMSB@catbib{\string\vskip2ex^^J%

523 \string\hspace{-\leftmargin}\string\relax^^J%

524 \string\begin{minipage}{\textwidth}^^J%

525 \string\addtolength\string\parindent{20pt}^^J%

526 \string\noindent}

527 \expandafter\let\expandafter\NMSB@tempentry

528 \csname NMSBcomment@\NMSB@currcat\endcsname

529 \expandafter\NMSB@writecatbib\expandafter{%

530 \NMSB@tempentry^^J}%

531 \immediate\write\NMSB@catbib{\string\end{minipage}^^J%

532 \string\par\string\addpenalty{\NMSB@penalty}%

533 \string\vskip2ex}

534 \fi

535 \fi

536 \fi

537 \fi

538 \xdef\NMSB@prevcat{##1##2##3##4}%

539 \ifnum\theSBresetdepth>1\relax

540 \setcounter{\@listctr}{0}%

541 \fi

542 \expandafter\ifx\csname NMSBprefix@\NMSB@currcat\endcsname\relax

543 \expandafter\NMSB@currprefixtok\expandafter{%

544 \the\NMSB@currprefixlevelonetok}%

545 \else

546 \expandafter\expandafter\expandafter\NMSB@currprefixtok

547 \expandafter\expandafter\expandafter{%

548 \csname NMSBprefix@\NMSB@currcat\endcsname}

549 \fi

550 \fi

551 \expandafter\ifx\csname NMSBlabel@##5\endcsname\relax

552 \if@filesw

553 \stepcounter\@listctr

554 \expandafter\ifx\expandafter\relax\the\NMSB@currprefixtok

555 \def\NMSB@tempentry{}%

556 \else

31

Page 32: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

557 \expandafter\expandafter\expandafter\def

558 \expandafter\expandafter\expandafter\NMSB@tempentry

559 \expandafter\expandafter\expandafter{%

560 \expandafter\the\expandafter\NMSB@currprefixtok

561 \the\value{\@listctr}}%

562 \edef\NMSB@tempentry{[\NMSB@tempentry]}

563 \fi

564 \edef\NMSB@tempentry{%

565 \@backslashchar bibitem%

566 \NMSB@tempentry{\csname NMSBkey@##5\endcsname}}%

567 \expandafter\NMSB@writecatbib\expandafter{%

568 \NMSB@tempentry}

569 \expandafter\let\expandafter\NMSB@tempentry

570 \csname NMSBentry@##5\endcsname%

571 \expandafter\NMSB@writecatbib\expandafter{%

572 \NMSB@tempentry}

573 \fi

574 \setbox\@tempboxa=\hbox{\the\NMSB@currprefixtok\the\value{\@listctr}}%

575 \ifdim\NMSB@reallylongest<\wd\@tempboxa

576 \setlength{\NMSB@reallylongest}{\wd\@tempboxa}%

577 \xdef\NMSB@reallylongestlabel{%

578 \expandafter\ifx\expandafter\relax\the\NMSB@currprefixtok

579 \else\the\NMSB@currprefixtok\fi\the\value{\@listctr}}%

580 \fi

581 \else

582 \if@filesw

583 \immediate\write\NMSB@catbib{%

584 \string\bibitem}

585 \expandafter\let\expandafter\NMSB@tempentry

586 \csname NMSBlabel@##5\endcsname

587 \expandafter\NMSB@writecatbib\expandafter{%

588 \expandafter[\NMSB@tempentry]}%

589 \immediate\write\NMSB@catbib{%

590 {\csname NMSBkey@##5\endcsname}}%

591 \expandafter\let\expandafter\NMSB@tempentry

592 \csname NMSBentry@##5\endcsname%

593 \expandafter\NMSB@writecatbib\expandafter{%

594 \NMSB@tempentry^^J^^J}

595 \fi

596 \setbox\@tempboxa=\hbox{\csname NMSBlabel@##5\endcsname}%

597 \ifdim\NMSB@reallylongest<\wd\@tempboxa

598 \setlength{\NMSB@reallylongest}{\wd\@tempboxa}%

599 \expandafter\let\expandafter\NMSB@reallylongestlabel\csname

600 NMSBlabel@##5\endcsname

601 \fi

602 \fi

603 \fi

604 }

605 \def\endthebibliography{%

606 \usecounter{enumiv}%

607 \edef\NMSB@sortedvaluelist{%

608 \expandafter\NMSBsortlt\expandafter{\NMSB@valuelist}}%

609 \expandafter\NMSB@writelist\expandafter{\NMSB@sortedvaluelist}%

610 \if@filesw

32

Page 33: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

611 \immediate\write\NMSB@catbib{%

612 \string\end{thebibliography}}

613 \immediate\closeout\NMSB@catbib

614 \fi

615 \begingroup

616 \ifNMSB@newchap\else

617 \@ifundefined{chapter}{\def\section####1####2{}}{%

618 \def\chapter####1####2{}}%

619 \fi

620 \let\thebibliography\@NMSBorig@thebibliography

621 \let\endthebibliography\@NMSBorig@endthebibliography

622 \let\bibitem\@curvebibitem

623 \let\@lbibitem\@curve@lbibitem

624 \let\@bibitem\@curve@bibitem

625 \@curve@input@{\jobname.sbb}

626 \endgroup

627 \ifx\NMSB@missingcat\NMSB@empty\else

628 \expandafter\NMSB@warnnocateg\NMSB@missingcat\end

629 \fi

630 \ifNMSB@strict

631 \ifx\NMSB@doublecat\NMSB@empty\else

632 \expandafter\NMSB@warndblcateg\NMSB@doublecat\end

633 \fi

634 \fi

635 \ifdim\NMSB@reallylongest=\NMSB@longest\relax\else

636 \NMSB@warnwronglongest

637 \fi}}

638

A.3.3 Language Processing

english

french

francais

spanish

portuges

portugese

brazil

brazilian

italian

german

ngerman

dutch

danish

swedish

polish

639 \DeclareOption{english}{%

640 \continuedname{~(continued)}

641 \listpubname{List of Publications}}

642 \DeclareOption{french}{%

643 \continuedname{~(suite)}

644 \listpubname{Liste des Publications}}

645 \DeclareOption{francais}{%

646 \ExecuteOptions{french}}

647 \DeclareOption{spanish}{%

648 \continuedname{~(contin\’ua)}

649 \listpubname{Lista de Publicaciones}}

650 \DeclareOption{portuges}{%

651 \continuedname{~(continua\c c\~ao)}

652 \listpubname{Publica\c c\~oes}}

653 \DeclareOption{portuguese}{%

654 \ExecuteOptions{portuges}}

655 \DeclareOption{brazil}{%

656 \ExecuteOptions{portuges}}

657 \DeclareOption{brazilian}{%

658 \ExecuteOptions{portuges}}

659 \DeclareOption{italian}{%

660 \continuedname{~(continua)}

33

Page 34: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

661 \listpubname{Pubblicazioni}}

662 \DeclareOption{german}{%

663 \continuedname{~(fortgesetzt)}

664 \listpubname{Verzeichnis der Ver\"offentlichungen}}

665 \DeclareOption{ngerman}{%

666 \ExecuteOptions{german}}

667 \DeclareOption{dutch}{%

668 \continuedname{~(vervolg)}

669 \listpubname{Publicaties}}

670 \DeclareOption{danish}{%

671 \continuedname{~(fortsat)}

672 \listpubname{Udgivelser}}

673 \DeclareOption{swedish}{%

674 \continuedname{~(forts.)}

675 \listpubname{Publikationer}}

676 \DeclareOption{polish}{

677 \continuedname{~(kontynuacja)}

678 \listpubname{Publikacje}}

679

A.3.4 Standard Class Processing

*paper

landscape 680 \DeclareOption{a4paper}{

681 \setlength\paperheight{297mm}

682 \setlength\paperwidth{210mm}}

683 \DeclareOption{a5paper}{

684 \setlength\paperheight{210mm}

685 \setlength\paperwidth{148mm}}

686 \DeclareOption{b5paper}{

687 \setlength\paperheight{250mm}

688 \setlength\paperwidth{176mm}}

689 \DeclareOption{letterpaper}{

690 \setlength\paperheight{11in}

691 \setlength\paperwidth{8.5in}}

692 \DeclareOption{legalpaper}{

693 \setlength\paperheight{14in}

694 \setlength\paperwidth{8.5in}}

695 \DeclareOption{executivepaper}{

696 \setlength\paperheight{10.5in}

697 \setlength\paperwidth{7.25in}}

698 \DeclareOption{landscape}{

699 \setlength\@tempdima{\paperheight}

700 \setlength\paperheight{\paperwidth}

701 \setlength\paperwidth{\@tempdima}}

702

10pt

11pt

12pt

703 \DeclareOption{10pt}{\def\@ptsize{0}}

704 \DeclareOption{11pt}{\def\@ptsize{1}}

705 \DeclareOption{12pt}{\def\@ptsize{2}}

706

oneside

twoside

34

Page 35: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

707 \DeclareOption{oneside}{\@twosidefalse\@mparswitchfalse}

708 \DeclareOption{twoside}{\@twosidetrue\@mparswitchtrue}

709

final

draft 710 \DeclareOption{draft}{\setlength\overfullrule{5pt}}

711 \DeclareOption{final}{%

712 \setlength\overfullrule{0pt}

713 \setlongtables}

714

715 \ExecuteOptions{english,letterpaper,10pt,oneside,final}

716 \ProcessOptions

717

718 \input{size1\@ptsize.clo}

719 \setlength\parindent{0pt}

720 \setlength\parskip{0pt}

721 \setlength\tabcolsep{10pt}

722 \setlength\arrayrulewidth{.4\p@}

723 \setlength\leftmargini{2.5em}

724 \leftmargin\leftmargini

725 \setlength\leftmarginii{2.2em}

726 \setlength\leftmarginiii{1.87em}

727 \setlength\leftmarginiv{1.7em}

728 \setlength\leftmarginv{1em}

729 \setlength\leftmarginvi{1em}

730 \setlength\labelsep{.5em}

731 \setlength\labelwidth{\leftmargini}

732 \addtolength\labelwidth{-\labelsep}

733 \@beginparpenalty -\@lowpenalty

734 \@endparpenalty -\@lowpenalty

735 \@itempenalty -\@lowpenalty

736 \renewcommand\theenumi{\@arabic\c@enumi}

737 \renewcommand\theenumii{\@alph\c@enumii}

738 \renewcommand\theenumiii{\@roman\c@enumiii}

739 \renewcommand\theenumiv{\@Alph\c@enumiv}

740 \newcommand\labelenumi{\theenumi.}

741 \newcommand\labelenumii{(\theenumii)}

742 \newcommand\labelenumiii{\theenumiii.}

743 \newcommand\labelenumiv{\theenumiv.}

744 \renewcommand\p@enumii{\theenumi}

745 \renewcommand\p@enumiii{\theenumi(\theenumii)}

746 \renewcommand\p@enumiv{\p@enumiii\theenumiii}

747 \newcommand\labelitemi{\textbullet}

748 \newcommand\labelitemii{\normalfont\bfseries \textendash}

749 \newcommand\labelitemiii{\textasteriskcentered}

750 \newcommand\labelitemiv{\textperiodcentered}

751 \raggedbottom

752 \onecolumn

753 \pagestyle{empty}

754 \pagenumbering{arabic}

755

756 \newcommand\@makefntext[1]{\noindent\hb@xt@1em{\hss\@makefnmark}#1}

757

35

Page 36: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

758 \if@twoside

759 \def\ps@headings{%

760 \let\@oddfoot\@empty\let\@evenfoot\@empty

761 \def\@evenhead{\thepage\hfil\slshape\leftmark}%

762 \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%

763 \let\@mkboth\markboth

764 \def\@rubricmark##1{\markboth{\MakeUppercase{##1}}{}}%

765 \def\@subrubricmark##1{\markright{##1}}%

766 }

767 \else

768 \def\ps@headings{%

769 \let\@oddfoot\@empty

770 \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%

771 \let\@mkboth\markboth

772 \def\@rubricmark##1{\markright{\MakeUppercase{##1}}}%

773 }

774 \fi

775 \def\ps@myheadings{%

776 \let\@oddfoot\@empty\let\@evenfoot\@empty

777 \def\@evenhead{\thepage\hfil\slshape\leftmark}%

778 \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%

779 \let\@mkboth\@gobbletwo

780 \let\@rubricmark\@gobble

781 \let\@subrubricmark\@gobble

782 }

783

784 \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}

785 \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}

786 \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}

787 \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}

788 \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}

789 \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}

790 \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}

791

792 〈/curve〉

Index

Numbers written in italic refer to the page where the corresponding entry is de-scribed; numbers underlined refer to the code line of the definition; numbers inroman refer to the code lines where the entry is used.

Symbols

\@@maketitle . . . . . . 331\@@rubrichead . . . . . 128\@@subrubric . . . . . . 88\@almosttextwidth . 58\@alwayskey . . . . . . . 32\@bibitem . . . . . . . . 387\@clcccolsep . . . . . . 95\@curve@bibitem . . . 387\@curve@input@ . . . . 375\@curve@lbibitem . . 378

\@curvebibitem . . . . 397\@curveinput . . . . . . 349\@curveltx@bibitem . 387\@curveltx@lbibitem 378\@curveltxbibitem . 397\@curveltxbibliography

. . . . . . . . . . . 433\@entry . . . . . . . . . . 43\@flavor . . . . . . . . . 342\@keyfont . . . . . . . . 14\@lbibitem . . . . . . . 378

\@leftheader . . . . . . 196\@listpubname . . . . . 373\@maketitle . . . . . . . 331\@maybekey . . . . . . . 32\@nextentry . . . . . . . 12\@prefix . . . . . . . . . 29\@rightheader . . . . . 196\@rubricfont . . . . . . 122\@rubrichead . . . . . . 128\@rubrichead@c . . . . 128\@rubrichead@cc . . . 128

36

Page 37: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

\@rubrichead@cl . . . 128\@rubrichead@l . . . . 128\@rubrichead@r . . . . 128\@rubricmark . . . . . . 149\@sentry . . . . . . . . . 43\@stext . . . . . . . . . . 58\@subrubric . . . . . . . 97\@subrubric@c . . . . . 97\@subrubric@cc . . . . 97\@subrubric@cl . . . . 97\@subrubric@l . . . . . 97\@subrubric@r . . . . . 97\@subrubricfont . . . 79\@subrubricmark . . . 88\@subtitle . . . . . . . 303\@subtitlefont . . . . 307\@text . . . . . . . . . . . 58\@title@lignment . . 311\@titlealignment . .

. . . . . . . . 311, 317\@titlealignment@c . 311\@titlealignment@l . 311\@titlealignment@r . 311\@titlefont . . . . . . . 29410pt (opt.) . . . . . 11, 70311pt (opt.) . . . . . 11, 70312pt (opt.) . . . . . 11, 703

A

a4paper (opt.) . . 11, 680a5paper (opt.) . . 11, 680ask (opt.) . . . . . . . 7, 342

B

b4paper (opt.) . . . . . 11

b5paper (opt.) . . . . . 680bibcount (cnt.) . . . . . 364\bibitem . . . . . . 10, 397\bibliography . . 11, 433\bibliographystyle . 10

bibtotal (cnt.) . . . . . 364brazil (lang.) . . . . . 639brazilian (lang.) . . . 639

C

conditionals:curve@revbib . . . 364

\continuedname . 12, 182counters:

bibcount . . . . . . 364bibtotal . . . . . . 364

curve@revbib (cond.) 364

D

danish (lang.) . . . . . 639

draft (opt.) . . . . 11, 710dutch (lang.) . . . . . . 639

E

english (lang.) . . . . . 639\entry . . . . . . . . . . 8, 43\entry* . . . . . . . . . . . 8

environments:rubric . . . . . . 8, 149thebibliography

. . . . . . . . 10, 423executivepaper (opt.)

. . . . . . . . 11, 680

F

final (opt.) . . . . 11, 710\flavor . . . . . . . . . . . 7

francais (lang.) . . . . 639french (lang.) . . . . . 639

G

german (lang.) . . . . . 639

H

\header@scale . . . . . 189\headerscale . . . . 6, 189\headerspace . . . . 6, 193

I

\includephoto@b . . . 235\includephoto@c . . . 235\includephoto@t . . . 235\input . . . . . . . . . . . 349italian (lang.) . . . . . 639

K

\keyalignment . . . . 8, 17\keyfont . . . . . . . . 8, 14

L

landscape (opt.) . 11, 680languages:

brazil . . . . . . . . 639brazilian . . . . . . 639danish . . . . . . . . 639dutch . . . . . . . . . 639english . . . . . . . 639francais . . . . . . 639french . . . . . . . . 639german . . . . . . . . 639italian . . . . . . . 639ngerman . . . . . . . 639polish . . . . . . . . 639portuges . . . . . . 639portugese . . . . . . 639

spanish . . . . . . . 639swedish . . . . . . . 639

\leftheader . . . . . 5, 196\leftheader@width . 247legalpaper (opt.) 11, 680letterpaper (opt.) 11, 680\listpubname . . . 12, 373

M

\makeheaders . . . . 6, 283\makeheaders@ . . . . . 277\makeheaders@c . . . . 259\makeheaders@l . . . . 250\makeheaders@r . . . . 267\makerubric . . . . . 7, 357\maketitle . . . . . 7, 331

N

ngerman (lang.) . . . . . 639\nocite . . . . . . . . . . 10

\noentry . . . . . . . . 9, 76

O

oneside (opt.) . . 11, 707openbib (opt.) . . 10, 361options:

10pt . . . . . . . 11, 70311pt . . . . . . . 11, 70312pt . . . . . . . 11, 703a4paper . . . . 11, 680a5paper . . . . 11, 680ask . . . . . . . . . 7, 342b4paper . . . . . . . 11

b5paper . . . . . . . 680draft . . . . . . 11, 710executivepaper .

. . . . . . . . 11, 680final . . . . . . 11, 710landscape . . . 11, 680legalpaper . . 11, 680letterpaper . 11, 680oneside . . . . 11, 707openbib . . . . 10, 361revbib . . . . . 10, 364skipsamekey . . . 9, 32twoside . . . . 11, 707

P

\pagestyle . . . . . . . 11

\photo . . . . . . . . . 5, 216\photo@width . . . . . . 235\photoscale . . . . . 5, 216\photosep . . . . . . 6, 216polish (lang.) . . . . . 639portuges (lang.) . . . . 639

37

Page 38: CurV – a LATEX2 class package for making Cur Vitatexdoc.net/texmf-dist/doc/latex/curve/curve.pdf · latex curve.dtx latex curve.dtx makeindex -s gind curve.idx ... customized CV

CurVe v1.16 (2010/12/14)

portugese (lang.) . . . 639

\prefix . . . . . . . . . 8, 29

R

revbib (opt.) . . . 10, 364

\rightheader . . . . 5, 196

\rightheader@width . 247

rubric (env.) . . . . 8, 149

\rubricafterspace 7, 146

\rubricalignment 8, 138

\rubricfont . . . . . 8, 122

\rubricspace . . . . 8, 125

S

skipsamekey (opt.) . 9, 32

spanish (lang.) . . . . . 639

\subrubric . . . . . 9, 117

\subrubricalignment

. . . . . . . . . 9, 106

\subrubricbeforespace

. . . . . . . . . . 9, 82

\subrubricfont . . . 9, 79

\subrubricspace . . 9, 82

\subtitle . . . . . . 6, 303

\subtitlefont . . . 6, 307

swedish (lang.) . . . . . 639

T

\text . . . . . . . . . . . 9, 58thebibliography

(env.) . . . 10, 423\thispagestyle . . . . 11

\title . . . . . . . . . . . . 6

\titlealignment . 6, 329\titlefont . . . . . 6, 294\titlespace . . . . . 6, 300\today . . . . . . . . . . . 184twoside (opt.) . . 11, 707

Well, I think that’s it. Enjoy using CurVe!

Copyright c© 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 DidierVerna.

38