diff --git a/.bzrignore b/.bzrignore index 3896863..61610e8 100644 --- a/.bzrignore +++ b/.bzrignore @@ -1,6 +1,4 @@ *xdanaux* *.sh examples/*.sh -examples/template_casual_orange.tex -examples/template_classic_green.tex -examples/template_multibib.tex +examples/template_*.tex diff --git a/CHANGELOG b/CHANGELOG index fd3f793..e33e951 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,6 @@ version 1.4.0 (dd MMM 2013) + - deprecated \phone, \mobile and \fax in favour of \phone[], where + can be "mobile", "fixed" (default) or "fax". - deprecated \firstname and \familyname in favour of \name{}{}. - removed the use of the suffix package. diff --git a/collection.sty b/collection.sty new file mode 100644 index 0000000..e4e5bca --- /dev/null +++ b/collection.sty @@ -0,0 +1,85 @@ +%% start of file `collection.sty'. +%% Copyright 2013-2013 Xavier Danaux (xdanaux@gmail.com). +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License version 1.3c, +% available at http://www.latex-project.org/lppl/. + + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{collection}[2013/02/19 v1.0.0 collections] + + +%------------------------------------------------------------------------------- +% requirements +%------------------------------------------------------------------------------- + + +\RequirePackage{ifthen} + + +%------------------------------------------------------------------------------- +% code +%------------------------------------------------------------------------------- + +% creates a new collection +% usage: \collectionnew{} +\newcommand*{\collectionnew}[1]{% + \newcounter{collection@#1@count}} + +% adds an item to a collection +% usage: \collectionadd[]{}{} +\newcommand*{\collectionadd}[3][]{% + \expandafter\def\csname collection@#2@item\roman{collection@#2@count}\endcsname{#3}% + \if\relax\noexpand#1\relax% if #1 is empty + \else\expandafter\def\csname collection@#2@key\roman{collection@#2@count}\endcsname{#1}\fi% + \stepcounter{collection@#2@count}} + +% returns the number of items in a collection +% usage: \collectioncount{} +\newcommand*{\collectioncount}[1]{% + \value{collection@#1@count}} + +% gets an item from a collection +% usage: \collectiongetitem{}{} +% where is an integer between 0 and (collectioncount-1) +\newcommand*{\collectiongetitem}[2]{% + \csname collection@#1@item\romannumeral #2\endcsname} + +% gets a key from a collection +% usage: \collectiongetkey{}{} +% where is an integer between 0 and (collectioncount-1) +\newcommand*{\collectiongetkey}[2]{% + \csname collection@#1@key\romannumeral #2\endcsname} + +% loops through a collection and perform the given operation on every element +% usage: \collectionloop{}{} +% where is the code sequence to be evaluated for each collection item, +% code which can refer to \collectionloopid, \collectionloopkey, \collectionloopitem and +% \collectionloopbreak +\newcounter{collection@iterator} +\newcommand*{\collectionloopbreak}{\let\iterate\relax} +\newcommand*{\collectionloop}[2]{% + \setcounter{collection@iterator}{0}% + \loop\ifnum\value{collection@iterator}<\value{collection@#1@count}% + \def\collectionloopid{\arabic{collection@iterator}}% + \def\collectionloopitem{\collectiongetitem{#1}{\collectionloopid}}% + \def\collectionloopkey{\collectiongetkey{#1}{\collectionloopid}}% + #2% + \stepcounter{collection@iterator}% + \repeat} + +% loops through a collection and finds the (first) element matching the given key +% usage: \collectionfindbykey{}{key>} +\newcommand*{\collectionfindbykey}[2]{% + \collectionloop{#1}{% + \ifthenelse{\equal{\collectionloopkey}{#2}}{\collectionloopitem\collectionloopbreak}{}}} + + +\endinput + + +%% end of file `collection.cls'. diff --git a/examples/template-es.pdf b/examples/template-es.pdf index 19d98fb..387c611 100644 Binary files a/examples/template-es.pdf and b/examples/template-es.pdf differ diff --git a/examples/template-zh.pdf b/examples/template-zh.pdf index 15a9c8a..0406a9a 100644 Binary files a/examples/template-zh.pdf and b/examples/template-zh.pdf differ diff --git a/examples/template.pdf b/examples/template.pdf index 1430aaf..90db04a 100644 Binary files a/examples/template.pdf and b/examples/template.pdf differ diff --git a/examples/template_banking_red.pdf b/examples/template_banking_red.pdf index 9ab606b..25c9bb4 100644 Binary files a/examples/template_banking_red.pdf and b/examples/template_banking_red.pdf differ diff --git a/examples/template_casual_orange.pdf b/examples/template_casual_orange.pdf index 30af9cd..a163430 100644 Binary files a/examples/template_casual_orange.pdf and b/examples/template_casual_orange.pdf differ diff --git a/examples/template_classic_green.pdf b/examples/template_classic_green.pdf index dcff6f8..ae5a4ea 100644 Binary files a/examples/template_classic_green.pdf and b/examples/template_classic_green.pdf differ diff --git a/examples/template_multibib.pdf b/examples/template_multibib.pdf index 7b80226..2bb1e27 100644 Binary files a/examples/template_multibib.pdf and b/examples/template_multibib.pdf differ diff --git a/examples/template_oldstyle_grey.pdf b/examples/template_oldstyle_grey.pdf index 35c60d3..ea16047 100644 Binary files a/examples/template_oldstyle_grey.pdf and b/examples/template_oldstyle_grey.pdf differ diff --git a/moderncv.cls b/moderncv.cls index 92a06ca..706b77e 100644 --- a/moderncv.cls +++ b/moderncv.cls @@ -235,17 +235,12 @@ % usage: \address{}{}{} % where the and arguments can be omitted or provided empty \NewDocumentCommand{\address}{mG{}G{}}{\def\@addressstreet{#1}\def\@addresscity{#2}\def\@addresscountry{#3}} -% defines one's mobile phone number (optional) -% usage: \mobile{} -\newcommand*{\mobile}[1]{\def\@mobile{#1}} -% defines one's fixed phone number (optional) -% usage: \phone{} -\newcommand*{\phone}[1]{\def\@phone{#1}} -% defines one's fax number (optional) -% usage: \fax{} -\newcommand*{\fax}[1]{\def\@fax{#1}} -% defines one's email address (optional) -% usage: \email{} +% adds a mobile/fixed/fax number to one's personal information (optional) +% usage: \phone[]{} +% where should be either "mobile", "fixed" or "fax +\RequirePackage{collection} +\collectionnew{phones} +\newcommand*{\phone}[2][fixed]{\collectionadd[#1]{phones}{#2}} \newcommand*{\email}[1]{\def\@email{#1}} % defines one's home page (optional) % usage: \homepage{} diff --git a/moderncvcompatibility.sty b/moderncvcompatibility.sty index 7aab158..8772a0d 100644 --- a/moderncvcompatibility.sty +++ b/moderncvcompatibility.sty @@ -86,6 +86,15 @@ \newcommand*{\familyname}[1]{\def\@lastname{#1}} \def\@familyname{\@lastname} +% compatibility with versions <= 1.4.0 +\newcommand*{\mobile}[1]{\collectionadd[mobile]{phones}{#1}} +%\newcommand*{\phone}[1]{\collectionadd[fixed]{phones}{#1}}% implicit, as \phone{...} defaults to \phone[fixed]{...} +\newcommand*{\fax}[1]{\collectionadd[fax]{phones}{#1}} +\newcommand*{\@mobile}{\collectionfindbykey{phones}{mobile}} +\newcommand*{\@phone}{\collectionfindbykey{phones}{fixed}} +\newcommand*{\@fax}{\collectionfindbykey{phones}{fax}} + + \endinput