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