diff options
author | Karl Berry <karl@freefriends.org> | 2010-12-14 23:18:34 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-12-14 23:18:34 +0000 |
commit | 27de50ad58993af1b9751d0f2ef6691f692304ca (patch) | |
tree | d28573f8e28025f3d7f5a66969956d9ff588b8f3 | |
parent | b8b55a100110782bb066a4471211ecb691e2399e (diff) |
curve 1.16 (15dec10)
git-svn-id: svn://tug.org/texlive/trunk@20745 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/latex/curve/NEWS | 14 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/curve/README | 63 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/curve/THANKS | 13 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/curve/curve.pdf | bin | 184285 -> 279924 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/curve/examples/Makefile | 70 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/curve/examples/bib.bib | 68 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/curve/examples/bib.tex | 55 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/curve/examples/raw.tex (renamed from Master/texmf-dist/doc/latex/curve/cv.tex) | 29 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/curve/examples/rubric.tex (renamed from Master/texmf-dist/doc/latex/curve/rubric.tex) | 38 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/curve/header.inc | 46 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/curve/curve.dtx | 1892 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/curve/curve.ins | 32 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/curve/curve.cls | 375 |
13 files changed, 1990 insertions, 705 deletions
diff --git a/Master/texmf-dist/doc/latex/curve/NEWS b/Master/texmf-dist/doc/latex/curve/NEWS index f74f3701610..f366dcedb15 100644 --- a/Master/texmf-dist/doc/latex/curve/NEWS +++ b/Master/texmf-dist/doc/latex/curve/NEWS @@ -18,6 +18,20 @@ version 1999/06/01 or later. CurVe consists of the files listed in the file `README'. +* Version 1.16 +============== +** An examples directory +** New \text macro +to insert plain text in the middle of rubrics, +suggested by Alexandre Duret-Lutz and Franco Callegati. +** Support for openbib option +which was implicit before, reported by Vasilis Boucharas. +** Fix incompatibilities with the splitbib package +reported by Jean Taucol. +** Handle the bibentry/hyperref incompatibility directly +** Implement old font commands +letting packages using them (e.g. fancyhdr) work correctly + * Version 1.15 ============== ** Support for itemize environments diff --git a/Master/texmf-dist/doc/latex/curve/README b/Master/texmf-dist/doc/latex/curve/README index f4c1f4d00fb..835a5168e8c 100644 --- a/Master/texmf-dist/doc/latex/curve/README +++ b/Master/texmf-dist/doc/latex/curve/README @@ -2,7 +2,7 @@ ABOUT CURVE -Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007 Didier Verna +Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2010 Didier Verna This file is part of CurVe. @@ -16,53 +16,66 @@ version 1999/06/01 or later. CurVe consists of the following files: -- README (this file) - NEWS -- curve.ins +- README (this file) +- THANKS - curve.dtx - curve.el +- curve.ins +- curve.pdf - cv.tex - rubric.tex -- THANKS * Description ============= -CurVe is a class package 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, repeating the titles etc), -which is usually the most painful part of CV writing. Another nice feature of -CurVe is its ability to manage different CV "flavors" simultaneously. It is in -fact often the case that you want to maintain slightly divergent versions of -your CV at the same time, in order to emphasize on different aspects of your -background. CurVe also comes with support for AUC-TeX. +CurVe is a Curriculum Vitae class package for LaTeX2e. It provides you with a +set of commands to create rubrics, entries in these rubrics etc. CurVe will +then properly format your CV for you (possibly splitting it onto multiple +pages, repeating the titles etc), which is usually the most painful part of CV +writing. Another nice feature of CurVe is its ability to manage different CV +"flavors" simultaneously. It is in fact often the case that you want to +maintain slightly divergent versions of your CV at the same time, in order to +emphasize on different aspects of your background. CurVe also comes with +support for AUC-TeX. + +CurVe homepage: http://www.lrde.epita.fr/~didier/software/latex.php#curve * Installation ============== - To install the package, please follow these steps: +If you are building CurVe from the tarball you need to execute the following +steps in order to extract the necessary files: + +[pdf]latex curve.ins -> will create the class file curve.cls +[pdf]latex curve.dtx -> (twice) will create the documentation files curve.pdf + or curve.dvi. Note that curve.pdf is already part of + the distribution. + +After that, you need to install the generated documentation and class file to +a location where LaTeX can find them. For a TDS-compliant layout, the +following locations are suggested: + +[TEXMF]/tex/latex/curve/curve.cls +[TEXMF]/doc/latex/curve/curve.[pdf|dvi] -- Run LaTeX on the file `curve.ins' to create the class file `curve.cls'. -- Run LaTeX on the file `curve.dtx' to create the doc file `curve.dvi'. -- Install these files anywhere you see fit. +If you're an AUC-TeX user, you may also install the file `curve.el' in a +suitable AUC-TeX style directory. - If you're an AUC-TeX user, you can also install the file `curve.el' in -a suitable AUC-TeX style directory. +Once you have installed the package, you might eventually want to process the +example files from the examples/ directory. Just type "make pdf" or "make dvi" +in that directory to compile everything. - Once you have installed the package, you might also want to process -the example file cv.tex. This will give you an idea of what a CV looks like -with CurVe by default. Have fun! -- -Didier Verna, didier@lrde.epita.fr, http://www.lrde.epita.fr/~didier +Didier Verna <didier@lrde.epita.fr> -EPITA / LRDE, 14-16 rue Voltaire Tel.+33 (0)1 44 08 01 85 -94276 Le Kremlin-Bicętre, France Fax.+33 (0)1 53 14 59 22 +Sientific site: http://www.lrde.epita.fr/~didier +Music (Jazz) site: http://www.didierverna.com diff --git a/Master/texmf-dist/doc/latex/curve/THANKS b/Master/texmf-dist/doc/latex/curve/THANKS index 2b2febc5be4..95c5a4de6a4 100644 --- a/Master/texmf-dist/doc/latex/curve/THANKS +++ b/Master/texmf-dist/doc/latex/curve/THANKS @@ -2,7 +2,7 @@ THANK YOU! -Copyright (C) 2007 Didier Verna +Copyright (C) 2007, 2010 Didier Verna This file is part of CurVe. @@ -22,11 +22,12 @@ CurVe consists of the files listed in the file `README'. ** The following persons have contributed code, bug reports, localization, ** suggestions etc: -Mirko Hessel-von Molo, Seweryn Habdank-Wojewódzki, Joseph Wright, Radek -Dominiak, Lars Kasper, Alain Coletta, Nico Schlömer, Konrad Skeri Persson, -Alexandre Duret-Lutz, Akim Demaille, Jonas Haulin, Joris Desmet, Adiel -Mittmann, Andrew Comport, Thomas Delaet, Torsten Liesk, Dan Luecking, Kim Rud -Bille, Agustín Martín, Harald Harders, Riccardo Murri. +Jean Taucol, Franco Callegati, Vasilis Boucharas, Mirko Hessel-von Molo, +Seweryn Habdank-Wojewódzki, Joseph Wright, Radek Dominiak, Lars Kasper, Alain +Coletta, Nico Schlömer, Konrad Skeri Persson, Alexandre Duret-Lutz, Akim +Demaille, Jonas Haulin, Joris Desmet, Adiel Mittmann, Andrew Comport, Thomas +Delaet, Torsten Liesk, Dan Luecking, Kim Rud Bille, Agustín Martín, Harald +Harders, Riccardo Murri. * Generous donators diff --git a/Master/texmf-dist/doc/latex/curve/curve.pdf b/Master/texmf-dist/doc/latex/curve/curve.pdf Binary files differindex 2f368ba64f2..8a5e11e1774 100644 --- a/Master/texmf-dist/doc/latex/curve/curve.pdf +++ b/Master/texmf-dist/doc/latex/curve/curve.pdf diff --git a/Master/texmf-dist/doc/latex/curve/examples/Makefile b/Master/texmf-dist/doc/latex/curve/examples/Makefile new file mode 100644 index 00000000000..1f25ac5a36c --- /dev/null +++ b/Master/texmf-dist/doc/latex/curve/examples/Makefile @@ -0,0 +1,70 @@ +### Makefile --- Makefile for CurVe examples + +## Copyright (C) 2010 Didier Verna + +## Author: Didier Verna <didier@lrde.epita.fr> +## Maintainer: Didier Verna <didier@lrde.epita.fr> +## Created: Mon Dec 6 11:13:27 2010 +## Last Revision: Mon Dec 6 11:25:22 2010 + +## This file is part of CurVe. + +## CurVe may be distributed and/or modified under the +## conditions of the LaTeX Project Public License, either version 1.1 +## of this license or (at your option) any later version. +## The latest version of this license is in +## http://www.latex-project.org/lppl.txt +## and version 1.1 or later is part of all distributions of LaTeX +## version 1999/06/01 or later. + +## CurVe consists of the files listed in the file `README'. + + +### Commentary: + +## Contents management by FCM version 0.1. + + +### Code: + +TEXI2DVI := texi2dvi + +BIB_EXAMPLES = bib splitbib +EXAMPLES := raw $(BIB_EXAMPLES) + +PDF_BIB_EXAMPLES = $(BIB_EXAMPLES:%=%.pdf) +DVI_BIB_EXAMPLES = $(BIB_EXAMPLES:%=%.dvi) +ALL_BIB_EXAMPLES = $(PDF_BIB_EXAMPLES) $(DVI_BIB_EXAMPLES) + +PDF_EXAMPLES = $(EXAMPLES:%=%.pdf) +DVI_EXAMPLES = $(EXAMPLES:%=%.dvi) +ALL_EXAMPLES = $(PDF_EXAMPLES) $(DVI_EXAMPLES) + + +all: + @echo "Please use either the pdf or the dvi target." +pdf: $(PDF_EXAMPLES) +dvi: $(DVI_EXAMPLES) + +$(ALL_BIB_EXAMPLES): bib.bib +$(ALL_EXAMPLES): rubric.tex + + +%.pdf: %.tex + $(TEXI2DVI) -p $< + +%.dvi: %.tex + $(TEXI2DVI) $< + + +clean: + -rm *~ *.aux *.lo* *.bbl *.blg *.sbb *.out + +distclean: clean + -rm $(ALL_EXAMPLES) + + +.PHONY: all pdf dvi clean distclean + + +### Makefile ends here diff --git a/Master/texmf-dist/doc/latex/curve/examples/bib.bib b/Master/texmf-dist/doc/latex/curve/examples/bib.bib new file mode 100644 index 00000000000..ac45c943617 --- /dev/null +++ b/Master/texmf-dist/doc/latex/curve/examples/bib.bib @@ -0,0 +1,68 @@ +@InProceedings{bib:doe.00.conf1, + author = {John Doe}, + title = {A first conference paper}, + booktitle = {The first conference proceedings}, + OPTcrossref = {}, + OPTkey = {}, + pages = {200--210}, + year = {2000}, + OPTeditor = {}, + OPTvolume = {}, + OPTnumber = {}, + OPTseries = {}, + OPTaddress = {}, + OPTmonth = {}, + OPTorganization = {}, + OPTpublisher = {}, + OPTnote = {}, + OPTannote = {} +} + +@Article{bib:doe.01.journal1, + author = {John Doe}, + title = {A first journal paper}, + journal = {The first journal}, + year = {2001}, + OPTkey = {}, + OPTvolume = {}, + OPTnumber = {}, + pages = {50--60}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {} +} + +@InProceedings{bib:doe.10.conf2, + author = {John Doe}, + title = {A second conference paper}, + booktitle = {The second conference proceedings}, + OPTcrossref = {}, + OPTkey = {}, + pages = {100--110}, + year = {2010}, + OPTeditor = {}, + OPTvolume = {}, + OPTnumber = {}, + OPTseries = {}, + OPTaddress = {}, + OPTmonth = {}, + OPTorganization = {}, + OPTpublisher = {}, + OPTnote = {}, + OPTannote = {} +} + +@Article{bib:doe.11.journal2, + author = {John Doe}, + title = {A second journal paper}, + journal = {The second journal}, + year = {2011}, + OPTkey = {}, + OPTvolume = {}, + OPTnumber = {}, + pages = {40--50}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {} +} + diff --git a/Master/texmf-dist/doc/latex/curve/examples/bib.tex b/Master/texmf-dist/doc/latex/curve/examples/bib.tex new file mode 100644 index 00000000000..e17beeead3f --- /dev/null +++ b/Master/texmf-dist/doc/latex/curve/examples/bib.tex @@ -0,0 +1,55 @@ +%%% bib.tex --- Example of CurVe usage with BibTeX. + +%% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2010 Didier Verna. + +%% Author: Didier Verna <didier@lrde.epita.fr> +%% Maintainer: Didier Verna <didier@lrde.epita.fr> +%% Created: Mon Dec 6 10:57:19 2010 +%% Last Revision: Mon Dec 6 11:33:52 2010 + +%% This file is part of CurVe. + +%% CurVe may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.1 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.1 or later is part of all distributions of LaTeX +%% version 1999/06/01 or later. + +%% CurVe consists of the files listed in the file `README'. + + +%%% Commentary: + +%% Contents management by FCM version 0.1. + + +%%% Code: + +\NeedsTeXFormat{LaTeX2e} +\documentclass{curve} + +\leftheader{Left header\\ + Insert information here\\ + And also here} +\rightheader{Right header\\ + Insert information here\\ + And also here} + +\title{CV Title} +\subtitle{Subtitle} + +\begin{document} + +\makeheaders[t] +\maketitle + +\nocite{*} +\bibliographystyle{plain} +\bibliography{bib} + +\end{document} + + +%%% bib.tex ends here diff --git a/Master/texmf-dist/doc/latex/curve/cv.tex b/Master/texmf-dist/doc/latex/curve/examples/raw.tex index f9d972222df..5c0c7d6b75d 100644 --- a/Master/texmf-dist/doc/latex/curve/cv.tex +++ b/Master/texmf-dist/doc/latex/curve/examples/raw.tex @@ -1,11 +1,11 @@ -%% cv.tex --- Example of CurVe usage. +%%% raw.tex --- Example of CurVe usage. -%% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Didier Verna. +%% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2010 Didier Verna. %% Author: Didier Verna <didier@lrde.epita.fr> %% Maintainer: Didier Verna <didier@lrde.epita.fr> %% Created: Thu Dec 10 16:04:01 2000 -%% Last Revision: Fri Feb 6 17:27:21 2004 +%% Last Revision: Mon Dec 6 10:57:19 2010 %% This file is part of CurVe. @@ -19,18 +19,25 @@ %% CurVe consists of the files listed in the file `README'. +%%% Commentary: + +%% Contents management by FCM version 0.1. + + +%%% Code: \NeedsTeXFormat{LaTeX2e} \documentclass{curve} -\leftheader{Left Header\\ - Put the information\\ - you want about yourself here} -\rightheader{Right Header\\ - Idem} +\leftheader{Left header\\ + Insert information here\\ + And also here} +\rightheader{Right header\\ + Insert information here\\ + And also here} -\title{Your CV's Title} -\subtitle{and the subtitle} +\title{CV Title} +\subtitle{Subtitle} \begin{document} @@ -41,4 +48,4 @@ \end{document} -%% cv.tex ends here. +%%% raw.tex ends here diff --git a/Master/texmf-dist/doc/latex/curve/rubric.tex b/Master/texmf-dist/doc/latex/curve/examples/rubric.tex index f92f0e69ac2..8fa8803e0c0 100644 --- a/Master/texmf-dist/doc/latex/curve/rubric.tex +++ b/Master/texmf-dist/doc/latex/curve/examples/rubric.tex @@ -1,11 +1,11 @@ -%% rubric.tex --- Example of using CurVe. +%%% rubric.tex --- Example of using CurVe. -%% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Didier Verna. +%% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2010 Didier Verna. %% Author: Didier Verna <didier@lrde.epita.fr> %% Maintainer: Didier Verna <didier@lrde.epita.fr> %% Created: Thu Dec 10 16:04:01 2000 -%% Last Revision: Fri Feb 6 17:38:00 2004 +%% Last Revision: Mon Dec 6 11:04:22 2010 %% This file is part of CurVe. @@ -19,37 +19,49 @@ %% CurVe consists of the files listed in the file `README'. + +%%% Commentary: + +%% Contents management by FCM version 0.1. + + +%%% Code: + \begin{rubric}{The Rubric's Title} -\subrubric{A Second Subrubric} -\entry*[A Key] +\entry*[Key 1] This is an entry with a key. The key is displayed on the left, and you're reading the entry's contents. As you can see, this entry does not belong to a subrubric. \subrubric{A First Subrubric} -\entry*[A Key] +\entry*[Key 2] This entry belongs to the first subrubric. Before the subrubric, some space is added to separate it from the previous entry. \entry* After the subrubric, some space is also added to separate it from the first entry. Note that this entry has no key. The entries contents are aligned together. -\entry*[Another Key] +\text{\par\itshape + This is a piece of text produced by the \texttt{\char`\\text} macro. It + spawns the whole text width. If you want to further separate it from the + normal entries with vertical space (like here), you can use the + \texttt{\char`\\par} command.\par} +\entry*[Key 3] This is another entry with a new key. \entry* This is another entry, but this one has no key. Note the text bullet which serves as a visual clue, especially when several entries share the same key. \subrubric{A Second Subrubric} -\entry*[A Key] +\entry*[Key 1] This entry belongs to the second subrubric. \entry* This one also belongs to the second subrubric. -\entry*[Another Key] +\entry*[Key 2] This is another entry with a new key. \entry* This is another entry, but this one has no key. - \subrubric{} -\entry*[A Key] +\subrubric{} +\entry*[Key 3] If you want to separate some entries from the subrubric above, you can for instance make an empty subrubric. \entry* @@ -57,9 +69,9 @@ pages. The titles will then be repeated. \end{rubric} -%% rubric.tex ends here. +%%% rubric.tex ends here %%% Local Variables: %%% mode: latex -%%% TeX-master: "cv" +%%% TeX-master: "raw" %%% End: diff --git a/Master/texmf-dist/doc/latex/curve/header.inc b/Master/texmf-dist/doc/latex/curve/header.inc new file mode 100644 index 00000000000..efeaefd9dfc --- /dev/null +++ b/Master/texmf-dist/doc/latex/curve/header.inc @@ -0,0 +1,46 @@ +%% +%% This is file `header.inc', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% curve.dtx (with options: `header') +%% + + +%% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Didier Verna + +%% Copyright (C) 2010 Didier Verna + +%% This file is part of CurVe. + +%% CurVe may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.1 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.1 or later is part of all distributions of LaTeX +%% version 1999/06/01 or later. + +%% CurVe consists of the files listed in the file `README'. + +%% \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 \~} +\ProvidesClass{curve}[2010/12/14 v1.16 Curriculum Vitae class for LaTeX2e] + +\endinput +%% +%% End of file `header.inc'. 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 diff --git a/Master/texmf-dist/tex/latex/curve/curve.cls b/Master/texmf-dist/tex/latex/curve/curve.cls index 41381662b30..928f324b3e8 100644 --- a/Master/texmf-dist/tex/latex/curve/curve.cls +++ b/Master/texmf-dist/tex/latex/curve/curve.cls @@ -4,12 +4,14 @@ %% %% The original source files were: %% -%% curve.dtx +%% curve.dtx (with options: `header,curve') %% %% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Didier Verna +%% Copyright (C) 2010 Didier Verna + %% This file is part of CurVe. %% CurVe may be distributed and/or modified under the @@ -38,12 +40,12 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{curve}[2008/02/25 v1.15 - Curriculum Vitae class for LaTeX2e] +\ProvidesClass{curve}[2010/12/14 v1.16 Curriculum Vitae class for LaTeX2e] \RequirePackage{ltxtable} \RequirePackage{ifthen} \RequirePackage{calc} +\RequirePackage{filehook} \gdef\@nextentry{} @@ -76,7 +78,6 @@ \let\@key\@alwayskey \DeclareOption{skipsamekey}{\let\@key\@maybekey} - \newcommand\@entry[2][]{% \gdef\@nextentry{}\@key{#1}% \egroup% end of \noalign opened in \entry. @@ -92,6 +93,24 @@ \noalign\bgroup\gdef\@beforespace{\subrubricbeforespace}% \@ifstar{\@sentry}{\@entry}} +\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}} + \newcommand\noentry[1]{\@nextentry \noalign{\gdef\@nextentry{}}#1&&\kill} @@ -111,9 +130,9 @@ {\@subrubricfont#1} \@subrubricmark{#1}} - \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}}} @@ -138,9 +157,6 @@ \noalign{\gdef\@nextentry{}}% \@subrubric{#1}\\*[\subrubricspace]\par} -\newlength{\@almosttextwidth} -\AtBeginDocument{\setlength\@almosttextwidth{\textwidth-\hfuzz}} - \def\@rubricfont{\Large\bfseries} \newcommand\rubricfont[1]{\gdef\@rubricfont{#1}} @@ -158,15 +174,12 @@ \let\@rubrichead\@rubrichead@c \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.}} } \newlength\rubricafterspace \setlength\rubricafterspace{0pt} @@ -273,8 +286,7 @@ \newlength\rightheader@width \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} @@ -355,9 +367,8 @@ \newcommand\titlealignment[1]{\@titlealignment{titlealignment}{#1}} \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} @@ -366,8 +377,7 @@ \newcommand\maketitle{\@ifnextchar[%] \@maketitle\@@maketitle} -\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}{% @@ -380,69 +390,74 @@ \IfFileExists{#1.ltx}{\@iinput{#1.ltx}}{% \IfFileExists{#1.tex}{\@iinput{#1.tex}}{% \@iinput{#1}}}}}} - \renewcommand\input{\@ifnextchar\bgroup\@curveinput\@@input} \newcommand\makerubric[1]{\LTXtable{\linewidth}{#1}} -\let\newblock\par +\PassOptionsToPackage{export}{splitbib} + +\let\newblock\empty +\DeclareOption{openbib}{\let\newblock\par} + \newcounter{bibcount} \newcounter{bibtotal} - \newif\ifcurve@revbib\curve@revbibfalse -\DeclareOption{revbib}{\curve@revbibtrue} - -\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.}}} - } -} - -\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} - } -} - -\AtEndDocument{% - \if@filesw% +\AtEndDocument{ + \if@filesw \immediate\write\@auxout{\string\setcounter{bibtotal}{\thebibcount}}% \fi} +\DeclareOption{revbib}{\curve@revbibtrue} \newcommand\listpubname[1]{\gdef\@listpubname{#1}} +\def\@curve@input@#1{% + \IfFileExists{#1}{\makerubric{#1}}{\typeout{No file #1.}}} + +\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 + +\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 + +\let\@curveltxbibitem\bibitem +\def\@curvebibitem{% + %% #### FIXME: Dirty code duplication from \entry. + \@nextentry + \noalign\bgroup\gdef\@beforespace{\subrubricbeforespace}% + \@ifnextchar[%] + \@lbibitem\@bibitem} +\let\bibitem\@curvebibitem + +\AtBeginOfFile{bibentry.sty}{ + \let\@lbibitem\@curveltx@lbibitem + \let\@bibitem\@curveltx@bibitem + \let\bibitem\@curveltxbibitem} + +\AtBeginOfFile{splitbib.sty}{ + \let\@lbibitem\@curveltx@lbibitem + \let\@bibitem\@curveltx@bibitem + \let\bibitem\@curveltxbibitem} + +\AtBeginOfFile{hyperref.sty}{ + \let\@curveprevious@lbibitem\@lbibitem + \let\@curveprevious@bibitem\@bibitem} +\AtEndOfFile{hyperref.sty}{ + \let\@lbibitem\@curveprevious@lbibitem + \let\@bibitem\@curveprevious@bibitem} + \newenvironment{thebibliography}[1]{% \let\@key\@alwayskey \def\@prefix{} @@ -453,6 +468,212 @@ \end{rubric} } +\let\@curveltxbibliography\bibliography +\def\bibliography#1{% + \if@filesw + \immediate\write\@auxout{\string\bibdata{#1}}% + \fi% + \@curve@input@{\jobname.bbl}} + +\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}}} + +\AtBeginOfFile{splitbib.sty}{ + \let\bibliography\@curveltxbibliography} + +\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}} + \DeclareOption{english}{% \continuedname{~(continued)} \listpubname{List of Publications}} @@ -598,6 +819,14 @@ \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} + \endinput %% %% End of file `curve.cls'. |