summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/curve
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-12-14 23:18:34 +0000
committerKarl Berry <karl@freefriends.org>2010-12-14 23:18:34 +0000
commit27de50ad58993af1b9751d0f2ef6691f692304ca (patch)
treed28573f8e28025f3d7f5a66969956d9ff588b8f3 /Master/texmf-dist/source/latex/curve
parentb8b55a100110782bb066a4471211ecb691e2399e (diff)
curve 1.16 (15dec10)
git-svn-id: svn://tug.org/texlive/trunk@20745 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/curve')
-rw-r--r--Master/texmf-dist/source/latex/curve/curve.dtx1892
-rw-r--r--Master/texmf-dist/source/latex/curve/curve.ins32
2 files changed, 1347 insertions, 577 deletions
diff --git a/Master/texmf-dist/source/latex/curve/curve.dtx b/Master/texmf-dist/source/latex/curve/curve.dtx
index f481fd5df21..1c01cfd1f18 100644
--- a/Master/texmf-dist/source/latex/curve/curve.dtx
+++ b/Master/texmf-dist/source/latex/curve/curve.dtx
@@ -1,14 +1,14 @@
-% \iffalse -*- mode: LaTeX -*-
+% \iffalse
%
% curve.dtx --- Doc file for the CurVe package (code and documentation)
%
-% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Didier Verna.
-% Copyright (C) 2008 Didier Verna
+% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Didier Verna
+% Copyright (C) 2008, 2010 Didier Verna
%
% Author: Didier Verna <didier@lrde.epita.fr>
% Maintainer: Didier Verna <didier@lrde.epita.fr>
% Created: Thu Dec 10 16:04:01 1998
-% Last Revision: Mon Feb 25 17:55:12 2008
+% Last Revision: Tue Nov 30 18:37:39 2010
%
% This file is part of CurVe.
%
@@ -32,6 +32,16 @@
%
%<*driver>
\documentclass[a4paper]{ltxdoc}
+
+\usepackage{dox}[2009/09/21]
+\doxitem[idxtype=env.]{Env}{environment}{environments}
+\doxitem[idxtype=opt.]{Option}{option}{options}
+\doxitem[idxtype=cnt.]{Counter}{counter}{counters}
+\doxitem[idxtype=lang.]{Lang}{lang}{languages}
+\doxitem[idxtype=cond.]{Cond}{conditional}{conditionals}
+
+\usepackage{xspace}
+\usepackage[T1]{fontenc}
\newcommand{\curve}{%
\mbox{\fontfamily{ptm}\fontseries{b}\fontshape{it}\selectfont%
C%
@@ -39,10 +49,24 @@
\hspace{-.1ex}\textmd{r}%
\hspace{-.2ex}V%
\hspace{-.6ex}\protect\raisebox{-.3ex}{\textmd{e}}}%
- }
+ \xspace}
+
+% #### NOTE: I don't want to \usepackage{curve} just for getting the file
+% information. So here's what I do: generate a header with only the
+% \ProvidesPackage command. Then, I \input it so that \GetFileInfo works.
+% However, I need to manually set the current file name and extension that
+% would normally be set by \RequirePackage. Also, note that the call to
+% \GetFileInfo below needs to use the extension of the header, that is inc
+% instead of sty, even the file curve.inc does not really exist.
+\makeatletter
+ \def\@currname{curve}
+ \def\@currext{inc}
+\makeatother
+\input{header.inc}
% \OnlyDescription
-% \CodelineIndex
+\CodelineIndex
% \RecordChanges
+\setcounter{secnumdepth}{4}
\begin{document}
\DocInput{curve.dtx}
\end{document}
@@ -51,7 +75,8 @@
% \fi
%
% \catcode`\¡=14
-% \CheckSum{1202}
+% \CheckSum{1830}
+% \GetFileInfo{curve.inc}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
@@ -68,16 +93,34 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%
-% \newcommand\version{1.15}
-% \newcommand\releasedate{2008/02/25}
-% \newcommand\packagecopyright{Copyright \copyright{} 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Didier Verna}
-% \newcommand\auctex{AUC-\TeX}
-% \newcommand\cv{\textsc{CV}}
% \MakeShortVerb{\|}
-% \date{\today}
+%
+% \makeatletter
+% \def\ps@mystyle{
+% \def\@oddfoot{\hfil\thepage\hfil}
+% \def\@evenfoot{\hfil\thepage\hfil}
+% \def\@evenhead{\hfil\slshape\leftmark}
+% \def\@oddhead{\slshape\rightmark\hfil}}
+% \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{%
+% -3.25ex\@plus -1ex \@minus -.2ex}{%
+% 1.5ex \@plus .2ex}{%
+% \normalfont\normalsize\bfseries}}
+% \makeatother
+%
+% \newcommand\packagecopyright{Copyright \copyright{} 2000, 2001, 2002, 2003,
+% 2004, 2005, 2006, 2007, 2008, 2010 Didier Verna\xspace}
+%
+% \newcommand\emacs{\textsf{Emacs}}
+% \newcommand\auctex{AUC-\TeX\xspace}
+% \newcommand\cv{\textsc{CV}\xspace}
+%
+% \pagestyle{mystyle}
+% \markright{\hskip-.5\marginparwidth \curve \fileversion{} (\filedate)}
+%
+% \date{\texttt{\fileversion{} (\filedate)}}
% \title{\curve{} -- a \LaTeXe{} class package for making \textbf{Cur}ricula
-% \textbf{V}ita\textbf{e}.\thanks{This document describes \curve{} \version,
-% release date \releasedate.}}
+% \textbf{V}ita\textbf{e}\footnote{\curve homepage:
+% \texttt{http://www.lrde.epita.fr/\~{}didier/software/latex.php\#curve}}}
% \author{Didier Verna\\
% \texttt{mailto:didier@lrde.epita.fr}\\
% \texttt{http://www.lrde.epita.fr/\~{}didier}}
@@ -85,198 +128,165 @@
%
%
% \begin{abstract}
-% \curve{} provides a \LaTeXe{} class that hopefully will make your life
+% \curve provides a \LaTeXe{} class that hopefully will make your life
% easier when you want to write your \cv. It provides you with a set of
-% commands to create rubrics, entries in these rubrics etc. \curve{} will
-% then properly format your \cv{} for you (possibly splitting it onto
-% multiple pages), which is usually the most painful part of \cv{} writing.
-% Another nice feature of \curve{} is its ability to manage different \cv{}
-% ``flavors'' simultaneously. It is in fact often the case that you want to
-% maintain slightly divergent versions of your \cv{} at the same time, in
-% order to emphasize on different aspects of your background.\par
-% The \curve{} package is \packagecopyright{}, and distributed under the
-% terms of the LPPL license.
+% commands to create rubrics, entries in these rubrics etc. \curve will then
+% properly format your \cv for you (possibly splitting it onto multiple
+% pages), which is usually the most painful part of \cv writing. Another
+% nice feature of \curve is its ability to manage different \cv ``flavors''
+% simultaneously. It is in fact often the case that you want to maintain
+% slightly divergent versions of your \cv at the same time, in order to
+% emphasize on different aspects of your background.
+%
+% The \curve package is \packagecopyright, and distributed under the terms
+% of the LPPL license.
% \end{abstract}
%
-% \section{Getting \curve}
-% \curve{} can be obtained from any \textsc{ctan} archive, in the
-% \texttt{macros/latex/contrib} subdirectory. You can also download it
-% directly from my website (online documentation available there), at the
-% \textsc{url} above. Please follow the links on the left menu.
%
-% If you are a Debian unstable user (unstable referring to Debian, not you),
-% unofficial source and i386 packages are available (thanks to Geoffroy
-% Fouquier for providing this facility). The package name is \texttt{curve}.
-% Here's the \texttt{source.list} entry to use:
-% \begin{verbatim}
-% deb http://www.lrde.epita.fr/debian/ unstable/i386/
-% deb-src http://www.lrde.epita.fr/debian/ sid/source/
-% \end{verbatim}
+% \tableofcontents
%
-% For installation instructions, please read the \texttt{README} file included
-% in the distribution.
%
-% \section{Frequently Asked Questions}
-% If this is your first time with \curve, you might want to skip this section.
-% Otherwise, please read on, especially before asking me by email\ldots
+% \section{Installation}
+% \subsection{Extraction}
+% If you are building \curve from the tarball you need to execute the
+% following steps in order to extract the necessary files. \curve also
+% requires the \textsf{DoX} package (version 2.0, release date 2009/09/21 or
+% later), to build. It is not required to use the package.
+% \begin{verbatim}
+% [pdf]latex curve.ins
+% [pdf]latex curve.dtx
+% [pdf]latex curve.dtx
+% makeindex -s gind curve.idx
+% [pdf]latex curve.dtx
+% [pdf]latex curve.dtx
+% \end{verbatim}
+% After that, you need to install the generated documentation and style files
+% to a location where \LaTeX{} can find them.
%
-% \begin{enumerate}
-% \item
-% \textbf{Is there a way to align entries across several (all) rubrics?}\\
-% Not automatically because rubrics are typeset as individual tables. There
-% are many ways to manually ``trick'' too narrow keys in order to enlarge
-% them however. As of version 1.11, \curve{} provides a new convenience
-% macro to do something similar: see section \ref{sec:noentry}.
-% \item
-% \textbf{How can I change the interline spacing?}\\
-% Internally, \curve{} uses \LaTeX{} tabular-based environments. As such,
-% you can play with |\arraystretch| to modify the space between rows.
-% \item
-% \textbf{When a page break occurs in the middle of a rubric, the same
-% alignment is kept on both pages, which might result in suboptimal
-% layout.}\\
-% This is a technical limitation of the automatic alignment computation
-% process in longtables and I don't think there will be a solution anytime
-% soon (page breaking is orthogonal to column width calculation). What you
-% can do, once your CV is finalized, is manually split the concerned rubric
-% into different ones, starting at the appropriate entries to avoid page
-% breaking in the middle.
-% \item
-% \textbf{How can I make multi-line subrubrics?}\\
-% Here are two ideas:
-% \begin{itemize}
-% \item Put your text in several consecutive subrubrics (one per line).
-% However, this might not give you the desired vertical spacing.
-% \item Probably better, put your material in a parbox:\\
-% |\subrubric{\parbox{width}{first blah blah\\next blah blah}}|\\
-% This is a bit dirty because you have to figure out a suitable width for
-% your parbox, but this will work.
-% \end{itemize}
-% \item
-% \textbf{How can I make multi-line keys?}\\
-% The trick is to temporarily change the key cell type to a paragraph one
-% (remember that we're in a tabular environment).
-% \begin{enumerate}
-% \item Recover the key formatting by doing something like this near
-% the beginning of your document:\\
-% |\makeatletter\let\mykeyfont\@keyfont\makeatother|
-% \item Use something like this where you need a multi-line key (you will
-% have to adjust the paragraph width manually):
+% \subsection{TDS-compliant layout}
+% For a TDS-compliant layout, the following locations are suggested:
% \begin{verbatim}
-% \entry*[\multicolumn{1}{@{}>{\mykeyfont}p{2cm}}{%
-% long key\newline long key}]
-% Entry text. Entry text. Entry ...
+% [TEXMF]/tex/latex/curve/curve.cls
+% [TEXMF]/doc/latex/curve/curve.[pdf|dvi]
% \end{verbatim}
-% \end{enumerate}
-% \item
-% \textbf{How to deal with long keys?}\\
-% The best thing to do is to make them multi-line manually. Please refer to
-% the previous question.
-% \item
-% \textbf{Can I change the prefix locally?}\\
-% Yes and no. The |\prefix| command can only be used in the preamble or
-% between rubrics. Otherwise, there is currently no way to change the prefix
-% for a single entry. This limitation will disappear in a future release.
-% \end{enumerate}
%
-% \section{Overview}
-% The \curve{} package provides you with a document class for writing
-% curricula vitae. The primary purpose of this package is to offer a set of
-% predefined commands to specify the contents of your \cv, while removing from
-% you the burden of formatting it. This has two important consequence however:
-% \curve{} will impose that you conform to its document structuring scheme,
-% and will expect that you like the way it formats things :-). If you prefer
-% another structure for your \cv{}, or if you don't like the formatting
-% (although it is highly configurable), then \curve{} is probably not for
-% you.\par
-% Once you have installed \curve{}, you might want to start with processing
-% the example file \texttt{cv.tex}. This will give you an idea of what a non
-% customized \cv{} looks like with \curve. You can also throw an eye to my
-% own \cv, which is written with \curve{} and has some more fancy hackery on
-% top of it. It's in French, but only the appearance is important for
-% you\ldots My \cv{} can be found at
-% \texttt{http://www.lrde.epita.fr/\~{}didier/perso/cv.php}.
+% \subsection{\auctex support}
+% \auctex is a powerful major mode for editing \TeX{} documents in \emacs. In
+% particular, it provides automatic completion of command names once they are
+% known. \curve supports \auctex by providing a style file named
+% \texttt{curve.el} which contains \auctex definitions for the relevant
+% commands. This file should be installed in a place where \auctex can find it
+% (usually in a subdirectory of your \LaTeX{} styles directory). Please refer
+% to the \auctex documentation for more information on this.
+%
+% As of version 1.2, \curve has an improved \auctex support. Most notably, the
+% command |M-Ret| will insert an |\entry*| macro within a |rubric|
+% environment. Also, the |\makerubric| macro handling now removes both the
+% file extension and the file flavor extension.
+%
+% \subsection{Examples}
+% Once you have installed \curve, you might want to start with processing the
+% examples in the \texttt{examples/} directory. This will give you an idea of
+% what a non customized \cv looks like with \curve. You can also throw an eye
+% to my own \cv, which is written with \curve and has some more fancy hackery
+% on top of it. It's in French, but only the appearance is important for you.
+% My \cv can be found at
+% \texttt{http://www.lrde.epita.fr/\~{}didier/about/cv.pdf}.
%
+%
+% \section{Overview}
% \subsection{Document Layout}
-% A \curve{} \cv{} begins with two optional headers (upper left and upper
-% right) in which you usually put your name, address, email, whether you're
-% married and so on. These headers will respectively be left and right aligned.
-% As of version 1.4, \curve{} lets you insert a small identity photo in the
-% headers, either on the left, on the right, or between them. After these
-% headers come an optional title and/or subtitle, which can be centered on
-% the page, or flushed either left or right.
+% \subsubsection{Headers}
+% A \curve \cv begins with two optional headers (upper left and upper right)
+% in which you usually put your name, address, email, whether you're married
+% and so on. These headers will respectively be left and right aligned. As of
+% version 1.4, \curve lets you insert a small identity photo in the headers,
+% either on the left, on the right, or between them.
+%
+% \subsubsection{Titles}
+% After these headers come an optional title and/or subtitle, which can be
+% centered on the page, or flushed either left or right.
+%
% \subsubsection{Rubrics}
% The remaining of the document is composed of sections called ``rubrics'' in
-% the \curve{} terminology. A rubric represents a major topic that you want
-% to detail in your \cv. Typical rubrics are ``Education'', ``Professional
+% the \curve terminology. A rubric represents a major topic that you want to
+% detail in your \cv. Typical rubrics are ``Education'', ``Professional
% Experience'' and the like. Rubrics have a title (centered by default) and
% appear under the form of properly aligned ``entries'' (see below). If a
% rubric has to be split across different pages, its title will be repeated
% automatically.
-% \subsubsection{Entries}
-% An entry is
-% an item of information related to the rubric under which it appears. An
-% entry has a ``contents'', and an optional ``key'' under which it is
-% classified. For instance, under the ``Education'' rubric, you could state
+%
+% \paragraph{Entries}
+% An entry is an item of information related to the rubric under which it
+% appears. An entry has a ``contents'', and an optional ``key'' under which it
+% is classified. For instance, under the ``Education'' rubric, you could state
% that you got a Ph.D. in computer science in the year 2000. In that case, the
% year would be the entry's key, and the ``Ph.D. in computer science'' part
-% would be the entry's contents. \curve{} aligns both keys and contents
+% would be the entry's contents. \curve aligns both keys and contents
% together. Keys are optional in order for you to classify several entries
% together (without repeating the same key over and over again).
-% \subsubsection{Subrubrics}
+%
+% \paragraph{Subrubrics}
% Additionally, you might want to further split your rubrics into
% ``subrubrics''. For instance, in my own \cv, I have a ``Professional
% Experience'' rubric, with three subrubrics: ``Teaching'', ``Research'' and
-% ``Development''. This can be accomplished with a special command.
-% Subrubrics are displayed in alignment with the entries' contents by default,
-% but are formatted differently so that they remain distinguishable.
+% ``Development''. This can be accomplished with a special command. Subrubrics
+% are displayed in alignment with the entries' contents by default, but are
+% formatted differently so that they remain distinguishable.
%
% \subsection{Document Structure}
% \subsubsection{Source File Splitting}
-% \curve{} is based on the \texttt{LTXtable} package by David Carlisle. I
-% won't go into gory details, but this has an important implication:
-% \textbf{each rubric must be in its own separate file}. In other words, your
-% \cv's main source file is really a skeleton whose major task is to include
-% the different rubrics from their respective source files.\par
+% \curve is based on the \texttt{LTXtable} package by David Carlisle. I won't
+% go into gory details, but this has an important implication: \textbf{each
+% rubric must be in its own separate file}. In other words, your \cv's main
+% source file is really a skeleton whose major task is to include the
+% different rubrics from their respective source files.
+%
% This is not much of a hassle, really, and it actually made my life easier
% when I implemented the ``flavor'' mechanism described below.
-% \subsubsection{The ``flavor'' Mechanism}
+%
+% \subsubsection{Flavors}
% It is often desirable to maintain several slightly divergent versions of
-% one's \cv{} at the same time. For instance, when I was looking for a job some
-% time ago, I had a version of my \cv{} emphasizing on Artificial Intelligence,
+% one's \cv at the same time. For instance, when I was looking for a job some
+% time ago, I had a version of my \cv emphasizing on Artificial Intelligence,
% and another emphasizing on Distributed Virtual Reality. Only the title and
-% some entries in the ``Professional Experience'' rubric were a bit
-% different; the main skeleton basically remained the same.\par
-% \curve{} provides an easy-to-use mechanism for maintaining different
-% ``flavors'' of your \cv{} at the same time. You basically write different
-% versions of (some of) your rubrics in different files, tell \curve{} which
-% flavor you want to format (\curve{} can even ask you which one to use
-% directly) and that's it. \curve{} will use the global skeleton, and whenever
+% some entries in the ``Professional Experience'' rubric were a bit different;
+% the main skeleton basically remained the same.
+%
+% \curve provides an easy-to-use mechanism for maintaining different
+% ``flavors'' of your \cv at the same time. You basically write different
+% versions of (some of) your rubrics in different files, tell \curve which
+% flavor you want to format (\curve can even ask you which one to use
+% directly) and that's it. \curve will use the global skeleton, and whenever
% it finds a rubric file specialized for that particular flavor, it will use
% it. Otherwise, it will simply fall back to the default one (no particular
% flavor).
%
%
-% \section{Using \curve{}}
-% First of all, please note that the \texttt{ltxtable} and \texttt{calc}
-% packages are required. If you're using the identity photo feature, the
-% \texttt{graphicx} package is also needed. You don't have to load them
-% explicitly though. As long as \LaTeXe{} can locate them, they will be used
-% automatically.
+% \section{Using \curve}
+% First of all, please note that \curve requires the presence of
+% \texttt{ltxtable}, \texttt{ifthen}, \texttt{calc} and \texttt{filehook}. If
+% you're using the identity photo feature, the \texttt{graphicx} package is
+% also needed. You don't have to load them explicitly though. As long as
+% \LaTeX{} can locate them, they will be used automatically.
%
-% \subsection{Writing the Skeleton File}
+% \subsection{Skeleton File}
% Say |\documentclass[|\meta{options}|]{curve}| at the beginning of your
% skeleton file in order to use \curve. The available options are described
% along the text, where appropriate.
%
-% \subsubsection{Making Headers}
-% \DescribeMacro{\leftheader}\DescribeMacro{\rightheader}
-% The |\leftheader| and |\rightheader| macros take one mandatory argument
-% which defines respectively the contents of the upper left and upper right
-% headers. They can be used in the document's preamble only. The headers will
-% respectively be flushed to the left and to the right.
-% \par
-% \DescribeMacro{\photo}
+% \subsubsection{Headers}
+% \paragraph{Header Components}
+% \DescribeMacro{\leftheader}
+% \marg{contents}\\
+% \DescribeMacro{\rightheader}
+% \ldots\\
+% The |\leftheader| and |\rightheader| macros define respectively the contents
+% of the upper left and upper right headers. They can be used in the
+% document's preamble only. The headers will respectively be flushed to the
+% left and to the right.
+%
+% \noindent\DescribeMacro{\photo}\oarg{hpos}\marg{file}\\
% If you want to insert a small identity photo into the header part, you can
% use the |\photo| macro (available since version 1.4). It takes a mandatory
% argument in which you pass the image file name, as you would to
@@ -284,31 +294,37 @@
% you specify the horizontal position of the photo: the values can be
% \texttt{l} (the default), \texttt{c} or \texttt{r} meaning that the photo
% will appear on the left, center, or right.
-% \par
-% \DescribeMacro{\photoscale}\DescribeMacro{\photosep}
-% \DescribeMacro{\headerscale}
+%
+% \paragraph{Header Layout}
% The headers' horizontal layout is further controled by three additional
-% macros. The |\photoscale| macro specifies the amount of text width that the
-% photo should occupy. This should be a number between 0 and 1. By default,
-% 0.1 is used (meaning 10\% of |\textwidth|). The |\photosep| macro is a
-% \LaTeX{} length that specifies the space to leave between the side of the
-% photo and the next headers's text. This is used only when the photo is on
-% the left or right. By default, |10pt| is used. Finally, |\headerscale|
-% specifies the proportion of the \emph{remaining} space that the \emph{left}
-% textual header should occupy. It works like |\photoscale| and amounts to 0.5
-% by default.
-% \par
-% Let me take an example to make this clearer. Suppose you have a |\photoscale|
-% of 0.1 and a |\photosep| of \texttt{10pt}. The \emph{remaining} space, that
-% is, the space occupied by the textual headers, amounts to 90\% of the text
-% width, minus 10 points. If you then specify a |\headerscale| of 0.6, then
-% the left header will take 60\% of that remaining space, and the right one the
-% other 40\%.
-% \par
-% \DescribeMacro{\headerspace}
+% macros.
+%
+% \noindent\DescribeMacro{\photoscale}\marg{scale}\\
+% The |\photoscale| macro specifies the amount of text width that the photo
+% should occupy. This should be a number between 0 and 1. By default,
+% 0.1 is used (meaning 10\% of |\textwidth|).\\
+% \DescribeMacro{\photosep} The |\photosep| macro is a \LaTeX{} length that
+% specifies the space to leave between the side of the photo and the next
+% headers's text. This is used only
+% when the photo is on the left or right. By default, |10pt| is used.\\
+% \DescribeMacro{\headerscale}\marg{scale}\\
+% Finally, |\headerscale| specifies the proportion of the \emph{remaining}
+% space that the \emph{left} textual header should occupy. It works like
+% |\photoscale| and amounts to 0.5 by default.
+%
+% Let me take an example to make this clearer. Suppose you have a
+% |\photoscale| of 0.1 and a |\photosep| of \texttt{10pt}. The
+% \emph{remaining} space, that is, the space occupied by the textual headers,
+% amounts to 90\% of the text width, minus 10 points. If you then specify a
+% |\headerscale| of 0.6, then the left header will take 60\% of that remaining
+% space, and the right one the other 40\%.
+%
+% \noindent\DescribeMacro{\headerspace}
% |\headerspace| is the amount of extra vertical space to put after the
-% headers. This is a \LaTeX{} length that defaults to \texttt{10pt}.\par
-% \DescribeMacro{\makeheaders}
+% headers. This is a \LaTeX{} length that defaults to \texttt{10pt}.
+%
+% \paragraph{Making Headers}
+% \DescribeMacro{\makeheaders}\oarg{vpos}\\
% If you have defined headers, make them appear by calling |\makeheaders| just
% after the beginning of your document. Note that calling this macro assumes
% that you have previously defined both headers (possibly empty, though).
@@ -317,27 +333,34 @@
% When given, this argument must be either |t| (for top), |b| (for bottom) or
% |c| (for center; the default).
%
-% \subsubsection{Making Titles}
-% \DescribeMacro{\title}\DescribeMacro{\subtitle}
-% The |\title| and |\subtitle| macros take one mandatory argument which
-% define respectively your \cv's title and subtitle. They can be used in
-% the document's preamble only.\par
-% \DescribeMacro{\titlealignment}
+% \subsubsection{Titles}
+% \paragraph{Title Components}
+% \DescribeMacro{\title}\marg{text}\\
+% \DescribeMacro{\subtitle}\ldots\\
+% The |\title| and |\subtitle| macros take one mandatory argument which define
+% respectively your \cv's title and subtitle. They can be used in the
+% document's preamble only.
+%
+% \paragraph{Title Layout}
+% \DescribeMacro{\titlealignment}\marg{hpos}\\
% By default, titles are centered on the page. However, you can also have them
% aligned to the left or right side of the page. To specify your preferred
% title alignment, call |\titlealignment| with an argument of either
% \texttt{l}, \texttt{c} or \texttt{r}, the meaning of which should be
% obvious. You can also achieve the same effect by passing an optional
-% argument to |\maketitle| (see below).\par
+% argument to |\maketitle| (see below).\\
% \DescribeMacro{\titlespace}
% |\titlespace| is the amount of extra vertical space to put after the
-% title(s). This is a \LaTeX{} length that defaults to \texttt{0pt}.\par
-% \DescribeMacro{\titlefont}\DescribeMacro{\subtitlefont}
+% title(s). This is a \LaTeX{} length that defaults to \texttt{0pt}.\\
+% \DescribeMacro{\titlefont}\marg{cmds}\\
+% \DescribeMacro{\subtitlefont}\ldots\\
% The |\titlefont| and |\subtitlefont| macros take one mandatory argument
% which redefine the fonts to use for the title and the subtitle. They can be
% used in the document's preamble only. By default, |\Huge\bfseries| and
-% |\Huge\itshape| are used respectively.\par
-% \DescribeMacro{\maketitle}
+% |\Huge\itshape| are used respectively.
+%
+% \paragraph{Making Titles}
+% \DescribeMacro{\maketitle}\oarg{hpos}\\
% If you have defined a title (and possibly a subtitle), make it (them) appear
% by calling |\maketitle| after the beginning of your document, and just after
% |\makeheaders| if you happen use it. It is possible to omit the subtitle,
@@ -346,284 +369,329 @@
% specifying the title alignment scheme. This argument is the same as in
% |\titlealignment|, and takes precedence over it.
%
-% \subsubsection{Choosing a Flavor}
+% \subsubsection{Flavors}
% As you already know, each rubric must reside in its own separate file. For
% instance, if you have a ``Professional Experience'' rubric, you would write
% its contents into a file named \texttt{experience.tex}. The flavor mechanism
% works by assigning a pre-extension to rubric file names. For instance,
-% suppose you want to make a special flavor of your \cv{} emphasizing on
+% suppose you want to make a special flavor of your \cv emphasizing on
% ``distributed virtual reality''. You would call this flavor ``dvr'', and
% write the modified ``Professional Experience'' rubric into a file named
-% \texttt{experience.dvr.tex}.\par
-% \DescribeMacro{\flavor}
+% \texttt{experience.dvr.tex}.
+%
+% \noindent\DescribeMacro{\flavor}\marg{key}\\
% The |\flavor| macro takes one mandatory argument which specifies the flavor
% to use (in our example, \texttt{dvr}). Although this might be of little use,
% it is possible to change the flavor anywhere, even right in the middle of
-% your \cv's skeleton.\par
-% \DescribeEnv{ask}
-% Instead of using the |\flavor| macro, you can make \curve{} ask you at
+% your \cv's skeleton.\\
+% \DescribeOption{ask}
+% Instead of using the |\flavor| macro, you can make \curve ask you at
% run-time which flavor to use by passing the \texttt{ask} option to it.
%
-% \subsubsection{Including Rubrics}
+% \subsubsection{Rubrics}
% Apart from making headers and titles, the body of your skeleton file will
% usually contain nothing but directives to include the different rubrics of
-% your \cv.\par
-% \DescribeMacro{\makerubric}
+% your \cv.
+%
+% \noindent\DescribeMacro{\makerubric}\marg{name}\\
% To include a rubric in your document, use |\makerubric|. This macro takes
% one mandatory argument which specifies the rubric to include at that point.
% The argument actually corresponds to the rubric file name \textbf{without
-% any extension}. Continuing our previous example, you would say
-% |\makerubric{experience}|. First, \curve{} will try to find such a rubric
-% file specific for the current flavor in use, (e.g.
-% \texttt{experience.dvr.tex}). If that fails, it will fall back to a
-% non-flavored file (here, \texttt{experience.tex}). This allows you to
-% specialize only the required rubrics and use the default ones otherwise.\par
-% \DescribeMacro{\rubricafterspace}
-% As of version 1.12, \curve{} provides a new \LaTeX{} length,
+% any extension}. Continuing our previous example, you would say
+% |\makerubric{experience}|. First, \curve will try to find such a rubric file
+% specific for the current flavor in use, (e.g. \texttt{experience.dvr.tex}).
+% If that fails, it will fall back to a non-flavored file (here,
+% \texttt{experience.tex}). This allows you to specialize only the required
+% rubrics and use the default ones otherwise.
+%
+% \noindent\DescribeMacro{\rubricafterspace}
+% As of version 1.12, \curve provides a new \LaTeX{} length,
% |\rubricafterspace| controlling the amount of extra vertical space to put
% after a rubric (hence, before the next one). The default is \texttt{0pt}.
%
-% \subsection{Writing a Rubric File}
+% \subsection{Rubric Files}
% \subsubsection{The \texttt{rubric} Environment}
-% \DescribeEnv{rubric}
+% \DescribeEnv{rubric}\marg{title}\\
% The whole contents of a rubric file must be enclosed in a \texttt{rubric}
% environment. This environment takes one mandatory argument which specifies
% the rubric's title. When a rubric crosses several pages, its title is
-% restated with a ``continuation'' text appended.\par
-% \DescribeMacro{\rubricalignment}
+% restated with a ``continuation'' text appended.
+%
+% \noindent\DescribeMacro{\rubricalignment}\marg{hpos}\\
% As of version 1.6, the rubric titles horizontal alignment can be changed
% thanks to the |\rubricalignment| macro. Possible values for its mandatory
% argument are |l|, |c| and |r| (meaning left, centered, or right relative to
% the whole text width), and |cl| and |cc| (meaning left or centered relative
-% to the entries'contents). By default, rubric titles are centered (|c|).\par
-% \DescribeMacro{\rubricfont}
+% to the entries'contents). By default, rubric titles are centered (|c|).
+%
+% \noindent\DescribeMacro{\rubricfont}\marg{cmds}
% The |\rubricfont| macro takes one mandatory argument which redefines the
-% font to use for rubric titles. By default, |\Large\bfseries| is used.\par
-% \DescribeMacro{\rubricspace}
+% font to use for rubric titles. By default, |\Large\bfseries| is used.
+%
+% \noindent\DescribeMacro{\rubricspace}
% |\rubricspace| is the amount of extra vertical space to put after the rubric
% title. This is a \LaTeX{} length that defaults to \texttt{10pt}.
%
-% \subsubsection{Making Rubric Entries}
-% \DescribeMacro{\entry}
+% \subsubsection{Standard Entries}
+% \paragraph{Creating rubric entries}
+% \DescribeMacro{\entry}\oarg{key}\marg{contents}\\
% You create entries in your rubrics by calling the |\entry| macro. The first
% (optional) argument specifies the key, and the second (mandatory) one
% specifies the contents. Both keys and contents are aligned within each
-% rubric.\par
-% \DescribeMacro{\entry*}
-% Actually, the |\entry| macro was somewhat ill-designed at the first place.
+% rubric.
+%
+% \noindent\DescribeMacro{\entry*}\oarg{key}\\
+% Actually, the |\entry| macro was somewhat ill-designed in the first place.
% The |rubric| environment pretty much behaves as an |itemize| one, hence the
-% idea of using an |\item|-like syntax. As of version 1.2, \curve{} provides
-% an |\entry*| macro which behaves like |\item| in lists: it takes the same
-% first optional argument as the non starred version, but has no other
-% argument. The entry's contents simply consists of the text following the
-% macro call, up to the next |\entry|, |\entry*| or |\subrubric| (see
-% below) call.\par
-% \DescribeMacro{\keyalignment}
+% idea of using an |\item|-like syntax. As of version 1.2, \curve provides an
+% |\entry*| macro which behaves like |\item| in lists: it takes the same first
+% optional argument as the non starred version, but has no other argument. The
+% entry's contents simply consists of the text following the macro call, up to
+% the next |\entry|, |\entry*| or |\subrubric| (see below) call.
+%
+% \paragraph{Entries layout}
+% \DescribeMacro{\keyalignment}\marg{hpos}\\
% As of version 1.7, entries'keys horizontal alignment can be changed thanks
% to the |\keyalignment| macro. Possible values for its mandatory argument are
% |l|, |c| and |r| (meaning left, centered, or right). By default, keys are
-% left aligned (|l|).\par
-% \DescribeMacro{\keyfont}
+% left aligned (|l|).
+%
+% \noindent\DescribeMacro{\keyfont}\marg{cmds}\\
% The |\keyfont| macro takes one mandatory argument which redefines the font
% to use for the entries' keys. By default, the standard document font is
-% used.\par
-% \DescribeMacro{\prefix}
+% used.
+%
+% \noindent\DescribeMacro{\prefix}\marg{cmds}\\
% Each entry's contents can be prefixed with a visual clue (a symbol for
-% instance). This comes in handy to make a clear distinction between
-% different entries sharing the same key (which is not repeated). The
-% |\prefix| macro takes one mandatory argument which redefines the prefix to
-% use. By default, |\textbullet| is used. Note that as of version 1.11,
-% \curve{} forces the prefix to be empty in bibliographic entries (see section
-% \ref{sec:biblio}).\par
-% \DescribeEnv{skipsamekey}
+% instance). This comes in handy to make a clear distinction between different
+% entries sharing the same key (which is not repeated). The |\prefix| macro
+% takes one mandatory argument which redefines the prefix to use. By default,
+% |\textbullet| is used. Note that as of version 1.11, \curve forces the
+% prefix to be empty in bibliographic entries (see section \ref{sec:biblio}).
+%
+% \noindent\DescribeOption{skipsamekey}
% While maintaining your CV, you might end up reorganizing your entries and
-% even get entries with the same key. Normally, \curve{} blindly prints the
-% keys regardless of their values. If you don't want repetition, you would
-% have to remove keys by hand which can be cumbersome. As of version 1.10,
-% \curve{} can skip all but the first of a series of identical keys
-% automatically, provided that you use the |skipsamekey| option. Note that as
-% of version 1.11, \curve{} disables this mechanism in bibliography rubrics
-% (see section \ref{sec:biblio}).\par
-%
-% \subsubsection{Making ``invisible'' entries\label{sec:noentry}}
-% The most frequently asked question about \curve{} is probably whether it is
+% even get entries with the same key. Normally, \curve blindly prints the keys
+% regardless of their values. If you don't want repetition, you would have to
+% remove keys by hand which can be cumbersome. As of version 1.10, \curve can
+% skip all but the first of a series of identical keys automatically, provided
+% that you use the |skipsamekey| option. Note that as of version 1.11, \curve
+% disables this mechanism in bibliography rubrics (see section
+% \ref{sec:biblio}).
+%
+% \subsubsection{Plain text entries}
+% \DescribeMacro{\text}\marg{contents}\\
+% Sometimes, you may feel the need to insert plain text in the middle of a
+% rubric, without the fancy key/prefix formatting stuff. As of version 1.16,
+% \curve provides a |\text| macro for that. Plain text occupies the whole page
+% width. If you whish to further distinguish it from the surrounding entries,
+% you can use |\par| to add vertical space before and/or after the text.
+%
+% \subsubsection{Invisible entries\label{sec:noentry}}
+% The most frequently asked question about \curve is probably whether it is
% possible to align entries across several rubrics. This is (currently) not
% possible automatically because rubrics are typeset as independant tables.
% However, a manual solution boils down to enlarging too narrow entries (keys,
-% actually).\par
-% \DescribeMacro{\noentry}
-% As of version 1.11, \curve{} provides a convenience macro to ease
-% this process: |\noentry|. This macro takes one mandatory argument; a key
-% that will be used in the entries alignment calculation. However, this
-% command will not produce any text.\par
-% So if you want all your rubrics to share the same alignment, you typically
-% spot the longest key in your CV, and issue a |\noentry{this long key}| in all
-% other rubrics.
-%
-% \subsubsection{Making Subrubrics}
-% \DescribeMacro{\subrubric}
-% Within a single rubric, you can further separate entries into subrubrics.
-% In order to do this, the |\subrubric| macro is provided. Its mandatory
-% argument specifies the subrubric's title.\par
-% \DescribeMacro{\subrubricalignment}
+% actually).
+%
+% \noindent \DescribeMacro{\noentry}\marg{key}\\
+% As of version 1.11, \curve provides a convenience macro to ease this
+% process: |\noentry|. This macro takes one mandatory argument, a key that
+% will be used in the entries alignment calculation. However, this command
+% will not produce any text. So if you want all your rubrics to share the same
+% alignment, you typically spot the longest key in your CV, and issue a
+% |\noentry{this long key}| call in all other rubrics.
+%
+% \subsubsection{Subrubrics}
+% \DescribeMacro{\subrubric}\marg{title}\\
+% Within a single rubric, you can further separate entries into subrubrics. In
+% order to do this, the |\subrubric| macro is provided. Its mandatory argument
+% specifies the subrubric's title.
+%
+% \noindent\DescribeMacro{\subrubricalignment}\marg{hpos}\\
% As of version 1.6, the subrubrics horizontal alignment can be changed thanks
% to the |\subrubricalignment| macro. Possible values for its mandatory
% argument are |l|, |c| and |r| (meaning left, centered, or right relative to
% the whole text width), and |cl| and |cc| (meaning left or centered relative
% to the entries'contents). By default, subrubrics are left-aligned with the
-% entries' contents (|cl|).\par
-% \DescribeMacro{\subrubricfont}
+% entries' contents (|cl|).
+%
+% \noindent\DescribeMacro{\subrubricfont}\marg{cmds}\\
% The |\subrubricfont| macro takes one mandatory argument which redefines the
-% font to use for the subrubrics. By default, |\Large\itshape| is used.\par
-% \DescribeMacro{\subrubricspace}
-% \DescribeMacro{\subrubricbeforespace}
+% font to use for the subrubrics. By default, |\Large\itshape| is used.
+%
+% \noindent\DescribeMacro{\subrubricspace}
% |\subrubricspace| controls the amount of extra vertical space to put after
% subrubrics. This is a \LaTeX{} length that defaults to \texttt{5pt}.
+% \DescribeMacro{\subrubricbeforespace}
% |\subrubricbeforespace| controls the amount of extra vertical space to put
% \textit{before} a subrubric when there are entries above. This is a \LaTeX{}
% length that defaults to \texttt{20pt}.
%
% \subsection{Bibliography\label{sec:biblio}}
% Most scientists include their own list of publications in their \cv, so
-% \curve{} has support for different forms of bibliography.
+% \curve has support for different forms of bibliography.
+%
% \subsubsection{Manual bibliography}
% The first thing you can do is create your own bibliography manually (I mean,
% just like an ordinary rubric), and although this may appear boring, I
% actually encourage people to do so for at least three reasons (only my
% opinion of course):
% \begin{itemize}
-% \item A \cv{} should be strictly formatted and coherent in layout.
-% Bibliography is no exception to this rule. In other words, it is prettier to
-% have your publications formatted like the rest of your \cv.
+% \item A \cv should be strictly formatted and coherent in layout.
+% Bibliography is no exception to this rule. In other words, it is prettier
+% to have your publications formatted like the rest of your \cv.
% \item Automatic bibliography generation tools produce references, which is
-% silly in a \cv{} because you don't actually reference your papers anywhere
-% (or do you?). So better to sort them another way, like, by year of
-% publication as I do in my own \cv.
+% silly in a \cv because you don't actually reference your papers anywhere
+% (or do you?). So better to sort them another way, like, by year of
+% publication as I do in my own \cv.
% \item Manually adding, like, what? Half a dozen papers a year in your
-% \cv{} is not that much of a burden after all.
+% \cv is not that much of a burden after all.
% \end{itemize}
+%
% \subsubsection{The \texttt{bibliography} environment}
+% \DescribeEnv{thebibliography}\marg{key}\\
+% \DescribeMacro{\bibitem}\oarg{label}\marg{ref}\\
% Some people however have expressed the wish of having standard bibliography
-% support in \curve. Version 1.2 provides that.
-% \DescribeEnv{thebibliography}
-% \DescribeMacro{\bibitem}
-% The standard |thebibliography| environment is now supported along with its
-% |\bibitem| companion. The behavior is actually that of a |rubric|
-% environment with its |\entry*| companion (with an empty prefix however).
-% This fact has two implications: firstly, the argument to the environment is
-% unused in \curve{} (but remains for compatibility with the rest of \LaTeX)
-% because \curve{} itself formats the keys and contents properly aligned.
-% Secondly, the bibliographic environment \textbf{must} reside in its own
-% file, as any other rubric. Don't forget that if you happen to write the
-% environment manually.\par
-% \DescribeEnv{revbib}
+% support in \curve. Version 1.2 provides that. The standard |thebibliography|
+% environment is now supported along with its |\bibitem| companion. The
+% behavior is actually that of a |rubric| environment with its |\entry*|
+% companion (with an empty prefix however). This fact has two implications:
+% firstly, the argument to the environment is unused in \curve (but remains
+% for compatibility with the rest of \LaTeX) because \curve itself formats the
+% keys and contents properly aligned. Secondly, the bibliographic environment
+% \textbf{must} reside in its own file, as any other rubric. Don't forget that
+% if you happen to write the environment manually.
+%
+% \noindent\DescribeOption{openbib}
+% As of version 1.16, the \texttt{openbib} option is supported. When used,
+% bibliographic blocks appear on different lines instead of in a single
+% paragraph. Note that prior to version 1.16, this was actually the default
+% behavior, which was not quite right (the standard classes don't openbib by
+% default).
+%
+% \noindent\DescribeOption{revbib}
% As of version 1.14, it is possible to count bibliographic items in a reverse
% order, which comes in handy when you display your publications from the most
% recent to the oldest one. The \texttt{revbib} option triggers this behavior.
% Note that this also works when you use \BibTeX{} (see below).
+%
% \subsubsection{\BibTeX}
-% \DescribeMacro{\nocite}
-% \DescribeMacro{\bibliographystyle}
-% \DescribeMacro{\bibliography}
+% \DescribeMacro{\nocite}\marg{citations}\\
+% \DescribeMacro{\bibliographystyle}\marg{style}\\
+% \DescribeMacro{\bibliography}\marg{files}\\
% If you want to use \BibTeX, that's also possible of course. Do it as you
% would do in a random paper. You will probably issue a |\nocite{*}| command
-% followed by a call to |\bibliography|. In \curve, this uses the |bbl| file
-% as a rubric one.\par
-% \subsubsection{Compatibility concerns}
-% As of version 1.9, \curve{} is compatible with the |bibentry| package. Note
-% however that there is an incompatibility between |bibentry| and |hyperref|,
-% and a workaround described in the |hyperref| README file.
+% followed by a call to |\bibliography|. \curve uses the |bbl| file as a
+% rubric one.
%
-% As of version 1.12, \curve{} is compatible with the |multibbl| package.
+% \subsubsection{Compatibility concerns}
+% \begin{itemize}
+% \item |bibentry|: \curve is compatible with the |bibentry| package since
+% version 1.9. Note that there is an incompatibility between |bibentry| and
+% |hyperref| with a workaround described in the |hyperref| README file.
+% However, \curve takes care of this problem for you so you \emph{must not}
+% use the workaround described there.
+% \item |multibbl|: \curve is compatible with the |multibbl| package since
+% version 1.12.
+% \item |splitbib|: \curve is compatible with the |splitbib| package since
+% version 1.16. Note however that only one level of category is allowed
+% (categories appear as subrubrics).
+% \end{itemize}
%
% \subsection{Standard Class Features}
-%
% \subsubsection{Page Size and layout}
-% \DescribeEnv{a4paper}
-% \DescribeEnv{a5paper}
-% \DescribeEnv{b4paper}
-% \DescribeEnv{letterpaper}
-% \DescribeEnv{legalpaper}
-% \DescribeEnv{executivepaper}
-% \DescribeEnv{landscape}
+% \DescribeOption[noindex]{*paper}
+% \DescribeOption[noprint]{a4paper}
+% \DescribeOption[noprint]{a5paper}
+% \DescribeOption[noprint]{b4paper}
+% \DescribeOption[noprint]{letterpaper}
+% \DescribeOption[noprint]{legalpaper}
+% \DescribeOption[noprint]{executivepaper}
+% \DescribeOption{landscape}
% The \texttt{a4}, \texttt{a5}, \texttt{b4}, \texttt{letter}, \texttt{legal}
-% and \texttt{executive} ``paper'' options allow you to select the type of
+% and \texttt{executive} ``paper'' options allow you to select the type of
% page format you want. By default, \texttt{letterpaper} is used. The
% \texttt{landscape} options switches the horizontal and vertical settings.
-% I'm not sure why I propose this option. Nobody wants to write a \cv{} in
-% landscape mode, right?\par
+% I'm not sure why I propose this option. Nobody wants to write a \cv in
+% landscape mode, right?
%
-% \DescribeEnv{oneside}
-% \DescribeEnv{twoside}
-% As of version 1.6, \curve{} also supports the standard \texttt{oneside} and
+% \noindent\DescribeOption{oneside}
+% \DescribeOption{twoside}
+% As of version 1.6, \curve also supports the standard \texttt{oneside} and
% \texttt{twoside} class options. By default, \texttt{oneside} is used. In
% \texttt{twoside} mode, odd and even pages have a different geometry and
% headings layout.
%
% \subsubsection{Font Size}
-% \DescribeEnv{10pt}
-% \DescribeEnv{11pt}
-% \DescribeEnv{12pt}
+% \DescribeOption{10pt}
+% \DescribeOption{11pt}
+% \DescribeOption{12pt}
% The \texttt{10pt}, \texttt{11pt} and \texttt{12pt} options let you choose
% the size of the default font you want to use. By default, \texttt{10pt} is
% used.
%
% \subsubsection{Output Mode}
-% \DescribeEnv{final}
-% \DescribeEnv{draft}
+% \DescribeOption{final}
+% \DescribeOption{draft}
% In \texttt{draft} mode, a black rule will be drawn at the end of overfull
-% lines (as done by standard classes). Due to \curve{} using the
+% lines (as done by standard classes). Due to \curve using the
% \texttt{LTXtable} package (and in case \texttt{longtable} prior to version 4
% is used by it), a call to |\setlongtables| is performed in \texttt{final}
% mode. Please refer to the next section for more information on this. By
% default, \texttt{final} is used.
%
% \subsubsection{Page styles}
-% As of version 1.6, \curve{} supports the standard \LaTeX{} page style
+% \DescribeMacro{\pagestyle}\marg{style}\\
+% \DescribeMacro{\thispagestyle}\marg{style}\\
+% As of version 1.6, \curve supports the standard \LaTeX{} page style
% mechanism. Available styles are \texttt{empty}, \texttt{plain},
% \texttt{headings} and \texttt{myheadings}. These styles have their usual
% meaning, given that rubric and subrubric names are used for marking purpose
-% (the equivalent of chapters and sections in books for instance).
-% By default, the page style is \texttt{empty}.
+% (the equivalent of chapters and sections in books for instance). By default,
+% the page style is \texttt{empty}.
%
% \subsubsection{Internationalization}
-% \curve{} currently supports 12 languages via the following options:
+% \curve currently supports 12 languages via the following options:
% \texttt{english}, \texttt{french} (or \texttt{francais}), \texttt{spanish},
% \texttt{portuguese} (or \texttt{portuges}), \texttt{brazilian} (or
% \texttt{brazil}), \texttt{italian}, \texttt{german}, \texttt{ngerman},
% \texttt{dutch}, \texttt{danish}, \texttt{swedish} and \texttt{polish}. The
% \texttt{german} and \texttt{ngerman} options are currently equivalent; so
-% are the \texttt{portuguese} and \texttt{brazilian} ones.\par
+% are the \texttt{portuguese} and \texttt{brazilian} ones.
+%
% If you want a finer grain on the language-dependent parts of \curve, the
-% following macros are provided.\par
-% \DescribeMacro{\continuedname}
+% following macros are provided.
+%
+% \noindent\DescribeMacro{\continuedname}\marg{continuation text}\\
% The |\continuedname| macro takes one mandatory argument which redefines the
% continuation text output when rubrics extend across several pages. By
% default, ``\meta{space}(continued)'' is used in English. Although this might
% be of little use, it is possible to change the continuation text in the
% middle of your document, provided that you do so outside the |rubric|
-% environment.\par
-% \DescribeMacro{\listpubname}
+% environment.
+%
+% \noindent\DescribeMacro{\listpubname}\marg{title}\\
% The |\listpubname| macro takes one mandatory argument which redefines the
% title of the bibliographic section (when you use the provided bibliography
% support). By default, ``List of Publications'' is used in English. Note that
-% for compatibility with the |multibbl| and |multibib| packages, \curve{}
-% honors the existence of |\bibname| or |\refname| macros prior to
-% |\listpubname| for deciding which title to give to the bibliographic rubric.
+% for compatibility with the |multibbl| and |multibib| packages, \curve honors
+% the existence of |\bibname| or |\refname| macros prior to |\listpubname| for
+% deciding which title to give to the bibliographic rubric.
%
%
-% \section{Hints, Tricks, Tips}
+% \section{Hints, Tips'n Tricks}
% Here are some tips that I use for my own \cv. You might find them of some
-% interest.\par
+% interest.
%
% \subsection{Page Geometry}
% First of all, it is common to have very thin margins in curricula vitae.
-% \curve{} does not do anything special about this because I don't think that
+% \curve does not do anything special about this because I don't think that
% belongs to its duty. The \texttt{geometry} package comes in handy if you
% want to reduce your margins.
%
% \subsection{Vertical spacing}
-% Although they might look a bit like itemize environments, \curve{} rubrics
+% Although they might look a bit like itemize environments, \curve rubrics
% are implemented with tables. This has an important consequence: empty lines
% in rubrics do affect the vertical spacing of your document (at least for the
% time being).
@@ -644,7 +712,7 @@
%
% \subsection{The \texttt{ltx} Extension}
% Personally, I prefer to keep \texttt{.tex} for \TeX{} files, and use the
-% \texttt{ltx} extension for \LaTeX. This is supported by \curve{} which will
+% \texttt{ltx} extension for \LaTeX. This is supported by \curve which will
% actually prefer \texttt{ltx} files over \texttt{tex} ones, especially when
% including rubrics. To be more precise, suppose you are building a flavor
% \texttt{flv} of your \cv. A call to |\makerubric{foo}| will try to use the
@@ -652,10 +720,10 @@
% \texttt{foo.flv.ltx}\\
% \texttt{foo.flv.tex}\\
% \texttt{foo.ltx}\\
-% \texttt{foo.tex}\par
+% \texttt{foo.tex}
%
% \subsection{Longtable}
-% \curve{} users should be aware of the fact that the layout implementation is
+% \curve users should be aware of the fact that the layout implementation is
% based on the \texttt{LTXtable} package, which in turn is a mix of
% \texttt{tabularx} and \texttt{longtable}. This has several implications,
% most notably that when writing a rubric, you are actually inside a tabular
@@ -663,13 +731,13 @@
% \begin{itemize}
% \item You are not allowed to use the |\\| command to start a new line.
% However, you're free to use |\par| in your entries'contents instead. Note
-% that \curve{} sets |\parskip| to |0pt| so that starting a new paragraph
+% that \curve sets |\parskip| to |0pt| so that starting a new paragraph
% looks like just starting a new line.
% \item You can use |\raggedright| and |\raggedleft| in your entries.
% \item You can use |\pagebreak|, |\nopagebreak| and |\newpage| at the
% beginning of a line, just before starting a new entry.
% \item Prior to version 4, \texttt{longtable} used an alignment mechanism
-% involving calls to |\setlongtables| (see its documentation). \curve{}
+% involving calls to |\setlongtables| (see its documentation). \curve
% retains this for backward compatibility and still calls |\setlongtables|
% in final (not draft) mode. If your version of \texttt{longtable} is recent
% enough, you shouldn't be concerned by this. If it is older, you might need
@@ -679,12 +747,13 @@
% \end{itemize}
%
% \subsection{Managing Different Flavors}
-% If you maintain different flavors of your \cv{} at the same time, you
-% probably want to rebuild all of them after any modification. Since you have
-% a single skeleton file for all of them (say, \texttt{cv.tex}), the output
-% file will have the same name for all flavors (say, \texttt{cv.dvi}). This
-% can bother you if you want all flavors of your formatted \cv{} available at
-% the same time.\par
+% If you maintain different flavors of your \cv at the same time, you probably
+% want to rebuild all of them after any modification. Since you have a single
+% skeleton file for all of them (say, \texttt{cv.tex}), the output file will
+% have the same name for all flavors (say, \texttt{cv.dvi}). This can bother
+% you if you want all flavors of your formatted \cv available at the same
+% time.
+%
% To remedy this problem, I usually use the \texttt{ask} option and a
% makefile to build the different flavors and move the output file to
% flavor-specific name. Here is a typical makefile target that should clarify
@@ -700,33 +769,90 @@
% In order to implement the flavor mechanism, the \LaTeX{} macro |\input| has
% been redefined to look for ``flavored'' files first. This is actually very
% nice because you can use it if you want to make different flavors of text
-% that does not belong in rubrics.\par
-% For instance, suppose you want a special version of the subtitle of your
-% \cv{} for the flavor \texttt{flv}. Create a file called
-% \texttt{subtitle.flv.ltx} and put something like
-% ``|\subtitle{special subtitle}|'' in it. Do something similar for the
-% default subtitle. Now go to the skeleton of your \cv, and write
-% |\input{subtitle}| in the preamble. That's it. You'll have different
-% subtitles in your different \cv{} flavors.
-%
-%
-% \section{\auctex{} support}
-% \auctex{} is a powerful major mode for editing \TeX{} documents in
-% \textsf{Emacs} or \textsf{XEmacs}. In particular, it provides automatic
-% completion of macro names once they are known. \curve{} supports \auctex{}
-% by providing a style file named \texttt{curve.el} which contains \auctex{}
-% definitions for the relevant macros. This file should be installed to a
-% location where \auctex{} can find it (usually in a subdirectory of your
-% \LaTeX{} styles directory). Please refer to the \auctex{} documentation for
-% more information on this.\par
-% As of version 1.2, \curve{} has an improved \auctex{} support. Most notably,
-% the command |M-Ret| will insert an |\entry*| macro within a |rubric|
-% environment. Also, the |\makerubric| macro handling now removes both the
-% file extension and the file flavor extension.
+% that does not belong in rubrics.
+%
+% For instance, suppose you want a special version of the subtitle of your \cv
+% for the flavor \texttt{flv}. Create a file called \texttt{subtitle.flv.ltx}
+% and put something like ``|\subtitle{special subtitle}|'' in it. Do something
+% similar for the default subtitle. Now go to the skeleton of your \cv, and
+% write |\input{subtitle}| in the preamble. That's it. You'll have different
+% subtitles in your different \cv flavors.
+%
%
+% \appendix
+% \section{Appendix}
+%
+% \subsection{Frequently Asked Questions}
+% \begin{enumerate}
+% \item
+% \textbf{Is there a way to align entries across several (all) rubrics?}\\
+% Not automatically because rubrics are typeset as individual tables. There
+% are many ways to manually ``trick'' too narrow keys in order to enlarge
+% them however. As of version 1.11, \curve provides a new convenience
+% macro to do something similar: see section \ref{sec:noentry}.
+% \item
+% \textbf{How can I change the interline spacing?}\\
+% Internally, \curve uses \LaTeX{} tabular-based environments. As such,
+% you can play with |\arraystretch| to modify the space between rows.
+% \item
+% \textbf{When a page break occurs in the middle of a rubric, the same
+% alignment is kept on both pages, which might result in suboptimal
+% layout.}\\
+% This is a technical limitation of the automatic alignment computation
+% process in longtables and I don't think there will be a solution anytime
+% soon (page breaking is orthogonal to column width calculation). What you
+% can do, once your CV is finalized, is manually split the concerned rubric
+% into different ones, starting at the appropriate entries to avoid page
+% breaking in the middle.
+% \item
+% \textbf{How can I make multi-line subrubrics?}\\
+% Here are two ideas:
+% \begin{itemize}
+% \item Put your text in several consecutive subrubrics (one per line).
+% However, this might not give you the desired vertical spacing.
+% \item Probably better, put your material in a parbox:\\
+% |\subrubric{\parbox{width}{first blah blah\\next blah blah}}|\\
+% This is a bit dirty because you have to figure out a suitable width for
+% your parbox, but this will work.
+% \end{itemize}
+% \item
+% \textbf{How can I make multi-line keys?}\\
+% The trick is to temporarily change the key cell type to a paragraph one
+% (remember that we're in a tabular environment).
+% \begin{enumerate}
+% \item Recover the key formatting by doing something like this near
+% the beginning of your document:\\
+% |\makeatletter\let\mykeyfont\@keyfont\makeatother|
+% \item Use something like this where you need a multi-line key (you will
+% have to adjust the paragraph width manually):
+% \begin{verbatim}
+% \entry*[\multicolumn{1}{@{}>{\mykeyfont}p{2cm}}{%
+% long key\newline long key}]
+% Entry text. Entry text. Entry ...
+% \end{verbatim}
+% \end{enumerate}
+% \item
+% \textbf{How to deal with long keys?}\\
+% The best thing to do is to make them multi-line manually. Please refer to
+% the previous question.
+% \item
+% \textbf{Can I change the prefix locally?}\\
+% Yes and no. The |\prefix| command can only be used in the preamble or
+% between rubrics. Otherwise, there is currently no way to change the prefix
+% for a single entry. This limitation will disappear in a future release.
+% \end{enumerate}
%
-% \section{Changes}
+% \subsection{Changes}
% \begin{itemize}
+% \item[v1.16] New |\text| macro, suggested by Alexandre Duret-Lutz and Franco
+% Callegati.\\
+% Support for the \texttt{openbib} option which was implicit
+% before, reported by Vasilis Boucharas.\\
+% Fix incompatibilities with the |splitbib| package, reported by Jean
+% Taucol.\\
+% Handle the |bibentry|/|hyperref| incompatibiity directly.\\
+% Implement old font commands, letting packages using them (e.g. |fancyhdr|)
+% work correctly.
% \item[v1.15] Support for itemize environments, suggested by Mirko Hessel-von
% Molo\\
% Added some documentation about vertical spacing problems in |bbl| files,
@@ -786,7 +912,7 @@
% |<krbi01@control.auc.dk>|
% \item[v1.2] Support for standard bibliography mechanism(s)\\
% New macro |\entry*|\\
-% Improvements in \auctex{} support\\
+% Improvements in \auctex support\\
% Support for German thanks to Harald Harders |<h.harders@tu-bs.de>|\\
% Support for Spanish thanks to Agust\'in Mart\'in |<agusmba@terra.es>|
% \item[v1.1] Support for Italian thanks to Riccardo Murri
@@ -794,44 +920,56 @@
% \end{itemize}
%
%
-% \StopEventually{\par Well, I think that's it. Enjoy using \curve{}!
-% \vfill\hfill\small\packagecopyright{}.}
+% \StopEventually{\par Well, I think that's it. Enjoy using \curve!
+% \vfill\hfill\small\packagecopyright.}
%
%
-% \section{The Code}
+% \subsection{Implementation}
% First, the class announcement and the initial requirements:
% \begin{macrocode}
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{curve}[2008/02/25 v1.15
- Curriculum Vitae class for LaTeX2e]
+%<curve>\NeedsTeXFormat{LaTeX2e}
+%<*header>
+\ProvidesClass{curve}[2010/12/14 v1.16 Curriculum Vitae class for LaTeX2e]
+%</header>
+%<*curve>
\RequirePackage{ltxtable}
\RequirePackage{ifthen}
\RequirePackage{calc}
+\RequirePackage{filehook}
% \end{macrocode}
%
-% \subsection{The Rubric File}
+% \subsubsection{Rubric Files}
% We don't want to output an extra |subrubricbeforespace| if no entry is
% present before the subrubric. This is done by using an |\@beforespace|
% command which is set to |0pt| at the beginning of each rubric, and switched
-% to the proper value when an entry is added.\par
-% The |@nextentry| command is used to implement |\entry*| while maintaining
-% backward compatibility with |\entry| and |\subrubric|. A new entry or
-% a subrubric might have to close the preceding entry if it was opened using
-% the starred form.
+% to the proper value when an entry is added.
+% \begin{macro}{\@nextentry}
+% The |@nextentry| command is used to implement |\entry*| while maintaining
+% backward compatibility with |\entry| and |\subrubric|. A new entry or a
+% subrubric might have to close the preceding entry if it was opened using
+% the starred form.
% \begin{macrocode}
\gdef\@nextentry{}
% \end{macrocode}
-% \subsubsection{Entries}
-% \DescribeMacro{\keyfont}
+% \end{macro}
+%
+% \paragraph{Entries}
+% \begin{macro}{\@keyfont}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\keyfont}
+% \marg{cmds}
% \begin{macrocode}
\def\@keyfont{}
\newcommand\keyfont[1]{\gdef\@keyfont{#1}}
% \end{macrocode}
-% \DescribeMacro{\keyalignment}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\keyalignment}
+% \marg{hpos}
% \begin{macrocode}
\newcolumntype{k}{>{\@keyfont}l}
\newcommand\keyalignment[1]{%
@@ -846,15 +984,25 @@
\newcolumntype{k}{>{\@keyfont}#1}}
% \end{macrocode}
-% \DescribeMacro{\prefix}
+% \end{macro}
+% \begin{macro}{\@prefix}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\prefix}
+% \marg{cmds}
% \begin{macrocode}
\def\@prefix{\textbullet}
\newcommand\prefix[1]{\gdef\@prefix{#1}}
% \end{macrocode}
-% \DescribeMacro{\entry}
-% As of version 1.10, \curve{} can skip keys identical to the previous one, if
-% the option |skipsamekey| is used.
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@maybekey}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\@alwayskey}
+% \marg{key}
+% \begin{option}{skipsamekey}
+% As of version 1.10, \curve can skip keys identical to the previous one, if
+% the option |skipsamekey| is used.
% \begin{macrocode}
\def\@maybekey#1{%
\def\@newkey{#1}%
@@ -867,7 +1015,16 @@
\let\@key\@alwayskey
\DeclareOption{skipsamekey}{\let\@key\@maybekey}
-
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@entry}
+% \oarg{key}\marg{contents}\MacroTopsep=0pt
+% \begin{macro}{\@sentry}
+% \oarg{key}
+% \begin{macro}{\entry}
+% \begin{macrocode}
\newcommand\@entry[2][]{%
\gdef\@nextentry{}\@key{#1}%
\egroup% end of \noalign opened in \entry.
@@ -884,22 +1041,72 @@
\@ifstar{\@sentry}{\@entry}}
% \end{macrocode}
-% \DescribeMacro{\noentry}
-% This macro is a wrapper around |\kill| to manually adjust too narrow rubrics.
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@almosttextwidth}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\@text}
+% \marg{contents}
+% \begin{macro}{\@stext}
+% \begin{macro}{\text}
+% This macro wraps around |\multicol| to let people input plain text within
+% a rubric. Currently, plain text doesn't interfere with the |skipsamekey|
+% mechanism, but this choice is arguable. Note that the use of |\text*| is
+% not documented yet because it doesn't work quite right. It produces an
+% undesired space before the text and I don't understand why.
+% \begin{macrocode}
+\newlength{\@almosttextwidth}
+\AtBeginDocument{\setlength\@almosttextwidth{\textwidth-\hfuzz}}
+
+\newcommand\@text[1]{%
+ \gdef\@nextentry{}%
+ \egroup% end of \noalign opened in \text.
+ \multicolumn{3}{@{}p{\@almosttextwidth}@{}}{#1}\\}
+
+\newcommand\@stext{%
+ \gdef\@nextentry{\egroup\\\par}%
+ \egroup% end of \noalign opened in \text.
+ \multicolumn{3}{@{}p{\@almosttextwidth}@{}}\bgroup}
+
+\newcommand\text{%
+ \@nextentry
+ \noalign\bgroup\gdef\@beforespace{\subrubricbeforespace}%
+ \@ifstar{\@stext}{\@text}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\noentry}
+% \marg{key}\\
+% This macro is a wrapper around |\kill| to manually adjust too narrow
+% rubrics.
% \begin{macrocode}
\newcommand\noentry[1]{\@nextentry
\noalign{\gdef\@nextentry{}}#1&&\kill}
% \end{macrocode}
+% \end{macro}
%
-% \subsubsection{Subrubrics}
-% \DescribeMacro{\subrubricfont}
-% \DescribeMacro{\subrubricbeforespace}
-% \DescribeMacro{\subrubricspace}
+% \paragraph{Subrubrics}
+% \begin{macro}{\@subrubricfont}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\subrubricfont}
+% \marg{cmds}
% \begin{macrocode}
\def\@subrubricfont{\Large\itshape}
\newcommand\subrubricfont[1]{\gdef\@subrubricfont{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\subrubricbeforespace}
+% \MacroTopsep=0pt
+% \begin{macro}{\subrubricspace}
+% \begin{macrocode}
\newlength\subrubricbeforespace
\setlength\subrubricbeforespace{20pt}
@@ -907,11 +1114,15 @@
\setlength\subrubricspace{5pt}
% \end{macrocode}
-% \DescribeMacro{\subrubricalignment}
-% \DescribeMacro{\subrubric}
-% Note that |\@subrubricmark| is called outside the raisebox. That's because
-% otherwise, the mark would not go to the toplevel page vertical box, and
-% \TeX{} would not notice it.
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@subrubricmark}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\@@subrubric}
+% \marg{title}\\
+% Note that |\@subrubricmark| is called outside the raisebox. That's because
+% otherwise, the mark would not go to the toplevel page vertical box, and
+% \TeX{} would not notice it.
% \begin{macrocode}
\let\@subrubricmark\@gobble
@@ -921,17 +1132,32 @@
\@subrubricmark{#1}}
% \end{macrocode}
-% The normal intercolumn space between the prefix and the entry's content is
-% replaced with an unbreakable space. This causes a problem (fixed in version
-% 1.10) with the [sub]rubric alignments cl and cc when the prefix is empty,
-% because the unbreakable space in question slightly shifts the entry's
-% content to the right. If we want a proper alignment, we then have to take
-% this offset into account in the cl and cc multicolumns, for both rubrics and
-% subrubrics. The following macro implements this:
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@clcccolsep}
+% The normal intercolumn space between the prefix and the entry's content is
+% replaced with an unbreakable space. This causes a problem (fixed in
+% version 1.10) with the [sub]rubric alignments cl and cc when the prefix is
+% empty, because the unbreakable space in question slightly shifts the
+% entry's content to the right. If we want a proper alignment, we then have
+% to take this offset into account in the cl and cc multicolumns, for both
+% rubrics and subrubrics. The following macro implements this:
% \begin{macrocode}
-
\def\@clcccolsep{\hspace{\tabcolsep}\ifx\@prefix\@empty~\fi}
+% \end{macrocode}
+% \begin{macro}[noindex]{\@subrubric@*}
+% \MacroTopsep=0pt
+% \begin{macro}{\@subrubric}
+% \marg{title}
+% \begin{macro}[noprint]{\@subrubric@l}
+% \begin{macro}[noprint]{\@subrubric@c}
+% \begin{macro}[noprint]{\@subrubric@r}
+% \begin{macro}[noprint]{\@subrubric@cl}
+% \begin{macro}[noprint]{\@subrubric@cc}
+% \begin{macro}[noprint]{\@subrubric@cc}
+% \begin{macrocode}
+
\def\@subrubric@l#1{\multicolumn{3}{@{}l@{}}{\@@subrubric{#1}}}
\def\@subrubric@c#1{\multicolumn{3}{@{}c@{}}{\@@subrubric{#1}}}
\def\@subrubric@r#1{\multicolumn{3}{@{}r@{}}{\@@subrubric{#1}}}
@@ -940,6 +1166,19 @@
\let\@subrubric\@subrubric@cl
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\subrubricalignment}
+% \marg{hpos}
+% \begin{macrocode}
\newcommand\subrubricalignment[1]{%
\def\@curve@temp@a{\let\@subrubric}
\expandafter\@curve@temp@a\csname @subrubric@#1\endcsname
@@ -951,29 +1190,48 @@
Type X <return> to quit, fix the typo, and rerun LaTeX.}}
}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\subrubric}
+% \marg{title}
+% \begin{macrocode}
\newcommand\subrubric[1]{%
\@nextentry
\noalign{\gdef\@nextentry{}}%
\@subrubric{#1}\\*[\subrubricspace]\par}
% \end{macrocode}
-% \subsubsection{Rubrics}
-% The |\@almosttextwidth| length remains only for backward compatibility. It
-% is not used anymore.
-% \DescribeMacro{\rubricfont}
-% \DescribeMacro{\rubricspace}
+% \end{macro}
+%
+% \paragraph{Rubrics}
+% \begin{macro}{\@rubricfont}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\rubricfont}
+% \marg{cmds}
% \begin{macrocode}
-\newlength{\@almosttextwidth}
-\AtBeginDocument{\setlength\@almosttextwidth{\textwidth-\hfuzz}}
-
\def\@rubricfont{\Large\bfseries}
\newcommand\rubricfont[1]{\gdef\@rubricfont{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\rubricspace}
+% \begin{macrocode}
\newlength\rubricspace
\setlength\rubricspace{10pt}
% \end{macrocode}
-% \DescribeMacro{\rubricalignment}
+% \end{macro}
+% \begin{macro}{\@@rubrichead}
+% \marg{title}\MacroTopsep=0pt
+% \begin{macro}[noindex]{\@rubrichead@*}
+% \ldots
+% \begin{macro}{\@rubrichead}
+% \begin{macro}[noprint]{\@rubrichead@l}
+% \begin{macro}[noprint]{\@rubrichead@c}
+% \begin{macro}[noprint]{\@rubrichead@r}
+% \begin{macro}[noprint]{\@rubrichead@cl}
+% \begin{macro}[noprint]{\@rubrichead@cc}
% \begin{macrocode}
\def\@@rubrichead#1{\@rubricfont#1}
@@ -985,31 +1243,45 @@
\let\@rubrichead\@rubrichead@c
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\rubricalignment}
+% \marg{hpos}
+% \begin{macrocode}
\newcommand\rubricalignment[1]{%
- \def\@curve@temp@a{\let\@rubrichead}
- \expandafter\@curve@temp@a\csname @rubrichead@#1\endcsname
- \@ifundefined{@rubrichead}{%
+ \def\@curve@temp@a{\let\@rubrichead} \expandafter\@curve@temp@a\csname
+ @rubrichead@#1\endcsname \@ifundefined{@rubrichead}{%
\ClassError{curve}{Invalid rubric alignment}{%
You have called \protect\rubricalignment\space with an invalid value.%
- \MessageBreak
- Valid options include l, c, r, cl and cc.\MessageBreak
- Type X <return> to quit, fix the typo, and rerun LaTeX.}}
-}
+ \MessageBreak Valid options include l, c, r, cl and cc.\MessageBreak
+ Type X <return> to quit, fix the typo, and rerun LaTeX.}} }
% \end{macrocode}
-% \DescribeMacro{\rubricafterspace}
+% \end{macro}
+% \begin{macro}{\rubricafterspace}
% \begin{macrocode}
\newlength\rubricafterspace
\setlength\rubricafterspace{0pt}
% \end{macrocode}
-% \DescribeEnv{rubric}
-% Marking commands don't seem to work in longtable headings. So the rubric
-% mark is issued just after it.\par
-% As of version 1.7, |\raggedleft| and |\raggedright| are redefined in order
-% to work within individual entries. This redefinition simply consists in
-% removing the |\\| definition since it's not available anyway, and also to
-% remove the |\parskip| setting since it's |Opt| in the whole class.
+% \end{macro}
+% \begin{macro}{\@rubricmark}
+% \mbox{}\MacroTopsep=0pt
+% \begin{environment}{rubric}
+% \marg{title}\\
+% Marking commands don't seem to work in longtable headings. So the rubric
+% mark is issued just after it.\\
+% As of version 1.7, |\raggedleft| and |\raggedright| are redefined in order
+% to work within individual entries. This redefinition simply consists in
+% removing the |\\| definition since it's not available anyway, and also to
+% remove the |\parskip| setting since it's |Opt| in the whole class.
% \begin{macrocode}
\let\@rubricmark\@gobble
@@ -1045,16 +1317,19 @@
\global\let\nopagebreak\old@nopagebreak}
% \end{macrocode}
-% \DescribeMacro{\continuedname}
+% \end{environment}
+% \end{macro}
+% \begin{macro}{\continuedname}
+% \marg{continuation text}
% \begin{macrocode}
\newcommand\continuedname[1]{\gdef\@continuedname{#1}}
% \end{macrocode}
+% \end{macro}
%
-% \subsection{The Skeleton File}
-%
-% \subsubsection{Utilities}
-% \DescribeMacro{\today}
+% \subsubsection{Skeleton File}
+% \paragraph{Utilities}
+% \begin{macro}{\today}
% \begin{macrocode}
\def\today{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
@@ -1062,23 +1337,39 @@
\space\number\day, \number\year}
% \end{macrocode}
-% \subsubsection{Headers}
-% \DescribeMacro{\headerscale}
-% \DescribeMacro{\headerspace}
+% \end{macro}
+%
+% \paragraph{Headers}
+% \begin{macro}{\header@scale}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\headerscale}
+% \marg{scale}
% \begin{macrocode}
\def\header@scale{.5}
\newcommand\headerscale[1]{\gdef\header@scale{#1}}
\@onlypreamble\headerscale
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\headerspace}
+% \begin{macrocode}
\newlength\headerspace
\setlength\headerspace{10pt}
% \end{macrocode}
-% \DescribeMacro{\leftheader}
-% \DescribeMacro{\rightheader}
-% If the user calls |\makeheaders| without specifying headers first, an error
-% will be generated. The same applies for the title (not the subtitle), but
-% this is already managed by \LaTeX{} itself.
+% \end{macro}
+% \begin{macro}{\@leftheader}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\leftheader}
+% \marg{contents}
+% \begin{macro}{\@rightheader}
+% \mbox{}
+% \begin{macro}{\rightheader}
+% \marg{contents}\\
+% If the user calls |\makeheaders| without specifying headers first, an
+% error will be generated. The same applies for the title (not the
+% subtitle), but this is already managed by \LaTeX{} itself.
% \begin{macrocode}
\def\@leftheader{%
\ClassError{curve}{No \protect\leftheader\space given}{%
@@ -1101,9 +1392,16 @@
\@onlypreamble\rightheader
% \end{macrocode}
-% \DescribeMacro{\photoscale}
-% \DescribeMacro{\photosep}
-% \DescribeMacro{\photo}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\photoscale}
+% \marg{scale}\MacroTopsep=0pt
+% \begin{macro}{\photosep}
+% \marg{length}
+% \begin{macro}{\photo}
+% \oarg{hpos}\marg{file}
% \begin{macrocode}
\def\photo@scale{.1}
\newcommand\photoscale[1]{\gdef\photo@scale{#1}}
@@ -1125,9 +1423,16 @@
\@onlypreamble\photo
% \end{macrocode}
-% \DescribeMacro{\makeheaders}
-% These different versions of the photo inclusion command exist for proper
-% alignment of the picture itself with the left and right headers.
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\photo@width}
+% \begin{macro}[noindex]{\includephoto@*}
+% \begin{macro}[noprint]{\includephoto@t}
+% \begin{macro}[noprint]{\includephoto@c}
+% \begin{macro}[noprint]{\includephoto@b}
+% These different versions of the photo inclusion command exist for proper
+% alignment of the picture itself with the left and right headers.
% \begin{macrocode}
\newlength\photo@width
@@ -1142,14 +1447,27 @@
\def\includephoto@b{\includegraphics[width=\photo@width]{\photo@file}}
% \end{macrocode}
-% And here are the different versions of the |\makeheaders| command:
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\leftheader@width}
+% \MacroTopsep=0pt
+% \begin{macro}{\rightheader@width}
% \begin{macrocode}
\newlength\leftheader@width
\newlength\rightheader@width
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% And here are the different versions of the |\makeheaders| command:
+% \begin{macro}{\makeheaders@l}
+% \marg{vpos}
+% \begin{macrocode}
\def\makeheaders@l#1{%
- \setlength\photo@width{\photo@scale\textwidth}
- \setlength\leftheader@width{%
+ \setlength\photo@width{\photo@scale\textwidth} \setlength\leftheader@width{%
(\textwidth - \photo@width - \photosep) * \real{\header@scale}}
\setlength\rightheader@width{%
\textwidth - \photo@width - \photosep - \leftheader@width}
@@ -1157,6 +1475,11 @@
\parbox[#1]{\leftheader@width}{\@leftheader}%
\parbox[#1]{\rightheader@width}{\raggedleft\@rightheader}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\makeheaders@c}
+% \marg{vpos}
+% \begin{macrocode}
\def\makeheaders@c#1{%
\setlength\photo@width{\photo@scale\textwidth}
\setlength\leftheader@width{(\textwidth - \photo@width) * \real{.5}}
@@ -1165,6 +1488,11 @@
\parbox[#1]{\photo@width}{\includephoto@}%
\parbox[#1]{\rightheader@width}{\raggedleft\@rightheader}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\makeheaders@r}
+% \marg{vpos}
+% \begin{macrocode}
\def\makeheaders@r#1{%
\setlength\photo@width{\photo@scale\textwidth}
\setlength\leftheader@width{%
@@ -1175,12 +1503,22 @@
\parbox[#1]{\rightheader@width}{\raggedleft\@rightheader}%
\parbox[#1]{\photo@width + \photosep}{\hspace\photosep\includephoto@}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\makeheaders@}
+% \marg{vpos}
+% \begin{macrocode}
\def\makeheaders@#1{%
\setlength\leftheader@width{\header@scale\textwidth}%
\setlength\rightheader@width{\textwidth - \leftheader@width}%
\parbox[#1]{\leftheader@width}{\@leftheader}%
\parbox[#1]{\rightheader@width}{\raggedleft\@rightheader}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\makeheaders}
+% \oarg{vpos}
+% \begin{macrocode}
\newcommand\makeheaders[1][c]{%
\ifthenelse{\equal{#1}{t}}{}{%
\ifthenelse{\equal{#1}{b}}{}{%
@@ -1193,9 +1531,13 @@
\par\vspace\headerspace}
% \end{macrocode}
-% \subsubsection{Titles}
-% \DescribeMacro{\titlefont}
-% \DescribeMacro{\titlespace}
+% \end{macro}
+%
+% \paragraph{Titles}
+% \begin{macro}{\@titlefont}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\titlefont}
+% \marg{cmds}
% \begin{macrocode}
\@onlypreamble\title
@@ -1203,23 +1545,47 @@
\newcommand\titlefont[1]{\gdef\@titlefont{#1}}
\@onlypreamble\titlefont
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\titlespace}
+% \begin{macrocode}
\newlength\titlespace
\setlength\titlespace{0pt}
% \end{macrocode}
-% \DescribeMacro{\subtitle}
-% \DescribeMacro{\subtitlefont}
+% \end{macro}
+% \begin{macro}{\@subtitle}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\subtitle}
+% \marg{title}
% \begin{macrocode}
\let\@subtitle\@undefined
\newcommand\subtitle[1]{\gdef\@subtitle{#1}}
\@onlypreamble\subtitle
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@subtitlefont}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\subtitlefont}
+% \marg{cmds}
+% \begin{macrocode}
\def\@subtitlefont{\huge\itshape}
\newcommand\subtitlefont[1]{\gdef\@subtitlefont{#1}}
\@onlypreamble\subtitlefont
% \end{macrocode}
-% \DescribeMacro{\titlealignment}
+% \end{macro}
+% \end{macro}
+% \begin{macro}[noindex]{\@titlealignment@*}
+% \MacroTopsep=0pt
+% \begin{macro}{\@title@lignment}
+% \begin{macro}[noprint]{\@titlealignment@l}
+% \begin{macro}[noprint]{\@titlealignment@c}
+% \begin{macro}[noprint]{\@titlealignment@r}
+% \begin{macro}[noprint]{\@titlealignment}
% \begin{macrocode}
\def\@titlealignment@l{\raggedright}
\def\@titlealignment@c{\centering}
@@ -1227,6 +1593,16 @@
\let\@title@lignment\@titlealignment@c
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@titlealignment}
+% \marg{src}\marg{hpos}
+% \begin{macrocode}
\def\@titlealignment#1#2{%
\def\@curve@temp@a{\let\@title@lignment}
\expandafter\@curve@temp@a\csname @titlealignment@#2\endcsname
@@ -1239,15 +1615,24 @@
Type X <return> to quit, fix the typo, and rerun LaTeX.}}
}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\titlealignment}
+% \marg{hpos}
+% \begin{macrocode}
\newcommand\titlealignment[1]{\@titlealignment{titlealignment}{#1}}
% \end{macrocode}
-% \DescribeMacro{\maketitle}
+% \end{macro}
+% \begin{macro}{\@@maketitle}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\@maketitle}
+% \oarg{hpos}
+% \begin{macro}{\maketitle}
% \begin{macrocode}
\def\@@maketitle{%
- \bgroup\trivlist\@title@lignment\item\relax
- {\@titlefont\@title}
- \ifx\@subtitle\@undefined\else\\\@subtitlefont\@subtitle\fi
+ \bgroup\trivlist\@title@lignment\item\relax {\@titlefont\@title}
+ \ifx\@subtitle\@undefined\else\\\@subtitlefont\@subtitle\fi
\endtrivlist\egroup
\vspace\titlespace}
@@ -1257,11 +1642,16 @@
\@maketitle\@@maketitle}
% \end{macrocode}
-% \subsubsection{Rubric Inclusion}
-% \DescribeMacro{\flavor}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{Rubric Inclusion}
+% \begin{macro}{\@flavor}
+% \MacroTopsep=0pt
+% \begin{option}{ask}
% \begin{macrocode}
-\let\@flavor\empty
-\newcommand\flavor[1]{\gdef\@flavor{#1}
+\let\@flavor\empty \newcommand\flavor[1]{\gdef\@flavor{#1}
\ifx\@flavor\empty\else\edef\@flavor{.\@flavor}\fi}
\DeclareOption{ask}{%
@@ -1269,7 +1659,13 @@
\ifx\@flavor\empty\else\edef\@flavor{.\@flavor}\fi}
% \end{macrocode}
-% |\input| is redefined in order to deal with flavors and the |ltx| extension.
+% \end{option}
+% \end{macro}
+% \begin{macro}{\@curveinput}
+% \marg{file}\MacroTopsep=0pt
+% \begin{macro}{\input}
+% |\input| is redefined in order to deal with flavors and the |ltx|
+% extension.
% \begin{macrocode}
\def\@curveinput#1{%
\IfFileExists{#1\@flavor.ltx}{\@iinput{#1\@flavor.ltx}}{%
@@ -1277,97 +1673,170 @@
\IfFileExists{#1.ltx}{\@iinput{#1.ltx}}{%
\IfFileExists{#1.tex}{\@iinput{#1.tex}}{%
\@iinput{#1}}}}}}
-
\renewcommand\input{\@ifnextchar\bgroup\@curveinput\@@input}
% \end{macrocode}
-% \DescribeMacro{\makerubric}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\makerubric}
+% \marg{name}
% \begin{macrocode}
\newcommand\makerubric[1]{\LTXtable{\linewidth}{#1}}
% \end{macrocode}
-% \subsubsection{Bibliography}
+% \end{macro}
+%
+% \paragraph{Bibliography}
+% In case |splitbib| is loaded, we require it to export to the sbb file. It is
+% simpler to make \curve compatible with it that way.
+% \begin{macrocode}
+\PassOptionsToPackage{export}{splitbib}
+
+% \end{macrocode}
+%
+% \begin{option}{openbib}
+% \begin{macrocode}
+\let\newblock\empty
+\DeclareOption{openbib}{\let\newblock\par}
+
+% \end{macrocode}
+% \end{option}
+% \begin{option}{revbib}
+% \begin{counter}{bibcount}
+% \begin{counter}{bibtotal}
+% \begin{conditional}{curve@revbib}
% \begin{macrocode}
-\let\newblock\par
\newcounter{bibcount}
\newcounter{bibtotal}
-
\newif\ifcurve@revbib\curve@revbibfalse
+\AtEndDocument{
+ \if@filesw
+ \immediate\write\@auxout{\string\setcounter{bibtotal}{\thebibcount}}%
+ \fi}
\DeclareOption{revbib}{\curve@revbibtrue}
% \end{macrocode}
-% \DescribeMacro{\bibliography}
-% Define |\bibliography| to issue a |\makerubric| call on the |bbl| file. As
-% of version 1.12, handle |multibbl| syntax if the package is loaded.
-% \begin{macrocode}
-\AtBeginDocument{
- \@ifpackageloaded{multibbl}{
- %% multibbl version
- \def\bibliography#1#2#3{%
- \@ifundefined{#1@auxfile}{}{\expandafter\immediate%
- \write\csname #1@auxfile\endcsname{\string\bibdata{#2}}}%
- \def\bibname{#3}%
- \def\refname{#3}%
- \IfFileExists{#1.bbl}{\makerubric{#1.bbl}}{%
- \typeout{No file #1.bbl.}}}
- }{ %% standard version
- \def\bibliography#1{%
- \if@filesw
- \immediate\write\@auxout{\string\bibdata{#1}}%
- \fi
- \IfFileExists{\jobname.bbl}{\makerubric{\jobname.bbl}}{%
- \typeout{No file \jobname.bbl.}}}
- }
-}
+% \end{conditional}
+% \end{counter}
+% \end{counter}
+% \end{option}
+% \begin{macro}{\@listpubname}
+% \mbox{}\MacroTopsep=0pt
+% \begin{macro}{\listpubname}
+% \marg{title}
+% \begin{macrocode}
+\newcommand\listpubname[1]{\gdef\@listpubname{#1}}
% \end{macrocode}
-% \DescribeMacro{\bibitem}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@curve@input@}
+% \marg{file}\\
+% Emulation of |\@input@| for bibliographic inclusion:
+% \begin{macrocode}
+\def\@curve@input@#1{%
+ \IfFileExists{#1}{\makerubric{#1}}{\typeout{No file #1.}}}
+
+% \end{macrocode}
+% \end{macro}
% Redefine |\bibitem| and its internal implementation to behave like |\entry|.
-%
-% Do this late to overwrite a possible |hyperref| redefinition back again (it
-% is arguable whether we should preserve |hyperref| functionality or not, but
-% the current answer is no).
-%
-% One exception: if |bibentry| is used, don't get in the way. It redefines its
-% own bibliographic environment and stuff.
-% \begin{macrocode}
-\AtBeginDocument{
- \@ifpackageloaded{bibentry}{}{
- \def\@lbibitem[#1]#2{\@sentry[\@biblabel{#1}]%
- \if@filesw{%
- \let\protect\noexpand%
- \immediate\write\@auxout{\string\bibcite{#2}{#1}}}
- \fi%
- \ignorespaces}
- \def\@bibitem#1{\stepcounter{bibcount}%
- \@sentry[\@biblabel{\ifcurve@revbib\thebibtotal\else\thebibcount\fi}]%
- \ifcurve@revbib\addtocounter{bibtotal}{-1}\fi%
- \if@filesw%
- \immediate\write\@auxout{\string\bibcite{#1}{\thebibcount}}%
- \fi%
- \ignorespaces}
- \renewcommand\bibitem{%
- %% #### FIXME: Dirty code duplication from \entry
- \@nextentry
- \noalign\bgroup\gdef\@beforespace{\subrubricbeforespace}%
- \@ifnextchar[%]
- \@lbibitem\@bibitem}
- }
-}
+% \begin{macro}{\@curveltx@lbibitem}
+% \oarg{label}\marg{ref}\MacroTopsep=0pt
+% \begin{macro}{\@curve@lbibitem}
+% \ldots
+% \begin{macro}{\@lbibitem}
+% \begin{macrocode}
+\let\@curveltx@lbibitem\@lbibitem
+\def\@curve@lbibitem[#1]#2{\@sentry[\@biblabel{#1}]%
+ \if@filesw
+ {\let\protect\noexpand%
+ \immediate\write\@auxout{\string\bibcite{#2}{#1}}}%
+ \fi%
+ \ignorespaces}
+\let\@lbibitem\@curve@lbibitem
-\AtEndDocument{%
- \if@filesw%
- \immediate\write\@auxout{\string\setcounter{bibtotal}{\thebibcount}}%
- \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@curveltx@bibitem}
+% \marg{ref}\MacroTopsep=0pt
+% \begin{macro}{\@curve@bibitem}
+% \ldots
+% \begin{macro}{\@bibitem}
+% \begin{macrocode}
+\let\@curveltx@bibitem\@bibitem
+\def\@curve@bibitem#1{\stepcounter{bibcount}%
+ \@sentry[\@biblabel{\ifcurve@revbib\thebibtotal\else\thebibcount\fi}]%
+ \ifcurve@revbib\addtocounter{bibtotal}{-1}\fi%
+ \if@filesw
+ \immediate\write\@auxout{\string\bibcite{#1}{\thebibcount}}%
+ \fi%
+ \ignorespaces}
+\let\@bibitem\@curve@bibitem
% \end{macrocode}
-% \DescribeMacro{\listpubname}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@curveltxbibitem}
+% \MacroTopsep=0pt
+% \begin{macro}{\@curvebibitem}
+% \begin{macro}{\bibitem}
% \begin{macrocode}
-\newcommand\listpubname[1]{\gdef\@listpubname{#1}}
+\let\@curveltxbibitem\bibitem
+\def\@curvebibitem{%
+ %% #### FIXME: Dirty code duplication from \entry.
+ \@nextentry
+ \noalign\bgroup\gdef\@beforespace{\subrubricbeforespace}%
+ \@ifnextchar[%]
+ \@lbibitem\@bibitem}
+\let\bibitem\@curvebibitem
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Special cases:
+% \begin{itemize}
+% \item |bibentry| (version 1.9): restore standard definitions because
+% bibentry just inlines bibliographic contents.
+% \begin{macrocode}
+\AtBeginOfFile{bibentry.sty}{
+ \let\@lbibitem\@curveltx@lbibitem
+ \let\@bibitem\@curveltx@bibitem
+ \let\bibitem\@curveltxbibitem}
+
+% \end{macrocode}
+% \item |splitbib| (version 1.16): restore standard definitions because ours
+% are used only as part of the |\endthebibliography| redefinition.
+% \begin{macrocode}
+\AtBeginOfFile{splitbib.sty}{
+ \let\@lbibitem\@curveltx@lbibitem
+ \let\@bibitem\@curveltx@bibitem
+ \let\bibitem\@curveltxbibitem}
% \end{macrocode}
-% \DescribeEnv{thebibliography}
-% Note that |bibentry| overrides this definition.
+% \item |hyperref|: restore whatever previous behavior we had. It is arguable
+% whether we should preserve |hyperref|'s functionality, but this answer is
+% no, at least for the time being. Note that we assume that |hyperref| is
+% loaded late in the process. Also, |hyperref| does not affect |\bibitem|.
+% \begin{macrocode}
+\AtBeginOfFile{hyperref.sty}{
+ \let\@curveprevious@lbibitem\@lbibitem
+ \let\@curveprevious@bibitem\@bibitem}
+\AtEndOfFile{hyperref.sty}{
+ \let\@lbibitem\@curveprevious@lbibitem
+ \let\@bibitem\@curveprevious@bibitem}
+
+% \end{macrocode}
+% \end{itemize}
+% \begin{environment}{thebibliography}
+% \marg{key}\\
+% |bibentry| overrides this definition in its own group in |\BR@nobib|, but
+% this is in fact okay because it's not supposed to print anything. The same
+% goes for |splitbib| which saves this definition and restores it when it
+% actually matters.
% \begin{macrocode}
\newenvironment{thebibliography}[1]{%
% \end{macrocode}
@@ -1389,7 +1858,258 @@
}
% \end{macrocode}
-% \subsection{Language Processing}
+% \end{environment}
+% \begin{macro}{\@curveltxbibliography}
+% \marg{bibs}\MacroTopsep=0pt
+% \begin{macro}{\bibliography}
+% \ldots\\
+% Define |\bibliography| to issue a |\makerubric| call on the |bbl| file.
+% \begin{macrocode}
+\let\@curveltxbibliography\bibliography
+\def\bibliography#1{%
+ \if@filesw
+ \immediate\write\@auxout{\string\bibdata{#1}}%
+ \fi%
+ \@curve@input@{\jobname.bbl}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% Special cases:
+% \begin{itemize}
+% \item |multibbl| (version 1.12): merge definitions.
+% \begin{macrocode}
+\AtEndOfFile{multibbl.sty}{
+ \def\bibliography##1##2##3{%
+ \@ifundefined{##1@auxfile}{}{%
+ \expandafter\immediate\write\csname ##1@auxfile\endcsname%
+ {\string\bibdata{##2}}}%
+ \def\bibname{##3}%
+ \def\refname{##3}%
+ \@curve@input@{##1.bbl}}}
+
+% \end{macrocode}
+% \item |splitbib|: restore original version because ours are used only as
+% part of the |\endthebibliography| redefinition.
+% \begin{macrocode}
+\AtBeginOfFile{splitbib.sty}{
+ \let\bibliography\@curveltxbibliography}
+
+% \end{macrocode}
+% \end{itemize}
+% Apart from that, completing |splitbib| support is a pain in the ass. We need
+% to do two things. First, redefine the abominable |\NMSB@writeentry| in order
+% to output a correctly typeset rubric (titles are converted to subrubrics for
+% instance). Next we need to redefine |\endthebibliography| to restore our own
+% definitions for |\bibitem|, |\@bibitem| and |\@lbibitem|, and make it use
+% |\@curve@input@| instead of |\@input@|.
+% \begin{macrocode}
+\AtEndOfFile{splitbib.sty}{
+ \def\NMSB@writeentry##1##2##3##4##5,{\ifx\relax ##5\relax
+ \else
+ \def\NMSB@currcat{##1##2##3##4}%
+ \def\NMSB@currcatlevelone{##1##2}%
+ \ifx\NMSB@currcatlevelone\NMSB@prevcatlevelone\else
+ \expandafter\ifx\csname NMSBtitle@\NMSB@currcatlevelone
+ \endcsname\relax
+ \else
+ \if@filesw
+ \expandafter\let\expandafter\NMSB@tempentry
+ \csname NMSBtitle@\NMSB@currcatlevelone\endcsname
+ \edef\NMSB@tempentry{\@backslashchar subrubric{\NMSB@tempentry}}
+ \expandafter\NMSB@writecatbib\expandafter{\NMSB@tempentry}
+ \expandafter\ifx\csname
+ NMSBcomment@\NMSB@currcatlevelone\endcsname\relax
+ \else
+ \immediate\write\NMSB@catbib{\string\vskip2ex^^J%
+ \string\hspace{-\leftmargin}\string\relax^^J%
+ \string\begin{minipage}{\textwidth}^^J%
+ \string\addtolength\string\parindent{20pt}^^J%
+ \string\noindent}
+ \expandafter\let\expandafter\NMSB@tempentry
+ \csname NMSBcomment@\NMSB@currcatlevelone\endcsname
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \NMSB@tempentry^^J}%
+ \immediate\write\NMSB@catbib{\string\end{minipage}^^J%
+ \string\par\string\addpenalty{\NMSB@penalty}
+ \string\vskip2ex}
+ \fi
+ \fi
+ \fi
+ \xdef\NMSB@prevcatlevelone{##1##2}%
+ \ifnum\theSBresetdepth>0\relax
+ \setcounter{\@listctr}{0}%
+ \fi
+ \expandafter\ifx\csname NMSBprefix@\NMSB@prevcatlevelone
+ \endcsname\relax
+ \NMSB@currprefixlevelonetok{\relax}%
+ \else
+ \expandafter\expandafter\expandafter\NMSB@currprefixlevelonetok
+ \expandafter\expandafter\expandafter{%
+ \csname NMSBprefix@\NMSB@prevcatlevelone\endcsname}%
+ \fi
+ \fi
+ \ifx\NMSB@currcat\NMSB@prevcat\else
+ \ifnum\NMSB@currcat=9999\else
+ \expandafter\ifx\csname NMSBtitle@\NMSB@currcat\endcsname
+ \relax
+ \else
+ \if@filesw
+ \immediate\write\NMSB@catbib{%
+ \string\par\string\addpenalty{-\NMSB@halfpenalty}%
+ \string\relax^^J%
+ \string\item[]%
+ \string\SBsubtitle}%
+ \expandafter\let\expandafter\NMSB@tempentrya
+ \csname NMSBtitle@\NMSB@currcatlevelone\endcsname
+ \expandafter\let\expandafter\NMSB@tempentryb
+ \csname NMSBtitle@\NMSB@currcat\endcsname
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \expandafter{\NMSB@tempentrya}}
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \expandafter{\NMSB@tempentryb}}
+ \immediate\write\NMSB@catbib{\string\relax^^J%
+ \string\par\string\addpenalty{\NMSB@penalty}%
+ \string\relax}%
+ \expandafter\ifx\csname
+ NMSBcomment@\NMSB@currcat\endcsname\relax
+ \else
+ \immediate\write\NMSB@catbib{\string\vskip2ex^^J%
+ \string\hspace{-\leftmargin}\string\relax^^J%
+ \string\begin{minipage}{\textwidth}^^J%
+ \string\addtolength\string\parindent{20pt}^^J%
+ \string\noindent}
+ \expandafter\let\expandafter\NMSB@tempentry
+ \csname NMSBcomment@\NMSB@currcat\endcsname
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \NMSB@tempentry^^J}%
+ \immediate\write\NMSB@catbib{\string\end{minipage}^^J%
+ \string\par\string\addpenalty{\NMSB@penalty}%
+ \string\vskip2ex}
+ \fi
+ \fi
+ \fi
+ \fi
+ \xdef\NMSB@prevcat{##1##2##3##4}%
+ \ifnum\theSBresetdepth>1\relax
+ \setcounter{\@listctr}{0}%
+ \fi
+ \expandafter\ifx\csname NMSBprefix@\NMSB@currcat\endcsname\relax
+ \expandafter\NMSB@currprefixtok\expandafter{%
+ \the\NMSB@currprefixlevelonetok}%
+ \else
+ \expandafter\expandafter\expandafter\NMSB@currprefixtok
+ \expandafter\expandafter\expandafter{%
+ \csname NMSBprefix@\NMSB@currcat\endcsname}
+ \fi
+ \fi
+ \expandafter\ifx\csname NMSBlabel@##5\endcsname\relax
+ \if@filesw
+ \stepcounter\@listctr
+ \expandafter\ifx\expandafter\relax\the\NMSB@currprefixtok
+ \def\NMSB@tempentry{}%
+ \else
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\NMSB@tempentry
+ \expandafter\expandafter\expandafter{%
+ \expandafter\the\expandafter\NMSB@currprefixtok
+ \the\value{\@listctr}}%
+ \edef\NMSB@tempentry{[\NMSB@tempentry]}
+ \fi
+ \edef\NMSB@tempentry{%
+ \@backslashchar bibitem%
+ \NMSB@tempentry{\csname NMSBkey@##5\endcsname}}%
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \NMSB@tempentry}
+ \expandafter\let\expandafter\NMSB@tempentry
+ \csname NMSBentry@##5\endcsname%
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \NMSB@tempentry}
+ \fi
+ \setbox\@tempboxa=\hbox{\the\NMSB@currprefixtok\the\value{\@listctr}}%
+ \ifdim\NMSB@reallylongest<\wd\@tempboxa
+ \setlength{\NMSB@reallylongest}{\wd\@tempboxa}%
+ \xdef\NMSB@reallylongestlabel{%
+ \expandafter\ifx\expandafter\relax\the\NMSB@currprefixtok
+ \else\the\NMSB@currprefixtok\fi\the\value{\@listctr}}%
+ \fi
+ \else
+ \if@filesw
+ \immediate\write\NMSB@catbib{%
+ \string\bibitem}
+ \expandafter\let\expandafter\NMSB@tempentry
+ \csname NMSBlabel@##5\endcsname
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \expandafter[\NMSB@tempentry]}%
+ \immediate\write\NMSB@catbib{%
+ {\csname NMSBkey@##5\endcsname}}%
+ \expandafter\let\expandafter\NMSB@tempentry
+ \csname NMSBentry@##5\endcsname%
+ \expandafter\NMSB@writecatbib\expandafter{%
+ \NMSB@tempentry^^J^^J}
+ \fi
+ \setbox\@tempboxa=\hbox{\csname NMSBlabel@##5\endcsname}%
+ \ifdim\NMSB@reallylongest<\wd\@tempboxa
+ \setlength{\NMSB@reallylongest}{\wd\@tempboxa}%
+ \expandafter\let\expandafter\NMSB@reallylongestlabel\csname
+ NMSBlabel@##5\endcsname
+ \fi
+ \fi
+ \fi
+ }
+ \def\endthebibliography{%
+ \usecounter{enumiv}%
+ \edef\NMSB@sortedvaluelist{%
+ \expandafter\NMSBsortlt\expandafter{\NMSB@valuelist}}%
+ \expandafter\NMSB@writelist\expandafter{\NMSB@sortedvaluelist}%
+ \if@filesw
+ \immediate\write\NMSB@catbib{%
+ \string\end{thebibliography}}
+ \immediate\closeout\NMSB@catbib
+ \fi
+ \begingroup
+ \ifNMSB@newchap\else
+ \@ifundefined{chapter}{\def\section####1####2{}}{%
+ \def\chapter####1####2{}}%
+ \fi
+ \let\thebibliography\@NMSBorig@thebibliography
+ \let\endthebibliography\@NMSBorig@endthebibliography
+ \let\bibitem\@curvebibitem
+ \let\@lbibitem\@curve@lbibitem
+ \let\@bibitem\@curve@bibitem
+ \@curve@input@{\jobname.sbb}
+ \endgroup
+ \ifx\NMSB@missingcat\NMSB@empty\else
+ \expandafter\NMSB@warnnocateg\NMSB@missingcat\end
+ \fi
+ \ifNMSB@strict
+ \ifx\NMSB@doublecat\NMSB@empty\else
+ \expandafter\NMSB@warndblcateg\NMSB@doublecat\end
+ \fi
+ \fi
+ \ifdim\NMSB@reallylongest=\NMSB@longest\relax\else
+ \NMSB@warnwronglongest
+ \fi}}
+
+% \end{macrocode}
+%
+% \subsubsection{Language Processing}
+% \begin{lang}{english}
+% \MacroTopsep=0pt
+% \begin{lang}{french}
+% \begin{lang}{francais}
+% \begin{lang}{spanish}
+% \begin{lang}{portuges}
+% \begin{lang}{portugese}
+% \begin{lang}{brazil}
+% \begin{lang}{brazilian}
+% \begin{lang}{italian}
+% \begin{lang}{german}
+% \begin{lang}{ngerman}
+% \begin{lang}{dutch}
+% \begin{lang}{danish}
+% \begin{lang}{swedish}
+% \begin{lang}{polish}
% \begin{macrocode}
\DeclareOption{english}{%
\continuedname{~(continued)}
@@ -1433,7 +2153,31 @@
\listpubname{Publikacje}}
% \end{macrocode}
-% \subsection{Standard Class Processing}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+% \end{lang}
+%
+% \subsubsection{Standard Class Processing}
+% \begin{option}[noindex]{*paper}
+% \begin{option}{landscape}
+% \begin{option}[noprint]{a4paper}
+% \begin{option}[noprint]{a5paper}
+% \begin{option}[noprint]{b5paper}
+% \begin{option}[noprint]{letterpaper}
+% \begin{option}[noprint]{legalpaper}
+% \begin{option}[noprint]{executivepaper}
% \begin{macrocode}
\DeclareOption{a4paper}{
\setlength\paperheight{297mm}
@@ -1458,18 +2202,48 @@
\setlength\paperheight{\paperwidth}
\setlength\paperwidth{\@tempdima}}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \begin{option}{10pt}
+% \begin{option}{11pt}
+% \begin{option}{12pt}
+% \begin{macrocode}
\DeclareOption{10pt}{\def\@ptsize{0}}
\DeclareOption{11pt}{\def\@ptsize{1}}
\DeclareOption{12pt}{\def\@ptsize{2}}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \begin{option}{oneside}
+% \begin{option}{twoside}
+% \begin{macrocode}
\DeclareOption{oneside}{\@twosidefalse\@mparswitchfalse}
\DeclareOption{twoside}{\@twosidetrue\@mparswitchtrue}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \begin{option}{final}
+% \begin{option}{draft}
+% \begin{macrocode}
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
\DeclareOption{final}{%
\setlength\overfullrule{0pt}
\setlongtables}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \begin{macrocode}
\ExecuteOptions{english,letterpaper,10pt,oneside,final}
\ProcessOptions
@@ -1539,9 +2313,21 @@
\let\@subrubricmark\@gobble
}
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+
+%</curve>
% \end{macrocode}
% ^^A \PrintChanges
-% ^^A \PrintIndex
+% \makeatletter{\let\markboth\@gobbletwo\PrintIndex}\makeatother
% \Finale
%
+% ^^A Local variables:
+% ^^A eval : (add-hook 'TeX-update-style-hook (lambda () (doxitems "option" "counter" "length" "lang" "if")) nil t)
+% ^^A End:
% ^^A curve.dtx ends here.
diff --git a/Master/texmf-dist/source/latex/curve/curve.ins b/Master/texmf-dist/source/latex/curve/curve.ins
index db3bbcfbfda..12fb9b0b2d8 100644
--- a/Master/texmf-dist/source/latex/curve/curve.ins
+++ b/Master/texmf-dist/source/latex/curve/curve.ins
@@ -1,11 +1,11 @@
%%% curve.ins --- Installation file for CurVe -*- mode: LaTeX -*-
-%% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007 Didier Verna.
+%% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2010 Didier Verna
%% Author: Didier Verna <didier@lrde.epita.fr>
%% Maintainer: Didier Verna <didier@lrde.epita.fr>
%% Created: Thu Dec 10 16:04:01 1998
-%% Last Revision: Tue Jun 12 11:04:29 2007
+%% Last Revision: Tue Nov 30 18:36:08 2010
%% This file is part of CurVe.
@@ -29,12 +29,14 @@
\NeedsTeXFormat{LaTeX2e}
\input docstrip.tex
-\keepsilent
+\InputIfFileExists{ltxpkg.tex}{}{}
\askforoverwritefalse
+\keepsilent
\preamble
^^J^^J
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Didier Verna^^J
+Copyright (C) 2010 Didier Verna^^J
This file is part of CurVe.^^J
CurVe may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.1
@@ -47,27 +49,9 @@ CurVe consists of the files listed in the file `README'.^^J
\endpreamble
\catcode`\¡=14
-\generate{\file{curve.cls}{\from{curve.dtx}{}}}
-
-\Msg{}
-\Msg{,----------}
-\Msg{|}
-\Msg{| You have two more things to do to finish the installation:}
-\Msg{|}
-\Msg{| * Typeset the documentation by running LaTeX on the file `curve.dtx'.}
-\Msg{| * Install `curve.cls' and `curve.dvi' anywhere you see fit.}
-\Msg{|}
-\Msg{| If you're an AUC-TeX user, you can also install the file `curve.el' in}
-\Msg{| a suitable AUC-TeX style directory.}
-\Msg{|}
-\Msg{| Once you have installed the package, you might also want to process}
-\Msg{| the example file cv.tex. This will give you an idea of what a non}
-\Msg{| customized CV looks like with CurVe.}
-\Msg{|}
-\Msg{| Have fun!}
-\Msg{|}
-\Msg{`----------}
-\Msg{}
+\generate{
+ \file{header.inc}{\from{curve.dtx}{header}}
+ \file{curve.cls}{\from{curve.dtx}{header,curve}}}
\endbatchfile