curv – a latex2 class package for making cur...
Post on 06-Feb-2018
230 Views
Preview:
TRANSCRIPT
CurVe – a LATEX2ε class package for making
Curricula Vitae∗
Didier Verna
mailto:didier@lrde.epita.fr
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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<radoslaw.dominiak@gmail.com>
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<konrad@skeri.com>
New customizable length \rubricafterspace defining the space betweeneach rubricFix incompatibilities with the multibbl package.Honor bibliography titles (if) provided by multibib or multibbl
15
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 <adiel@inf.ufsc.br>
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<Thomas.Delaet@student.kuleuven.ac.be>
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 <krbi01@control.auc.dk>
v1.2 Support for standard bibliography mechanism(s)New macro \entry*
Improvements in AUC-TEX supportSupport for German thanks to Harald Harders <h.harders@tu-bs.de>Support for Spanish thanks to Agustín Martín <agusmba@terra.es>
v1.1 Support for Italian thanks to Riccardo Murri <murri@phc.unipi.it>
16
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
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\\\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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
top related