summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/curve
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/curve
Initial commit
Diffstat (limited to 'macros/latex/contrib/curve')
-rw-r--r--macros/latex/contrib/curve/NEWS160
-rw-r--r--macros/latex/contrib/curve/README85
-rw-r--r--macros/latex/contrib/curve/THANKS45
-rw-r--r--macros/latex/contrib/curve/curve.dtx2333
-rw-r--r--macros/latex/contrib/curve/curve.el111
-rw-r--r--macros/latex/contrib/curve/curve.ins58
-rw-r--r--macros/latex/contrib/curve/curve.pdfbin0 -> 279924 bytes
-rw-r--r--macros/latex/contrib/curve/examples/Makefile70
-rw-r--r--macros/latex/contrib/curve/examples/bib.bib68
-rw-r--r--macros/latex/contrib/curve/examples/bib.tex55
-rw-r--r--macros/latex/contrib/curve/examples/raw.tex51
-rw-r--r--macros/latex/contrib/curve/examples/rubric.tex77
12 files changed, 3113 insertions, 0 deletions
diff --git a/macros/latex/contrib/curve/NEWS b/macros/latex/contrib/curve/NEWS
new file mode 100644
index 0000000000..f366dcedb1
--- /dev/null
+++ b/macros/latex/contrib/curve/NEWS
@@ -0,0 +1,160 @@
+
+ WHAT'S NEW IN CURVE
+
+
+Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Didier Verna
+Copyright (C) 2008 Didier Verna
+
+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'.
+
+
+* Version 1.16
+==============
+** An examples directory
+** New \text macro
+to insert plain text in the middle of rubrics,
+suggested by Alexandre Duret-Lutz and Franco Callegati.
+** Support for openbib option
+which was implicit before, reported by Vasilis Boucharas.
+** Fix incompatibilities with the splitbib package
+reported by Jean Taucol.
+** Handle the bibentry/hyperref incompatibility directly
+** Implement old font commands
+letting packages using them (e.g. fancyhdr) work correctly
+
+* Version 1.15
+==============
+** Support for itemize environments
+suggested by Mirko Hessel-von Molo
+** Added some documentation about vertical spacing problems in |bbl| files
+suggested by Seweryn Habdank-Wojewódzki
+
+* Version 1.14
+==============
+** Support for reverse counting of bibliographic entries
+suggested by Joseph Wright
+** Support for Polish
+thanks to Radek Dominiak <radoslaw.dominiak@gmail.com>
+
+* Version 1.13
+==============
+** Support for title alignment
+suggested by Lars Kasper
+** Support for footnotes
+suggested by Alain Coletta
+** Let rubrics honor the current \linewidth
+so that they can be used inside minipage environments for instance
+** Changed default value of \subrubricbeforespace
+to 20pt
+** Fix some overfull boxes
+reported by Nico Schlömer
+** FAQ and documentation update
+
+* Version 1.12
+==============
+** Support for Swedish
+thanks to Konrad Skeri Persson <konrad@skeri.com>
+** New customizable length \rubricafterspace
+defining the space between each rubric
+** Fix incompatibilities with the Multibbl package
+** Honor bibliography titles (if) provided by multibib or multibbl
+** New command \today
+** FAQ update
+** Fix implementation of skipsamekey option
+
+* Version 1.11
+==============
+** New FAQ section in the doc
+** New command \noentry
+to manually enlarge too narrow rubrics
+** Make \pagebreak, \nopagebreak and \newpage work in rubrics
+suggested by Alexandre Duret-Lutz
+** Fix spurious right margin spaces
+** Fix usage of the bib counter, disable skipsamekey and the prefix
+in bibliographic entries
+
+* Version 1.10
+==============
+** Support for automatic skipping of identical keys
+with the "skipsamekey" option, suggested by Akim Demaille
+** Fix alignment problem with empty prefix
+reported by Jonas Haulin
+
+* Version 1.9
+=============
+** Fix incompatibilities with the Bibentry package
+reported by Joris Desmet
+** Fix support for standard bibliography
+broken in version 1.8
+
+* Version 1.8
+=============
+** Prevent page breaks after subrubric headings
+
+* Version 1.7
+=============
+** Support for key horizontal alignment
+** \raggedleft and \raggedright can now be used within individual entries
+** Fix typo in Danish version of \continuedname
+
+* Version 1.6
+=============
+** Support for rubric and subrubric titles horizontal alignment
+** Support for standard LaTeX page style mechanism
+** Support for oneside and twoside options
+** Support for Portuguese
+thanks to Adiel Mittmann <adiel@inf.ufsc.br>
+** Bug fix in \bibliography
+protect against non existent files, reported by Andrew Comport
+** Fix conflict with Hyperref
+in some bibliograhy definitions
+
+* Version 1.5
+=============
+** Support for Dutch
+thanks to Thomas Delaet <Thomas.Delaet@student.kuleuven.ac.be>
+** Bug fix (typo) in the rubric environment
+reported by Torsten Liesk
+
+* Version 1.4
+=============
+** Support for photo inclusion
+** Support for headers horizontal scaling
+** Optional argument to \makeheaders for vertical alignment,
+suggested by Dan Luecking
+
+* Version 1.3
+=============
+** Support for Danish
+thanks to Kim Rud Bille <krbi01@control.auc.dk>
+
+* Version 1.2
+=============
+** Support for standard bibliography mechanism(s)
+** New macro \entry*
+** Support for Spanish
+thanks to Agustín Martín <agusmba@terra.es>
+** Support for German
+thanks to Harald Harders <h.harders@tu-bs.de>
+
+* Version 1.1
+=============
+** Support for Italian
+thanks to Riccardo Murri <murri@phc.unipi.it>
+
+
+
+
+Local Variables:
+mode: outline
+End:
diff --git a/macros/latex/contrib/curve/README b/macros/latex/contrib/curve/README
new file mode 100644
index 0000000000..835a5168e8
--- /dev/null
+++ b/macros/latex/contrib/curve/README
@@ -0,0 +1,85 @@
+
+ ABOUT CURVE
+
+
+Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2010 Didier Verna
+
+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 following files:
+
+- NEWS
+- README (this file)
+- THANKS
+- curve.dtx
+- curve.el
+- curve.ins
+- curve.pdf
+- cv.tex
+- rubric.tex
+
+
+* Description
+=============
+
+CurVe is a Curriculum Vitae class package for LaTeX2e. 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, repeating the titles etc), 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. CurVe also comes with
+support for AUC-TeX.
+
+CurVe homepage: http://www.lrde.epita.fr/~didier/software/latex.php#curve
+
+
+* Installation
+==============
+
+If you are building CurVe from the tarball you need to execute the following
+steps in order to extract the necessary files:
+
+[pdf]latex curve.ins -> will create the class file curve.cls
+[pdf]latex curve.dtx -> (twice) will create the documentation files curve.pdf
+ or curve.dvi. Note that curve.pdf is already part of
+ the distribution.
+
+After that, you need to install the generated documentation and class file to
+a location where LaTeX can find them. For a TDS-compliant layout, the
+following locations are suggested:
+
+[TEXMF]/tex/latex/curve/curve.cls
+[TEXMF]/doc/latex/curve/curve.[pdf|dvi]
+
+If you're an AUC-TeX user, you may also install the file `curve.el' in a
+suitable AUC-TeX style directory.
+
+Once you have installed the package, you might eventually want to process the
+example files from the examples/ directory. Just type "make pdf" or "make dvi"
+in that directory to compile everything.
+
+
+ Have fun!
+
+--
+Didier Verna <didier@lrde.epita.fr>
+
+Sientific site: http://www.lrde.epita.fr/~didier
+Music (Jazz) site: http://www.didierverna.com
+
+
+
+
+Local Variables:
+mode: outline
+End:
diff --git a/macros/latex/contrib/curve/THANKS b/macros/latex/contrib/curve/THANKS
new file mode 100644
index 0000000000..95c5a4de6a
--- /dev/null
+++ b/macros/latex/contrib/curve/THANKS
@@ -0,0 +1,45 @@
+
+ THANK YOU!
+
+
+Copyright (C) 2007, 2010 Didier Verna
+
+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'.
+
+
+* Contributors
+
+** The following persons have contributed code, bug reports, localization,
+** suggestions etc:
+
+Jean Taucol, Franco Callegati, Vasilis Boucharas, Mirko Hessel-von Molo,
+Seweryn Habdank-Wojewódzki, Joseph Wright, Radek Dominiak, Lars Kasper, Alain
+Coletta, Nico Schlömer, Konrad Skeri Persson, Alexandre Duret-Lutz, Akim
+Demaille, Jonas Haulin, Joris Desmet, Adiel Mittmann, Andrew Comport, Thomas
+Delaet, Torsten Liesk, Dan Luecking, Kim Rud Bille, Agustín Martín, Harald
+Harders, Riccardo Murri.
+
+
+* Generous donators
+
+** The following persons have made a donation, bought me a present, taken care
+** of my belly with chocolate or beer etc:
+
+Damian Krapf.
+
+
+
+
+Local Variables:
+mode: outline
+End:
diff --git a/macros/latex/contrib/curve/curve.dtx b/macros/latex/contrib/curve/curve.dtx
new file mode 100644
index 0000000000..1c01cfd1f1
--- /dev/null
+++ b/macros/latex/contrib/curve/curve.dtx
@@ -0,0 +1,2333 @@
+% \iffalse
+%
+% curve.dtx --- Doc file for the CurVe package (code and documentation)
+%
+% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Didier Verna
+% Copyright (C) 2008, 2010 Didier Verna
+%
+% Author: Didier Verna <didier@lrde.epita.fr>
+% Maintainer: Didier Verna <didier@lrde.epita.fr>
+% Created: Thu Dec 10 16:04:01 1998
+% Last Revision: Tue Nov 30 18:37:39 2010
+%
+% 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}
+
+\usepackage{dox}[2009/09/21]
+\doxitem[idxtype=env.]{Env}{environment}{environments}
+\doxitem[idxtype=opt.]{Option}{option}{options}
+\doxitem[idxtype=cnt.]{Counter}{counter}{counters}
+\doxitem[idxtype=lang.]{Lang}{lang}{languages}
+\doxitem[idxtype=cond.]{Cond}{conditional}{conditionals}
+
+\usepackage{xspace}
+\usepackage[T1]{fontenc}
+\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}}}%
+ \xspace}
+
+% #### NOTE: I don't want to \usepackage{curve} just for getting the file
+% information. So here's what I do: generate a header with only the
+% \ProvidesPackage command. Then, I \input it so that \GetFileInfo works.
+% However, I need to manually set the current file name and extension that
+% would normally be set by \RequirePackage. Also, note that the call to
+% \GetFileInfo below needs to use the extension of the header, that is inc
+% instead of sty, even the file curve.inc does not really exist.
+\makeatletter
+ \def\@currname{curve}
+ \def\@currext{inc}
+\makeatother
+\input{header.inc}
+% \OnlyDescription
+\CodelineIndex
+% \RecordChanges
+\setcounter{secnumdepth}{4}
+\begin{document}
+\DocInput{curve.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+% \catcode`\¡=14
+% \CheckSum{1830}
+% \GetFileInfo{curve.inc}
+%% \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 \~}
+%
+% \MakeShortVerb{\|}
+%
+% \makeatletter
+% \def\ps@mystyle{
+% \def\@oddfoot{\hfil\thepage\hfil}
+% \def\@evenfoot{\hfil\thepage\hfil}
+% \def\@evenhead{\hfil\slshape\leftmark}
+% \def\@oddhead{\slshape\rightmark\hfil}}
+% \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{%
+% -3.25ex\@plus -1ex \@minus -.2ex}{%
+% 1.5ex \@plus .2ex}{%
+% \normalfont\normalsize\bfseries}}
+% \makeatother
+%
+% \newcommand\packagecopyright{Copyright \copyright{} 2000, 2001, 2002, 2003,
+% 2004, 2005, 2006, 2007, 2008, 2010 Didier Verna\xspace}
+%
+% \newcommand\emacs{\textsf{Emacs}}
+% \newcommand\auctex{AUC-\TeX\xspace}
+% \newcommand\cv{\textsc{CV}\xspace}
+%
+% \pagestyle{mystyle}
+% \markright{\hskip-.5\marginparwidth \curve \fileversion{} (\filedate)}
+%
+% \date{\texttt{\fileversion{} (\filedate)}}
+% \title{\curve{} -- a \LaTeXe{} class package for making \textbf{Cur}ricula
+% \textbf{V}ita\textbf{e}\footnote{\curve homepage:
+% \texttt{http://www.lrde.epita.fr/\~{}didier/software/latex.php\#curve}}}
+% \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.
+%
+% The \curve package is \packagecopyright, and distributed under the terms
+% of the LPPL license.
+% \end{abstract}
+%
+%
+% \tableofcontents
+%
+%
+% \section{Installation}
+% \subsection{Extraction}
+% If you are building \curve from the tarball you need to execute the
+% following steps in order to extract the necessary files. \curve also
+% requires the \textsf{DoX} package (version 2.0, release date 2009/09/21 or
+% later), to build. It is not required to use the package.
+% \begin{verbatim}
+% [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
+% \end{verbatim}
+% After that, you need to install the generated documentation and style files
+% to a location where \LaTeX{} can find them.
+%
+% \subsection{TDS-compliant layout}
+% For a TDS-compliant layout, the following locations are suggested:
+% \begin{verbatim}
+% [TEXMF]/tex/latex/curve/curve.cls
+% [TEXMF]/doc/latex/curve/curve.[pdf|dvi]
+% \end{verbatim}
+%
+% \subsection{\auctex support}
+% \auctex is a powerful major mode for editing \TeX{} documents in \emacs. In
+% particular, it provides automatic completion of command names once they are
+% known. \curve supports \auctex by providing a style file named
+% \texttt{curve.el} which contains \auctex definitions for the relevant
+% commands. This file should be installed in a place 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.
+%
+% 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.
+%
+% \subsection{Examples}
+% Once you have installed \curve, you might want to start with processing the
+% examples in the \texttt{examples/} directory. 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.
+% My \cv can be found at
+% \texttt{http://www.lrde.epita.fr/\~{}didier/about/cv.pdf}.
+%
+%
+% \section{Overview}
+% \subsection{Document Layout}
+% \subsubsection{Headers}
+% 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.
+%
+% \subsubsection{Titles}
+% After these headers come an optional title and/or subtitle, which can be
+% centered on the page, or flushed either left or right.
+%
+% \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.
+%
+% \paragraph{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).
+%
+% \paragraph{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.
+%
+% This is not much of a hassle, really, and it actually made my life easier
+% when I implemented the ``flavor'' mechanism described below.
+%
+% \subsubsection{Flavors}
+% 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.
+%
+% \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 \curve requires the presence of
+% \texttt{ltxtable}, \texttt{ifthen}, \texttt{calc} and \texttt{filehook}. 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
+% \LaTeX{} can locate them, they will be used automatically.
+%
+% \subsection{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{Headers}
+% \paragraph{Header Components}
+% \DescribeMacro{\leftheader}
+% \marg{contents}\\
+% \DescribeMacro{\rightheader}
+% \ldots\\
+% The |\leftheader| and |\rightheader| macros define 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.
+%
+% \noindent\DescribeMacro{\photo}\oarg{hpos}\marg{file}\\
+% 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.
+%
+% \paragraph{Header Layout}
+% The headers' horizontal layout is further controled by three additional
+% macros.
+%
+% \noindent\DescribeMacro{\photoscale}\marg{scale}\\
+% 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|).\\
+% \DescribeMacro{\photosep} 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.\\
+% \DescribeMacro{\headerscale}\marg{scale}\\
+% 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.
+%
+% 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\%.
+%
+% \noindent\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}.
+%
+% \paragraph{Making Headers}
+% \DescribeMacro{\makeheaders}\oarg{vpos}\\
+% 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{Titles}
+% \paragraph{Title Components}
+% \DescribeMacro{\title}\marg{text}\\
+% \DescribeMacro{\subtitle}\ldots\\
+% 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.
+%
+% \paragraph{Title Layout}
+% \DescribeMacro{\titlealignment}\marg{hpos}\\
+% By default, titles are centered on the page. However, you can also have them
+% aligned to the left or right side of the page. To specify your preferred
+% title alignment, call |\titlealignment| with an argument of either
+% \texttt{l}, \texttt{c} or \texttt{r}, the meaning of which should be
+% obvious. You can also achieve the same effect by passing an optional
+% argument to |\maketitle| (see below).\\
+% \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}.\\
+% \DescribeMacro{\titlefont}\marg{cmds}\\
+% \DescribeMacro{\subtitlefont}\ldots\\
+% 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.
+%
+% \paragraph{Making Titles}
+% \DescribeMacro{\maketitle}\oarg{hpos}\\
+% 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. |\maketitle| accepts an optional argument for
+% specifying the title alignment scheme. This argument is the same as in
+% |\titlealignment|, and takes precedence over it.
+%
+% \subsubsection{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 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}.
+%
+% \noindent\DescribeMacro{\flavor}\marg{key}\\
+% 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.\\
+% \DescribeOption{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{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.
+%
+% \noindent\DescribeMacro{\makerubric}\marg{name}\\
+% 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.
+%
+% \noindent\DescribeMacro{\rubricafterspace}
+% As of version 1.12, \curve provides a new \LaTeX{} length,
+% |\rubricafterspace| controlling the amount of extra vertical space to put
+% after a rubric (hence, before the next one). The default is \texttt{0pt}.
+%
+% \subsection{Rubric Files}
+% \subsubsection{The \texttt{rubric} Environment}
+% \DescribeEnv{rubric}\marg{title}\\
+% 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.
+%
+% \noindent\DescribeMacro{\rubricalignment}\marg{hpos}\\
+% 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|).
+%
+% \noindent\DescribeMacro{\rubricfont}\marg{cmds}
+% The |\rubricfont| macro takes one mandatory argument which redefines the
+% font to use for rubric titles. By default, |\Large\bfseries| is used.
+%
+% \noindent\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{Standard Entries}
+% \paragraph{Creating rubric entries}
+% \DescribeMacro{\entry}\oarg{key}\marg{contents}\\
+% 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.
+%
+% \noindent\DescribeMacro{\entry*}\oarg{key}\\
+% Actually, the |\entry| macro was somewhat ill-designed in 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.
+%
+% \paragraph{Entries layout}
+% \DescribeMacro{\keyalignment}\marg{hpos}\\
+% 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|).
+%
+% \noindent\DescribeMacro{\keyfont}\marg{cmds}\\
+% 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.
+%
+% \noindent\DescribeMacro{\prefix}\marg{cmds}\\
+% 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. Note that as of version 1.11, \curve forces the
+% prefix to be empty in bibliographic entries (see section \ref{sec:biblio}).
+%
+% \noindent\DescribeOption{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. Note that as of version 1.11, \curve
+% disables this mechanism in bibliography rubrics (see section
+% \ref{sec:biblio}).
+%
+% \subsubsection{Plain text entries}
+% \DescribeMacro{\text}\marg{contents}\\
+% 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 provides a |\text| macro for that. Plain text occupies the whole page
+% width. If you whish to further distinguish it from the surrounding entries,
+% you can use |\par| to add vertical space before and/or after the text.
+%
+% \subsubsection{Invisible entries\label{sec:noentry}}
+% The most frequently asked question about \curve is probably whether it is
+% possible to align entries across several rubrics. This is (currently) not
+% possible automatically because rubrics are typeset as independant tables.
+% However, a manual solution boils down to enlarging too narrow entries (keys,
+% actually).
+%
+% \noindent \DescribeMacro{\noentry}\marg{key}\\
+% 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 in the entries alignment calculation. However, this command
+% will not produce any text. So if you want all your rubrics to share the same
+% alignment, you typically spot the longest key in your CV, and issue a
+% |\noentry{this long key}| call in all other rubrics.
+%
+% \subsubsection{Subrubrics}
+% \DescribeMacro{\subrubric}\marg{title}\\
+% 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.
+%
+% \noindent\DescribeMacro{\subrubricalignment}\marg{hpos}\\
+% 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|).
+%
+% \noindent\DescribeMacro{\subrubricfont}\marg{cmds}\\
+% The |\subrubricfont| macro takes one mandatory argument which redefines the
+% font to use for the subrubrics. By default, |\Large\itshape| is used.
+%
+% \noindent\DescribeMacro{\subrubricspace}
+% |\subrubricspace| controls the amount of extra vertical space to put after
+% subrubrics. This is a \LaTeX{} length that defaults to \texttt{5pt}.
+% \DescribeMacro{\subrubricbeforespace}
+% |\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{20pt}.
+%
+% \subsection{Bibliography\label{sec:biblio}}
+% Most scientists include their own list of publications in their \cv, so
+% \curve has support for different forms of bibliography.
+%
+% \subsubsection{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
+% 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}
+%
+% \subsubsection{The \texttt{bibliography} environment}
+% \DescribeEnv{thebibliography}\marg{key}\\
+% \DescribeMacro{\bibitem}\oarg{label}\marg{ref}\\
+% Some people however have expressed the wish of having standard bibliography
+% support in \curve. Version 1.2 provides that. 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 (with an empty prefix however). 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.
+%
+% \noindent\DescribeOption{openbib}
+% As of version 1.16, the \texttt{openbib} option is supported. When used,
+% bibliographic blocks appear on different lines instead of in a single
+% paragraph. Note that prior to version 1.16, this was actually the default
+% behavior, which was not quite right (the standard classes don't openbib by
+% default).
+%
+% \noindent\DescribeOption{revbib}
+% As of version 1.14, it is possible to count bibliographic items in a reverse
+% order, which comes in handy when you display your publications from the most
+% recent to the oldest one. The \texttt{revbib} option triggers this behavior.
+% Note that this also works when you use \BibTeX{} (see below).
+%
+% \subsubsection{\BibTeX}
+% \DescribeMacro{\nocite}\marg{citations}\\
+% \DescribeMacro{\bibliographystyle}\marg{style}\\
+% \DescribeMacro{\bibliography}\marg{files}\\
+% 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|. \curve uses the |bbl| file as a
+% rubric one.
+%
+% \subsubsection{Compatibility concerns}
+% \begin{itemize}
+% \item |bibentry|: \curve is compatible with the |bibentry| package since
+% version 1.9. Note that there is an incompatibility between |bibentry| and
+% |hyperref| with a workaround described in the |hyperref| README file.
+% However, \curve takes care of this problem for you so you \emph{must not}
+% use the workaround described there.
+% \item |multibbl|: \curve is compatible with the |multibbl| package since
+% version 1.12.
+% \item |splitbib|: \curve is compatible with the |splitbib| package since
+% version 1.16. Note however that only one level of category is allowed
+% (categories appear as subrubrics).
+% \end{itemize}
+%
+% \subsection{Standard Class Features}
+% \subsubsection{Page Size and layout}
+% \DescribeOption[noindex]{*paper}
+% \DescribeOption[noprint]{a4paper}
+% \DescribeOption[noprint]{a5paper}
+% \DescribeOption[noprint]{b4paper}
+% \DescribeOption[noprint]{letterpaper}
+% \DescribeOption[noprint]{legalpaper}
+% \DescribeOption[noprint]{executivepaper}
+% \DescribeOption{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?
+%
+% \noindent\DescribeOption{oneside}
+% \DescribeOption{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}
+% \DescribeOption{10pt}
+% \DescribeOption{11pt}
+% \DescribeOption{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}
+% \DescribeOption{final}
+% \DescribeOption{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 (and in case \texttt{longtable} prior to version 4
+% is used by it), 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}
+% \DescribeMacro{\pagestyle}\marg{style}\\
+% \DescribeMacro{\thispagestyle}\marg{style}\\
+% 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{Internationalization}
+% \curve currently supports 12 languages via the following options:
+% \texttt{english}, \texttt{french} (or \texttt{francais}), \texttt{spanish},
+% \texttt{portuguese} (or \texttt{portuges}), \texttt{brazilian} (or
+% \texttt{brazil}), \texttt{italian}, \texttt{german}, \texttt{ngerman},
+% \texttt{dutch}, \texttt{danish}, \texttt{swedish} and \texttt{polish}. The
+% \texttt{german} and \texttt{ngerman} options are currently equivalent; so
+% are the \texttt{portuguese} and \texttt{brazilian} ones.
+%
+% If you want a finer grain on the language-dependent parts of \curve, the
+% following macros are provided.
+%
+% \noindent\DescribeMacro{\continuedname}\marg{continuation text}\\
+% 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.
+%
+% \noindent\DescribeMacro{\listpubname}\marg{title}\\
+% 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. Note that
+% for compatibility with the |multibbl| and |multibib| packages, \curve honors
+% the existence of |\bibname| or |\refname| macros prior to |\listpubname| for
+% deciding which title to give to the bibliographic rubric.
+%
+%
+% \section{Hints, Tips'n Tricks}
+% Here are some tips that I use for my own \cv. You might find them of some
+% interest.
+%
+% \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{Vertical spacing}
+% Although they might look a bit like itemize environments, \curve rubrics
+% are implemented with tables. This has an important consequence: empty lines
+% in rubrics do 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 commands to achieve the desired layout. This will
+% ensure a more consistent layout with future versions of \curve.
+%
+% If you are using \BibTeX{}, you should also be aware of the fact that some
+% \BibTeX{} styles output empty lines between |\bibitem|'s, and this has an
+% unfortunate influence on vertical spacing for the same technical reason. If
+% this vertical space annoys you, what you can do is modify the \BibTeX{}
+% style in order to avoid the production of these empty lines. For instance,
+% in |plain.bst|, this simply boils down to removing the call to |newline$| at
+% the beginning of the |output.bibitem| function.
+%
+% \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}
+%
+% \subsection{Longtable}
+% \curve users should be aware of the fact that the layout implementation is
+% based on the \texttt{LTXtable} package, which in turn is a mix of
+% \texttt{tabularx} and \texttt{longtable}. This has several implications,
+% most notably that when writing a rubric, you are actually inside a tabular
+% environment. Here are some things to keep in mind:
+% \begin{itemize}
+% \item 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 a new line.
+% \item You can use |\raggedright| and |\raggedleft| in your entries.
+% \item You can use |\pagebreak|, |\nopagebreak| and |\newpage| at the
+% beginning of a line, just before starting a new entry.
+% \item Prior to version 4, \texttt{longtable} used an alignment mechanism
+% involving calls to |\setlongtables| (see its documentation). \curve
+% retains this for backward compatibility and still calls |\setlongtables|
+% in final (not draft) mode. If your version of \texttt{longtable} is recent
+% enough, you shouldn't be concerned by this. If it is older, you might need
+% to process your document a few times in draft mode, and then one last time
+% in final mode. However, keep in mind that in both cases, you might still
+% need up to 3 or 4 passes of \LaTeX{} on your document.
+% \end{itemize}
+%
+% \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.
+%
+% 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.
+%
+% 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.
+%
+%
+% \appendix
+% \section{Appendix}
+%
+% \subsection{Frequently Asked Questions}
+% \begin{enumerate}
+% \item
+% \textbf{Is there a way to align entries across several (all) rubrics?}\\
+% Not automatically because rubrics are typeset as individual tables. There
+% are many ways to manually ``trick'' too narrow keys in order to enlarge
+% them however. As of version 1.11, \curve provides a new convenience
+% macro to do something similar: see section \ref{sec:noentry}.
+% \item
+% \textbf{How can I change the interline spacing?}\\
+% Internally, \curve uses \LaTeX{} tabular-based environments. As such,
+% you can play with |\arraystretch| to modify the space between rows.
+% \item
+% \textbf{When a page break occurs in the middle of a rubric, the same
+% alignment is kept on both pages, which might result in suboptimal
+% layout.}\\
+% This is a technical limitation of the automatic alignment computation
+% process in longtables and I don't think there will be a solution anytime
+% soon (page breaking is orthogonal to column width calculation). What you
+% can do, once your CV is finalized, is manually split the concerned rubric
+% into different ones, starting at the appropriate entries to avoid page
+% breaking in the middle.
+% \item
+% \textbf{How can I make multi-line subrubrics?}\\
+% Here are two ideas:
+% \begin{itemize}
+% \item Put your text in several consecutive subrubrics (one per line).
+% However, this might not give you the desired vertical spacing.
+% \item 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 for
+% your parbox, but this will work.
+% \end{itemize}
+% \item
+% \textbf{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).
+% \begin{enumerate}
+% \item Recover the key formatting by doing something like this near
+% the beginning of your document:\\
+% |\makeatletter\let\mykeyfont\@keyfont\makeatother|
+% \item Use something like this where you need a multi-line key (you will
+% have to adjust the paragraph width manually):
+% \begin{verbatim}
+% \entry*[\multicolumn{1}{@{}>{\mykeyfont}p{2cm}}{%
+% long key\newline long key}]
+% Entry text. Entry text. Entry ...
+% \end{verbatim}
+% \end{enumerate}
+% \item
+% \textbf{How to deal with long keys?}\\
+% The best thing to do is to make them multi-line manually. Please refer to
+% the previous question.
+% \item
+% \textbf{Can I change the prefix locally?}\\
+% Yes and no. The |\prefix| command can only be used in the preamble or
+% between rubrics. Otherwise, there is currently no way to change the prefix
+% for a single entry. This limitation will disappear in a future release.
+% \end{enumerate}
+%
+% \subsection{Changes}
+% \begin{itemize}
+% \item[v1.16] New |\text| macro, suggested by Alexandre Duret-Lutz and Franco
+% Callegati.\\
+% Support for the \texttt{openbib} option which was implicit
+% before, reported by Vasilis Boucharas.\\
+% 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.
+% \item[v1.15] Support for itemize environments, suggested by Mirko Hessel-von
+% Molo\\
+% Added some documentation about vertical spacing problems in |bbl| files,
+% suggested by Seweryn Habdank-Wojew\'odzki
+% \item[v1.14] Support for reverse counting bibliographic entries, suggested
+% by Joseph Wright\\
+% Support for Polish thanks to Radek Dominiak\\
+% |<radoslaw.dominiak@gmail.com>|
+% \item[v1.13] Support for title alignment, suggested by Lars Kasper\\
+% Support for footnotes, suggested by Alain Coletta\\
+% Let rubrics honor the current |\linewidth|\\
+% Changed default value of |\subrubricbeforespace| to \texttt{20pt}\\
+% Fix some overfull boxes, reported by Nico Schl\"olmer\\
+% FAQ and documentation update
+% \item[v1.12] Support for Swedish thanks to Konrad Skeri Persson\\
+% |<konrad@skeri.com>|\\
+% New customizable length |\rubricafterspace| defining the space between
+% each rubric\\
+% Fix incompatibilities with the |multibbl| package.\\
+% Honor bibliography titles (if) provided by |multibib| or |multibbl|\\
+% New command |\today|\\
+% FAQ update\\
+% Fix implementation of \texttt{skipsamekey} option
+% \item[v1.11] New FAQ section in the documentation\\
+% New command |\noentry| to manually enlarge too narrow rubrics\\
+% Make |\pagebreak|, |\nopagebreak| and |\newpage| work in rubrics,
+% suggested by Alexandre Duret-Lutz\\
+% Fix spurious right margin spaces\\
+% Fix usage of the bib counter, disable |skipsamekey| and the prefix in
+% bibliographic entries
+% \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.}
+%
+%
+% \subsection{Implementation}
+% First, the class announcement and the initial requirements:
+% \begin{macrocode}
+%<curve>\NeedsTeXFormat{LaTeX2e}
+%<*header>
+\ProvidesClass{curve}[2010/12/14 v1.16 Curriculum Vitae class for LaTeX2e]
+
+%</header>
+%<*curve>
+\RequirePackage{ltxtable}
+\RequirePackage{ifthen}
+\RequirePackage{calc}
+\RequirePackage{filehook}
+
+% \end{macrocode}
+%
+% \subsubsection{Rubric Files}
+% 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.
+% \begin{macro}{\@nextentry}
+% 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}
+% \end{macro}
+%
+% \paragraph{Entries}
+% \begin{macro}{\@keyfont}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\keyfont}
+% \marg{cmds}
+% \begin{macrocode}
+\def\@keyfont{}
+\newcommand\keyfont[1]{\gdef\@keyfont{#1}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\keyalignment}
+% \marg{hpos}
+% \begin{macrocode}
+\newcolumntype{k}{>{\@keyfont}l}
+\newcommand\keyalignment[1]{%
+ \ifthenelse{\equal{#1}{l}}{}{%
+ \ifthenelse{\equal{#1}{r}}{}{%
+ \ifthenelse{\equal{#1}{c}}{}{%
+ \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.}}}}%
+ \newcolumntype{k}{>{\@keyfont}#1}}
+
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@prefix}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\prefix}
+% \marg{cmds}
+% \begin{macrocode}
+\def\@prefix{\textbullet}
+\newcommand\prefix[1]{\gdef\@prefix{#1}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@maybekey}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\@alwayskey}
+% \marg{key}
+% \begin{option}{skipsamekey}
+% 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\gdef\@@key{}\else%
+ \gdef\@@key{#1}\gdef\@previouskey{#1}%
+ \fi}
+
+\def\@alwayskey#1{%
+ \gdef\@@key{#1}}
+
+\let\@key\@alwayskey
+\DeclareOption{skipsamekey}{\let\@key\@maybekey}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@entry}
+% \oarg{key}\marg{contents}\MacroTopsep=0pt
+% \begin{macro}{\@sentry}
+% \oarg{key}
+% \begin{macro}{\entry}
+% \begin{macrocode}
+\newcommand\@entry[2][]{%
+ \gdef\@nextentry{}\@key{#1}%
+ \egroup% end of \noalign opened in \entry.
+ \@@key&\@prefix&#2\\\par}
+
+\newcommand\@sentry[1][]{%
+ \gdef\@nextentry{\\\par}\@key{#1}%
+ \egroup% end of \noalign opened in \entry.
+ \@@key&\@prefix&}
+
+\newcommand\entry{%
+ \@nextentry
+ \noalign\bgroup\gdef\@beforespace{\subrubricbeforespace}%
+ \@ifstar{\@sentry}{\@entry}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@almosttextwidth}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\@text}
+% \marg{contents}
+% \begin{macro}{\@stext}
+% \begin{macro}{\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 this choice is arguable. Note that the use of |\text*| is
+% not documented yet because it doesn't work quite right. It produces an
+% undesired space before the text and I don't understand why.
+% \begin{macrocode}
+\newlength{\@almosttextwidth}
+\AtBeginDocument{\setlength\@almosttextwidth{\textwidth-\hfuzz}}
+
+\newcommand\@text[1]{%
+ \gdef\@nextentry{}%
+ \egroup% end of \noalign opened in \text.
+ \multicolumn{3}{@{}p{\@almosttextwidth}@{}}{#1}\\}
+
+\newcommand\@stext{%
+ \gdef\@nextentry{\egroup\\\par}%
+ \egroup% end of \noalign opened in \text.
+ \multicolumn{3}{@{}p{\@almosttextwidth}@{}}\bgroup}
+
+\newcommand\text{%
+ \@nextentry
+ \noalign\bgroup\gdef\@beforespace{\subrubricbeforespace}%
+ \@ifstar{\@stext}{\@text}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\noentry}
+% \marg{key}\\
+% This macro is a wrapper around |\kill| to manually adjust too narrow
+% rubrics.
+% \begin{macrocode}
+\newcommand\noentry[1]{\@nextentry
+ \noalign{\gdef\@nextentry{}}#1&&\kill}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Subrubrics}
+% \begin{macro}{\@subrubricfont}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\subrubricfont}
+% \marg{cmds}
+% \begin{macrocode}
+\def\@subrubricfont{\Large\itshape}
+\newcommand\subrubricfont[1]{\gdef\@subrubricfont{#1}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\subrubricbeforespace}
+% \MacroTopsep=0pt
+% \begin{macro}{\subrubricspace}
+% \begin{macrocode}
+\newlength\subrubricbeforespace
+\setlength\subrubricbeforespace{20pt}
+
+\newlength\subrubricspace
+\setlength\subrubricspace{5pt}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@subrubricmark}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\@@subrubric}
+% \marg{title}\\
+% 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{%
+ \rule{0bp}{\@beforespace}
+ {\@subrubricfont#1}
+ \@subrubricmark{#1}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@clcccolsep}
+% 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}
+
+% \end{macrocode}
+% \begin{macro}[noindex]{\@subrubric@*}
+% \MacroTopsep=0pt
+% \begin{macro}{\@subrubric}
+% \marg{title}
+% \begin{macro}[noprint]{\@subrubric@l}
+% \begin{macro}[noprint]{\@subrubric@c}
+% \begin{macro}[noprint]{\@subrubric@r}
+% \begin{macro}[noprint]{\@subrubric@cl}
+% \begin{macro}[noprint]{\@subrubric@cc}
+% \begin{macro}[noprint]{\@subrubric@cc}
+% \begin{macrocode}
+
+\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
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\subrubricalignment}
+% \marg{hpos}
+% \begin{macrocode}
+\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.}}
+}
+
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\subrubric}
+% \marg{title}
+% \begin{macrocode}
+\newcommand\subrubric[1]{%
+ \@nextentry
+ \noalign{\gdef\@nextentry{}}%
+ \@subrubric{#1}\\*[\subrubricspace]\par}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Rubrics}
+% \begin{macro}{\@rubricfont}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\rubricfont}
+% \marg{cmds}
+% \begin{macrocode}
+\def\@rubricfont{\Large\bfseries}
+\newcommand\rubricfont[1]{\gdef\@rubricfont{#1}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\rubricspace}
+% \begin{macrocode}
+\newlength\rubricspace
+\setlength\rubricspace{10pt}
+
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@rubrichead}
+% \marg{title}\MacroTopsep=0pt
+% \begin{macro}[noindex]{\@rubrichead@*}
+% \ldots
+% \begin{macro}{\@rubrichead}
+% \begin{macro}[noprint]{\@rubrichead@l}
+% \begin{macro}[noprint]{\@rubrichead@c}
+% \begin{macro}[noprint]{\@rubrichead@r}
+% \begin{macro}[noprint]{\@rubrichead@cl}
+% \begin{macro}[noprint]{\@rubrichead@cc}
+% \begin{macrocode}
+\def\@@rubrichead#1{\@rubricfont#1}
+
+\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
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\rubricalignment}
+% \marg{hpos}
+% \begin{macrocode}
+\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}
+% \end{macro}
+% \begin{macro}{\rubricafterspace}
+% \begin{macrocode}
+\newlength\rubricafterspace
+\setlength\rubricafterspace{0pt}
+
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@rubricmark}
+% \mbox{}\MacroTopsep=0pt
+% \begin{environment}{rubric}
+% \marg{title}\\
+% Marking commands don't seem to work in longtable headings. So the rubric
+% mark is issued just after it.\\
+% 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}
+\let\@rubricmark\@gobble
+
+\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{}%
+ \global\let\old@newpage\newpage%
+ \global\let\old@pagebreak\pagebreak%
+ \global\let\old@nopagebreak\nopagebreak
+ \begin{longtable}{@{}kl@{~}X@{}}
+ \@rubrichead{#1}\\*[\rubricspace]
+ \endfirsthead
+ \@rubrichead{#1\@continuedname}\\*[\rubricspace]
+ \endhead
+ \noalign{\@rubricmark{#1}%
+ \global\let\in@newpage\newpage%
+ \global\let\in@pagebreak\pagebreak%
+ \global\let\in@nopagebreak\nopagebreak%
+ \gdef\newpage{\@nextentry\noalign{\gdef\@nextentry{}}\in@newpage}
+ \gdef\pagebreak{\@nextentry\noalign{\gdef\@nextentry{}}\in@pagebreak}
+ \gdef\nopagebreak{\@nextentry\noalign{\gdef\@nextentry{}}\in@nopagebreak}}}{%
+ %% \end{rubric}
+ \@nextentry
+ \end{longtable}\par\vspace\rubricafterspace
+ \global\let\newpage\old@newpage%
+ \global\let\pagebreak\old@pagebreak%
+ \global\let\nopagebreak\old@nopagebreak}
+
+% \end{macrocode}
+% \end{environment}
+% \end{macro}
+% \begin{macro}{\continuedname}
+% \marg{continuation text}
+% \begin{macrocode}
+\newcommand\continuedname[1]{\gdef\@continuedname{#1}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Skeleton File}
+% \paragraph{Utilities}
+% \begin{macro}{\today}
+% \begin{macrocode}
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Headers}
+% \begin{macro}{\header@scale}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\headerscale}
+% \marg{scale}
+% \begin{macrocode}
+\def\header@scale{.5}
+\newcommand\headerscale[1]{\gdef\header@scale{#1}}
+\@onlypreamble\headerscale
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\headerspace}
+% \begin{macrocode}
+\newlength\headerspace
+\setlength\headerspace{10pt}
+
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@leftheader}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\leftheader}
+% \marg{contents}
+% \begin{macro}{\@rightheader}
+% \mbox{}
+% \begin{macro}{\rightheader}
+% \marg{contents}\\
+% 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}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\photoscale}
+% \marg{scale}\MacroTopsep=0pt
+% \begin{macro}{\photosep}
+% \marg{length}
+% \begin{macro}{\photo}
+% \oarg{hpos}\marg{file}
+% \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}
+ \ifthenelse{\equal{#1}{l}}{}{%
+ \ifthenelse{\equal{#1}{r}}{}{%
+ \ifthenelse{\equal{#1}{c}}{}{%
+ \ClassError{curve}{Invalid argument to \protect\photo}{%
+ Argument 2 of \protect\photo must be `l', `r' or `c'.}}}}%
+ \def\tmp@cmd{\global\let\makeheaders@}
+ \expandafter\tmp@cmd\csname makeheaders@#1\endcsname
+ \gdef\photo@file{#2}}
+\@onlypreamble\photo
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\photo@width}
+% \begin{macro}[noindex]{\includephoto@*}
+% \begin{macro}[noprint]{\includephoto@t}
+% \begin{macro}[noprint]{\includephoto@c}
+% \begin{macro}[noprint]{\includephoto@b}
+% 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}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\leftheader@width}
+% \MacroTopsep=0pt
+% \begin{macro}{\rightheader@width}
+% \begin{macrocode}
+\newlength\leftheader@width
+\newlength\rightheader@width
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% And here are the different versions of the |\makeheaders| command:
+% \begin{macro}{\makeheaders@l}
+% \marg{vpos}
+% \begin{macrocode}
+\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}}
+
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\makeheaders@c}
+% \marg{vpos}
+% \begin{macrocode}
+\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}}
+
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\makeheaders@r}
+% \marg{vpos}
+% \begin{macrocode}
+\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@}}
+
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\makeheaders@}
+% \marg{vpos}
+% \begin{macrocode}
+\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}}
+
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\makeheaders}
+% \oarg{vpos}
+% \begin{macrocode}
+\newcommand\makeheaders[1][c]{%
+ \ifthenelse{\equal{#1}{t}}{}{%
+ \ifthenelse{\equal{#1}{b}}{}{%
+ \ifthenelse{\equal{#1}{c}}{}{%
+ \ClassError{curve}{Invalid argument to \protect\makeheaders}{%
+ Argument of \protect\makeheaders must be `t', `b' or `c'.}}}}%
+ \def\tmp@cmd{\global\let\includephoto@}
+ \expandafter\tmp@cmd\csname includephoto@#1\endcsname
+ \makeheaders@{#1}%
+ \par\vspace\headerspace}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Titles}
+% \begin{macro}{\@titlefont}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\titlefont}
+% \marg{cmds}
+% \begin{macrocode}
+\@onlypreamble\title
+
+\def\@titlefont{\Huge\bfseries}
+\newcommand\titlefont[1]{\gdef\@titlefont{#1}}
+\@onlypreamble\titlefont
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\titlespace}
+% \begin{macrocode}
+\newlength\titlespace
+\setlength\titlespace{0pt}
+
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@subtitle}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\subtitle}
+% \marg{title}
+% \begin{macrocode}
+\let\@subtitle\@undefined
+\newcommand\subtitle[1]{\gdef\@subtitle{#1}}
+\@onlypreamble\subtitle
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@subtitlefont}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\subtitlefont}
+% \marg{cmds}
+% \begin{macrocode}
+\def\@subtitlefont{\huge\itshape}
+\newcommand\subtitlefont[1]{\gdef\@subtitlefont{#1}}
+\@onlypreamble\subtitlefont
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}[noindex]{\@titlealignment@*}
+% \MacroTopsep=0pt
+% \begin{macro}{\@title@lignment}
+% \begin{macro}[noprint]{\@titlealignment@l}
+% \begin{macro}[noprint]{\@titlealignment@c}
+% \begin{macro}[noprint]{\@titlealignment@r}
+% \begin{macro}[noprint]{\@titlealignment}
+% \begin{macrocode}
+\def\@titlealignment@l{\raggedright}
+\def\@titlealignment@c{\centering}
+\def\@titlealignment@r{\raggedleft}
+
+\let\@title@lignment\@titlealignment@c
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@titlealignment}
+% \marg{src}\marg{hpos}
+% \begin{macrocode}
+\def\@titlealignment#1#2{%
+ \def\@curve@temp@a{\let\@title@lignment}
+ \expandafter\@curve@temp@a\csname @titlealignment@#2\endcsname
+ \@ifundefined{@title@lignment}{%
+ \ClassError{curve}{Invalid title alignment}{%
+ You have called \expandafter\string\csname#1\endcsname\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.}}
+}
+
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\titlealignment}
+% \marg{hpos}
+% \begin{macrocode}
+\newcommand\titlealignment[1]{\@titlealignment{titlealignment}{#1}}
+
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@maketitle}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\@maketitle}
+% \oarg{hpos}
+% \begin{macro}{\maketitle}
+% \begin{macrocode}
+\def\@@maketitle{%
+ \bgroup\trivlist\@title@lignment\item\relax {\@titlefont\@title}
+ \ifx\@subtitle\@undefined\else\\\@subtitlefont\@subtitle\fi
+ \endtrivlist\egroup
+ \vspace\titlespace}
+
+\def\@maketitle[#1]{\@titlealignment{maketitle}{#1}\@@maketitle}
+
+\newcommand\maketitle{\@ifnextchar[%]
+ \@maketitle\@@maketitle}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{Rubric Inclusion}
+% \begin{macro}{\@flavor}
+% \MacroTopsep=0pt
+% \begin{option}{ask}
+% \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}
+% \end{option}
+% \end{macro}
+% \begin{macro}{\@curveinput}
+% \marg{file}\MacroTopsep=0pt
+% \begin{macro}{\input}
+% |\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}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\makerubric}
+% \marg{name}
+% \begin{macrocode}
+\newcommand\makerubric[1]{\LTXtable{\linewidth}{#1}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Bibliography}
+% In case |splitbib| is loaded, we require it to export to the sbb file. It is
+% simpler to make \curve compatible with it that way.
+% \begin{macrocode}
+\PassOptionsToPackage{export}{splitbib}
+
+% \end{macrocode}
+%
+% \begin{option}{openbib}
+% \begin{macrocode}
+\let\newblock\empty
+\DeclareOption{openbib}{\let\newblock\par}
+
+% \end{macrocode}
+% \end{option}
+% \begin{option}{revbib}
+% \begin{counter}{bibcount}
+% \begin{counter}{bibtotal}
+% \begin{conditional}{curve@revbib}
+% \begin{macrocode}
+\newcounter{bibcount}
+\newcounter{bibtotal}
+\newif\ifcurve@revbib\curve@revbibfalse
+\AtEndDocument{
+ \if@filesw
+ \immediate\write\@auxout{\string\setcounter{bibtotal}{\thebibcount}}%
+ \fi}
+\DeclareOption{revbib}{\curve@revbibtrue}
+
+% \end{macrocode}
+% \end{conditional}
+% \end{counter}
+% \end{counter}
+% \end{option}
+% \begin{macro}{\@listpubname}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\listpubname}
+% \marg{title}
+% \begin{macrocode}
+\newcommand\listpubname[1]{\gdef\@listpubname{#1}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@curve@input@}
+% \marg{file}\\
+% Emulation of |\@input@| for bibliographic inclusion:
+% \begin{macrocode}
+\def\@curve@input@#1{%
+ \IfFileExists{#1}{\makerubric{#1}}{\typeout{No file #1.}}}
+
+% \end{macrocode}
+% \end{macro}
+% Redefine |\bibitem| and its internal implementation to behave like |\entry|.
+% \begin{macro}{\@curveltx@lbibitem}
+% \oarg{label}\marg{ref}\MacroTopsep=0pt
+% \begin{macro}{\@curve@lbibitem}
+% \ldots
+% \begin{macro}{\@lbibitem}
+% \begin{macrocode}
+\let\@curveltx@lbibitem\@lbibitem
+\def\@curve@lbibitem[#1]#2{\@sentry[\@biblabel{#1}]%
+ \if@filesw
+ {\let\protect\noexpand%
+ \immediate\write\@auxout{\string\bibcite{#2}{#1}}}%
+ \fi%
+ \ignorespaces}
+\let\@lbibitem\@curve@lbibitem
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@curveltx@bibitem}
+% \marg{ref}\MacroTopsep=0pt
+% \begin{macro}{\@curve@bibitem}
+% \ldots
+% \begin{macro}{\@bibitem}
+% \begin{macrocode}
+\let\@curveltx@bibitem\@bibitem
+\def\@curve@bibitem#1{\stepcounter{bibcount}%
+ \@sentry[\@biblabel{\ifcurve@revbib\thebibtotal\else\thebibcount\fi}]%
+ \ifcurve@revbib\addtocounter{bibtotal}{-1}\fi%
+ \if@filesw
+ \immediate\write\@auxout{\string\bibcite{#1}{\thebibcount}}%
+ \fi%
+ \ignorespaces}
+\let\@bibitem\@curve@bibitem
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@curveltxbibitem}
+% \MacroTopsep=0pt
+% \begin{macro}{\@curvebibitem}
+% \begin{macro}{\bibitem}
+% \begin{macrocode}
+\let\@curveltxbibitem\bibitem
+\def\@curvebibitem{%
+ %% #### FIXME: Dirty code duplication from \entry.
+ \@nextentry
+ \noalign\bgroup\gdef\@beforespace{\subrubricbeforespace}%
+ \@ifnextchar[%]
+ \@lbibitem\@bibitem}
+\let\bibitem\@curvebibitem
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Special cases:
+% \begin{itemize}
+% \item |bibentry| (version 1.9): restore standard definitions because
+% bibentry just inlines bibliographic contents.
+% \begin{macrocode}
+\AtBeginOfFile{bibentry.sty}{
+ \let\@lbibitem\@curveltx@lbibitem
+ \let\@bibitem\@curveltx@bibitem
+ \let\bibitem\@curveltxbibitem}
+
+% \end{macrocode}
+% \item |splitbib| (version 1.16): restore standard definitions because ours
+% are used only as part of the |\endthebibliography| redefinition.
+% \begin{macrocode}
+\AtBeginOfFile{splitbib.sty}{
+ \let\@lbibitem\@curveltx@lbibitem
+ \let\@bibitem\@curveltx@bibitem
+ \let\bibitem\@curveltxbibitem}
+
+% \end{macrocode}
+% \item |hyperref|: restore whatever previous behavior we had. It is arguable
+% whether we should preserve |hyperref|'s functionality, but this answer is
+% no, at least for the time being. Note that we assume that |hyperref| is
+% loaded late in the process. Also, |hyperref| does not affect |\bibitem|.
+% \begin{macrocode}
+\AtBeginOfFile{hyperref.sty}{
+ \let\@curveprevious@lbibitem\@lbibitem
+ \let\@curveprevious@bibitem\@bibitem}
+\AtEndOfFile{hyperref.sty}{
+ \let\@lbibitem\@curveprevious@lbibitem
+ \let\@bibitem\@curveprevious@bibitem}
+
+% \end{macrocode}
+% \end{itemize}
+% \begin{environment}{thebibliography}
+% \marg{key}\\
+% |bibentry| overrides this definition in its own group in |\BR@nobib|, but
+% this is in fact okay because it's not supposed to print anything. The same
+% goes for |splitbib| which saves this definition and restores it when it
+% actually matters.
+% \begin{macrocode}
+\newenvironment{thebibliography}[1]{%
+% \end{macrocode}
+% Disable the |skipsamekey| mechanism and the prefix which would get in the
+% way.
+% \begin{macrocode}
+ \let\@key\@alwayskey
+ \def\@prefix{}
+% \end{macrocode}
+% For compatibility with bibliographic packages such as |multibib|, the
+% bibliography title is set (by order of priority) to either |\bibname|,
+% |\refname| or |\@listpubname|.
+% \begin{macrocode}
+ \begin{rubric}{\@ifundefined{bibname}{%
+ \@ifundefined{refname}{\@listpubname}{\refname}}{%
+ \bibname}}
+ }{%
+ \end{rubric}
+}
+
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\@curveltxbibliography}
+% \marg{bibs}\MacroTopsep=0pt
+% \begin{macro}{\bibliography}
+% \ldots\\
+% Define |\bibliography| to issue a |\makerubric| call on the |bbl| file.
+% \begin{macrocode}
+\let\@curveltxbibliography\bibliography
+\def\bibliography#1{%
+ \if@filesw
+ \immediate\write\@auxout{\string\bibdata{#1}}%
+ \fi%
+ \@curve@input@{\jobname.bbl}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% Special cases:
+% \begin{itemize}
+% \item |multibbl| (version 1.12): merge definitions.
+% \begin{macrocode}
+\AtEndOfFile{multibbl.sty}{
+ \def\bibliography##1##2##3{%
+ \@ifundefined{##1@auxfile}{}{%
+ \expandafter\immediate\write\csname ##1@auxfile\endcsname%
+ {\string\bibdata{##2}}}%
+ \def\bibname{##3}%
+ \def\refname{##3}%
+ \@curve@input@{##1.bbl}}}
+
+% \end{macrocode}
+% \item |splitbib|: restore original version because ours are used only as
+% part of the |\endthebibliography| redefinition.
+% \begin{macrocode}
+\AtBeginOfFile{splitbib.sty}{
+ \let\bibliography\@curveltxbibliography}
+
+% \end{macrocode}
+% \end{itemize}
+% Apart from that, completing |splitbib| support is a pain in the ass. We need
+% to do two things. First, redefine the abominable |\NMSB@writeentry| in order
+% to output a correctly typeset rubric (titles are converted to subrubrics for
+% instance). Next we need to redefine |\endthebibliography| to restore our own
+% definitions for |\bibitem|, |\@bibitem| and |\@lbibitem|, and make it use
+% |\@curve@input@| instead of |\@input@|.
+% \begin{macrocode}
+\AtEndOfFile{splitbib.sty}{
+ \def\NMSB@writeentry##1##2##3##4##5,{\ifx\relax ##5\relax
+ \else
+ \def\NMSB@currcat{##1##2##3##4}%
+ \def\NMSB@currcatlevelone{##1##2}%
+ \ifx\NMSB@currcatlevelone\NMSB@prevcatlevelone\else
+ \expandafter\ifx\csname NMSBtitle@\NMSB@currcatlevelone
+ \endcsname\relax
+ \else
+ \if@filesw
+ \expandafter\let\expandafter\NMSB@tempentry
+ \csname NMSBtitle@\NMSB@currcatlevelone\endcsname
+ \edef\NMSB@tempentry{\@backslashchar subrubric{\NMSB@tempentry}}
+ \expandafter\NMSB@writecatbib\expandafter{\NMSB@tempentry}
+ \expandafter\ifx\csname
+ NMSBcomment@\NMSB@currcatlevelone\endcsname\relax
+ \else
+ \immediate\write\NMSB@catbib{\string\vskip2ex^^J%
+ \string\hspace{-\leftmargin}\string\relax^^J%
+ \string\begin{minipage}{\textwidth}^^J%
+ \string\addtolength\string\parindent{20pt}^^J%
+ \string\noindent}
+ \expandafter\let\expandafter\NMSB@tempentry
+ \csname NMSBcomment@\NMSB@currcatlevelone\endcsname
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \NMSB@tempentry^^J}%
+ \immediate\write\NMSB@catbib{\string\end{minipage}^^J%
+ \string\par\string\addpenalty{\NMSB@penalty}
+ \string\vskip2ex}
+ \fi
+ \fi
+ \fi
+ \xdef\NMSB@prevcatlevelone{##1##2}%
+ \ifnum\theSBresetdepth>0\relax
+ \setcounter{\@listctr}{0}%
+ \fi
+ \expandafter\ifx\csname NMSBprefix@\NMSB@prevcatlevelone
+ \endcsname\relax
+ \NMSB@currprefixlevelonetok{\relax}%
+ \else
+ \expandafter\expandafter\expandafter\NMSB@currprefixlevelonetok
+ \expandafter\expandafter\expandafter{%
+ \csname NMSBprefix@\NMSB@prevcatlevelone\endcsname}%
+ \fi
+ \fi
+ \ifx\NMSB@currcat\NMSB@prevcat\else
+ \ifnum\NMSB@currcat=9999\else
+ \expandafter\ifx\csname NMSBtitle@\NMSB@currcat\endcsname
+ \relax
+ \else
+ \if@filesw
+ \immediate\write\NMSB@catbib{%
+ \string\par\string\addpenalty{-\NMSB@halfpenalty}%
+ \string\relax^^J%
+ \string\item[]%
+ \string\SBsubtitle}%
+ \expandafter\let\expandafter\NMSB@tempentrya
+ \csname NMSBtitle@\NMSB@currcatlevelone\endcsname
+ \expandafter\let\expandafter\NMSB@tempentryb
+ \csname NMSBtitle@\NMSB@currcat\endcsname
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \expandafter{\NMSB@tempentrya}}
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \expandafter{\NMSB@tempentryb}}
+ \immediate\write\NMSB@catbib{\string\relax^^J%
+ \string\par\string\addpenalty{\NMSB@penalty}%
+ \string\relax}%
+ \expandafter\ifx\csname
+ NMSBcomment@\NMSB@currcat\endcsname\relax
+ \else
+ \immediate\write\NMSB@catbib{\string\vskip2ex^^J%
+ \string\hspace{-\leftmargin}\string\relax^^J%
+ \string\begin{minipage}{\textwidth}^^J%
+ \string\addtolength\string\parindent{20pt}^^J%
+ \string\noindent}
+ \expandafter\let\expandafter\NMSB@tempentry
+ \csname NMSBcomment@\NMSB@currcat\endcsname
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \NMSB@tempentry^^J}%
+ \immediate\write\NMSB@catbib{\string\end{minipage}^^J%
+ \string\par\string\addpenalty{\NMSB@penalty}%
+ \string\vskip2ex}
+ \fi
+ \fi
+ \fi
+ \fi
+ \xdef\NMSB@prevcat{##1##2##3##4}%
+ \ifnum\theSBresetdepth>1\relax
+ \setcounter{\@listctr}{0}%
+ \fi
+ \expandafter\ifx\csname NMSBprefix@\NMSB@currcat\endcsname\relax
+ \expandafter\NMSB@currprefixtok\expandafter{%
+ \the\NMSB@currprefixlevelonetok}%
+ \else
+ \expandafter\expandafter\expandafter\NMSB@currprefixtok
+ \expandafter\expandafter\expandafter{%
+ \csname NMSBprefix@\NMSB@currcat\endcsname}
+ \fi
+ \fi
+ \expandafter\ifx\csname NMSBlabel@##5\endcsname\relax
+ \if@filesw
+ \stepcounter\@listctr
+ \expandafter\ifx\expandafter\relax\the\NMSB@currprefixtok
+ \def\NMSB@tempentry{}%
+ \else
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\NMSB@tempentry
+ \expandafter\expandafter\expandafter{%
+ \expandafter\the\expandafter\NMSB@currprefixtok
+ \the\value{\@listctr}}%
+ \edef\NMSB@tempentry{[\NMSB@tempentry]}
+ \fi
+ \edef\NMSB@tempentry{%
+ \@backslashchar bibitem%
+ \NMSB@tempentry{\csname NMSBkey@##5\endcsname}}%
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \NMSB@tempentry}
+ \expandafter\let\expandafter\NMSB@tempentry
+ \csname NMSBentry@##5\endcsname%
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \NMSB@tempentry}
+ \fi
+ \setbox\@tempboxa=\hbox{\the\NMSB@currprefixtok\the\value{\@listctr}}%
+ \ifdim\NMSB@reallylongest<\wd\@tempboxa
+ \setlength{\NMSB@reallylongest}{\wd\@tempboxa}%
+ \xdef\NMSB@reallylongestlabel{%
+ \expandafter\ifx\expandafter\relax\the\NMSB@currprefixtok
+ \else\the\NMSB@currprefixtok\fi\the\value{\@listctr}}%
+ \fi
+ \else
+ \if@filesw
+ \immediate\write\NMSB@catbib{%
+ \string\bibitem}
+ \expandafter\let\expandafter\NMSB@tempentry
+ \csname NMSBlabel@##5\endcsname
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \expandafter[\NMSB@tempentry]}%
+ \immediate\write\NMSB@catbib{%
+ {\csname NMSBkey@##5\endcsname}}%
+ \expandafter\let\expandafter\NMSB@tempentry
+ \csname NMSBentry@##5\endcsname%
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \NMSB@tempentry^^J^^J}
+ \fi
+ \setbox\@tempboxa=\hbox{\csname NMSBlabel@##5\endcsname}%
+ \ifdim\NMSB@reallylongest<\wd\@tempboxa
+ \setlength{\NMSB@reallylongest}{\wd\@tempboxa}%
+ \expandafter\let\expandafter\NMSB@reallylongestlabel\csname
+ NMSBlabel@##5\endcsname
+ \fi
+ \fi
+ \fi
+ }
+ \def\endthebibliography{%
+ \usecounter{enumiv}%
+ \edef\NMSB@sortedvaluelist{%
+ \expandafter\NMSBsortlt\expandafter{\NMSB@valuelist}}%
+ \expandafter\NMSB@writelist\expandafter{\NMSB@sortedvaluelist}%
+ \if@filesw
+ \immediate\write\NMSB@catbib{%
+ \string\end{thebibliography}}
+ \immediate\closeout\NMSB@catbib
+ \fi
+ \begingroup
+ \ifNMSB@newchap\else
+ \@ifundefined{chapter}{\def\section####1####2{}}{%
+ \def\chapter####1####2{}}%
+ \fi
+ \let\thebibliography\@NMSBorig@thebibliography
+ \let\endthebibliography\@NMSBorig@endthebibliography
+ \let\bibitem\@curvebibitem
+ \let\@lbibitem\@curve@lbibitem
+ \let\@bibitem\@curve@bibitem
+ \@curve@input@{\jobname.sbb}
+ \endgroup
+ \ifx\NMSB@missingcat\NMSB@empty\else
+ \expandafter\NMSB@warnnocateg\NMSB@missingcat\end
+ \fi
+ \ifNMSB@strict
+ \ifx\NMSB@doublecat\NMSB@empty\else
+ \expandafter\NMSB@warndblcateg\NMSB@doublecat\end
+ \fi
+ \fi
+ \ifdim\NMSB@reallylongest=\NMSB@longest\relax\else
+ \NMSB@warnwronglongest
+ \fi}}
+
+% \end{macrocode}
+%
+% \subsubsection{Language Processing}
+% \begin{lang}{english}
+% \MacroTopsep=0pt
+% \begin{lang}{french}
+% \begin{lang}{francais}
+% \begin{lang}{spanish}
+% \begin{lang}{portuges}
+% \begin{lang}{portugese}
+% \begin{lang}{brazil}
+% \begin{lang}{brazilian}
+% \begin{lang}{italian}
+% \begin{lang}{german}
+% \begin{lang}{ngerman}
+% \begin{lang}{dutch}
+% \begin{lang}{danish}
+% \begin{lang}{swedish}
+% \begin{lang}{polish}
+% \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{portuges}{%
+ \continuedname{~(continua\c c\~ao)}
+ \listpubname{Publica\c c\~oes}}
+\DeclareOption{portuguese}{%
+ \ExecuteOptions{portuges}}
+\DeclareOption{brazil}{%
+ \ExecuteOptions{portuges}}
+\DeclareOption{brazilian}{%
+ \ExecuteOptions{portuges}}
+\DeclareOption{italian}{%
+ \continuedname{~(continua)}
+ \listpubname{Pubblicazioni}}
+\DeclareOption{german}{%
+ \continuedname{~(fortgesetzt)}
+ \listpubname{Verzeichnis der Ver\"offentlichungen}}
+\DeclareOption{ngerman}{%
+ \ExecuteOptions{german}}
+\DeclareOption{dutch}{%
+ \continuedname{~(vervolg)}
+ \listpubname{Publicaties}}
+\DeclareOption{danish}{%
+ \continuedname{~(fortsat)}
+ \listpubname{Udgivelser}}
+\DeclareOption{swedish}{%
+ \continuedname{~(forts.)}
+ \listpubname{Publikationer}}
+\DeclareOption{polish}{
+ \continuedname{~(kontynuacja)}
+ \listpubname{Publikacje}}
+
+% \end{macrocode}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+%
+% \subsubsection{Standard Class Processing}
+% \begin{option}[noindex]{*paper}
+% \begin{option}{landscape}
+% \begin{option}[noprint]{a4paper}
+% \begin{option}[noprint]{a5paper}
+% \begin{option}[noprint]{b5paper}
+% \begin{option}[noprint]{letterpaper}
+% \begin{option}[noprint]{legalpaper}
+% \begin{option}[noprint]{executivepaper}
+% \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}}
+
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \begin{option}{10pt}
+% \begin{option}{11pt}
+% \begin{option}{12pt}
+% \begin{macrocode}
+\DeclareOption{10pt}{\def\@ptsize{0}}
+\DeclareOption{11pt}{\def\@ptsize{1}}
+\DeclareOption{12pt}{\def\@ptsize{2}}
+
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \begin{option}{oneside}
+% \begin{option}{twoside}
+% \begin{macrocode}
+\DeclareOption{oneside}{\@twosidefalse\@mparswitchfalse}
+\DeclareOption{twoside}{\@twosidetrue\@mparswitchtrue}
+
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \begin{option}{final}
+% \begin{option}{draft}
+% \begin{macrocode}
+\DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\DeclareOption{final}{%
+ \setlength\overfullrule{0pt}
+ \setlongtables}
+
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \begin{macrocode}
+\ExecuteOptions{english,letterpaper,10pt,oneside,final}
+\ProcessOptions
+
+\input{size1\@ptsize.clo}
+\setlength\parindent{0pt}
+\setlength\parskip{0pt}
+\setlength\tabcolsep{10pt}
+\setlength\arrayrulewidth{.4\p@}
+\setlength\leftmargini{2.5em}
+\leftmargin\leftmargini
+\setlength\leftmarginii{2.2em}
+\setlength\leftmarginiii{1.87em}
+\setlength\leftmarginiv{1.7em}
+\setlength\leftmarginv{1em}
+\setlength\leftmarginvi{1em}
+\setlength\labelsep{.5em}
+\setlength\labelwidth{\leftmargini}
+\addtolength\labelwidth{-\labelsep}
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+\renewcommand\theenumi{\@arabic\c@enumi}
+\renewcommand\theenumii{\@alph\c@enumii}
+\renewcommand\theenumiii{\@roman\c@enumiii}
+\renewcommand\theenumiv{\@Alph\c@enumiv}
+\newcommand\labelenumi{\theenumi.}
+\newcommand\labelenumii{(\theenumii)}
+\newcommand\labelenumiii{\theenumiii.}
+\newcommand\labelenumiv{\theenumiv.}
+\renewcommand\p@enumii{\theenumi}
+\renewcommand\p@enumiii{\theenumi(\theenumii)}
+\renewcommand\p@enumiv{\p@enumiii\theenumiii}
+\newcommand\labelitemi{\textbullet}
+\newcommand\labelitemii{\normalfont\bfseries \textendash}
+\newcommand\labelitemiii{\textasteriskcentered}
+\newcommand\labelitemiv{\textperiodcentered}
+\raggedbottom
+\onecolumn
+\pagestyle{empty}
+\pagenumbering{arabic}
+
+\newcommand\@makefntext[1]{\noindent\hb@xt@1em{\hss\@makefnmark}#1}
+
+\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
+}
+
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+
+%</curve>
+% \end{macrocode}
+% ^^A \PrintChanges
+% \makeatletter{\let\markboth\@gobbletwo\PrintIndex}\makeatother
+% \Finale
+%
+% ^^A Local variables:
+% ^^A eval : (add-hook 'TeX-update-style-hook (lambda () (doxitems "option" "counter" "length" "lang" "if")) nil t)
+% ^^A End:
+% ^^A curve.dtx ends here.
diff --git a/macros/latex/contrib/curve/curve.el b/macros/latex/contrib/curve/curve.el
new file mode 100644
index 0000000000..2be0f6b509
--- /dev/null
+++ b/macros/latex/contrib/curve/curve.el
@@ -0,0 +1,111 @@
+;;; curve.el --- AUC-TeX style file for CurVe
+
+;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Didier Verna.
+
+;; Author: Didier Verna <didier@lrde.epita.fr>
+;; Maintainer: Didier Verna <didier@lrde.epita.fr>
+;; Created: Tue Apr 18 14:49:29 2000
+;; Last Revision: Wed Jul 18 17:28:55 2007
+;; Keywords: tex abbrev data
+
+;; 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 all files listed in the file `README'.
+
+
+;;; Commentary:
+
+;; Contents management by FCM version 0.1-b2.
+
+
+;;; Code:
+
+(defun curve-rubric-file (optional &optional prompt)
+ "Prompt for a CurVe rubric filename in the current directory.
+
+Caution: because of the flavor mechanism of CurVe, this function will use
+the choosen file name sans the last TWO extensions."
+ (TeX-argument-insert
+ (file-name-sans-extension
+ (file-name-sans-extension
+ (read-file-name (TeX-argument-prompt optional
+ prompt "Rubric file")
+ "" "" nil)))
+ optional))
+
+(defun curve-rubric-item ()
+ ;; Ideally, we should have a way (like, a prefix) to specify either an
+ ;; entry, an entry* or a subrubric. But that would require to hack AUC-TeX
+ ;; in order to pass an optional argument to LaTeX-insert-item.
+ (TeX-insert-macro "entry*"))
+
+(add-hook 'LaTeX-mode-hook
+ (lambda ()
+ (setq LaTeX-item-list
+ (cons '("rubric" . curve-rubric-item) LaTeX-item-list))))
+
+
+(TeX-add-style-hook "curve"
+ (function
+ (lambda ()
+ (TeX-add-symbols
+ '("photo" [ "Placement (l, c or r)" ] t)
+ '("photosep")
+ '("photoscale" t)
+ '("leftheader" t)
+ '("rightheader" t)
+ '("headerscale" t)
+ '("headerspace")
+ '("makeheaders" [ "Alignment (t, c or b)" ])
+
+ ;; no need to support \today since it is a standard command
+ '("title" "Title")
+ '("subtitle" "Subtitle")
+ '("titlespace")
+ '("titlefont" "Font for title")
+ '("titlealignment" "Alignment (l, c, r)")
+ '("subtitlefont" "Font for subtitle")
+ '("maketitle")
+
+ '("flavor" "Flavor")
+ '("makerubric" curve-rubric-file)
+
+ '("rubricalignment" "Alignment (l, c, r, cl, cc)")
+ '("rubricfont" "For for rubrics")
+ '("rubricspace")
+ '("rubricafterspace")
+
+ '("subrubric" "Subrubric name")
+ '("subrubricalignment" "Alignment (l, c, r, cl, cc)")
+ '("subrubricfont" "Font for subrubrics")
+ '("subrubricspace")
+ '("subrubricbeforespace")
+
+ '("entry" [ "Key" ] t)
+ '("entry*" [ "Key" ])
+ '("noentry" "Invisible (long) key")
+ '("keyfont" "Font for keys")
+ '("keyalignment" "Alignment (l, c, or r)")
+ '("prefix" "Prefix command")
+
+ '("continuedname" "Continuation name")
+ '("listpubname" "List of publications name"))
+ (LaTeX-add-environments
+ '("rubric" "Name")))))
+
+
+
+
+;;; Local variables:
+;;; eval: (put 'TeX-add-style-hook 'lisp-indent-function 1)
+;;; End:
+
+;;; curve.el ends here
diff --git a/macros/latex/contrib/curve/curve.ins b/macros/latex/contrib/curve/curve.ins
new file mode 100644
index 0000000000..12fb9b0b2d
--- /dev/null
+++ b/macros/latex/contrib/curve/curve.ins
@@ -0,0 +1,58 @@
+%%% curve.ins --- Installation file for CurVe -*- mode: LaTeX -*-
+
+%% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2010 Didier Verna
+
+%% Author: Didier Verna <didier@lrde.epita.fr>
+%% Maintainer: Didier Verna <didier@lrde.epita.fr>
+%% Created: Thu Dec 10 16:04:01 1998
+%% Last Revision: Tue Nov 30 18:36:08 2010
+
+%% 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:
+
+\NeedsTeXFormat{LaTeX2e}
+\input docstrip.tex
+\InputIfFileExists{ltxpkg.tex}{}{}
+\askforoverwritefalse
+\keepsilent
+
+\preamble
+^^J^^J
+Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Didier Verna^^J
+Copyright (C) 2010 Didier Verna^^J
+This file is part of CurVe.^^J
+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.^^J
+CurVe consists of the files listed in the file `README'.^^J
+\endpreamble
+
+\catcode`\¡=14
+\generate{
+ \file{header.inc}{\from{curve.dtx}{header}}
+ \file{curve.cls}{\from{curve.dtx}{header,curve}}}
+
+\endbatchfile
+
+%%% curve.ins ends here
diff --git a/macros/latex/contrib/curve/curve.pdf b/macros/latex/contrib/curve/curve.pdf
new file mode 100644
index 0000000000..8a5e11e177
--- /dev/null
+++ b/macros/latex/contrib/curve/curve.pdf
Binary files differ
diff --git a/macros/latex/contrib/curve/examples/Makefile b/macros/latex/contrib/curve/examples/Makefile
new file mode 100644
index 0000000000..1f25ac5a36
--- /dev/null
+++ b/macros/latex/contrib/curve/examples/Makefile
@@ -0,0 +1,70 @@
+### Makefile --- Makefile for CurVe examples
+
+## Copyright (C) 2010 Didier Verna
+
+## Author: Didier Verna <didier@lrde.epita.fr>
+## Maintainer: Didier Verna <didier@lrde.epita.fr>
+## Created: Mon Dec 6 11:13:27 2010
+## Last Revision: Mon Dec 6 11:25:22 2010
+
+## 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:
+
+TEXI2DVI := texi2dvi
+
+BIB_EXAMPLES = bib splitbib
+EXAMPLES := raw $(BIB_EXAMPLES)
+
+PDF_BIB_EXAMPLES = $(BIB_EXAMPLES:%=%.pdf)
+DVI_BIB_EXAMPLES = $(BIB_EXAMPLES:%=%.dvi)
+ALL_BIB_EXAMPLES = $(PDF_BIB_EXAMPLES) $(DVI_BIB_EXAMPLES)
+
+PDF_EXAMPLES = $(EXAMPLES:%=%.pdf)
+DVI_EXAMPLES = $(EXAMPLES:%=%.dvi)
+ALL_EXAMPLES = $(PDF_EXAMPLES) $(DVI_EXAMPLES)
+
+
+all:
+ @echo "Please use either the pdf or the dvi target."
+pdf: $(PDF_EXAMPLES)
+dvi: $(DVI_EXAMPLES)
+
+$(ALL_BIB_EXAMPLES): bib.bib
+$(ALL_EXAMPLES): rubric.tex
+
+
+%.pdf: %.tex
+ $(TEXI2DVI) -p $<
+
+%.dvi: %.tex
+ $(TEXI2DVI) $<
+
+
+clean:
+ -rm *~ *.aux *.lo* *.bbl *.blg *.sbb *.out
+
+distclean: clean
+ -rm $(ALL_EXAMPLES)
+
+
+.PHONY: all pdf dvi clean distclean
+
+
+### Makefile ends here
diff --git a/macros/latex/contrib/curve/examples/bib.bib b/macros/latex/contrib/curve/examples/bib.bib
new file mode 100644
index 0000000000..ac45c94361
--- /dev/null
+++ b/macros/latex/contrib/curve/examples/bib.bib
@@ -0,0 +1,68 @@
+@InProceedings{bib:doe.00.conf1,
+ author = {John Doe},
+ title = {A first conference paper},
+ booktitle = {The first conference proceedings},
+ OPTcrossref = {},
+ OPTkey = {},
+ pages = {200--210},
+ year = {2000},
+ OPTeditor = {},
+ OPTvolume = {},
+ OPTnumber = {},
+ OPTseries = {},
+ OPTaddress = {},
+ OPTmonth = {},
+ OPTorganization = {},
+ OPTpublisher = {},
+ OPTnote = {},
+ OPTannote = {}
+}
+
+@Article{bib:doe.01.journal1,
+ author = {John Doe},
+ title = {A first journal paper},
+ journal = {The first journal},
+ year = {2001},
+ OPTkey = {},
+ OPTvolume = {},
+ OPTnumber = {},
+ pages = {50--60},
+ OPTmonth = {},
+ OPTnote = {},
+ OPTannote = {}
+}
+
+@InProceedings{bib:doe.10.conf2,
+ author = {John Doe},
+ title = {A second conference paper},
+ booktitle = {The second conference proceedings},
+ OPTcrossref = {},
+ OPTkey = {},
+ pages = {100--110},
+ year = {2010},
+ OPTeditor = {},
+ OPTvolume = {},
+ OPTnumber = {},
+ OPTseries = {},
+ OPTaddress = {},
+ OPTmonth = {},
+ OPTorganization = {},
+ OPTpublisher = {},
+ OPTnote = {},
+ OPTannote = {}
+}
+
+@Article{bib:doe.11.journal2,
+ author = {John Doe},
+ title = {A second journal paper},
+ journal = {The second journal},
+ year = {2011},
+ OPTkey = {},
+ OPTvolume = {},
+ OPTnumber = {},
+ pages = {40--50},
+ OPTmonth = {},
+ OPTnote = {},
+ OPTannote = {}
+}
+
diff --git a/macros/latex/contrib/curve/examples/bib.tex b/macros/latex/contrib/curve/examples/bib.tex
new file mode 100644
index 0000000000..e17beeead3
--- /dev/null
+++ b/macros/latex/contrib/curve/examples/bib.tex
@@ -0,0 +1,55 @@
+%%% bib.tex --- Example of CurVe usage with BibTeX.
+
+%% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2010 Didier Verna.
+
+%% Author: Didier Verna <didier@lrde.epita.fr>
+%% Maintainer: Didier Verna <didier@lrde.epita.fr>
+%% Created: Mon Dec 6 10:57:19 2010
+%% Last Revision: Mon Dec 6 11:33:52 2010
+
+%% 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:
+
+\NeedsTeXFormat{LaTeX2e}
+\documentclass{curve}
+
+\leftheader{Left header\\
+ Insert information here\\
+ And also here}
+\rightheader{Right header\\
+ Insert information here\\
+ And also here}
+
+\title{CV Title}
+\subtitle{Subtitle}
+
+\begin{document}
+
+\makeheaders[t]
+\maketitle
+
+\nocite{*}
+\bibliographystyle{plain}
+\bibliography{bib}
+
+\end{document}
+
+
+%%% bib.tex ends here
diff --git a/macros/latex/contrib/curve/examples/raw.tex b/macros/latex/contrib/curve/examples/raw.tex
new file mode 100644
index 0000000000..5c0c7d6b75
--- /dev/null
+++ b/macros/latex/contrib/curve/examples/raw.tex
@@ -0,0 +1,51 @@
+%%% raw.tex --- Example of CurVe usage.
+
+%% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2010 Didier Verna.
+
+%% Author: Didier Verna <didier@lrde.epita.fr>
+%% Maintainer: Didier Verna <didier@lrde.epita.fr>
+%% Created: Thu Dec 10 16:04:01 2000
+%% Last Revision: Mon Dec 6 10:57:19 2010
+
+%% 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:
+
+\NeedsTeXFormat{LaTeX2e}
+\documentclass{curve}
+
+\leftheader{Left header\\
+ Insert information here\\
+ And also here}
+\rightheader{Right header\\
+ Insert information here\\
+ And also here}
+
+\title{CV Title}
+\subtitle{Subtitle}
+
+\begin{document}
+
+\makeheaders[t]
+\maketitle
+
+\makerubric{rubric}
+
+\end{document}
+
+%%% raw.tex ends here
diff --git a/macros/latex/contrib/curve/examples/rubric.tex b/macros/latex/contrib/curve/examples/rubric.tex
new file mode 100644
index 0000000000..8fa8803e0c
--- /dev/null
+++ b/macros/latex/contrib/curve/examples/rubric.tex
@@ -0,0 +1,77 @@
+%%% rubric.tex --- Example of using CurVe.
+
+%% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2010 Didier Verna.
+
+%% Author: Didier Verna <didier@lrde.epita.fr>
+%% Maintainer: Didier Verna <didier@lrde.epita.fr>
+%% Created: Thu Dec 10 16:04:01 2000
+%% Last Revision: Mon Dec 6 11:04:22 2010
+
+%% 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:
+
+\begin{rubric}{The Rubric's Title}
+\entry*[Key 1]
+ This is an entry with a key. The key is displayed on the left, and you're
+ reading the entry's contents. As you can see, this entry does not belong to
+ a subrubric.
+\subrubric{A First Subrubric}
+\entry*[Key 2]
+ This entry belongs to the first subrubric. Before the subrubric,
+ some space is added to separate it from the previous entry.
+\entry*
+ After the subrubric, some space is also added to separate it from the
+ first entry. Note that this entry has no key. The entries contents are
+ aligned together.
+\text{\par\itshape
+ This is a piece of text produced by the \texttt{\char`\\text} macro. It
+ spawns the whole text width. If you want to further separate it from the
+ normal entries with vertical space (like here), you can use the
+ \texttt{\char`\\par} command.\par}
+\entry*[Key 3]
+ This is another entry with a new key.
+\entry*
+ This is another entry, but this one has no key. Note the text bullet
+ which serves as a visual clue, especially when several entries share the
+ same key.
+\subrubric{A Second Subrubric}
+\entry*[Key 1]
+ This entry belongs to the second subrubric.
+\entry*
+ This one also belongs to the second subrubric.
+\entry*[Key 2]
+ This is another entry with a new key.
+\entry*
+ This is another entry, but this one has no key.
+\subrubric{}
+\entry*[Key 3]
+ If you want to separate some entries from the subrubric above,
+ you can for instance make an empty subrubric.
+\entry*
+ You can include other rubrics below. Rubrics can even be split across
+ pages. The titles will then be repeated.
+\end{rubric}
+
+%%% rubric.tex ends here
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "raw"
+%%% End: