From 08346c9c4f0a0bf381eaa2c9a04a7dd5f6beb58b Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Wed, 11 Jan 2006 23:52:09 +0000
Subject: trunk/Master/texmf-dist/source/latex/curve

git-svn-id: svn://tug.org/texlive/trunk@213 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/source/latex/curve/curve.dtx | 1259 ++++++++++++++++++++++++
 1 file changed, 1259 insertions(+)
 create mode 100644 Master/texmf-dist/source/latex/curve/curve.dtx

(limited to 'Master/texmf-dist/source/latex/curve/curve.dtx')

diff --git a/Master/texmf-dist/source/latex/curve/curve.dtx b/Master/texmf-dist/source/latex/curve/curve.dtx
new file mode 100644
index 00000000000..141863557f3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/curve/curve.dtx
@@ -0,0 +1,1259 @@
+% \iffalse                                                 -*- mode: LaTeX -*-
+%
+% curve.dtx --- Doc file for the CurVe package (code and documentation)
+%
+% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Didier Verna.
+%
+% PRCS: $Id: curve.dtx 1.47 Wed, 14 Sep 2005 17:49:57 +0200 didier $
+%
+% Author:        Didier Verna <didier@lrde.epita.fr>
+% Maintainer:    Didier Verna <didier@lrde.epita.fr>
+% Created:       Thu Dec 10 16:04:01 1998
+% Last Revision: Wed Sep 14 17:45:08 2005
+%
+% This file is part of CurVe.
+%
+% CurVe may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.1
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.1 or later is part of all distributions of LaTeX
+% version 1999/06/01 or later.
+%
+% CurVe consists of the files listed in the file `README'.
+%
+%
+% Commentary:
+%
+% Contents management by FCM version 0.1.
+%
+%
+% Code:
+%
+%<*driver>
+\documentclass[a4paper]{ltxdoc}
+\newcommand{\curve}{%
+  \mbox{\fontfamily{ptm}\fontseries{b}\fontshape{it}\selectfont%
+    C%
+    \hspace{-.3ex}\protect\raisebox{-.3ex}{\textmd{u}}%
+    \hspace{-.1ex}\textmd{r}%
+    \hspace{-.2ex}V%
+    \hspace{-.6ex}\protect\raisebox{-.3ex}{\textmd{e}}}%
+  }
+% \OnlyDescription
+% \CodelineIndex
+% \RecordChanges
+\begin{document}
+\DocInput{curve.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+% \catcode`\¡=14
+% \CheckSum{939}
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+%
+% ^^A $Format: "% \\newcommand{\\version}{v$Version$}"$
+% \newcommand{\version}{v1.10}
+% ^^A $Format: "% \\newcommand{\\releasedate}{$ReleaseDate$}"$
+% \newcommand{\releasedate}{2005/09/14}
+% ^^A $Format: "% \\newcommand{\\packagecopyright}{$LaTeXCopyright$}"$
+% \newcommand{\packagecopyright}{Copyright \copyright{}  2000, 2001, 2002, 2003, 2004, 2005 Didier Verna}
+% \newcommand{\auctex}{AUC-\TeX}
+% \newcommand{\cv}{\textsc{CV}}
+% \MakeShortVerb{\|}
+% \date{\today}
+% \title{\curve{} -- a \LaTeXe{} class package for making \textbf{Cur}ricula
+% \textbf{V}ita\textbf{e}. \thanks{This document describes \curve{}
+% \version, release date \releasedate.}}
+% \author{Didier Verna\\
+% \texttt{mailto:didier@lrde.epita.fr}\\
+% \texttt{http://www.lrde.epita.fr/\~{}didier}}
+% \maketitle
+%
+%
+% \begin{abstract}
+% \curve{} provides a \LaTeXe{} class that hopefully will make your life
+% easier when you want to write your \cv. It provides you with a set of
+% commands to create rubrics, entries in these rubrics etc. \curve{} will then
+% properly format your \cv{} for you (possibly splitting it onto multiple
+% pages), which is usually the most painful part of \cv{} writing. Another
+% nice feature of \curve{} is its ability to manage different \cv{} ``flavors''
+% simultaneously. It is in fact often the case that you want to maintain
+% slightly divergent versions of your \cv{} at the same time, in order to
+% emphasize on different aspects of your background.\par
+% The \curve{} package is \packagecopyright{}, and distributed under the terms
+% of the LPPL license.
+% \end{abstract}
+%
+% \section{Getting \curve}
+% \curve{} can be obtained from any \textsc{ctan} archive, in the
+% \texttt{macros/latex/contrib} subdirectory. You can also download it
+% directly from my website (online documentation available there), at the
+% \textsc{url} above. Please follow the links on the left menu.
+%
+% If you are a Debian unstable user (unstable referring to Debian, not you),
+% unofficial source and i386 packages are available (thanks to Geoffroy
+% Fouquier for providing this facility). The package name is \texttt{curve}.
+% Here's the \texttt{source.list} entry to use:
+% \begin{verbatim}
+% deb http://www.lrde.epita.fr/debian/ unstable/i386/
+% deb-src http://www.lrde.epita.fr/debian/ sid/source/
+% \end{verbatim}
+%
+% For installation instructions, please read the \texttt{README} file included
+% in the distribution.
+%
+% \section{Overview}
+% The \curve{} package provides you with a document class for writing
+% curricula vitae. The primary purpose of this package is to offer a set of
+% predefined commands to specify the contents of your \cv, while removing from
+% you the burden of formatting it. This has two important consequence however:
+% \curve{} will impose that you conform to its document structuring scheme,
+% and will expect that you like the way it formats things :-). If you prefer
+% another structure for your \cv{}, or if you don't like the formatting
+% (although it is highly configurable), then \curve{} is probably not for
+% you.\par
+% Once you have installed \curve{}, you might want to start with processing
+% the example file \texttt{cv.tex}. This will give you an idea of what a non
+% customized \cv{} looks like with \curve. You can also throw an eye to my
+% own \cv, which is written with \curve{} and has some more fancy hackery on
+% top of it. It's in French, but only the appearance is important for
+% you\ldots My \cv{} can be found at
+% \texttt{http://www.lrde.epita.fr/\~{}didier/perso/cv.php}.
+%
+% \subsection{Document Layout}
+% A \curve{} \cv{} begins with two optional headers (upper left and upper
+% right) in which you usually put your name, address, email, whether you're
+% married and so on. These headers will respectively be left and right aligned.
+% As of version 1.4, \curve{} lets you insert a small identity photo in the
+% headers, either on the left, on the right, or between them. After these
+% headers come an optional title and/or subtitle, which will be centered on
+% the page.
+% \subsubsection{Rubrics}
+% The remaining of the document is composed of sections called ``rubrics'' in
+% the \curve{} terminology. A rubric represents a major topic that you want
+% to detail in your \cv. Typical rubrics are ``Education'', ``Professional
+% Experience'' and the like. Rubrics have a title (centered by default) and
+% appear under the form of properly aligned ``entries'' (see below). If a
+% rubric has to be split across different pages, its title will be repeated
+% automatically.
+% \subsubsection{Entries}
+% An entry is
+% an item of information related to the rubric under which it appears. An
+% entry has a ``contents'', and an optional ``key'' under which it is
+% classified. For instance, under the ``Education'' rubric, you could state
+% that you got a Ph.D. in computer science in the year 2000. In that case, the
+% year would be the entry's key, and the ``Ph.D. in computer science'' part
+% would be the entry's contents. \curve{} aligns both keys and contents
+% together. Keys are optional in order for you to classify several entries
+% together (without repeating the same key over and over again).
+% \subsubsection{Subrubrics}
+% Additionally, you might want to further split your rubrics into
+% ``subrubrics''. For instance, in my own \cv, I have a ``Professional
+% Experience'' rubric, with three subrubrics: ``Teaching'', ``Research'' and
+% ``Development''. This can be accomplished with a special command.
+% Subrubrics are displayed in alignment with the entries' contents by default,
+% but are formatted differently so that they remain distinguishable.
+%
+% \subsection{Document Structure}
+% \subsubsection{Source File Splitting}
+% \curve{} is based on the \texttt{LTXtable} package by David Carlisle. I
+% won't go into gory details, but this has an important implication:
+% \textbf{each rubric must be in its own separate file}. In other words, your
+% \cv's main source file is really a skeleton whose major task is to include
+% the different rubrics from their respective source files.\par
+% This is not much of a hassle, really, and it actually made my life easier
+% when I implemented the ``flavor'' mechanism described below.
+% \subsubsection{The ``flavor'' Mechanism}
+% It is often desirable to maintain several slightly divergent versions of
+% one's \cv{} at the same time. For instance, when I was looking for a job some
+% time ago, I had a version of my \cv{} emphasizing on Artificial Intelligence,
+% and another emphasizing on Distributed Virtual Reality. Only the title and
+% some entries in the ``Professional Experience'' rubric were a bit
+% different; the main skeleton basically remained the same.\par
+% \curve{} provides an easy-to-use mechanism for maintaining different
+% ``flavors'' of your \cv{} at the same time. You basically write different
+% versions of (some of) your rubrics in different files, tell \curve{} which
+% flavor you want to format (\curve{} can even ask you which one to use
+% directly) and that's it. \curve{} will use the global skeleton, and whenever
+% it finds a rubric file specialized for that particular flavor, it will use
+% it. Otherwise, it will simply fall back to the default one (no particular
+% flavor).
+%
+%
+% \section{Using \curve{}}
+% First of all, please note that the \texttt{ltxtable} and \texttt{calc}
+% packages are required. If you're using the identity photo feature, the
+% \texttt{graphicx} package is also needed. You don't have to load them
+% explicitly though. As long as \LaTeXe{} can locate them, they will be used
+% automatically.
+%
+% \subsection{Writing the Skeleton File}
+% Say |\documentclass[|\meta{options}|]{curve}| at the beginning of your
+% skeleton file in order to use \curve. The available options are described
+% along the text, where appropriate.
+%
+% \subsubsection{Making Headers}
+% \DescribeMacro{\leftheader}\DescribeMacro{\rightheader}
+% The |\leftheader| and |\rightheader| macros take one mandatory argument
+% which defines respectively the contents of the upper left and upper right
+% headers. They can be used in the document's preamble only. The headers will
+% respectively be flushed to the left and to the right.
+% \par
+% \DescribeMacro{\photo}
+% If you want to insert a small identity photo into the header part, you can
+% use the |\photo| macro (available since version 1.4). It takes a mandatory
+% argument in which you pass the image file name, as you would to
+% |\includegraphics|. This macro also takes an optional argument which lets
+% you specify the horizontal position of the photo: the values can be
+% \texttt{l} (the default), \texttt{c} or \texttt{r} meaning that the photo
+% will appear on the left, center, or right.
+% \par
+% \DescribeMacro{\photoscale}\DescribeMacro{\photosep}
+% \DescribeMacro{\headerscale}
+% The headers' horizontal layout is further controled by three additional
+% macros. The |\photoscale| macro specifies the amount of text width that the
+% photo should 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 the side of the
+% photo and the next headers's text. This is used only when the photo is on
+% the left or right. By default, |10pt| is used. Finally, |\headerscale|
+% specifies the proportion of the \emph{remaining} space that the \emph{left}
+% textual header should occupy. It works like |\photoscale| and amounts to 0.5
+% by default.
+% \par
+% Let me take an example to make this clearer. Suppose you have a |\photoscale|
+% of 0.1 and a |\photosep| of \texttt{10pt}. The \emph{remaining} space, that
+% is, the space occupied by the textual headers, amounts to 90\% of the text
+% width, minus 10 points. If you then specify a |\headerscale| of 0.6, then
+% the left header will take 60\% of that remaining space, and the right one the
+% other 40\%.
+% \par
+% \DescribeMacro{\headerspace}
+% |\headerspace| is the amount of extra vertical space to put after the
+% headers. This is a \LaTeX{} length that defaults to \texttt{10pt}.\par
+% \DescribeMacro{\makeheaders}
+% If you have defined headers, make them appear by calling |\makeheaders| just
+% after the beginning of your document. Note that calling this macro assumes
+% that you have previously defined both headers (possibly empty, though).
+% Otherwise, an error will be signaled. As of version 1.4, the |\makeheaders|
+% command accepts an optional argument that controls the vertical alignment.
+% When given, this argument must be either |t| (for top), |b| (for bottom) or
+% |c| (for center; the default).
+%
+% \subsubsection{Making Titles}
+% \DescribeMacro{\title}\DescribeMacro{\subtitle}
+% The |\title| and |\subtitle| macros take one mandatory argument which
+% define respectively your \cv's title and subtitle. They can be used in
+% the document's preamble only. These titles will be centered on the page.\par
+% \DescribeMacro{\titlespace}
+% |\titlespace| is the amount of extra vertical space to put after the
+% title(s). This is a \LaTeX{} length that defaults to \texttt{0pt}.\par
+% \DescribeMacro{\titlefont}\DescribeMacro{\subtitlefont}
+% The |\titlefont| and |\subtitlefont| macros take one mandatory argument
+% which redefine the fonts to use for the title and the subtitle. They can be
+% used in the document's preamble only. By default, |\Huge\bfseries| and
+% |\Huge\itshape| are used respectively.\par
+% \DescribeMacro{\maketitle}
+% If you have defined a title (and possibly a subtitle), make it (them) appear
+% by calling |\maketitle| after the beginning of your document, and just after
+% |\makeheaders| if you happen use it. It is possible to omit the subtitle,
+% but if you call |\maketitle| without having defined at least a title, an
+% error will be signaled.
+%
+% \subsubsection{Choosing a Flavor}
+% As you already know, each rubric must reside in its own separate file. For
+% instance, if you have a ``Professional Experience'' rubric, you would write
+% its contents into a file named \texttt{experience.tex}. The flavor mechanism
+% works by assigning a pre-extension to rubric file names. For instance,
+% suppose you want to make a special flavor of your \cv{} emphasizing on
+% ``distributed virtual reality''. You would call this flavor ``dvr'', and
+% write the modified ``Professional Experience'' rubric into a file named
+% \texttt{experience.dvr.tex}.\par
+% \DescribeMacro{\flavor}
+% The |\flavor| macro takes one mandatory argument which specifies the flavor
+% to use (in our example, \texttt{dvr}). Although this might be of little use,
+% it is possible to change the flavor anywhere, even right in the middle of
+% your \cv's skeleton.\par
+% \DescribeEnv{ask}
+% Instead of using the |\flavor| macro, you can make \curve{} ask you at
+% run-time which flavor to use by passing the \texttt{ask} option to it.
+%
+% \subsubsection{Including Rubrics}
+% Apart from making headers and titles, the body of your skeleton file will
+% usually contain nothing but directives to include the different rubrics of
+% your \cv.\par
+% \DescribeMacro{\makerubric}
+% To include a rubric in your document, use |\makerubric|. This macro takes
+% one mandatory argument which specifies the rubric to include at that point.
+% The argument actually corresponds to the rubric file name \textbf{without
+% any extension}. Continuing our previous example, you would say
+% |\makerubric{experience}|. First, \curve{} will try to find such a rubric
+% file specific for the current flavor in use, (e.g.
+% \texttt{experience.dvr.tex}). If that fails, it will fall back to a
+% non-flavored file (here, \texttt{experience.tex}). This allows you to
+% specialize only the required rubrics and use the default ones otherwise.
+%
+% \subsection{Writing a Rubric File}
+% \subsubsection{The \texttt{rubric} Environment}
+% \DescribeEnv{rubric}
+% The whole contents of a rubric file must be enclosed in a \texttt{rubric}
+% environment. This environment takes one mandatory argument which specifies
+% the rubric's title. When a rubric crosses several pages, its title is
+% restated with a ``continuation'' text appended.\par
+% \DescribeMacro{\rubricalignment}
+% As of version 1.6, the rubric titles horizontal alignment can be changed
+% thanks to the |\rubricalignment| macro. Possible values for its mandatory
+% argument are |l|, |c| and |r| (meaning left, centered, or right relative to
+% the whole text width), and |cl| and |cc| (meaning left or centered relative
+% to the entries'contents). By default, rubric titles are centered (|c|).\par
+% \DescribeMacro{\rubricfont}
+% The |\rubricfont| macro takes one mandatory argument which redefines the
+% font to use for rubric titles. By default, |\Large\bfseries| is used.\par
+% \DescribeMacro{\rubricspace}
+% |\rubricspace| is the amount of extra vertical space to put after the rubric
+% title. This is a \LaTeX{} length that defaults to \texttt{10pt}.
+%
+% \subsubsection{Making Rubric Entries}
+% \DescribeMacro{\entry}
+% You create entries in your rubrics by calling the |\entry| macro. The first
+% (optional) argument specifies the key, and the second (mandatory) one
+% specifies the contents. Both keys and contents are aligned within each
+% rubric.\par
+% \DescribeMacro{\entry*}
+% Actually, the |\entry| macro was somewhat ill-designed at the first place.
+% The |rubric| environment pretty much behaves as an |itemize| one, hence the
+% idea of using an |\item|-like syntax. As of version 1.2, \curve{} provides
+% an |\entry*| macro which behaves like |\item| in lists: it takes the same
+% first optional argument as the non starred version, but has no other
+% argument. The entry's contents simply consists of the text following the
+% macro call, up to the next |\entry|, |\entry*| or |\subrubric| (see
+% below) call.\par
+% \DescribeMacro{\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| and |r| (meaning left, centered, or right). By default, keys are
+% left aligned (|l|).\par
+% \DescribeMacro{\keyfont}
+% The |\keyfont| macro takes one mandatory argument which redefines the font
+% to use for the entries' keys. By default, the standard document font is
+% used.\par
+% \DescribeMacro{\prefix}
+% Each entry's contents can be prefixed with a visual clue (a symbol for
+% instance). This comes in handy to make a clear distinction between
+% different entries sharing the same key (which is not repeated). The
+% |\prefix| macro takes one mandatory argument which redefines the prefix to
+% use. By default, |\textbullet| is used.\par
+% \DescribeEnv{skipsamekey}
+% While maintaining your CV, you might end up reorganizing your entries and
+% even get entries with the same key. Normally, \curve{} blindly prints the
+% keys regardless of their values. If you don't want repetition, you would
+% have to remove keys by hand which can be cumbersome. As of version 1.10,
+% \curve{} can skip all but the first of a series of identical keys
+% automatically, provided that you use the |skipsamekey| option.
+%
+% \subsubsection{Making Subrubrics}
+% \DescribeMacro{\subrubric}
+% Within a single rubric, you can further separate entries into subrubrics.
+% In order to do this, the |\subrubric| macro is provided. Its mandatory
+% argument specifies the subrubric's title.\par
+% \DescribeMacro{\subrubricalignment}
+% As of version 1.6, the subrubrics horizontal alignment can be changed thanks
+% to the |\subrubricalignment| macro. Possible values for its mandatory
+% argument are |l|, |c| and |r| (meaning left, centered, or right relative to
+% the whole text width), and |cl| and |cc| (meaning left or centered relative
+% to the entries'contents). By default, subrubrics are left-aligned with the
+% entries' contents (|cl|).\par
+% \DescribeMacro{\subrubricfont}
+% The |\subrubricfont| macro takes one mandatory argument which redefines the
+% font to use for the subrubrics. By default, |\Large\itshape| is used.\par
+% \DescribeMacro{\subrubricspace}
+% \DescribeMacro{\subrubricbeforespace}
+% |\subrubricspace| controls the amount of extra vertical space to put after
+% subrubrics. This is a \LaTeX{} length that defaults to \texttt{5pt}.
+% |\subrubricbeforespace| controls the amount of extra vertical space to put
+% \textit{before} a subrubric when there are entries above. This is a \LaTeX{}
+% length that defaults to \texttt{10pt}.
+%
+% \subsection{Standard Class Features}
+%
+% \subsubsection{Page Size and layout}
+% \DescribeEnv{a4paper}
+% \DescribeEnv{a5paper}
+% \DescribeEnv{b4paper}
+% \DescribeEnv{letterpaper}
+% \DescribeEnv{legalpaper}
+% \DescribeEnv{executivepaper}
+% \DescribeEnv{landscape}
+% The \texttt{a4}, \texttt{a5}, \texttt{b4}, \texttt{letter}, \texttt{legal}
+% and \texttt{executive}  ``paper'' options allow you to select the type of
+% page format you want. By default, \texttt{letterpaper} is used. The
+% \texttt{landscape} options switches the horizontal and vertical settings.
+% I'm not sure why I propose this option. Nobody wants to write a \cv{} in
+% landscape mode, right ?\par
+%
+% \DescribeEnv{oneside}
+% \DescribeEnv{twoside}
+% As of version 1.6, \curve{} also supports the standard \texttt{oneside} and
+% \texttt{twoside} class options. By default, \texttt{oneside} is used. In
+% \texttt{twoside} mode, odd and even pages have a different geometry and
+% headings layout.
+%
+% \subsubsection{Font Size}
+% \DescribeEnv{10pt}
+% \DescribeEnv{11pt}
+% \DescribeEnv{12pt}
+% The \texttt{10pt}, \texttt{11pt} and \texttt{12pt} options let you choose
+% the size of the default font you want to use. By default, \texttt{10pt} is
+% used.
+%
+% \subsubsection{Output Mode}
+% \DescribeEnv{final}
+% \DescribeEnv{draft}
+% In \texttt{draft} mode, a black rule will be drawn at the end of overfull
+% lines (as done by standard classes). Due to \curve{} using the
+% \texttt{LTXtable} package, a call to |\setlongtables| is performed in
+% \texttt{final} mode. Please refer to the next section for more information
+% on this. By default, \texttt{final} is used.
+%
+% \subsubsection{Page styles}
+% As of version 1.6, \curve{} supports the standard \LaTeX{} page style
+% mechanism. Available styles are \texttt{empty}, \texttt{plain},
+% \texttt{headings} and \texttt{myheadings}. These styles have their usual
+% meaning, given that rubric and subrubric names are used for marking purpose
+% (the equivalent of chapters and sections in books for instance).
+% By default, the page style is \texttt{empty}.
+%
+% \subsubsection{Bibliography}
+% Most scientists include their own list of publications in their \cv. The
+% first thing you can do is create your own bibliography manually, and
+% although this may appear boring, I actually encourage people to do so for at
+% least three reasons (only my opinion of course):
+% \begin{itemize}
+% \item A \cv{} should be strictly formatted and coherent in layout.
+% Bibliography is no exception to this rule. In other words, it is prettier to
+% have your publications formatted like the rest of your \cv.
+% \item Automatic bibliography generation tools produce references, which is
+% silly in a \cv{} because you don't actually reference your papers anywhere
+% (or do you ?). So better to sort them another way, like, by year of
+% publication as I do in my own \cv.
+% \item Manually adding, like, what ? Half a dozen papers a year in your
+% \cv{} is not that much of a burden after all.
+% \end{itemize}
+%
+% Some people however have expressed the wish of having standard bibliography
+% support in \curve. Version 1.2 provides that.
+% \DescribeEnv{thebibliography}
+% \DescribeMacro{\bibitem}
+% The standard |thebibliography| environment is now supported along with its
+% |\bibitem| companion. The behavior is actually that of a |rubric|
+% environment with its |\entry*| companion. This fact has two implications:
+% firstly, the argument to the environment is unused in \curve{} (but remains
+% for compatibility with the rest of \LaTeX) because \curve{} itself formats
+% the keys and contents properly aligned. Secondly, the bibliographic
+% environment \textbf{must} reside in its own file, as any other rubric. Don't
+% forget that if you happen to write the environment manually.\par
+% \DescribeMacro{\nocite}
+% \DescribeMacro{\bibliographystyle}
+% \DescribeMacro{\bibliography}
+% If you want to use \BibTeX, that's also possible of course. Do it as you
+% would do in a random paper. You will probably issue a |\nocite{*}| command
+% followed by a call to |\bibliography|. In \curve, this uses the |bbl| file
+% as a rubric one.
+%
+%
+% \subsubsection{Internationalization}
+% \DescribeEnv{english}
+% \DescribeEnv{french, francais}
+% \DescribeEnv{spanish}
+% \DescribeEnv{italian}
+% \DescribeEnv{german, ngerman}
+% \DescribeEnv{danish}
+% \DescribeEnv{dutch}
+% \DescribeEnv{portuges, portuguese}
+% \DescribeEnv{brazilian, brazil}
+% \curve{} currently supports English, French, Spanish, Italian, German,
+% Danish, Dutch and Portuguese. You can select the language you want to use by
+% using the corresponding option. The \texttt{french} and \texttt{francais}
+% options are synonyms. The \texttt{german} and \texttt{ngerman} options are
+% currently equivalent. So are the \texttt{portuges}, \texttt{portuguese},
+% \texttt{brazil} and \texttt{brazilian} options.\par
+% If you want a finer grain on the language-dependent parts of \curve, the
+% following macros are provided.\par
+% \DescribeMacro{\continuedname}
+% The |\continuedname| macro takes one mandatory argument which redefines the
+% continuation text output when rubrics extend across several pages. By
+% default, ``\meta{space}(continued)'' is used in English. Although this might
+% be of little use, it is possible to change the continuation text in the
+% middle of your document, provided that you do so outside the |rubric|
+% environment.\par
+% \DescribeMacro{\listpubname}
+% The |\listpubname| macro takes one mandatory argument which redefines the
+% title of the bibliographic section (when you use the provided bibliography
+% support). By default, ``List of Publications'' is used in English.
+%
+%
+% \section{Hints, Tricks, Tips}
+% Here are some tips that I use for my own \cv. You might find them of some
+% interest.\par
+%
+% \subsection{Page Geometry}
+% First of all, it is common to have very thin margins in curricula vitae.
+% \curve{} does not do anything special about this because I don't think that
+% belongs to its duty. The \texttt{geometry} package comes in handy if you
+% want to reduce your margins.
+%
+% \subsection{The \texttt{ltx} Extension}
+% Personally, I prefer to keep \texttt{.tex} for \TeX{} files, and use the
+% \texttt{ltx} extension for \LaTeX. This is supported by \curve{} which will
+% actually prefer \texttt{ltx} files over \texttt{tex} ones, especially when
+% including rubrics. To be more precise, suppose you are building a flavor
+% \texttt{flv} of your \cv. A call to |\makerubric{foo}| will try to use the
+% following files in that order:\\
+% \texttt{foo.flv.ltx}\\
+% \texttt{foo.flv.tex}\\
+% \texttt{foo.ltx}\\
+% \texttt{foo.tex}\par
+%
+% \subsection{Longtables}
+% The \texttt{LTXtable} package on which \curve{} is based is a mix of
+% \texttt{tabularx} and \texttt{longtables}. If you read the documentation of
+% the later, you will discover that for table width computing reasons
+% (especially when a table crosses several pages), \LaTeX{} has to be called
+% twice, sometimes three times, with the last run involving a call to
+% |\setlongtables|.\par
+% Normally, you shouldn't have problems with \curve{} because all tables are
+% set to the maximum width. However, for safety reasons (I mean, just to be
+% sure\ldots), \curve{} automatically calls |\setlongtables| in \texttt{final}
+% mode. If you experiment problems with the formatting, you should process
+% your document once or twice in |draft| mode, and a second or third time in
+% |final| mode.\par
+% Ah, and also, since you're basically working in tabular environments, don't
+% forget that you are not allowed to use the |\\| command\ldots
+%
+%
+% \subsection{Managing Different Flavors}
+% If you maintain different flavors of your \cv{} at the same time, you
+% probably want to rebuild all of them after any modification. Since you have
+% a single skeleton file for all of them (say, \texttt{cv.tex}), the output
+% file will have the same name for all flavors (say, \texttt{cv.dvi}). This
+% can bother you if you want all flavors of your formatted \cv{} available at
+% the same time.\par
+% To remedy this problem, I usually use the \texttt{ask} option and a
+% makefile to build the different flavors and move the output file to
+% flavor-specific name. Here is a typical makefile target that should clarify
+% (or maybe darken ?) what I am saying:
+% \begin{verbatim}
+%cv.$(FLAVOR).dvi: cv.ltx $(RUBRICS)
+%       echo $(FLAVOR) | latex cv.ltx
+%       mv cv.dvi $@
+% \end{verbatim}
+% As you can see, the shell is responsible for answering the question.
+%
+% \subsection{More On Flavors}
+% In order to implement the flavor mechanism, the \LaTeX{} macro |\input| has
+% been redefined to look for ``flavored'' files first. This is actually very
+% nice because you can use it if you want to make different flavors of text
+% that does not belong in rubrics.\par
+% For instance, suppose you want a special version of the subtitle of your
+% \cv{} for the flavor \texttt{flv}. Create a file called
+% \texttt{subtitle.flv.ltx} and put something like
+% ``|\subtitle{special subtitle}|'' in it. Do something similar for the
+% default subtitle. Now go to the skeleton of your \cv, and write
+% |\input{subtitle}| in the preamble. That's it. You'll have different
+% subtitles in your different \cv{} flavors.
+%
+%
+% \section{\auctex{} support}
+% \auctex{} is a powerful major mode for editing \TeX{} documents in
+% \textsf{Emacs} or \textsf{XEmacs}. In particular, it provides automatic
+% completion of macro names once they are known. \curve{} supports \auctex{}
+% by providing a style file named \texttt{curve.el} which contains \auctex{}
+% definitions for the relevant macros. This file should be installed to a
+% location where \auctex{} can find it (usually in a subdirectory of your
+% \LaTeX{} styles directory). Please refer to the \auctex{} documentation for
+% more information on this.\par
+% As of version 1.2, \curve{} has an improved \auctex{} support. Most notably,
+% the command |M-Ret| will insert an |\entry*| macro within a |rubric|
+% environment. Also, the |\makerubric| macro handling now removes both the
+% file extension and the file flavor extension.
+%
+%
+% \section{Changes}
+% \begin{itemize}
+% \item[v1.10] Support automatic skipping of identical keys, suggested by Akim
+%   Demaille\\
+%   Fix alignment problem with empty prefix, reported by Jonas Haulin
+% \item[v1.9] Fix incompatibilities with the |bibentry| package, reported by
+%   Joris Desmet\\
+%   Fix standard bibliography support (broken in v1.8)
+% \item[v1.8] Prevent page breaks after subrubric headings
+% \item[v1.7] Support for key horizontal alignment\\
+%   |\raggedleft| and |\raggedright| can now be used within individual
+%   entries\\
+%   Fix typo in Danish version of |\continuedname|
+% \item[v1.6] Support for rubric and subrubric titles horizontal alignment\\
+%   Support for standard \LaTeX{} page style mechanism\\
+%   Support for \texttt{oneside} and \texttt{twoside} options\\
+%   Support for Portuguese thanks to Adiel Mittmann |<adiel@inf.ufsc.br>|\\
+%   Fix bug in |\bibliography|: protect against non existant files, reported
+%   by Andrew Comport\\
+%   Fix conflict with \texttt{hyperref} in some bibliography definitions
+% \item[v1.5] Support for Dutch thanks to Thomas Delaet\\
+%   |<Thomas.Delaet@student.kuleuven.ac.be>|\\
+%   Fix typo in rubric environment, reported by Torsten Liesk
+% \item[v1.4] Support for photo inclusion\\
+%   Support for headers horizontal scaling\\
+%   Optional argument to |\makeheaders| for vertical alignment,
+%   suggested by Dan Luecking
+% \item[v1.3] Support for Danish thanks to Kim Rud Bille
+%   |<krbi01@control.auc.dk>|
+% \item[v1.2] Support for standard bibliography mechanism(s)\\
+%   New macro |\entry*|\\
+%   Improvements in \auctex{} support\\
+%   Support for German thanks to Harald Harders |<h.harders@tu-bs.de>|\\
+%   Support for Spanish thanks to Agust\'in Mart\'in |<agusmba@terra.es>|
+% \item[v1.1] Support for Italian thanks to Riccardo Murri
+%   |<murri@phc.unipi.it>|
+% \end{itemize}
+%
+%
+% \StopEventually{\par Well, I think that's it. Enjoy using \curve{}!
+%   \vfill\hfill\small\packagecopyright{}.}
+%
+%
+% \section{The Code}
+% First, the class announcement and the initial requirements:
+%    \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+¡ $Format: "\\ProvidesClass{curve}[$ReleaseDate$ v$Version$"$
+\ProvidesClass{curve}[2005/09/14 v1.10
+                      Curriculum Vitae class for LaTeX2e]
+
+\RequirePackage{ltxtable}
+\RequirePackage{calc}
+
+%    \end{macrocode}
+% The following macro tests strings equality. It avoids the hassle of this
+% stupid \TeX{} scheme that prevents simple conditionals imbrication.
+%    \begin{macrocode}
+\newif\ifstrok\strokfalse
+\def\strtest#1#2{%
+  \def\@strone{#1}\def\@strtwo{#2}%
+  \ifstrok\else\ifx\@strone\@strtwo\stroktrue\fi\fi}
+
+%    \end{macrocode}
+%
+% \subsection{The Rubric File}
+% We don't want to output an extra |subrubricbeforespace| if no entry is
+% present before the subrubric. This is done by using an |\@beforespace|
+% command which is set to |0pt| at the beginning of each rubric, and switched
+% to the proper value when an entry is added.\par
+% The |@nextentry| command is used to implement |\entry*| while maintaining
+% backward compatibility with |\entry| and |\subrubric|. A new entry or
+% a subrubric might have to close the preceding entry if it was opened using
+% the starred form.
+%    \begin{macrocode}
+\gdef\@nextentry{}
+
+%    \end{macrocode}
+% \subsubsection{Entries}
+% \DescribeMacro{\keyfont}
+%    \begin{macrocode}
+\def\@keyfont{}
+\newcommand\keyfont[1]{\gdef\@keyfont{#1}}
+
+%    \end{macrocode}
+% \DescribeMacro{\keyalignment}
+%    \begin{macrocode}
+\newcolumntype{k}{>{\@keyfont}l}
+\newcommand\keyalignment[1]{%
+  \strokfalse\strtest{#1}{l}\strtest{#1}{r}\strtest{#1}{c}%
+  \ifstrok\else%
+    \ClassError{curve}{Invalid key alignment}{%
+      You have called \protect\keyalignment\space with an invalid value.%
+      \MessageBreak
+      Valid options include l, c, and r.\MessageBreak
+      Type X <return> to quit, fix the typo, and rerun LaTeX.}%
+  \fi
+  \newcolumntype{k}{>{\@keyfont}#1}
+}
+
+%    \end{macrocode}
+% \DescribeMacro{\prefix}
+%    \begin{macrocode}
+\def\@prefix{\textbullet}
+\newcommand\prefix[1]{\gdef\@prefix{#1}}
+
+%    \end{macrocode}
+% \DescribeMacro{\entry}
+% As of version 1.10, \curve{} can skip keys identical to the previous one, if
+% the option |skipsamekey| is used.
+%    \begin{macrocode}
+\def\@maybekey#1{%
+  \def\@newkey{#1}%
+  \ifx\@previouskey\@newkey\else%
+    #1\gdef\@previouskey{#1}%
+  \fi}
+
+\def\@key#1{#1}
+\DeclareOption{skipsamekey}{\let\@key\@maybekey}
+
+\newcommand\@entry[2][]{%
+  \gdef\@nextentry{}\egroup% end of \noalign opened in \entry.
+  \@key{#1}&\@prefix&#2\\}
+
+\newcommand\@sentry[1][]{%
+  \gdef\@nextentry{\\}\egroup% end of \noalign opened in \entry.
+  \@key{#1}&\@prefix&}
+
+\newcommand\entry{%
+  \@nextentry
+  \noalign\bgroup\gdef\@beforespace{-\subrubricbeforespace}%
+  \@ifstar{\@sentry}{\@entry}}
+
+%    \end{macrocode}
+% \subsubsection{Subrubrics}
+% \DescribeMacro{\subrubricfont}
+% \DescribeMacro{\subrubricbeforespace}
+% \DescribeMacro{\subrubricspace}
+%    \begin{macrocode}
+\def\@subrubricfont{\Large\itshape}
+\newcommand\subrubricfont[1]{\gdef\@subrubricfont{#1}}
+
+\newlength\subrubricbeforespace
+\setlength\subrubricbeforespace{10pt}
+
+\newlength\subrubricspace
+\setlength\subrubricspace{5pt}
+
+%    \end{macrocode}
+% \DescribeMacro{\subrubricalignment}
+% \DescribeMacro{\subrubric}
+% Note that |\@subrubricmark| is called outside the raisebox. That's because
+% otherwise, the mark would not go to the toplevel page vertical box, and
+% \TeX{} would not notice it.
+%    \begin{macrocode}
+\let\@subrubricmark\@gobble
+
+\def\@@subrubric#1{%
+  \parbox{0cm}{%
+    \raisebox{\@beforespace}{\@subrubricfont#1}%
+    \par\vspace\subrubricspace}%
+  \@subrubricmark{#1}}
+
+%    \end{macrocode}
+% The normal intercolumn space between the prefix and the entry's content is
+% replaced 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 the unbreakable space in question slightly shifts the entry's
+% content to the right. If we want a proper alignment, we then have to take
+% this offset into account in the cl and cc multicolumns, for both rubrics and
+% subrubrics. The following macro implements this:
+%    \begin{macrocode}
+
+\def\@clcccolsep{\hspace{\tabcolsep}\ifx\@prefix\@empty~\fi}
+
+\def\@subrubric@l#1{\multicolumn{3}{@{}l}{\@@subrubric{#1}}}
+\def\@subrubric@c#1{\multicolumn{3}{@{}c}{\@@subrubric{#1}}}
+\def\@subrubric@r#1{\multicolumn{3}{@{}r}{\@@subrubric{#1}}}
+\def\@subrubric@cl#1{&\multicolumn{2}{@{\@clcccolsep}l}{\@@subrubric{#1}}}
+\def\@subrubric@cc#1{&\multicolumn{2}{@{\@clcccolsep}c}{\@@subrubric{#1}}}
+
+\let\@subrubric\@subrubric@cl
+
+\newcommand\subrubricalignment[1]{%
+  \def\@curve@temp@a{\let\@subrubric}
+  \expandafter\@curve@temp@a\csname @subrubric@#1\endcsname
+  \@ifundefined{@subrubric}{%
+    \ClassError{curve}{Invalid subrubric alignment}{%
+      You have called \protect\subrubricalignment\space with an invalid value.%
+      \MessageBreak
+      Valid options include l, c, r, cl and cc.\MessageBreak
+      Type X <return> to quit, fix the typo, and rerun LaTeX.}}
+}
+
+\newcommand\subrubric[1]{%
+  \@nextentry
+  \noalign{\gdef\@nextentry{}}%
+  \@subrubric{#1}\\*}
+
+%    \end{macrocode}
+% \subsubsection{Rubrics}
+% The |\@almosttextwidth| length remains only for backward compatibility. It
+% is not used anymore.
+% \DescribeMacro{\rubricfont}
+% \DescribeMacro{\rubricspace}
+%    \begin{macrocode}
+\newlength{\@almosttextwidth}
+\AtBeginDocument{\setlength\@almosttextwidth{\textwidth-\hfuzz}}
+
+\def\@rubricfont{\Large\bfseries}
+\newcommand\rubricfont[1]{\gdef\@rubricfont{#1}}
+
+\newlength\rubricspace
+\setlength\rubricspace{10pt}
+
+%    \end{macrocode}
+% \DescribeMacro{\rubricalignment}
+% \DescribeEnv{rubric}
+%    \begin{macrocode}
+\let\@rubricmark\@gobble
+
+\def\@@rubrichead#1{\@rubricfont#1\par\vspace\rubricspace}
+
+\def\@rubrichead@l#1{\multicolumn{3}{@{}l}{\@@rubrichead{#1}}\\}
+\def\@rubrichead@c#1{\multicolumn{3}{@{}c}{\@@rubrichead{#1}}\\}
+\def\@rubrichead@r#1{\multicolumn{3}{@{}r}{\@@rubrichead{#1}}\\}
+\def\@rubrichead@cl#1{&\multicolumn{2}{@{\@clcccolsep}l}{\@@rubrichead{#1}}\\}
+\def\@rubrichead@cc#1{&\multicolumn{2}{@{\@clcccolsep}c}{\@@rubrichead{#1}}\\}
+
+\let\@rubrichead\@rubrichead@c
+
+\newcommand\rubricalignment[1]{%
+  \def\@curve@temp@a{\let\@rubrichead}
+  \expandafter\@curve@temp@a\csname @rubrichead@#1\endcsname
+  \@ifundefined{@rubrichead}{%
+    \ClassError{curve}{Invalid rubric alignment}{%
+      You have called \protect\rubricalignment\space with an invalid value.%
+      \MessageBreak
+      Valid options include l, c, r, cl and cc.\MessageBreak
+      Type X <return> to quit, fix the typo, and rerun LaTeX.}}
+}
+
+%    \end{macrocode}
+% Marking commands don't seem to work in longtable headings. So the rubric
+% mark is issued just after it.\par
+% As of version 1.7, |\raggedleft| and |\raggedright| are redefined in order
+% to work within individual entries. This redefinition simply consists in
+% removing the |\\| definition since it's not available anyway, and also to
+% remove the |\parskip| setting since it's |Opt| in the whole class.
+%    \begin{macrocode}
+\newenvironment{rubric}[1]{%
+  %% \begin{rubric}
+  \def\raggedright{%
+    \@rightskip\@flushglue\rightskip\@rightskip\leftskip\z@skip}%
+  \def\raggedleft{%
+    \rightskip\z@skip\leftskip\@flushglue\parfillskip\z@skip}%
+  \gdef\@beforespace{0pt}%
+  \gdef\@nextentry{}%
+  \gdef\@previouskey{}
+  \begin{longtable}{@{}kl@{~}X}
+    \@rubrichead{#1}
+    \endfirsthead
+    \@rubrichead{#1\@continuedname}
+    \endhead
+    \noalign{\@rubricmark{#1}}}{%
+    %% \end{rubric}
+    \@nextentry
+  \end{longtable}}
+
+%    \end{macrocode}
+% \DescribeMacro{\continuedname}
+%    \begin{macrocode}
+\newcommand\continuedname[1]{\gdef\@continuedname{#1}}
+
+%    \end{macrocode}
+%
+% \subsection{The Skeleton File}
+%
+% \subsubsection{Headers}
+% \DescribeMacro{\headerscale}
+% \DescribeMacro{\headerspace}
+%    \begin{macrocode}
+\def\header@scale{.5}
+\newcommand\headerscale[1]{\gdef\header@scale{#1}}
+\@onlypreamble\headerscale
+
+\newlength\headerspace
+\setlength\headerspace{10pt}
+
+%    \end{macrocode}
+% \DescribeMacro{\leftheader}
+% \DescribeMacro{\rightheader}
+% If the user calls |\makeheaders| without specifying headers first, an error
+% will be generated. The same applies for the title (not the subtitle), but
+% this is already managed by \LaTeX{} itself.
+%    \begin{macrocode}
+\def\@leftheader{%
+  \ClassError{curve}{No \protect\leftheader\space given}{%
+    You have called \protect\makeheaders, %
+    but you didn't provide a left header.\MessageBreak
+    Type X <return> to quit, add a call to \protect\lefheader\space %
+    in the preamble of your CV,\MessageBreak
+    and rerun LaTeX.}}
+\newcommand\leftheader[1]{\gdef\@leftheader{#1}}
+\@onlypreamble\leftheader
+
+\def\@rightheader{%
+  \ClassError{curve}{No \protect\rightheader\space given}{%
+    You have called \protect\makeheaders, %
+    but you didn't provide a right header.\MessageBreak
+    Type X <return> to quit, add a call to \protect\rightheader\space %
+    in the preamble of your CV,\MessageBreak
+    and rerun LaTeX.}}
+\newcommand\rightheader[1]{\gdef\@rightheader{#1}}
+\@onlypreamble\rightheader
+
+%    \end{macrocode}
+% \DescribeMacro{\photoscale}
+% \DescribeMacro{\photosep}
+% \DescribeMacro{\photo}
+%    \begin{macrocode}
+\def\photo@scale{.1}
+\newcommand\photoscale[1]{\gdef\photo@scale{#1}}
+\@onlypreamble\photoscale
+
+\newlength\photosep
+\setlength\photosep{10pt}
+
+\newcommand\photo[2][l]{%
+  \RequirePackage{graphicx}
+  \strokfalse\strtest{#1}{l}\strtest{#1}{r}\strtest{#1}{c}%
+  \ifstrok\else\ClassError{curve}{Invalid argument to \protect\photo}{%
+    Argument 2 of \protect\photo must be `l', `r' or `c'.}\fi
+  \def\tmp@cmd{\global\let\makeheaders@}
+  \expandafter\tmp@cmd\csname makeheaders@#1\endcsname
+  \gdef\photo@file{#2}}
+\@onlypreamble\photo
+
+%    \end{macrocode}
+% \DescribeMacro{\makeheaders}
+% These different versions of the photo inclusion command exist for proper
+% alignment of the picture itself with the left and right headers.
+%    \begin{macrocode}
+\newlength\photo@width
+
+\def\includephoto@t{%
+  \raisebox{.7\baselineskip-\height}{%
+    \includegraphics[width=\photo@width]{\photo@file}}}
+
+\def\includephoto@c{%
+  \raisebox{-.5\height}{%
+    \includegraphics[width=\photo@width]{\photo@file}}}
+
+\def\includephoto@b{\includegraphics[width=\photo@width]{\photo@file}}
+
+%    \end{macrocode}
+% And here are the different versions of the |\makeheaders| command:
+%    \begin{macrocode}
+\newlength\leftheader@width
+\newlength\rightheader@width
+
+\def\makeheaders@l#1{%
+  \setlength\photo@width{\photo@scale\textwidth}
+  \setlength\leftheader@width{%
+    (\textwidth - \photo@width - \photosep) * \real{\header@scale}}
+  \setlength\rightheader@width{%
+    \textwidth - \photo@width - \photosep - \leftheader@width}
+  \parbox[#1]{\photo@width + \photosep}{\includephoto@\hspace\photosep}%
+  \parbox[#1]{\leftheader@width}{\@leftheader}%
+  \parbox[#1]{\rightheader@width}{\raggedleft\@rightheader}}
+
+\def\makeheaders@c#1{%
+  \setlength\photo@width{\photo@scale\textwidth}
+  \setlength\leftheader@width{(\textwidth - \photo@width) * \real{.5}}
+  \setlength\rightheader@width{\leftheader@width}
+  \parbox[#1]{\leftheader@width}{\@leftheader}%
+  \parbox[#1]{\photo@width}{\includephoto@}%
+  \parbox[#1]{\rightheader@width}{\raggedleft\@rightheader}}
+
+\def\makeheaders@r#1{%
+  \setlength\photo@width{\photo@scale\textwidth}
+  \setlength\leftheader@width{%
+    (\textwidth - \photo@width - \photosep) * \real{\header@scale}}
+  \setlength\rightheader@width{%
+    \textwidth - \photo@width - \photosep - \leftheader@width}
+  \parbox[#1]{\leftheader@width}{\@leftheader}%
+  \parbox[#1]{\rightheader@width}{\raggedleft\@rightheader}%
+  \parbox[#1]{\photo@width + \photosep}{\hspace\photosep\includephoto@}}
+
+\def\makeheaders@#1{%
+  \setlength\leftheader@width{\header@scale\textwidth}%
+  \setlength\rightheader@width{\textwidth - \leftheader@width}%
+  \parbox[#1]{\leftheader@width}{\@leftheader}%
+  \parbox[#1]{\rightheader@width}{\raggedleft\@rightheader}}
+
+\newcommand\makeheaders[1][c]{%
+  \strokfalse\strtest{#1}{t}\strtest{#1}{b}\strtest{#1}{c}%
+  \ifstrok\else\ClassError{curve}{Invalid argument to \protect\makeheaders}{%
+    Argument of \protect\makeheaders must be `t', `b' or `c'.}\fi
+  \def\tmp@cmd{\global\let\includephoto@}
+  \expandafter\tmp@cmd\csname includephoto@#1\endcsname
+  \makeheaders@{#1}%
+  \par\vspace\headerspace}
+
+%    \end{macrocode}
+% \subsubsection{Titles}
+% \DescribeMacro{\titlefont}
+% \DescribeMacro{\titlespace}
+%    \begin{macrocode}
+\@onlypreamble\title
+
+\def\@titlefont{\Huge\bfseries}
+\newcommand\titlefont[1]{\gdef\@titlefont{#1}}
+\@onlypreamble\titlefont
+
+\newlength\titlespace
+\setlength\titlespace{0pt}
+
+%    \end{macrocode}
+% \DescribeMacro{\subtitle}
+% \DescribeMacro{\subtitlefont}
+%    \begin{macrocode}
+\let\@subtitle\@undefined
+\newcommand\subtitle[1]{\gdef\@subtitle{#1}}
+\@onlypreamble\subtitle
+
+\def\@subtitlefont{\huge\itshape}
+\newcommand\subtitlefont[1]{\gdef\@subtitlefont{#1}}
+\@onlypreamble\subtitlefont
+
+%    \end{macrocode}
+% \DescribeMacro{\maketitle}
+%    \begin{macrocode}
+\newcommand\maketitle{%
+  \begin{center}
+    {\@titlefont\@title}
+    \ifx\@subtitle\@undefined\else\\\@subtitlefont\@subtitle\fi
+  \end{center}
+  \vspace\titlespace}
+
+%    \end{macrocode}
+% \subsubsection{Rubric Inclusion}
+% \DescribeMacro{\flavor}
+%    \begin{macrocode}
+\let\@flavor\empty
+\newcommand\flavor[1]{\gdef\@flavor{#1}
+  \ifx\@flavor\empty\else\edef\@flavor{.\@flavor}\fi}
+
+\DeclareOption{ask}{%
+  \typein[\@flavor]{Please specify a CV flavor (none by default):}
+  \ifx\@flavor\empty\else\edef\@flavor{.\@flavor}\fi}
+
+%    \end{macrocode}
+% |\input| is redefined in order to deal with flavors and the |ltx| extension.
+%    \begin{macrocode}
+\def\@curveinput#1{%
+  \IfFileExists{#1\@flavor.ltx}{\@iinput{#1\@flavor.ltx}}{%
+    \IfFileExists{#1\@flavor.tex}{\@iinput{#1\@flavor.tex}}{%
+      \IfFileExists{#1.ltx}{\@iinput{#1.ltx}}{%
+        \IfFileExists{#1.tex}{\@iinput{#1.tex}}{%
+          \@iinput{#1}}}}}}
+
+\renewcommand\input{\@ifnextchar\bgroup\@curveinput\@@input}
+
+%    \end{macrocode}
+% \DescribeMacro{\makerubric}
+%    \begin{macrocode}
+\newcommand\makerubric[1]{\LTXtable{\@almosttextwidth}{#1}}
+
+%    \end{macrocode}
+% \subsubsection{Bibliography}
+%    \begin{macrocode}
+\let\newblock\par
+\newcounter{bibcount}
+
+%    \end{macrocode}
+% \DescribeMacro{\bibliography}
+% The following switch is used later in |\bibliography| to shut up a
+% |bibentry| warning.
+%    \begin{macrocode}
+\newif\if@bibentry
+\AtBeginDocument{\@ifpackageloaded{bibentry}{\@bibentrytrue}{}}
+
+\def\bibliography#1{%
+  \if@filesw
+    \if@bibentry\global\BR@starfalse\fi
+    \immediate\write\@auxout{\string\bibdata{#1}}%
+  \fi
+  \IfFileExists{\jobname.bbl}{\makerubric{\jobname.bbl}}{%
+    \typeout{No file \jobname.bbl.}}}
+
+%    \end{macrocode}
+% \DescribeMacro{\listpubname}
+%    \begin{macrocode}
+\newcommand\listpubname[1]{\gdef\@listpubname{#1}}
+
+%    \end{macrocode}
+% \DescribeEnv{thebibliography}
+%    \begin{macrocode}
+\newenvironment{thebibliography}[1]{%
+%    \end{macrocode}
+% The internal bibitem macro definitions are postponed until here for two
+% reasons:
+% \begin{enumerate}
+% \item First, they have to be delayed until the beginning of the document
+%   because \texttt{hyperref} redefines them, so we have to override these new
+%   definitions yet again.
+% \item Second, a question of compatibility with |bibentry|: this package
+%   defines its own bibliographic environment, in which case the standard
+%   bibitem internals should be used.
+% \end{enumerate}
+%    \begin{macrocode}
+  \def\@lbibitem[##1]##2{\@sentry[\@biblabel{##1}]%
+    \if@filesw{%
+      \let\protect\noexpand%
+      \immediate\write\@auxout{\string\bibcite{##2}{##1}}}
+    \fi%
+    \ignorespaces}
+  \def\@bibitem##1{\@sentry[\stepcounter{bibcount}\@biblabel{\thebibcount}]%
+    \if@filesw%
+    \immediate\write\@auxout{\string\bibcite{##1}{\thebibcount}}%
+    \fi%
+    \ignorespaces}
+%    \end{macrocode}
+% \DescribeMacro{\bibitem}
+% Version 1.8 broke support for standard bibliography because of the
+% |\noalign| trickery. To avoid ``misplaced noalign'' errors, the solution I
+% found is to issue the |\noalign| as soon as possible, hence the following
+% redefinition of |\bibitem| which actually duplicates the job of |\entry|.
+% Maybe there is a better solution to this problem.
+%    \begin{macrocode}
+  \renewcommand\bibitem{%
+    \@nextentry
+    \noalign\bgroup\gdef\@beforespace{-\subrubricbeforespace}%
+    \@ifnextchar[\@lbibitem\@bibitem}
+  \begin{rubric}{\@listpubname}
+  }{%
+  \end{rubric}
+}
+
+%    \end{macrocode}
+% \subsection{Language Processing}
+%    \begin{macrocode}
+\DeclareOption{english}{%
+  \continuedname{~(continued)}
+  \listpubname{List of Publications}}
+\DeclareOption{french}{%
+  \continuedname{~(suite)}
+  \listpubname{Liste des Publications}}
+\DeclareOption{francais}{%
+  \ExecuteOptions{french}}
+\DeclareOption{spanish}{%
+  \continuedname{~(contin\'ua)}
+  \listpubname{Lista de Publicaciones}}
+\DeclareOption{italian}{%
+  \continuedname{~(continua)}
+  \listpubname{Pubblicazioni}}
+\DeclareOption{german}{%
+  \continuedname{~(fortgesetzt)}
+  \listpubname{Verzeichnis der Ver\"offentlichungen}}
+\DeclareOption{ngerman}{%
+  \ExecuteOptions{german}}
+\DeclareOption{danish}{%
+  \continuedname{~(fortsat)}
+  \listpubname{Udgivelser}}
+\DeclareOption{dutch}{%
+  \continuedname{~(vervolg)}
+  \listpubname{Publicaties}}
+\DeclareOption{portuges}{%
+  \continuedname{~(continua\c c\~ao)}
+  \listpubname{Publica\c c\~oes}}
+\DeclareOption{portuguese}{%
+  \ExecuteOptions{portuges}}
+\DeclareOption{brazil}{%
+  \ExecuteOptions{portuges}}
+\DeclareOption{brazilian}{%
+  \ExecuteOptions{portuges}}
+
+%    \end{macrocode}
+% \subsection{Standard Class Processing}
+%    \begin{macrocode}
+\DeclareOption{a4paper}{
+  \setlength\paperheight{297mm}
+  \setlength\paperwidth{210mm}}
+\DeclareOption{a5paper}{
+  \setlength\paperheight{210mm}
+  \setlength\paperwidth{148mm}}
+\DeclareOption{b5paper}{
+  \setlength\paperheight{250mm}
+  \setlength\paperwidth{176mm}}
+\DeclareOption{letterpaper}{
+  \setlength\paperheight{11in}
+  \setlength\paperwidth{8.5in}}
+\DeclareOption{legalpaper}{
+  \setlength\paperheight{14in}
+  \setlength\paperwidth{8.5in}}
+\DeclareOption{executivepaper}{
+  \setlength\paperheight{10.5in}
+  \setlength\paperwidth{7.25in}}
+\DeclareOption{landscape}{
+  \setlength\@tempdima{\paperheight}
+  \setlength\paperheight{\paperwidth}
+  \setlength\paperwidth{\@tempdima}}
+
+\DeclareOption{10pt}{\def\@ptsize{0}}
+\DeclareOption{11pt}{\def\@ptsize{1}}
+\DeclareOption{12pt}{\def\@ptsize{2}}
+
+\DeclareOption{oneside}{\@twosidefalse\@mparswitchfalse}
+\DeclareOption{twoside}{\@twosidetrue\@mparswitchtrue}
+
+\DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\DeclareOption{final}{%
+  \setlength\overfullrule{0pt}
+  \setlongtables}
+
+\ExecuteOptions{english,letterpaper,10pt,oneside,final}
+\ProcessOptions
+
+\input{size1\@ptsize.clo}
+\setlength\parindent{0pt}
+\setlength\parskip{0pt}
+\setlength\tabcolsep{10pt}
+\setlength\arrayrulewidth{.4\p@}
+\raggedbottom
+\onecolumn
+\pagestyle{empty}
+\pagenumbering{arabic}
+
+\if@twoside
+  \def\ps@headings{%
+    \let\@oddfoot\@empty\let\@evenfoot\@empty
+    \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+    \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+    \let\@mkboth\markboth
+    \def\@rubricmark##1{\markboth{\MakeUppercase{##1}}{}}%
+    \def\@subrubricmark##1{\markright{##1}}%
+  }
+\else
+  \def\ps@headings{%
+    \let\@oddfoot\@empty
+    \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+    \let\@mkboth\markboth
+    \def\@rubricmark##1{\markright{\MakeUppercase{##1}}}%
+  }
+\fi
+\def\ps@myheadings{%
+  \let\@oddfoot\@empty\let\@evenfoot\@empty
+  \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+  \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+  \let\@mkboth\@gobbletwo
+  \let\@rubricmark\@gobble
+  \let\@subrubricmark\@gobble
+}
+
+%    \end{macrocode}
+% ^^A \PrintChanges
+% ^^A \PrintIndex
+% \Finale
+%
+% ^^A curve.dtx ends here.
-- 
cgit v1.2.3

