
preliminary draft, May 26, 2003 11:36 preliminary draft, May 26, 2003 11:36
TUGboat, Volume 0 (2060), No. 0 preliminary draft, May 26, 2003 11:36 1003
The key is “XEmacs” and the entry’s contents
is “Member of the review board.”. Keys are usually
used to indicate dates. C
u
rV
e
aligns both keys and
contents together. Keys are optional (hence, they
should be input within brackets) in order for you to
classify several entries together (without repeating
the same key over and over again). For instance:
\entry*[2000-...] \textbf{OpenGL Programming}.
15 hours lecture, including workshops.
\entry* \textbf{Operating Systems}.
30 hours lecture.
Here, the second key is not repeated be cause
the “Operating Systems” course began in the same
year as the OpenGL one.
You probably have noticed already that a “star-
ified” version of the \entry command is used. Ac-
tually, \entry* commands in rubric environments
are very similar to \item commands in list en-
vironments. The reason for this “star-ification” is
that the first version of C
u
rV
e
had a somewhat ill-
designed, unstarred \entry command that took the
whole entry’s contents as a second argument. The
new scheme is much more elegant, but backward
compatibility has been preserved.
3 The “flavor” mechanism
This is a very nice feature of C
u
rV
e
, and is also one of
the reasons that made me w rite it in the first place.
It is often desirable to maintain several slightly
divergent versions of one’s CV at the same time. For
instance, when I was looking for a job back in 2001,
I had a version of my CV emphasizing Artificial
Intelligence, and another emphasizing Distributed
Virtual Reality. Only the title and some entries in
the “Professional Experience” rubric were a bit dif-
ferent; all other parts basically remained the same.
C
u
rV
e
provides an easy-to-use mechanism for main-
taining different “flavors” of your CV at the same
time. You basically write different versions of (some
of) your rubrics in different files (this is needed for
technical reasons anyway, as mentioned previously),
tell C
u
rV
e
which flavor you want to format (C
u
rV
e
can
even ask you w hich one to use directly). C
u
rV
e
will
then use the global skeleton, and whenever it finds
a rubric file specialized for that particular flavor, it
will use it. Otherwise, it will simply fall back to the
default one (no particular flavor).
With a clever use of Makefiles, you can even
manage to compile different flavors at the same time.
Supp ose you have a mainstream CV (let’s call it
cv.tex), with an “education” rubric in a file named
education.tex and a “skills” one in skills.tex.
Supp ose further that you want a slightly divergent
version of your CV with an alternate skills rubric.
The normal way to compile the alternate ver-
sion is to save a new rubric file called, for instance,
skills.alt.tex, and tell C
u
rV
e
to use it by calling
\flavor{alt} in your do c ument’s preamble. The
only problem is that this alternate version will also
compile to cv.dvi because both versions share the
same skeleton and other rubric files.
To remedy this problem, you can make C
u
rV
e
ask you at run-time which flavor to compile (this
is done with the ask class option) and use special
Makefile rules to answer the question for you, build
the different flavors and move the different output
files to flavor-specific names. Here is a Makefile ex-
ample that would allow you to do this for as many
different versions of skills.tex as you wish:
FLAVORS = alt # make other flavors if you want
all: all_flavors cv.dvi
all_flavors:
for i in $(FLAVORS) ; do \
$(MAKE) cv.$$i.dvi FLAVOR=$$i ; \
done
cv.$(FLAVOR).dvi: cv.tex education.tex \
skills.$(FLAVOR).tex
echo $(FLAVOR) | latex cv.tex
mv cv.dvi $@
cv.dvi: cv.tex education.tex skills.tex
echo | latex cv.dvi
As you can see, the trick is to fork a new make
subpro c es s for each flavor you want to build, and ob-
viously finish with the mainstream version. An echo
shell command is used in conjunction with the ask
class option to indicate the current flavor to build.
For each make subprocess, this flavor is stored in
the dynamic variable FLAVOR, and the correspond-
ing cv.$(FLAVOR).dvi rule is used, with the proper
dependencies.
An implementation sidenote. In order to im-
plement the flavor mechanism, the L
A
T
E
X macro
\input has been redefined to look for flavored files
first. This is actually very nice because you can
use it to make different flavors of text that does
not belong in rubrics. For instance, suppose you
want a special version of the subtitle of your CV for
the flavor alt. Put your alternate subtitle in a file
called subtitle.alt.tex; do something similar for
the default subtitle. Now go to the skeleton of your
CV, and write \input{subtitle} in the preamble.