From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 macros/latex/contrib/currvita/currvita.dtx | 1440 ++++++++++++++++++++++++++++
 1 file changed, 1440 insertions(+)
 create mode 100644 macros/latex/contrib/currvita/currvita.dtx

(limited to 'macros/latex/contrib/currvita/currvita.dtx')

diff --git a/macros/latex/contrib/currvita/currvita.dtx b/macros/latex/contrib/currvita/currvita.dtx
new file mode 100644
index 0000000000..499d8126e2
--- /dev/null
+++ b/macros/latex/contrib/currvita/currvita.dtx
@@ -0,0 +1,1440 @@
+%    \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
-- 
cgit v1.2.3

