%    \iffalse
%
% currvita.dtx
% Docstrip archive, run through LaTeX.
%
% Copyright (C) 1999 Axel Reichert
% See the files README and COPYING.
%
%    \fi
%
%    \DeclareRobustCommand*{\env}[1]{\texttt{#1}}
%    \DeclareRobustCommand*{\file}[1]{\texttt{#1}}
%    \DeclareRobustCommand*{\flag}[1]{\texttt{#1}}
%    \DeclareRobustCommand*{\mail}[1]{\texttt{#1}}
%    \DeclareRobustCommand*{\option}[1]{\texttt{#1}}
%    \DeclareRobustCommand*{\package}[1]{\texttt{#1}}
%    \DeclareRobustCommand*{\person}[1]{\textsc{#1}}
%    \DeclareRobustCommand*{\source}[1]{\texttt{#1}}
%    \DeclareRobustCommand*{\winkey}{\texttt{(-;}}
%
%    \changes{v0.9b}{1999-08-06}{First release}
%    \changes{v0.9i}{1999-09-13}{Final clean-up and new release}
%
%    \CheckSum{235}
%
%% \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         \~}
%
%    \title{\file{currvita.sty}}
%    \author{%
%      Axel Reichert \\
%      \mail{axel.reichert@gmx.de}%
%    }
%    \date{1999-09-13}
%    \maketitle
%    \begin{abstract}
%      \noindent
%      \file{currvita.sty} is a package for typesetting a curriculum
%      vitae.  See the files~\file{README} and~\file{COPYING} for
%      additional information.
%    \end{abstract}
%
%    \tableofcontents
%
%
%    \section{Introduction}
%
%    Quite regularly in the \LaTeX{}~newsgroups someone is asking for
%    a package or document class to typeset a curriculum
%    vitae. Normally, the following answers are given:
%    \begin{itemize}
%    \item A curriculum vitae is highly individual and so you should
%    not rely on solutions provided by others but rather think about
%    it on your own and create it in \emph{your} style following
%    \emph{your} taste.
%    \item Use \file{vita.cls}.
%    \item Use \file{resume.sty}.
%    \item Use \file{tabularx.sty}.
%    \end{itemize}
%
%    In my opinion all answers are unsatisfactory.  To create an
%    ``individual style'' with \LaTeX{} is not at all easy, especially
%    if you consider the bunch of questions in the \LaTeX{}~newsgroups
%    about list and tabular environments, which seem to be the obvious
%    choice for the use within a curriculum vitae.
%
%    The layout produced by~\file{vita.cls} is a little bit crowded,
%    the customization has to be done by class option files
%    (definitely not something for a beginner) and the documentation
%    is sparse.
%
%    \file{resume.sty} is a totally out-dated (December~1989)
%    \LaTeX\,2.09 style file, in my opinion it gives a crowded layout
%    as well, the documentation can be found in the style file.  Those
%    days did not have the neat system
%    of~\file{ins}/\file{dtx}~files.
%
%    \file{tabularx.sty} is quite good, but to typeset a curriculum
%    vitae spanning more than one page\footnote{\person{David}, I know
%    that there is \file{ltxtable.sty}.  Surely this great package was
%    once a hack of 5~minutes on a rainy Sunday like all your other
%    packages.  \winkey}, interspersed with section-like headings and
%    various \cmd{\multicolumn}~commands is surely not an easy task.
%
%    So I finally decided to write this package, replacing the macros
%    that I used earlier for my applications\footnote{Typeset
%    with~\file{longtable.sty} written (again) by~\person{David
%    Carlisle}.}.  In fact, there was not much to replace, because
%    that time I made heavy use of~\cmd{\textbf}, \cmd{\large},
%    \cmd{\\} and other \LaTeX nically incorrect commands.  \winkey
%
%    I made it a package because a curriculum vitae can make sense not
%    only on its own, but also within a Ph.\,D.~thesis or a
%    letter.  This package (hopefully) has few requirements,
%    (hopefully) produces a clearly arranged layout (also known as
%    puristic or plain and even explained in its own section later),
%    is (hopefully) well documented by this (hopefully) nice
%    \file{dvi}~file, (hopefully) easy to use and can (hopefully)
%    easily be customized.  There is even a (hopefully) interesting
%    example file, my curriculum vitae, so you can see what sick
%    brains program (and even document) such packages.  If you can
%    understand German.  \winkey
%
%
%    \section{What You Need}
%
%    \begin{enumerate}
%    \item \LaTeXe{} (at least the 1996/12/01~release)
%    \item The \package{ifthen}~package, part of the standard
%    \LaTeX{}~tools
%    \item The \package{babel}~package, nowadays a ``required'' part
%    of~\LaTeX, if you want to typeset the example file.
%    \end{enumerate}
%
%
%    \section{Loading}
%    \label{sec:loading}
%
%    Load the package with:
%\begin{verbatim}
%   \usepackage{currvita}
%\end{verbatim}
%
%    \DescribeMacro{LabelsAligned}
%    There are two package options that can be used to change the
%    \DescribeMacro{TextAligned}
%    vertical spacing of the curriculum vitae:\footnote{Credits go to
%    \person{Timm Wetzel} for inspiring me to implement this.  He will
%    notice later that I did not follow his suggestion, though.
%    \winkey}
%\begin{verbatim}
%   \usepackage[LabelsAligned]{currvita}
%\end{verbatim}
%    will give you a more compact spacing, whereas
%\begin{verbatim}
%   \usepackage[TextAligned]{currvita}
%\end{verbatim}
%    will give you the default, more generous spacing.  See the
%    explanation of the \env{cvlist}~environment and
%    section~\ref{sec:customization} on
%    page~\pageref{sec:customization} (``Customization'') for
%    details.
%
%    \DescribeMacro{openbib}
%    If you like the look of the ``open'' format for bibliographies,
%    you can use this layout also for a list of publications within
%    your curriculum vitae.  Normally, this option will be passed
%    automatically by the document class to all packages, so there is
%    no need to specify it explicitely.  However, if you are
%    typesetting your Ph.\,D.~thesis with a ``normal'' bibliography
%    and you want to include your curriculum vitae with an ``open''
%    publication list, you can pass this option directly to the
%    package:
%\begin{verbatim}
%   \usepackage[openbib]{currvita}
%\end{verbatim}
%
%    \DescribeMacro{ManyBibs}
%    If you want to subdivide your publication list (journal articles,
%    book chapters,~\ldots) but do not want to do without~\BibTeX{}
%    and enter every \cmd{\bibitem} manually, you can use this option:
%\begin{verbatim}
%   \usepackage[ManyBibs]{currvita}
%\end{verbatim}
%    This option suppresses the normal heading and also the item
%    labels.  This makes sense only in combination
%    with~\file{bibunits.sty}, \file{multibib.sty} or other packages
%    supporting multiple bibliographies.  See
%    section~\ref{sec:bibliographies} on
%    page~\pageref{sec:bibliographies} (``Bibliographies'').
%
%    \DescribeMacro{NoDate}
%    If you have reason to suppress the date normally printed at the
%    bottom of the curriculum vita,\footnote{Credits go to
%    \person{Matt Swift}, who obviously \emph{has} reason and thus
%    suggested this feature.   \winkey} use the following option:
%\begin{verbatim}
%   \usepackage[NoDate]{currvita}
%\end{verbatim}
%
%
%    \section{Usage}
%
%    \DescribeMacro{cv}
%    A curriculum vitae is written inside a \env{cv}~environment,
%    which takes one mandatory argument, the heading:
%\begin{verbatim}
%   \begin{cv}{<heading of the curriculum vitae>}
%     <text of the curriculum vitae>
%   \end{cv}
%\end{verbatim}
%    If you do not want a heading (perhaps because you think the
%    addressee might have read ``Curriculum Vitae'' too often), you
%    can specify an empty argument by leaving the braces empty.
%
%    \DescribeMacro{cvlist}
%    \label{cvlist}
%    The text of the curriculum vitae is normally divided into several
%    sections, which are typeset as lists, taking the list heading as
%    a mandatory argument:
%\begin{verbatim}
%   \begin{cvlist}{<heading of the list>}
%     <list items>
%   \end{cvlist}
%\end{verbatim}
%    As usual, the list items can take a label as an optional
%    argument:
%\begin{verbatim}
%   \item <item text>
%   \item[<label>] <item text>
%\end{verbatim}
%
%    The typesetting of the list depends on the length of the heading
%    and the use of an optional argument in the first item:  If the
%    heading is less wide than the width reserved for the label and no
%    optional argument was used, the item is typeset in the same line
%    as the heading.  In all other cases the text of the item itself
%    starts a new line.
%
%    \DescribeMacro{\cvplace}
%    Normally, a curriculum vitae ends with the date when and the
%    place where you wrote it.  You can specify the location as
%    follows:
%\begin{verbatim}
%   \cvplace{<location>}
%\end{verbatim}
%    If you do not use this command, the printing of a location will
%    be omitted.
%
%    \DescribeMacro{\date}
%    To specify the date, just use the command provided by the
%    standard \LaTeX{} document classes~\file{article.cls},
%    \file{report.cls} and \file{book.cls}.  I took special care that
%    it works also if you are using an other class.  If you do not
%    call this macro at all, \cmd{\today} will be used by default,
%    unless you have specified the \option{NoDate}~option.
%\begin{verbatim}
%   \date{<date>}
%\end{verbatim}
%
%
%    \section{Customization}
%    \label{sec:customization}
%
%    \DescribeMacro{\cvheadingfont}
%    Normally, the heading of the curriculum vitae is typeset in bold
%    face and \cmd{\Large}~size (see~\cite{Latex:1999} for
%    details).  You can change this e.\,g.\ with:
%\begin{verbatim}
%   \renewcommand*{\cvheadingfont}{\large\bfseries}
%\end{verbatim}
%
%    \DescribeMacro{\cvlistheadingfont}
%    Corresponding to the font of the heading, the heading of the
%    \env{cvlist}~environments is typeset in bold face and
%    \cmd{\large}~size.  This can be changed e.\,g.\ with the
%    following code:
%\begin{verbatim}
%   \renewcommand*{\cvlistheadingfont}{\scshape}
%\end{verbatim}
%
%    \DescribeMacro{\cvlabelfont}
%    The labels of the \env{cvlist}~environments are typeset in the
%    normal size of the current font.  You can change this e.\,g.\ with:
%\begin{verbatim}
%   \renewcommand*{\cvlabelfont}{\itshape}
%\end{verbatim}
%
%    \DescribeMacro{\cvlabelwidth}
%    The default width of the labels of the \env{cvlist}~environments
%    is equal to the width of~``88/8888--88/8888'', because normally
%    in the left hand column dates are typeset (and, at least in
%    Germany, should be formatted in this way).
%
%    \enlargethispage{-3\baselineskip}
%    If you are using the optional argument of the \cmd{\item}~command
%    for further sectioning (as I did for my curriculum vitae in the
%    example file), you perhaps need to adjust this length by means of
%\begin{verbatim}
%   \setlength{\cvlabelwidth}{50mm}
%\end{verbatim}
%    or
%\begin{verbatim}
%   \AtBeginDocument{%
%     \settowidth{\cvlabelwidth}{%
%       \cvlabelfont This is my longest label%
%     }%
%   }
%\end{verbatim}
%    or like this, if you want the items to be typeset in-line with
%    the labels wherever possible:
%\begin{verbatim}
%   \AtBeginDocument{%
%     \settowidth{\cvlabelwidth}{%
%       \cvlistheadingfont This is my longest list heading%
%     }%
%   }
%\end{verbatim}
%    The first example works correctly only
%    \emph{after}~|\begin{document}|, whereas the other two show how
%    to adjust the label width within the preamble.  Make sure that
%    you include the appropriate font if you want to measure the
%    width.\footnote{Credits go to \person{Matt Swift} for reporting
%    the need for a better documentation.}  And do not try to get
%    things done in the preamble without~\cmd{\AtBeginDocument},
%    because the font setup will probably not be correct, especially
%    if you use non-standard fonts.
%
%    \DescribeMacro{\cvlabelskip}
%    This vertical space is inserted if you have a
%    \env{cvlist}~environment with a short heading and the first item
%    of this list has no label, so that the text of the item starts in
%    the same line as the heading.  The spacing is controlled by the
%    options \option{TextAligned} and~\option{LabelsAligned},
%    see~section~\ref{sec:loading} on page~\pageref{sec:loading}
%    (``Loading'').
%
%    By default (\option{TextAligned}), the spacing between the item
%    text belonging to different lists is independent of the length of
%    the list heading and also independent of the use of an optional
%    argument of the \cmd{\item}~command.  The gaps between the item
%    \emph{text} blocks are equal.  See, for example, the
%    lists~``Fremdsprachen'' or~``Interessen'' of the example file.
%
%    The option~\option{LabelsAligned} suppresses the additional space
%    necessary to achieve this consistent layout and thus gives a more
%    compact look with evenly distributed gaps between the headings
%    and the \emph{labels}.
%
%    If you are not satisfied with either of these options, feel free
%    to set hands to it yourself, for example:
%\begin{verbatim}
%   \setlength{\cvlabelskip}{%
%     0.5\baselineskip plus 1pt minus 1pt%
%   }%
%\end{verbatim}
%
%    \DescribeMacro{\cvlabelsep}
%    The default width of the distance between the labels and the
%    items itself is equal to~\source{1em}.  You can customize it
%    e.\,g.\ with
%\begin{verbatim}
%   \setlength{\cvlabelsep}{1mm}
%\end{verbatim}
%    or
%\begin{verbatim}
%   \settowidth{\cvlabelsep}{~}
%\end{verbatim}
%    I strongly recommend to use relative measures like~\source{1em}
%    (i.\,e.\ dependent on the font size), if you need to customize
%    these lengths at all.
%
%    \DescribeMacro{\cvbibname}
%    The default heading for bibliographies inside of
%    \env{cv}~environments is~``Publications''.  You could change this
%    for example with:
%\begin{verbatim}
%   \renewcommand*{\cvbibname}{List of Papers}
%\end{verbatim}
%
%    Please keep in mind: All the customizations mentioned above are
%    \emph{optional} and in my opinion not necessary (not even the
%    change of~\cmd{\cvlabelwidth}, better use more suggestive label
%    texts).  See section~\ref{sec:typography} on
%    page~\pageref{sec:typography} (``Typography'') for some remarks.
%
%
%    \section{Example}
%
%    Run the example file~\file{cvtest.tex} through~\LaTeX.  You will
%    get my curriculum vitae.  Sorry, it is written in German.  Sorry,
%    it is not an original version used for an application (though the
%    data is correct, but I omitted the marks\footnote{It would have
%    been too embarrassing for me.  \winkey}), because for this I need
%    some fonts and packages not available to every user and I wanted
%    to use as much standard~\LaTeX{} as possible.
%
%
%    \section{Bugs}
%
%    Some people\footnote{Credits go to \person{Martin Sander} and
%    \person{Sebastian B\"ocker}.} with an older version of the
%    \package{babel}~package~(v3.6h) have reported problems due to the
%    use of the \package{babel}~shortcuts for accented letters within
%    the \cmd{\cvplace}~command.  If you encounter this, too, try a
%    more recent version (v3.6x definitely works) of the
%    \package{babel}~package\footnote{Perhaps included in a new
%    \LaTeX{}~release?  \winkey} (or~\file{german.sty}).
%
%
%    \section{Bibliographies\label{sec:bibliographies}}
%
%    This package offers several possibilities for bibliographies or
%    publication lists.\footnote{Credits go to \person{Ian Bruce} for
%    suggesting this feature and providing the first lines of code
%    that did start the thing.}  You can use \BibTeX{} or enter each
%    \cmd{\bibitem} manually.  You can have multiple bibliographies
%    within one \env{cvlist}~environment (with the aid of other
%    packages like~\package{bibunits} or~\package{multibib}), or only
%    one somewhere in the \env{cv}~environment.  Of course the main
%    bibliographies of your document remain untouched.  You can even
%    use a publication list in document classes without native support
%    for bibliographies, like~\file{letter.cls}.
%
%    Enough advertising, here we go with some
%    examples. \figurename~\ref{fig:manual} shows the source of a
%    letter with a manually done bibliography and a normal
%    \env{cvlist}~enviroment in comparison.  The resulting publication
%    list (not shown here) does not fit well into the layout of the
%    \env{cvlist}~environment, so probably you want to integrate your
%    publication list into a \env{cvlist}~environment and to supply
%    distinctive labels?
%
%    \begin{figure}
%\begin{verbatim}
%   \documentclass{letter}
%   \usepackage{currvita}
%   \begin{document}
%   \begin{cv}{Resume}
%     \begin{cvlist}{Gnats and Gnus}
%     \item[Bar] Bar
%     \item[Foo] Foo
%     \end{cvlist}
%     \begin{thebibliography}{1}
%     \bibitem{Bar} Bar.
%     \bibitem{Foo} Foo.
%     \end{thebibliography}
%   \end{cv}
%   \end{document}
%\end{verbatim}
%      \caption{Curriculum vitae with bibliography, manually done}
%      \label{fig:manual}
%    \end{figure}
%
%    \begin{figure}
%\begin{verbatim}
%   \documentclass{article}
%   \usepackage{bibunits}
%   \usepackage[ManyBibs]{currvita}
%   \begin{document}
%   \begin{cv}{Resume}
%     \begin{cvlist}{Gnats and Gnus}
%     \item[Bar] Bar
%     \item[Foo] Foo
%     \end{cvlist}
%     \begin{cvlist}{Publications}
%       \begin{bibunit}[alpha]
%         \nocite{booklet-full,manual-full,techreport-full}
%       \item[Books etc.] \putbib[xampl]
%       \end{bibunit}
%       \begin{bibunit}[plain]
%         \nocite{article-full,inproceedings-full}
%       \item[Papers] \putbib[xampl]
%       \end{bibunit}
%     \end{cvlist}
%   \end{cv}
%   \end{document}
%\end{verbatim}
%      \caption{Bibliographies inside a \env{cvlist}, done with
%        \file{bibunits.sty}}
%      \label{fig:bibunits}
%    \end{figure}
%
%    \figurename~\ref{fig:bibunits} shows an example with multiple
%    bibliographies automatically generated by~\BibTeX{} and in
%    combination with~\file{bibunits.sty}.  This code will result in a
%    \LaTeX{}~error (``Something's wrong--perhaps a missing
%    \cmd{\item}.'') on the first run, but if you scroll through the
%    errors and run \LaTeX{} again, you will get a nice output once
%    you have run \BibTeX{} according to the
%    \package{bibunits}~manual.  Note that the choice of the
%    bibliography style does not influence the labels because they are
%    suppressed anyway by use of the \option{ManyBibs}~option.
%
%    \begin{figure}
%\begin{verbatim}
%   \documentclass{report}
%   \usepackage{multibib}
%   \usepackage[openbib,ManyBibs]{currvita}
%   \newcites{books}{bar}
%   \newcites{papers}{foo}
%   \begin{document}
%   \bibliographystyle{alpha}
%   \bibliographystylebooks{unsrt}
%   \bibliographystylepapers{plain}
%   \begin{cv}{Resume}
%     \begin{cvlist}{Gnats and Gnus}
%     \item[Bar] Bar
%     \item[Foo] Foo
%     \end{cvlist}
%     \begin{cvlist}{Publications}
%     \nocitebooks{booklet-full,manual-full,techreport-full}
%     \item[Books etc.] \bibliographybooks{xampl}
%     \nocitepapers{article-full,inproceedings-full}
%     \item[Papers] \bibliographypapers{xampl}
%     \end{cvlist}
%   \end{cv}
%   \nocite{mastersthesis-full,misc-full,unpublished-full}
%   \bibliography{xampl}
%   \end{document}
%\end{verbatim}
%      \caption{``Open'' publication lists inside a \env{cvlist},
%        additional ``normal'' bibliography outside, done with
%        \file{multibib.sty}}
%      \label{fig:multibib}
%    \end{figure}
%
%    However, they work as normal outside the \env{cv}~environment,
%    see~\figurename~\ref{fig:multibib}, which shows in addition to
%    the usage of the \package{multibib}~package for ``open''
%    publication lists a ``normal'' bibliography in yet another
%    bibliography style.  Note also that the second argument of the
%    \cmd{\newcites}~command does not matter because the heading of
%    the partial bibliographies is suppressed, again by use of the
%    \option{ManyBibs}~option.
%
%
%    \section{Typography\label{sec:typography}}
%
%    A curriculum vitae is an exam.  The addressee gets a proof of
%    your skills concerning collecting, discarding, ordering and
%    presenting information.  He also gets an impression of some of
%    your qualities that are not even mentioned in the text: Accuracy
%    (consistency and correctness of the micro-typographic things),
%    stinginess (extremely narrow margins) and your taste in questions
%    of aesthetics (font overload as against clear and evident font
%    usage).  Even more things are revealed by subtle hints given by
%    the typography of the curriculum vitae and they can be noticed by
%    all professional readers of applications,\footnote{Very often
%    subconsciously.} not only by typographers.
%
%    Therefore you definitely should do your best not only when
%    thinking about the content but also when thinking about the form
%    of the curriculum vitae.  This package tries to help you in this
%    task.
%
%    The overall appearance of a curriculum vitae is determined mainly
%    by three factors:
%    \begin{description}
%    \item[Layout] Organization and arrangement of the information
%      e.\,g.\ into lists or tabulars, usage of headings, size of the
%      typearea, width of columns, horizontal and vertical spacing
%    \item[Font] Family, sizes, usage of fonts for emphasized in-line
%      text or text serving as an eye-catcher, creation of an atmosphere
%      appropriate to the candidate and the job in question
%    \item[Micro-typography] Formatting of various numbers, avoidance
%      of bad linebreaks, distinction between small and normal spaces,
%      typesetting of company names, usage of quotation marks
%    \end{description}
%
%
%    \subsection{Layout}
%
%    You generally should organize the necessary information (and
%    \emph{only} the necessary information) as clearly as possible,
%    because the addressee is annoyed anyway by the pile of
%    applications that he has to wade, and you definitely should not
%    annoy him any further by not structuring your curriculum vitae.
%
%    Use generous margins, a not too small font and moderate vertical
%    spacing.  I recommend something around~\source{DIV12} for users
%    of~\file{typearea.sty} (part of KOMA-Script), an 11~point font
%    for A4~paper (highly dependent on the font family) and a left
%    hand column as narrow as possible (it will make the linebreaking
%    in the right hand column easier).  For the distance between the
%    columns \source{1em}~creates a sufficient separation.  A normal
%    word space would not be enough, whereas something
%    around~\source{1cm} would weaken the coherence of the layout,
%    especially if you have some shorter labels.
%
%    If you ever heard a curriculum vitae should not be longer than
%    one page, forget it, unless you are required (by whom, if I may
%    ask?) to stay below this limit.  I made some tries with increased
%    typearea and reduced the font size and the vertical spacing.  I
%    finally managed to arrange my test file on one page by usage of a
%    very narrow newspaper font, but it looked horrible.  The normal
%    version, though about half a page longer, was much easier (and
%    quicker!) to read.
%
%
%    \subsection{Font}
%
%    The most difficult thing is to choose a good font.  For
%    ``normal'' jobs like engineering, economics or similar, the font
%    should look friendly and professional, just like you on the
%    photo.  Of course a typographical layman does not identify the
%    font, but he too feels the atmosphere created by it.
%
%    I made some tries with about 50~fonts, with serifs or without,
%    old-style, transitional and modern fonts and got surprisingly
%    good agreement among the test persons\footnote{Credits go to
%    \person{Melanie Frisch}, \person{R\"udiger Haardt},
%    \person{Steffen Mei\ss ner}, \person{Joachim Gnauk}
%    and~\person{Rainer Messerschmidt} for doing this tedious
%    work.}.  Moreover, my analysis and theirs yielded the same
%    result: Computer Modern, Charter, Utopia and Melior really do a
%    good job.  Except Melior, these fonts are freely available.
%    Computer Modern looks elegant, dry, precise and reserved, Charter
%    friendly, open, solid and likable and Utopia clear and
%    technical.  The last two are nowadays part of good
%    \LaTeX{}~distributions, so you are not sticked to Computer
%    Modern, just try them out:
%\begin{verbatim}
%   \usepackage{charter}
%\end{verbatim}
%    or
%\begin{verbatim}
%   \usepackage{utopia}
%\end{verbatim}
%
%    Generally, you should use bold face for the headings, to make
%    them clearly distinct from the main text, italics are not enough.
%    An important aspect of the font choice is the contrast between
%    the normal and the bold face.  It should be high enough, so that
%    the headings can be identified at a glance, but neither the
%    regular font nor the bold variant should look too~``loud''.  This
%    is a problem e.\,g.\ with New Century Schoolbook, apart from that
%    as good as Computer Modern.
%
%    Many fonts typically used in novels have too low a contrast,
%    e.\,g.\ Berling, Galliard, Palatino and Stempel
%    Garamond.  Although the contrast is good in Bembo, it looks
%    too~``nice'', too familiar from books to create the correct
%    atmosphere for a curriculum vitae, which normally is attached to
%    a stupid letter.  Plantin and Trump Medieval and perhaps New
%    Baskerville may be acceptable in some cases, but I think there
%    are better choices.  Not everybody's taste because a little
%    unusual, but in my opinion quite good is Oranda, rather bold and
%    small, but friendly and soft.  Oh, I almost forgot: The
%    obligatory Times is a good choice, too.  Though it is completely
%    over-used and overrated (I am not at all a fan of Times), its
%    domain is the typesetting of (more or less) narrow columns and it
%    does a good job looking both familiar and neutral.
%
%    My trials with sans-serif fonts were not very
%    successful.  Computer Modern Sans Serif, Franklin Gothic or
%    Univers may be acceptable, Helvetica looks too boring (are
%    \emph{you} boring?), Frutiger has too low a contrast, Optima is
%    ``too nice'', Gill Sans and Futura look too bold (and the latter
%    perhaps too cold and technical, but that may be suitable for some
%    jobs).  Generally the problem is to achieve consistency with the
%    accompanying letter, which normally is written with a serif font
%    (and should be, because it is a longer text with less structure,
%    the main text only divided into paragraphs.  In these cases,
%    so-called ``linear reading'', a serif font is considered more
%    legible by many typographers).
%
%
%    \subsection{Micro-typography}
%
%    Sometimes the pile of applications is pre-sorted by a
%    secretary.  You should ensure that the micro-typography (also
%    known as ``pedantic stuff'') is correct, because secretaries
%    learn these things during their education.  German users of this
%    package definitely should consult the relevant part of the
%    Duden~\cite{Duden:1996} or have a look into~\cite{Willberg:1997}
%    or the example file.  Errors in the formatting of dates, spacing
%    or grouping of telephone numbers, usage of quotation marks or
%    ampersands and so on are too common.  Trained secretaries will
%    notice these mistakes and, if they already did not like your
%    photo, will put your application onto stack~W
%    (wastebasket). \winkey
%
%    Think about it, micro-typography is easy, and if you get used to
%    it, you will typeset things correctly ``by default'' and your
%    documents will require less proof-reading.  It is awful if the
%    reader stumbles (and falls) over a bad linebreak.  Use ties~(|~|)
%    or other things influencing hyphenation from~\file{babel.sty}
%    or~\file{german.sty} like~\cmd{\,}, |"~| or~|""| not after you
%    have discovered such a mistake, but during entering the text.
%
%    O.\,K., and now I will turn preaching mode off and programming
%    mode on.  \winkey
%
%
%    \section{Implementation}
%
%    \iffalse
%<*driver>
\documentclass[12pt,a4paper]{ltxdoc}
\begin{document}
  \DocInput{currvita.dtx}
\end{document}
%</driver>
%    \fi
%    \StopEventually{
%      \addcontentsline{toc}{section}{References}
%      \begin{thebibliography}{1}
%      \bibitem{Duden:1996}
%        \textsc{Dudenredaktion}~(ed.): \emph{Duden, Rechtschreibung
%        der deutschen Sprache}, vol.~1 of~\emph{Der Duden in
%        12~B{\"a}nden; das Standardwerk zur deutschen Sprache},
%        chap.~Richtlinien f{\"u}r den Schriftsatz,
%        pp.\,65--73. \newblock Dudenverlag, Mannheim, 21st~edn.,
%        1996.
%      \bibitem{Goossens:1994}
%        \textsc{Goossens,~M.; Mittelbach,~F.; Samarin,~A.}: \emph{Der
%        \LaTeX-Begleiter}.  \newblock Addison-Wesley, Bonn, 1st~edn.,
%        1994.
%      \bibitem{Kopka:1997}
%        \textsc{Kopka,~H.}: \emph{Erweiterungen}, vol.~3
%        of~\emph{\LaTeX}.  \newblock Addison-Wesley-Longman, Bonn,
%        1997.
%      \bibitem{Latex:1999}
%        \LaTeX3 Project Team.  \newblock \emph{\LaTeXe{} font
%        selection}, Jan.\,1999.
%      \bibitem{Willberg:1997}
%        \textsc{Willberg,~H.\,P.; Forssman,~F.}:
%        \emph{Lesetypographie}.  \newblock Schmidt, Mainz, 1997.
%      \end{thebibliography}
%    }
%    \iffalse
%<*package>
%    \fi
%
%
%    \subsection{Identification}
%
%    \changes{v0.9g}{1999-09-06}{A new \LaTeX{} version is needed.}
%    As this package uses the \cmd{\ignorespacesafterend}~command, it
%    does not work with older \LaTeXe{}~versions.
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}[1996/12/01]%
%    \end{macrocode}
%    The package identifies itself with its release date, a version
%    number, and a short description.
%    \begin{macrocode}
\ProvidesPackage{currvita}[%
  1999/09/13 v0.9i Typesetting a Curriculum Vitae%
]%
%    \end{macrocode}
%
%
%    \subsection{Loading Files}
%
%    The \package{ifthen}~package is used to make some decisions
%    easier.
%    \begin{macrocode}
\RequirePackage{ifthen}%
%    \end{macrocode}
%
%
%    \subsection{Initialization}
%
%    \begin{macro}{\@cvplace}
%    The string for the place of the curriculum vitae is
%    initialized.  It should be defined later by the user.
%    \cmd{\@cvplace} is not declared by means
%    of~\cmd{\DeclareRobustCommand*}, because this adds a
%    superfluous~\cmd{\protect} (causing problems with the
%    \package{ifthen}~package).
%    \begin{macrocode}
\newcommand*{\@cvplace}{\@empty}%
%    \end{macrocode}
%    \end{macro}
%    \begin{macro}{\@cvlistheading}
%    The box containing the heading of a \env{cvlist}~environment is
%    allocated.
%    \begin{macrocode}
\newsavebox{\@cvlistheading}%
%    \end{macrocode}
%    \end{macro}
%    \begin{macro}{\cvlabelsep}
%    \begin{macro}{\cvlabelskip}
%    \begin{macro}{\cvlabelwidth}
%    \changes{v0.9d}{1999-08-25}{\cmd{\cvlabelskip} was introduced.}
%    Some lengths are initialized.
%    \begin{macrocode}
\newlength{\cvlabelsep}%
\newlength{\cvlabelskip}%
\newlength{\cvlabelwidth}%
%    \end{macrocode}
%    \end{macro}
%    \end{macro}
%    \end{macro}
%    \begin{macro}{cv@many@bibs}
%    \begin{macro}{cv@no@date}
%    \begin{macro}{cv@open@bib}
%    \changes{v0.9f}{1999-09-02}{%
%      Flags~\flag{cv@many@bibs} and \flag{cv@open@bib} were
%      introduced.%
%    }
%    \changes{v0.9g}{1999-09-06}{%
%      Flag~\flag{cv@no@date} was introduced.%
%    }
%    \changes{v0.9g}{1999-09-06}{%
%      New name: \flag{cv@many@bibs} instead of \flag{many@bibs}%
%    }
%    We also need one new flag to handle the bibliography option
%    \option{ManyBibs}, another one to handle the
%    \option{NoDate}~option, and another one to handle the
%    \option{openbib}~option separately for the
%    \package{currvita}~package.
%    \begin{macrocode}
\newboolean{cv@many@bibs}%
\newboolean{cv@no@date}%
\newboolean{cv@open@bib}%
%    \end{macrocode}
%    \end{macro}
%    \end{macro}
%    \end{macro}
%
%
%    \subsection{Option Declaration}
%
%    \changes{v0.9d}{1999-08-25}{%
%      Options \option{LabelsAligned} and~\option{TextAligned} were
%      introduced.%
%    }
%    \begin{macro}{LabelsAligned}
%    The use of this option suppresses the additional vertical space
%    inserted before in-line headings of \env{cvlist}~environments.
%    It ensures that the gaps between the various headings and labels
%    are equal.
%    \begin{macrocode}
\DeclareOption{LabelsAligned}{%
  \setlength{\cvlabelskip}{0ex}%
}%
%    \end{macrocode}
%    \end{macro}
%    \begin{macro}{TextAligned}
%    Use of this option ensures that the items of the right hand
%    column are separated by equal vertical spacing.  To achieve this,
%    an additional gap has to be inserted in case of a short heading
%    and no optional argument given to the \cmd{\item}~command.  See
%    also the definition of the \env{cvlist}~environment on
%    page~\pageref{makelabel}.
%    \begin{macrocode}
\DeclareOption{TextAligned}{%
  \setlength{\cvlabelskip}{%
    1.5\baselineskip plus 3pt minus 3pt%
  }%
}%
%    \end{macrocode}
%    \end{macro}
%    \begin{macro}{openbib}
%    \changes{v0.9e}{1999-08-29}{%
%      Option \option{openbib} was introduced.%
%    }
%    \changes{v0.9e}{1999-08-29}{\cmd{\bibindent} was introduced.}
%    \changes{v0.9f}{1999-09-02}{%
%      Option code moved to \env{thebibliography}~environment, checked
%      with flag.%
%    }
%    \changes{v0.9h}{1999-09-08}{%
%      Initialization of~\cmd{\bibindent} moved into option code.%
%    }
%    \changes{v0.9h}{1999-09-08}{%
%      Option \option{OneBib} is no longer necessary and has been
%      deleted.%
%    }
%    For document classes like letter, i.\,e.\ without native support
%    for bibliographies, it is necessary to provide the length of the
%    indentation used in the \option{openbib}~format.  It will not be
%    changed if it is already defined.
%    \begin{macrocode}
\DeclareOption{openbib}{%
  \@ifundefined{bibindent}{%
    \newlength{\bibindent}%
  }{}%
  \setlength{\bibindent}{1.5em}%
  \setboolean{cv@open@bib}{true}%
}%
%    \end{macrocode}
%    \end{macro}
%    \begin{macro}{ManyBibs}
%    \changes{v0.9f}{1999-09-02}{%
%      Option \option{ManyBibs} was introduced.%
%    }
%    Use this option in case you need more than one bibliography list,
%    e.\,g.\ for different kinds of publications.
%    \begin{macrocode}
\DeclareOption{ManyBibs}{%
  \setboolean{cv@many@bibs}{true}%
}%
%    \end{macrocode}
%    \end{macro}
%    \begin{macro}{NoDate}
%    \changes{v0.9g}{1999-09-06}{%
%      Option \option{NoDate} was introduced.%
%    }
%    Use this option in case you want to omit the date normally
%    printed at the bottom of the curriculum vitae.
%    \begin{macrocode}
\DeclareOption{NoDate}{%
  \setboolean{cv@no@date}{true}%
}%
%    \end{macrocode}
%    \end{macro}
%
%
%    \subsection{Option Processing}
%
%    \changes{v0.9d}{1999-08-25}{%
%      \option{TextAligned} is the defined as the default option.%
%    }
%    \changes{v0.9f}{1999-09-02}{%
%      \option{OneBib} added to list of default options.%
%    }
%    \changes{v0.9h}{1999-09-08}{%
%      \option{OneBib} deleted from list of default options.%
%    }
%    If no options are specified, the text of the items is aligned by
%    default.  Otherwise the options are processed in the order given
%    by the calling command, i.\,e.\ the last one ``wins''.
%    \begin{macrocode}
\ExecuteOptions{TextAligned}%
\ProcessOptions*%
%    \end{macrocode}
%
%
%    \subsection{Delaying Code}
%
%    \changes{v0.9c}{1999-08-16}{%
%      Execution of \cmd{\settowidth} delayed until beginning of
%      document%
%    }
%    \changes{v0.9d}{1999-08-25}{%
%      \cmd{\cvlabelfont} is used for measuring the width of the
%      label.%
%    }
%    \changes{v0.9h}{1999-09-08}{%
%      \cmd{\cvlabelsep} is now initialized at the beginning of the
%      document.%
%    }
%    The distance between labels and items is set to~\source{1em}.
%    The maximum allowed width of the labels of the
%    \env{cvlist}~environments forming the curriculum vitae is set to
%    the width of a typical entry.  This is done at the beginning of
%    the document, because then the normal fonts have been setup
%    properly.\footnote{Credits go to \person{Gerd Boerrigter} for
%    reporting this bug.}
%    \begin{macrocode}
\AtBeginDocument{%
  \setlength{\cvlabelsep}{1em}%
  \settowidth{\cvlabelwidth}{%
    \cvlabelfont 88/8888--88/8888%
  }%
}%
%    \end{macrocode}
%
%
%    \subsection{Defining Commands}
%
%    \begin{macro}{\cvheadingfont}
%    Normally, the title of the curriculum vitae is typeset in larger
%    bold face.
%    \begin{macrocode}
\DeclareRobustCommand*{\cvheadingfont}{\bfseries\Large}%
%    \end{macrocode}
%    \end{macro}
%    \begin{macro}{\cvbibname}
%    \changes{v0.9g}{1999-09-06}{\cmd{\cvbibname} was introduced.}
%    This macro holds the name of the publication list.  In my opinion
%    it does not make sense to inherit the definition
%    of~\cmd{\refname} or~\cmd{\bibname}, so a new command is
%    introduced.
%    \begin{macrocode}
\DeclareRobustCommand*{\cvbibname}{Publications}%
%    \end{macrocode}
%    \end{macro}
%    \begin{macro}{\cvplace}
%    This command is used to change the place to be typeset at the
%    bottom of the curriculum vitae.  It takes one mandatory argument,
%    guess what: the place.  \winkey
%    \begin{macrocode}
\DeclareRobustCommand*{\cvplace}[1]{%
  \gdef\@cvplace{#1}%
}%
%    \end{macrocode}
%    The \cmd{\@cvplace}~command is changed globally, so that you can
%    use it also inside environments other than
%    \env{cv}~environments.
%    \end{macro}
%    \begin{macro}{\date}
%    This command is used to change the date that is printed below the
%    curriculum vitae.  It needs the date as a mandatory
%    argument.  Because the standard \LaTeX{}~classes
%    \file{article.cls}, \file{report.cls} and~\file{book.cls} already
%    define such a command, it will only be defined if it is not
%    provided by the class.
%
%    In contrast, the \cmd{\@date} command is part of the
%    \LaTeX{}~kernel and thus available in every class.  \cmd{\@date}
%    is changed globally for the same reason as the
%    \cmd{\@cvplace}~command.
%    \begin{macrocode}
\providecommand*{\date}[1]{\gdef\@date{#1}}%
%    \end{macrocode}
%    \end{macro}
%    \begin{macro}{cv}
%    This environment takes the heading of the curriculum vitae as a
%    mandatory argument which is typeset at the beginning of the
%    curriculum vitae without indentation using the corresponding
%    font, whose scope is limited by a separate group.  If the
%    argument is empty, no heading is used.
%    \begin{macrocode}
\newenvironment{cv}[1]{%
  \ifthenelse{\equal{#1}{\@empty}}{%
  }{%
    {%
      \noindent\cvheadingfont#1\par\nopagebreak
    }%
  }%
%    \end{macrocode}
%    \begin{macro}{\@biblabel}
%    \changes{v0.9f}{1999-09-02}{%
%      \cmd{\@biblabel} is set dependent on \option{ManyBibs} option.%
%    }
%    The labels used within the bibliography are redefined locally as
%    empty.  In this way it is possible to add explanatory text to the
%    items like~``Articles'' or~``Book Chapters''.
%    \begin{macrocode}
  \ifthenelse{\boolean{cv@many@bibs}}{%
    \DeclareRobustCommand*{\@biblabel}[1]{\@gobble{##1}}%
  }{}%
%    \end{macrocode}
%    \end{macro}
%    \begin{macro}{\newblock}
%    \changes{v0.9e}{1999-08-29}{%
%      The commands \cmd{\newblock} and \cmd{\@openbib@code} were
%      introduced.%
%    }
%    \changes{v0.9h}{1999-09-08}{%
%      The command~\cmd{\@openbib@code} is no longer necessary and has
%      been deleted.%
%    }
%    \changes{v0.9h}{1999-09-08}{%
%      The definition is now made local inside the
%      \env{cv}~environment.%
%    }
%    To support bibliographies even in document classes like letter
%    (which do not have ``native'' bibliography support), it is
%    necessary to provide this command:
%    \begin{macrocode}
  \providecommand{\newblock}{%
    \hspace{0.11em plus 0.33em minus 0.07em}%
  }%
%    \end{macrocode}
%    \end{macro}
%    \begin{macro}{thebibliography}
%    The \env{thebibliography}~environment is (re)defined locally, so
%    you can use a ``normal'' bibliography elsewhere in your
%    document.
%    \changes{v0.9e}{1999-08-29}{%
%      \env{thebibliography}~environment is locally defined.%
%    }
%    \changes{v0.9f}{1999-09-02}{%
%      Heading is suppressed if \option{ManyBibs}~option is used.%
%    }
%    \changes{v0.9f}{1999-09-02}{%
%      \cmd{\newblock}~command is redefined locally for
%      \option{openbib} support.%
%    }
%    \changes{v0.9f}{1999-09-02}{%
%      \cmd{\labelsep} is set dependent on \option{ManyBibs}~option.%
%    }
%    \changes{v0.9f}{1999-09-02}{%
%      Code for \option{openbib}~option is executed depending on the
%      \flag{cv@open@bib} flag.%
%    }
%    \changes{v0.9h}{1999-09-08}{%
%      Length of~\cmd{\topsep} was reduced to give spacing consistent
%      to the \env{cvlist}~environments.%
%    }
%    \begin{macrocode}
  \long\def\thebibliography##1{%
%    \end{macrocode}
%    The heading is omitted if the \option{ManyBibs}~option is
%    used.  Otherwise it is typeset using the appropriate font, without
%    indentation.  A pagebreak after the heading is suppressed.
%    \begin{macrocode}
    \ifthenelse{\boolean{cv@many@bibs}}{%
    }{%
      {%
        \noindent\cvlistheadingfont\cvbibname
        \par\nopagebreak
      }%
    }%
%    \end{macrocode}
%    The following redefinition is taken from the standard document
%    classes, as is most of the rest of the environment.
%    \begin{macrocode}
    \ifthenelse{\boolean{cv@open@bib}}{%
      \renewcommand{\newblock}{\par}%
    }{}%
    \begin{list}{\@biblabel{\@arabic\c@enumiv}}{%
%    \end{macrocode}
%    The lengths of~\cmd{\parsep} and~\cmd{\itemsep} are swapped in
%    comparison with the \env{cvlist}~environments.  This gives
%    correct spacing even with the \option{openbib}~option.
%    \begin{macrocode}
      \setlength{\parsep}{0ex}%
      \setlength{\itemsep}{%
        0.5\baselineskip plus 1pt minus 1pt%
      }%
%    \end{macrocode}
%    The vertical spacing is adapted to correspond to the other
%    \env{cvlist}~environments.
%    \begin{macrocode}
      \setlength{\topsep}{0ex}%
      \setlength{\partopsep}{0ex}%
%    \end{macrocode}
%    With the \option{ManyBibs}~option no labels are used, so no space
%    needs to be reserved.
%    \begin{macrocode}
      \ifthenelse{\boolean{cv@many@bibs}}{%
        \setlength{\labelsep}{0em}%
      }{}%
%    \end{macrocode}
%    And now lots of code adapted from the standard document classes,
%    only written in a \LaTeX nically correct way.   \winkey
%    \begin{macrocode}
      \settowidth{\labelwidth}{\@biblabel{##1}}%
      \setlength{\leftmargin}{\labelwidth}%
      \addtolength{\leftmargin}{\labelsep}%
      \ifthenelse{\boolean{cv@open@bib}}{%
        \addtolength{\leftmargin}{\bibindent}%
        \setlength{\itemindent}{-\bibindent}%
        \setlength{\listparindent}{\itemindent}%
      }{}%
      \usecounter{enumiv}%
      \let\p@enumiv\@empty
      \renewcommand*{\theenumiv}{\@arabic\c@enumiv}%
    }%
    \sloppy
    \clubpenalty4000%
    \@clubpenalty\clubpenalty
    \widowpenalty4000%
    \sfcode`\.=\@m
  }%
  \long\def\endthebibliography{%
    \renewcommand*{\@noitemerr}{%
      \@latex@warning{Empty `thebibliography' environment}%
    }%
    \end{list}%
  }%
}{%
%    \end{macrocode}
%    \changes{v0.9c}{1999-08-16}{\cmd{\noindent} added.}
%    \changes{v0.9g}{1999-09-06}{%
%      Support for \option{NoDate}~option was added.%
%    }
%    \changes{v0.9g}{1999-09-06}{%
%      Text following the \env{cv}~environment start in new line,
%      without indentation.%
%    }
%    The place (if given) followed by the date is typeset at the
%    bottom of the curriculum vitae.  It should not be indented, even
%    if there are blank lines prior to the end of the
%    \env{cv}~environment.\footnote{Credits go to \person{Gerd
%    Boerrigter} for discovering this~``feature''.}  The amount of
%    vertical space seems quite strange but looks right, much better
%    than the expected~\source{1.5\bslash baselineskip}.  Don't know
%    why.  \winkey
%    \begin{macrocode}
  \vspace{1.333\baselineskip plus 3pt minus 3pt}%
  \ifthenelse{\equal{\@cvplace}{\@empty}}{%
  }{%
    \noindent
    \@cvplace
    \ifthenelse{\boolean{cv@no@date}}{}{%
      ,~%
    }%
  }%
  \ifthenelse{\boolean{cv@no@date}}{}{%
    \@date
  }%
  \par\noindent\ignorespacesafterend
}%
%    \end{macrocode}
%    \end{macro}
%    \end{macro}
%    \begin{macro}{\cvlistheadingfont}
%    The headings of the \env{cvlist}~environments forming the
%    curriculum vitae are typeset in large bold face.
%    \begin{macrocode}
\DeclareRobustCommand*{\cvlistheadingfont}{%
  \bfseries\large
}%
%    \end{macrocode}
%    \end{macro}
%    \changes{v0.9d}{1999-08-25}{\cmd{\cvlabelfont} command added.}
%    \begin{macro}{\cvlabelfont}
%    The labels of the \env{cvlist}~environments are typeset in the
%    normal size of the current font.
%    \begin{macrocode}
\DeclareRobustCommand*{\cvlabelfont}{%
  \normalsize
}%
%    \end{macrocode}
%    \end{macro}
%    \begin{macro}{cvlist}
%    This is the list environment used for the parts of the curriculum
%    vitae.  It takes one mandatory argument, the heading of the
%    list.
%    \begin{macrocode}
\newenvironment{cvlist}[1]{%
%    \end{macrocode}
%    The heading of the list is put into a box, using the
%    corresponding font.
%    \begin{macrocode}
  \sbox{\@cvlistheading}{\cvlistheadingfont#1}%
%    \end{macrocode}
%    The \env{cvlist}~environment is basically a
%    \env{list}~environment~\ldots
%    \begin{macrocode}
  \begin{list}{}{%
%    \end{macrocode}
%    \ldots~but with a ``smart'' \cmd{\makelabel}~command which is
%    given the optional argument of the \cmd{\item}~command.
%    \label{makelabel}
%    \begin{macrocode}
      \renewcommand*{\makelabel}[1]{%
%    \end{macrocode}
%    \changes{v0.9d}{1999-08-25}{%
%      \cmd{\cvlabelfont} is used for measuring the width of the
%      label.%
%    }
%    The width of the heading of the list is measured.  If it is
%    positive (i.\,e.\ the box containing the argument of the
%    \env{cvlist}~environment is not empty), the width of the optional
%    argument of the \cmd{\item}~command is measured, too (using the
%    correct font).
%    \begin{macrocode}
        \settowidth{\@tempdima}{\usebox{\@cvlistheading}}%
        \ifthenelse{\lengthtest{\@tempdima > 0pt}}{%
          \settowidth{\@tempdimb}{\cvlabelfont##1}%
%    \end{macrocode}
%    If the heading of the list is less wide than the allowed label
%    width and the optional argument of the \cmd{\item}~command is
%    empty, the \cmd{\item} can be typeset in the same line as the
%    heading.
%
%    \changes{v0.9d}{1999-08-25}{%
%      \cmd{\cvlabelskip} is used for the vertical spacing before
%      in-line headings%
%    }
%    The box containing the heading is then emptied, the heading is
%    typeset flush to the left.
%    \begin{macrocode}
          \ifthenelse{%
            \lengthtest{\@tempdima < \cvlabelwidth} \and
            \lengthtest{\@tempdimb = 0pt}}{%
            \parbox[b]{\cvlabelwidth}{%
              \vspace{\cvlabelskip}%
              \makebox[\cvlabelwidth][l]{%
                \box\@cvlistheading
              }%
            }%
          }{%
%    \end{macrocode}
%    If the heading is too wide or the \cmd{\item}~command has an
%    optional argument, the box containing the heading is emptied and
%    the \cmd{\item}~command starts a new line.
%    \begin{macrocode}
            \parbox[b]{0pt}{%
              \makebox[0pt][l]{\box\@cvlistheading}%
              \\*[0.5\baselineskip plus 1pt minus 1pt]%
            }%
          }%
%    \end{macrocode}
%    If the box containing the argument of the
%    \env{cvlist}~environment is empty (its width is zero), nothing is
%    done.  This case holds for all \cmd{\item}~commands of a
%    \env{cvlist}~environment except for the first or if no heading
%    was specified (this does normally not make sense).  You see that
%    it is crucial to empty the box by a
%    plain~\TeX{}~command~\cite{Kopka:1997}, otherwise the heading
%    would be typeset for every \cmd{\item}~command.
%    \begin{macrocode}
        }{}%
%    \end{macrocode}
%    \changes{v0.9d}{1999-08-25}{\cmd{\cvlabelfont} is used for the
%      label.%
%    }
%    Now that the heading of the list is prepared, the optional
%    argument of the \cmd{\item}~command is typeset flush to the left
%    using the corresponding font and the \cmd{\makelabel}~command has
%    done its work.  Sigh.  \winkey
%    \begin{macrocode}
        \cvlabelfont##1\hfill
      }%
%    \end{macrocode}
%    The spacing used in the \env{cvlist} environments is adjusted.
%    Remember that $\cmd{\itemsep} + \cmd{\parsep}$ is inserted
%    between items~\cite{Goossens:1994}.  The label width and the
%    separation between labels and items are set
%    to~\cmd{\cvlabelwidth} and~\cmd{\cvlabelsep}, respectively, which
%    are globally available and thus can be re-adjusted by the user.
%    If the~\source{1} is omitted in the definition of~\cmd{\topsep},
%    ``plus 2pt minus 2pt'' is written into your curriculum vitae.
%    Strange.  \winkey
%    \begin{macrocode}
      \setlength{\itemsep}{0ex}%
      \setlength{\parsep}{%
        0.5\baselineskip plus 1pt minus 1pt%
      }%
      \setlength{\topsep}{%
        1\baselineskip plus 2pt minus 2pt%
      }%
      \setlength{\partopsep}{0ex}%
      \setlength{\labelsep}{\cvlabelsep}%
      \setlength{\labelwidth}{\cvlabelwidth}%
      \setlength{\leftmargin}{\cvlabelwidth}%
      \addtolength{\leftmargin}{\cvlabelsep}%
%    \end{macrocode}
%    The end of the list initialization and of the
%    \env{cvlist}~environment.
%    \begin{macrocode}
    }%
}{%
  \end{list}%
}%
%    \end{macrocode}
%    \end{macro}
%    \iffalse
%</package>
%    \fi
%    \Finale
%    \iffalse
%<*testfile>
\documentclass[12pt,a4paper]{article}
%
\usepackage[german]{babel}
\usepackage{currvita}
%
\newcommand*{\ac}[1]{\mbox{#1}}
%
\tolerance=600
%
\begin{document}
%
\begin{cv}{Lebenslauf}
%
  \begin{cvlist}{Pers"onliche Daten}
  \item Axel Reichert\\
    Beethovenstr.~25\\
    40233~D"usseldorf
  \item Tel.:~(02\,11)~6\,91\,24\,15\\
    E"~Mail:~axel.reichert@gmx.de
  \item Geb.~am~03.\,08.~1970 in~D"usseldorf\\
    Ledig, deutsch
  \end{cvlist}
%
  \begin{cvlist}{Schulbildung}
  \item[08/1976--05/1989] Grundschule und Gymnasium in Mettmann
    (Leistungskurse Mathematik und Physik)
  \end{cvlist}
%
  \begin{cvlist}{Wehrdienst}
  \item[10/1989--09/1990] Fernmeldeaufkl"arer in Clausthal-Zellerfeld
    und Rotenburg/""W"umme
  \end{cvlist}
%
  \begin{cvlist}{Studium}
  \item[10/1990--09/1992] Maschinenbauvordiplom an der Universit"at
    Hannover
  \item[10/1992--06/1993] Wissenschaftliche Hilfskraft am Institut
    f"ur Umformtechnik und Umformmaschinen, Hannover; Mitarbeit an
    DFG-Projekt: Implementation eines Stoffgesetzes in das
    \ac{FEM}-Programm \ac{ABAQUS}
  \item[10/1992--08/1996] Maschinenbaudiplom an der Universit"at
    Hannover, Ent"-wicklungs"~~und Konstruktionstechnik (Schwerpunkte
    Finite Elemente, Schwingungstechnik und Elasto"~/""Plastomechanik)
  \item[10/1994--04/1996] Mathematikvordiplom an der Universit"at
    Hannover
  \end{cvlist}
%
  \begin{cvlist}{Praktikum}
  \item[08/1994--09/1994] Br"uninghaus~\&~Drissner~GmbH, Hilden
    (mittelst"andisches Pre"s"~, Stanz"~ und Ziehwerk); Konstruktion
    eines kombinierten Roll"~ und Zudr"uckwerkzeuges f"ur
    Klemmschellen
  \end{cvlist}
%
  \begin{cvlist}{Berufserfahrung}
  \item[seit~08/1996] Max-Planck-Institut f"ur Eisenforschung~GmbH,
    D"usseldorf; wissenschaftlicher Mitarbeiter der Abteilung
    Metallurgie

    Promotion "uber "`Soft Reduction beim Stranggie"sen und ihr
    Einflu"s auf die Produktqualit"at"' im Rahmen eines Projektes der
    Europ"aischen Gemeinschaft f"ur Kohle und Stahl in Zusammenarbeit
    mit British Steel, den Dillinger H"uttenwerken und der
    TU~Clausthal
  \end{cvlist}
%
  \begin{cvlist}{Fremdsprachen}
  \item Englisch, Franz"osisch
  \end{cvlist}
%
  \begin{cvlist}{\ac{EDV}}
  \item[Betriebssysteme] \ac{UNIX} (Linux, \ac{IRIX}), Windows, Novell
    Netware, \ac{DOS}
  \item[Sprachen] Perl, Shell-Skripte, \ac{HTML}, Fortran~77, Pascal,
    \ac{BASIC}
  \item[Anwendungen] \ac{ANSYS}, \ac{MARC}, Word, Excel, Corel"-DRAW,
    Designer, LaTeX, XEmacs
  \end{cvlist}
%
  \begin{cvlist}{Interessen}
  \item Klassische Musik, Typographie, Tischtennis, Fotografie
  \end{cvlist}
%
  \begin{cvlist}{Sonstiges}
  \item[04/1992--10/1995] Ehrenamtliche Mitarbeit als Rechnerwart bei
    der Saalgemeinschaft~"`Exzenter"' (unter studentischer
    Selbstverwaltung stehender Arbeits"~~und Zeichensaal f"ur
    Ingenieurstudenten)
  \item[seit 01/1997] Aktives Mitglied der Deutschen
    Anwendervereinigung TeX, Vortr"age und Tutorien auf Konferenzen
  \end{cvlist}
%
%    \changes{v0.9d}{1999-08-25}{%
%      \LaTeX{} version of the umlaut is used instead of
%      \package{babel}'s~shortcut.%
%    }
  \cvplace{D\"usseldorf}
  \date{13.~September~1999}
%
\end{cv}
%
\end{document}
%</testfile>
%    \fi
\endinput