Bugfixes, improvements and new symbols/nosymbols option for all styles (#34)

* fix Researcher ID (still) doesn't display Issue #29.
* make options 'symbols' and 'nosymbols' available to all styles to toggle whether symbols should be used or not. Include symbols in oldstyle by default.
* migrate older newcommand syntax in moderncvcollection.sty to the xparse syntax.
* Fix resumé typo in template. Is now résumé.
* remove loading lmodern fonts in all styles as they can produce issues with german characters, see https://tex.stackexchange.com/questions/496630/lualatex-problems-with-german-characters.
* remove loading inputenc package by default. Only load the package when pdflatex is used.
This commit is contained in:
David Seus 2021-01-26 12:57:04 +01:00 committed by GitHub
commit 35138209d3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 143 additions and 60 deletions

View file

@ -1,3 +1,14 @@
Release: next
- fix Researcher ID (still) doesn't display Issue #29.
- make options 'symbols' and 'nosymbols' available to all styles to toggle whether
symbols should be used or not. Include symbols in oldstyle by default.
- migrate older newcommand syntax in moderncvcollection.sty to the xparse syntax.
- Fix resumé typo in template. Is now résumé.
- remove loading lmodern fonts in all styles as they can produce issues with
german characters, see https://tex.stackexchange.com/questions/496630/lualatex-problems-with-german-characters.
- remove loading inputenc package by default. Only load the package when pdflatex is
used.
version 2.1.0 (21 Jan 2021)
- maintainer change: now team maintained (https://github.com/moderncv), since
original repository is basically dead since 2016.

View file

@ -285,7 +285,7 @@
\ifthenelse{\equal{#1}{github}} {\collectionadd[github]{socials} {\protect\httpslink[#3]{www.github.com/#3}}} {}%
\ifthenelse{\equal{#1}{gitlab}} {\collectionadd[gitlab]{socials} {\protect\httpslink[#3]{www.gitlab.com/#3}}} {}%
\ifthenelse{\equal{#1}{stackoverflow}}{\collectionadd[stackoverflow]{socials}{\protect\httpslink[#3]{stackoverflow.com/users/#3}}} {}%
\ifthenelse{\equal{#1}{bitbucket}} {\collectionadd[bitbucket]{socials} {\protect\httpslink[#3]{www.bitbucket.org/#3}}} {}%
\ifthenelse{\equal{#1}{bitbucket}} {\collectionadd[bitbucket]{socials} {\protect\httpslink[#3]{www.bitbucket.org/#3}}} {}%
\ifthenelse{\equal{#1}{skype}} {\collectionadd[skype]{socials} {#3}} {}%
\ifthenelse{\equal{#1}{orcid}} {\collectionadd[orcid]{socials} {\protect\httpslink[#3]{orcid.org/#3}}} {}%
\ifthenelse{\equal{#1}{researchgate}} {\collectionadd[researchgate]{socials} {\protect\httpslink[#3]{www.researchgate.net/profile/#3}}} {}%
@ -293,7 +293,7 @@
\ifthenelse{\equal{#1}{telegram}} {\collectionadd[telegram]{socials} {\protect\httpslink[#3]{t.me/#3}}} {}%
\ifthenelse{\equal{#1}{googlescholar}}{\collectionadd[googlescholar]{socials}{\protect\httpslink[#3]{scholar.google.com/citations?user=#3}}} {}% {}%
}
{\collectionadd[#1]{socials}{\protect\httpslink[#3]{#2}}}}
{\collectionadd[#1]{socials}{\protect\httpslink[#3]{#2}}}}%
% defines additional personal information (optional)
% usage: \extrainfo{<text>}
@ -338,7 +338,7 @@
\newcommand*{\skypesocialsymbol} {}
\newcommand*{\orcidsocialsymbol} {}
\newcommand*{\researchgatesocialsymbol} {}
\newcommand*{\researchidsocialsymbol} {}
\newcommand*{\researcheridsocialsymbol} {}
\newcommand*{\googlescholarsocialsymbol}{}
\newcommand*{\telegramsocialsymbol} {}

View file

@ -27,42 +27,48 @@
% creates a new collection
% usage: \collectionnew{<collection name>}
\newcommand*{\collectionnew}[1]{%
\newcounter{collection@#1@count}}
\NewDocumentCommand\collectionnew{m}{%
\newcounter{collection@#1@count}%
}%
% adds an item to a collection
% usage: \collectionadd[<optional key>]{<collection name>}{<item to add>}
\newcommand*{\collectionadd}[3][]{%
\NewDocumentCommand\collectionadd{ O{} m m }{%
\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}}
\def\optional@FirstArg{#1}%
\ifdefempty{\optional@FirstArg}{%
\relax% if #1 is empty
}{%
\expandafter\def\csname collection@#2@key\roman{collection@#2@count}\endcsname{#1}%
}%
\stepcounter{collection@#2@count}%
}%
% returns the number of items in a collection
% usage: \collectioncount{<collection name>}
\newcommand*{\collectioncount}[1]{%
\value{collection@#1@count}}
\NewDocumentCommand\collectioncount{m}{%
\value{collection@#1@count}%
}%
% gets an item from a collection
% usage: \collectiongetitem{<collection name>}{<element id>}
% where <element id> is an integer between 0 and (collectioncount-1)
\newcommand*{\collectiongetitem}[2]{%
\csname collection@#1@item\romannumeral #2\endcsname}
\NewDocumentCommand\collectiongetitem{m m}{%
\csname collection@#1@item\romannumeral #2\endcsname%
}%
% gets a key from a collection
% usage: \collectiongetkey{<collection name>}{<element id>}
% where <element id> is an integer between 0 and (collectioncount-1)
\newcommand*{\collectiongetkey}[2]{%
\csname collection@#1@key\romannumeral #2\endcsname}
\NewDocumentCommand\collectiongetkey{m m}{%
\csname collection@#1@key\romannumeral #2\endcsname%
}%
% loops through a collection and perform the given operation on every element
% usage: \collectionloop{<collection name>}{<operation sequence>}
% where <operation sequence> 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]{%
\NewDocumentCommand\collectionloopbreak{}{\let\iterate\relax}
\NewDocumentCommand\collectionloop{m m}{%
\setcounter{collection@iterator}{0}%
\loop\ifnum\value{collection@iterator}<\value{collection@#1@count}%
\def\collectionloopid{\arabic{collection@iterator}}%
@ -70,14 +76,15 @@
\def\collectionloopkey{\collectiongetkey{#1}{\collectionloopid}}%
#2%
\stepcounter{collection@iterator}%
\repeat}
\repeat%
}
% loops through a collection and finds the (first) element matching the given key
% usage: \collectionfindbykey{<collection name>}{key>}
\newcommand*{\collectionfindbykey}[2]{%
\NewDocumentCommand\collectionfindbykey{m m}{%
\collectionloop{#1}{%
\ifthenelse{\equal{\collectionloopkey}{#2}}{\collectionloopitem\collectionloopbreak}{}}}
\ifthenelse{\equal{\collectionloopkey}{#2}}{\collectionloopitem\collectionloopbreak}{}}%
}%
\endinput

View file

@ -45,7 +45,7 @@
\renewcommand*{\skypesocialsymbol} {{\small\faSkype}~}
\renewcommand*{\orcidsocialsymbol} {{\small\aiOrcid}~}
\renewcommand*{\researchgatesocialsymbol} {{\small\aiResearchGate}~}
\renewcommand*{\researchidsocialsymbol} {{\small\aiResearcherID}~}
\renewcommand*{\researcheridsocialsymbol} {{\small\aiResearcherID}~} % alternative: \aiResearcherIDSquare
\renewcommand*{\telegramsocialsymbol} {{\small\faTelegram}~}
\renewcommand*{\googlescholarsocialsymbol}{{\small\aiGoogleScholar}~}

View file

@ -50,7 +50,7 @@
\renewcommand*{\skypesocialsymbol} {\textbf{sk}~}
\renewcommand*{\orcidsocialsymbol} {\textbf{orcid}~}
\renewcommand*{\researchgatesocialsymbol} {\textbf{rg}~}
\renewcommand*{\researchidsocialsymbol} {\textbf{ri}~}
\renewcommand*{\researcheridsocialsymbol} {\textbf{ri}~}
\renewcommand*{\telegramsocialsymbol} {\textbf{tg}~}
\renewcommand*{\googlescholarsocialsymbol}{\textbf{gs}~}

View file

@ -229,7 +229,7 @@
\renewcommand*{\telegramsocialsymbol}{}
\renewcommand*{\orcidsocialsymbol}{}
\renewcommand*{\researchgatesocialsymbol}{}
\renewcommand*{\researchidsocialsymbol}{}
\renewcommand*{\researcheridsocialsymbol}{}
\renewcommand*{\bitbucketsocialsymbol}{}
\renewcommand*{\skypesocialsymbol} {%
\protect\raisebox{-0.15em}{%

View file

@ -24,8 +24,13 @@
\DeclareOption{center} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,center}}
\DeclareOption{right} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,right}}
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
\DeclareOption{symbols} {\@symbolstrue}
\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
\ExecuteOptions{mixedrules,left}
\ExecuteOptions{mixedrules,left,symbols}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
@ -49,14 +54,18 @@
%\fi
% symbols
\RequirePackage{ifxetex}
\ifxetexorluatex
\moderncvicons{awesome}
\if@symbols
\ifxetexorluatex
\moderncvicons{awesome} % use font-awesome symbols if lualatex or xelatex is used
\else
\moderncvicons{marvosym} % use marvosym symbols pdflatex is used
\fi
\else
\moderncvicons{marvosym}
\moderncvicons{letters} % do not use symbols, use letters
\fi
%-------------------------------------------------------------------------------
% header, body & footer
%-------------------------------------------------------------------------------

View file

@ -17,8 +17,13 @@
\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}}
\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}}
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
\DeclareOption{symbols} {\@symbolstrue}
\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
\ExecuteOptions{right}
\ExecuteOptions{right,symbols}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
@ -30,17 +35,20 @@
% \setsansfont{Latin Modern Sans}
% \setmathfont{Latin Modern Math}
%\else
\IfFileExists{lmodern.sty}%
{\RequirePackage{lmodern}}%
{}
% \IfFileExists{lmodern.sty}%
% {\RequirePackage{lmodern}}%
% {}
%\fi
% symbols
\RequirePackage{ifxetex}
\ifxetexorluatex
\moderncvicons{awesome}
\if@symbols
\ifxetexorluatex
\moderncvicons{awesome} % use font-awesome symbols if lualatex or xelatex is used
\else
\moderncvicons{marvosym} % use marvosym symbols pdflatex is used
\fi
\else
\moderncvicons{marvosym}
\moderncvicons{letters} % do not use symbols, use letters
\fi

View file

@ -17,8 +17,13 @@
\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}}
\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}}
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
\DeclareOption{symbols} {\@symbolstrue}
\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
\ExecuteOptions{left}
\ExecuteOptions{left,symbols}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
@ -30,17 +35,20 @@
% \setsansfont{Latin Modern Sans}
% \setmathfont{Latin Modern Math}
%\else
\IfFileExists{lmodern.sty}%
{\RequirePackage{lmodern}}%
{}
% \IfFileExists{lmodern.sty}%
% {\RequirePackage{lmodern}}%
% {}
%\fi
% symbols
\RequirePackage{ifxetex}
\ifxetexorluatex
\moderncvicons{awesome}
\if@symbols
\ifxetexorluatex
\moderncvicons{awesome} % use font-awesome symbols if lualatex or xelatex is used
\else
\moderncvicons{marvosym} % use marvosym symbols pdflatex is used
\fi
\else
\moderncvicons{marvosym}
\moderncvicons{letters} % do not use symbols, use letters
\fi

View file

@ -12,20 +12,40 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{moderncvstyleempty}[2021/01/21 v2.1.0 modern curriculum vitae scheme: empty]
%-------------------------------------------------------------------------------
% required packages
%-------------------------------------------------------------------------------
%-------------------------------------------------------------------------------
% package options
%-------------------------------------------------------------------------------
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
\DeclareOption{symbols} {\@symbolstrue}
\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
\ExecuteOptions{symbols}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
% style definition
%-------------------------------------------------------------------------------
%-------------------------------------------------------------------------------
% fonts & icons
%-------------------------------------------------------------------------------
% symbols
\if@symbols
\ifxetexorluatex
\moderncvicons{awesome} % use font-awesome symbols if lualatex or xelatex is used
\else
\moderncvicons{marvosym} % use marvosym symbols pdflatex is used
\fi
\else
\moderncvicons{letters} % do not use symbols, use letters
\fi
% see moderncv.cls for command declarations that needs to be implemented, e.g. \maketitle, \section, \subsections, \cvline, etc
\endinput

View file

@ -12,8 +12,13 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{moderncvstylefancy}[2021/01/21 v2.1.0 modern curriculum vitae and letter style scheme: fancy]
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
\DeclareOption{symbols} {\@symbolstrue}
\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
\ExecuteOptions{}
\ExecuteOptions{symbols}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
@ -30,12 +35,16 @@
{}
%\fi
% symbols
\RequirePackage{ifxetex}
\ifxetexorluatex
\moderncvicons{awesome}
\if@symbols
\ifxetexorluatex
\moderncvicons{awesome} % use font-awesome symbols if lualatex or xelatex is used
\else
\moderncvicons{marvosym} % use marvosym symbols pdflatex is used
\fi
\else
\moderncvicons{marvosym}
\moderncvicons{letters} % do not use symbols, use letters
\fi

View file

@ -12,10 +12,14 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{moderncvstyleoldstyle}[2021/01/21 v2.1.0 modern curriculum vitae and letter style scheme: oldstyle]
\DeclareOption*{}% avoid choking on unknown options
\ExecuteOptions{}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
\DeclareOption{symbols} {\@symbolstrue}
\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
\ExecuteOptions{symbols}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
% fonts & icons
@ -35,7 +39,15 @@
%\fi
% symbols
\moderncvicons{letters}
\if@symbols
\ifxetexorluatex
\moderncvicons{awesome} % use font-awesome symbols if lualatex or xelatex is used
\else
\moderncvicons{marvosym} % use marvosym symbols pdflatex is used
\fi
\else
\moderncvicons{letters} % do not use symbols, use letters
\fi
%-------------------------------------------------------------------------------

View file

@ -23,10 +23,9 @@
%\setlength{\hintscolumnwidth}{3cm} % if you want to change the width of the column with the dates
%\setlength{\makecvheadnamewidth}{10cm} % for the 'classic' style, if you want to force the width allocated to your name and avoid line breaks. be careful though, the length is normally calculated to avoid any overlap with your personal info; use this at your own typographical risks...
% personal data
\name{John}{Doe}
\title{Resumé title} % optional, remove / comment the line if not wanted
\title{Résumé title} % optional, remove / comment the line if not wanted
\address{street and number}{postcode city}{country}% optional, remove / comment the line if not wanted; the "postcode city" and "country" arguments can be omitted or provided empty
\phone[mobile]{+1~(234)~567~890} % optional, remove / comment the line if not wanted; the optional "type" of the phone can be "mobile" (default), "fixed" or "fax"
\phone[fixed]{+2~(345)~678~901}