From 03b8a435219b7720b5210c7cba5a2114672d2fb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Dobrowolski?= Date: Mon, 15 Sep 2025 01:05:58 +0200 Subject: [PATCH 01/10] Rework \social command --- moderncv.cls | 132 ++++++++++++++++++++------------------------ moderncvfooti.sty | 4 +- moderncvheadi.sty | 4 +- moderncvheadiii.sty | 4 +- moderncvheadiv.sty | 4 +- moderncvheadv.sty | 4 +- moderncvheadvi.sty | 2 +- moderncvheadvii.sty | 2 +- 8 files changed, 72 insertions(+), 84 deletions(-) diff --git a/moderncv.cls b/moderncv.cls index 3756507..3a2f2dd 100644 --- a/moderncv.cls +++ b/moderncv.cls @@ -256,80 +256,68 @@ % http://latex.org/forum/viewtopic.php?t=12239 \def\SplitMyMacro#1/#2{#2} +% Define links for different social networks +\newcommand{\linkedinlink}[2]{\protect\httpslink[#1]{www.linkedin.com/in/#2}} +\newcommand{\xinglink}[2]{\protect\httpslink[#1]{www.xing.com/profile/#2}} +\newcommand{\twitterlink}[2]{\protect\httpslink[#1]{twitter.com/#2}} +\newcommand{\mastodonlink}[2]{\protect\httpslink[#1]{#2}} +\newcommand{\githublink}[2]{\protect\httpslink[#1]{github.com/#2}} +\newcommand{\gitlablink}[2]{\protect\httpslink[#1]{gitlab.com/#2}} +\newcommand{\stackoverflowlink}[2]{\protect\httpslink[#1]{stackoverflow.com/users/#2}} +\newcommand{\bitbucketlink}[2]{\protect\httpslink[#1]{bitbucket.org/#2}} +\newcommand{\skypelink}[2]{\ifthenelse{\equal{#1}{}}{#1}{#2}} +\newcommand{\orcidlink}[2]{\protect\httpslink[#1]{orcid.org/#2}} +\newcommand{\researchgatelink}[2]{\protect\httpslink[#1]{www.researchgate.net/profile/#2}} +\newcommand{\researcheridlink}[2]{\protect\httpslink[#1]{www.researcherid.com/rid/#2}} +\newcommand{\telegramlink}[2]{\protect\httpslink[#1]{t.me/#2}} +\newcommand{\whatsapplink}[2]{\protect\httpslink[#1]{wa.me/#2}} +\newcommand{\signallink}[2]{\ifthenelse{\equal{#1}{}}{#1}{#2}} +\newcommand{\matrixlink}[2]{\protect\httpslink[#1]{matrix.to/\#/#2}} +\newcommand{\googlescholarlink}[2]{\protect\httpslink[#1]{scholar.google.com/citations?user=#2}} +\newcommand{\codeberglink}[2]{\protect\httpslink[#1]{codeberg.org/#2}} +\newcommand{\discordlink}[2]{\ifthenelse{\equal{#1}{}}{#1}{#2}} +\newcommand{\twitchlink}[2]{\protect\httpslink[#1]{twitch.tv/#2}} +\newcommand{\youtubelink}[2]{\protect\httpslink[#1]{youtube.com/#2}} +\newcommand{\tiktoklink}[2]{\protect\httpslink[#1]{tiktok.com/@#2}} +\newcommand{\instagramlink}[2]{\protect\httpslink[#1]{instagram.com/#2}} +\newcommand{\soundcloudlink}[2]{\protect\httpslink[#1]{soundcloud.com/#2}} +\newcommand{\steamlink}[2]{\protect\httpslink[#1]{steamcommunity.com/id/#2}} +\newcommand{\xboxlink}[2]{\protect\httpslink[#1]{account.xbox.com/profile?gamertag=#2}} +\newcommand{\playstationlink}[2]{\ifthenelse{\equal{#1}{}}{#1}{#2}} +\newcommand{\battlenetlink}[2]{\ifthenelse{\equal{#1}{}}{#1}{#2}} +\newcommand{\arxivlink}[2]{\protect\httpslink[#1]{arxiv.org/a/#2}} +\newcommand{\inspirelink}[2]{\protect\httpslink[#1]{inspirehep.net/authors/#2}} +\newcommand{\simplexlink}[2]{\protect\httpslink[#1]{simplex.chat/#2}} +\newcommand{\threemalink}[2]{\protect\httpslink[#1]{threema.id/#2}} -% adds a social link to one's personal information (optional) -% usage: \social[][]{} -% where should be either: -% - "linkedin" -% - "xing" -% - "twitter" -% - "mastodon" -% - "github" -% - "gitlab" -% - "stackoverflow" -% - "bitbucket" -% - "skype" -% - "orcid" -% - "researchgate" -% - "researcherid" -% - "telegram" -% - "whatsapp" -% - "signal" -% - "matrix" -% - "googlescholar" -% - "codeberg" -% - "discord" -% - "twitch" -% - "youtube" -% - "tiktok" -% - "instagram" -% - "soundcloud" -% - "steam -% - "xbox" -% - "playstation" -% - "battlenet" -% - "arxiv" -% - "inspire" -% - "simplex" -% - "threema" +\NewDocumentCommand{\socialIconLink}{m}{ + \ifx\previtem\empty + % Do nothing on first iteration. This way we 'shift' the whole list by one. + \else % The actual work happens here. + \unskip\unskip\unskip~% Get rid of a glue space inserted by \ProcessList + \expandafter\expandafter\csname\previtem link\endcsname{\csname\previtem socialsymbol\endcsname}{\username} + % Eg for (linkedin, username) -> \linkedinlink{\linkedinsocialsymbol}{username} + \fi + \def\previtem{#1} % Update previtem +} + +% Adds a links to social networks +% usage: \social[,]{} +% If you have the same username you can specify multiple networks separating them by commas. +% The entries are shown in order they are added. +% To be supported network needs a \networknamelink and \networknamesocialsymbol commands. \collectionnew{socials} -\NewDocumentCommand{\social}{O{}O{}m}{% - \ifthenelse{\equal{#2}{}}% - {% - \ifthenelse{\equal{#1}{linkedin}} {\collectionadd[linkedin]{socials} {\protect\httpslink[#3]{www.linkedin.com/in/#3}}} {}% - \ifthenelse{\equal{#1}{xing}} {\collectionadd[xing]{socials} {\protect\httpslink[#3]{www.xing.com/profile/#3}}} {}% - \ifthenelse{\equal{#1}{twitter}} {\collectionadd[twitter]{socials} {\protect\httpslink[#3]{twitter.com/#3}}} {}% - \ifthenelse{\equal{#1}{mastodon}} {\collectionadd[mastodon]{socials} {\protect\httpslink[#3]{#3}}} {}% - \ifthenelse{\equal{#1}{github}} {\collectionadd[github]{socials} {\protect\httpslink[#3]{github.com/#3}}} {}% - \ifthenelse{\equal{#1}{gitlab}} {\collectionadd[gitlab]{socials} {\protect\httpslink[#3]{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]{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}}} {}% - \ifthenelse{\equal{#1}{researcherid}} {\collectionadd[researcherid]{socials} {\protect\httpslink[#3]{www.researcherid.com/rid/#3}}} {}% - \ifthenelse{\equal{#1}{telegram}} {\collectionadd[telegram]{socials} {\protect\httpslink[#3]{t.me/#3}}} {}% - \ifthenelse{\equal{#1}{whatsapp}} {\collectionadd[whatsapp]{socials} {\protect\httpslink[#3]{wa.me/#3}}} {}% - \ifthenelse{\equal{#1}{signal}} {\collectionadd[signal]{socials} {#3}} {}% - \ifthenelse{\equal{#1}{matrix}} {\collectionadd[matrix]{socials} {\httpslink[#3]{matrix.to/\#/#3}}} {}% - \ifthenelse{\equal{#1}{googlescholar}}{\collectionadd[googlescholar]{socials}{\protect\httpslink[#3]{scholar.google.com/citations?user=#3}}} {}% - \ifthenelse{\equal{#1}{codeberg}} {\collectionadd[codeberg]{socials} {\protect\httpslink[#3]{codeberg.org/#3}}} {}% - \ifthenelse{\equal{#1}{discord}} {\collectionadd[discord]{socials} {#3}} {}% - \ifthenelse{\equal{#1}{twitch}} {\collectionadd[twitch]{socials} {\protect\httpslink[#3]{twitch.tv/#3}}} {}% - \ifthenelse{\equal{#1}{youtube}} {\collectionadd[youtube]{socials} {\protect\httpslink[#3]{youtube.com/#3}}} {}% - \ifthenelse{\equal{#1}{tiktok}} {\collectionadd[tiktok]{socials} {\protect\httpslink[#3]{tiktok.com/@#3}}} {}% - \ifthenelse{\equal{#1}{instagram}} {\collectionadd[instagram]{socials} {\protect\httpslink[#3]{instagram.com/#3}}} {}% - \ifthenelse{\equal{#1}{soundcloud}} {\collectionadd[soundcloud]{socials} {\protect\httpslink[#3]{soundcloud.com/#3}}} {}% - \ifthenelse{\equal{#1}{steam}} {\collectionadd[steam]{socials} {\protect\httpslink[#3]{steamcommunity.com/id/#3}}} {}% - \ifthenelse{\equal{#1}{xbox}} {\collectionadd[xbox]{socials} {\protect\httpslink[#3]{account.xbox.com/profile?gamertag=#3}}} {}% - \ifthenelse{\equal{#1}{playstation}} {\collectionadd[playstation]{socials} {#3}} {}% - \ifthenelse{\equal{#1}{battlenet}} {\collectionadd[battlenet]{socials} {#3}} {}% - \ifthenelse{\equal{#1}{arxiv}} {\collectionadd[arxiv]{socials} {\protect\httpslink[#3]{arxiv.org/a/#3}}} {}% - \ifthenelse{\equal{#1}{inspire}} {\collectionadd[inspire]{socials} {\protect\httpslink[#3]{inspirehep.net/authors/#3}}} {}% - \ifthenelse{\equal{#1}{simplex}} {\collectionadd[simplex]{socials} {\protect\httpslink[#3]{simplex.chat/#3}}} {}% - \ifthenelse{\equal{#1}{threema}} {\collectionadd[threema]{socials} {\protect\httpslink[#3]{threema.id/#3}}} {}% - } - {\collectionadd[#1]{socials}{\protect\httpslink[#3]{#2}}}}% +\NewDocumentCommand{\social}{>{\SplitList{,}}o m}{ + \collectionadd{socials}{ + \begingroup % Make sure \username does not leak outside + \def\username{#2} % \ProcessList can't handle multiple arguments. Work around it by defining a var. + \let\previtem\empty % Ugly hack to handle all but last element by acting on (i-1)th element + \ProcessList{#1}{\socialIconLink} % Common case handled here (all but last item) + \unskip\unskip\unskip~% Get rid of a glue space inserted by \ProcessList + \expandafter\expandafter\csname\previtem link\endcsname{\csname\previtem socialsymbol\endcsname~\username}{\username} % Last item + \endgroup + } +} % defines additional personal information (optional) % usage: \extrainfo{} diff --git a/moderncvfooti.sty b/moderncvfooti.sty index 92f9de7..842d8ea 100644 --- a/moderncvfooti.sty +++ b/moderncvfooti.sty @@ -92,7 +92,7 @@ \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link - \addtofoot{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}% + \addtofoot{\collectionloopitem}}% \ifthenelse{\isundefined{\@extrainfo}}{}{\addtofoot{\@extrainfo}}% \ifthenelse{\lengthtest{\footboxwidth=0pt}}{}{\flushfoot}% the lengthtest is required to avoid flushing an empty footer, which could cause a blank line due to the \\ after the address, if no other personal info is used }}}% @@ -125,7 +125,7 @@ \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link - \addtofoot{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}% + \addtofoot{\collectionloopitem}}% \ifthenelse{\isundefined{\@extrainfo}}{}{\addtofoot{\@extrainfo}}% \ifthenelse{\lengthtest{\footboxwidth=0pt}}{}{\flushfoot}% the lengthtest is required to avoid flushing an empty footer, which could cause a blank line due to the \\ after the address, if no other personal info is used }}}% diff --git a/moderncvheadi.sty b/moderncvheadi.sty index 930b1fd..9396c8d 100644 --- a/moderncvheadi.sty +++ b/moderncvheadi.sty @@ -77,7 +77,7 @@ \protected@edef\phonesdetails{\phonesdetails\protect\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% \def\socialsdetails{}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link - \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}% + \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\collectionloopitem}}% \savebox{\makecvheaddetailsbox}{% \addressfont\color{addresscolor}% \if@left\begin{tabular}[b]{@{}r@{}}\fi% @@ -181,7 +181,7 @@ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link - \makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}% + \makenewline\collectionloopitem}% \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi% \end{minipage}\\[2em] % recipient block diff --git a/moderncvheadiii.sty b/moderncvheadiii.sty index 6919dee..bbaad63 100644 --- a/moderncvheadiii.sty +++ b/moderncvheadiii.sty @@ -100,7 +100,7 @@ \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link - \addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}% + \addtomakeheaddetails{\collectionloopitem}}% \ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}% \flushmakeheaddetails}\fi}}% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \makehead @@ -160,7 +160,7 @@ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link - \makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}% + \makenewline\collectionloopitem}% \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi% \end{minipage}\\[2em] % recipient block diff --git a/moderncvheadiv.sty b/moderncvheadiv.sty index 0c9970a..5e39586 100644 --- a/moderncvheadiv.sty +++ b/moderncvheadiv.sty @@ -116,7 +116,7 @@ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link - \makenewline\hbox to 1.0em{\csname\collectionloopkey socialsymbol\endcsname}~\collectionloopitem}% + \makenewline\collectionloopitem}% \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi} @@ -165,7 +165,7 @@ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link - \makenewline\hbox to 1.0em{\csname\collectionloopkey socialsymbol\endcsname}~\collectionloopitem}% + \makenewline\collectionloopitem}% \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}}% % ensure no extra spacing after \makelettertitle due to a possible blank line %\ignorespacesafterend% not working diff --git a/moderncvheadv.sty b/moderncvheadv.sty index 2431ab3..f95b5fc 100644 --- a/moderncvheadv.sty +++ b/moderncvheadv.sty @@ -88,7 +88,7 @@ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol~% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link - \makenewline\csname\collectionloopkey socialsymbol\endcsname~\collectionloopitem}% + \makenewline\collectionloopitem}% \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}\fi}% {% % name and optional title @@ -161,7 +161,7 @@ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link - \makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}% + \makenewline\collectionloopitem}% \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi% \end{minipage}\\[2em] % recipient block diff --git a/moderncvheadvi.sty b/moderncvheadvi.sty index 405fdf2..2a5744e 100644 --- a/moderncvheadvi.sty +++ b/moderncvheadvi.sty @@ -121,7 +121,7 @@ \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link - \addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}% + \addtomakeheaddetails{\collectionloopitem}}% \ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}% \flushmakeheaddetails}\fi% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \makehead; not forcing it here because of the possible quote % optional quote diff --git a/moderncvheadvii.sty b/moderncvheadvii.sty index 6e6f1a1..d52ab0b 100644 --- a/moderncvheadvii.sty +++ b/moderncvheadvii.sty @@ -84,7 +84,7 @@ \protected@edef\phonesdetails{\phonesdetails\protect\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% \def\socialsdetails{}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link - \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}% + \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\collectionloopitem}}% \savebox{\makecvheaddetailsbox}{% \addressfont\color{headtext}% \if@left\begin{tabular}[b]{@{}r@{}}\fi% From 8badf2b0dca94cbd4f60f0974c923df19bdda59e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Dobrowolski?= Date: Mon, 15 Sep 2025 01:23:49 +0200 Subject: [PATCH 02/10] Fold email handling into \social --- moderncv.cls | 14 ++------------ moderncvfooti.sty | 2 -- moderncvheadi.sty | 2 -- moderncvheadii.sty | 1 - moderncvheadiii.sty | 2 -- moderncvheadiv.sty | 2 -- moderncvheadv.sty | 2 -- moderncvheadvi.sty | 1 - moderncvheadvii.sty | 2 -- moderncviconsacademic.sty | 2 +- moderncviconsawesome.sty | 2 +- moderncviconsletters.sty | 2 +- moderncviconsmarvosym.sty | 2 +- template.tex | 2 +- 14 files changed, 7 insertions(+), 31 deletions(-) diff --git a/moderncv.cls b/moderncv.cls index 3a2f2dd..ddab9ae 100644 --- a/moderncv.cls +++ b/moderncv.cls @@ -233,10 +233,6 @@ % usage: \born{date, place} \newcommand*{\born}[1]{\def\@born{#1}} -% defines one's email (optional) -% usage: \email{} -\newcommand*{\email}[1]{\def\@email{#1}} - % defines one's home page (optional) % usage: \homepage[]{} % where should be either "https" (default) or "http" @@ -257,6 +253,7 @@ \def\SplitMyMacro#1/#2{#2} % Define links for different social networks +\newcommand{\emaillink}[2]{\protect\href{mailto:#2}{#1}} \newcommand{\linkedinlink}[2]{\protect\httpslink[#1]{www.linkedin.com/in/#2}} \newcommand{\xinglink}[2]{\protect\httpslink[#1]{www.xing.com/profile/#2}} \newcommand{\twitterlink}[2]{\protect\httpslink[#1]{twitter.com/#2}} @@ -351,7 +348,7 @@ \newcommand*{\mobilephonesymbol} {} \newcommand*{\fixedphonesymbol} {} \newcommand*{\faxphonesymbol} {} -\newcommand*{\emailsymbol} {} +\newcommand*{\emailsocialsymbol} {} \newcommand*{\homepagesymbol} {} \newcommand*{\linkedinsocialsymbol} {} \newcommand*{\xingsocialsymbol} {} @@ -610,13 +607,6 @@ {\href{https://#2}{#2}}% {\href{https://#2}{#1}}}} -% makes an email hyperlink -% usage: \emaillink[optional text]{link} -\newcommand*{\emaillink}[2][]{% - \ifthenelse{\equal{#1}{}}% - {\href{mailto:#2}{#2}}% - {\href{mailto:#2}{#1}}} - % makes a tel hyperlink % usage: \tellink[optional text]{link} \newcommand*{\tellink}[2][]{% diff --git a/moderncvfooti.sty b/moderncvfooti.sty index 842d8ea..3458f00 100644 --- a/moderncvfooti.sty +++ b/moderncvfooti.sty @@ -88,7 +88,6 @@ \ifthenelse{\isundefined{\@born}}{}{\addtofoot{\bornsymbol\@born}\flushfoot\@firstfootelementtrue\\}% \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number \addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% - \ifthenelse{\isundefined{\@email}}{}{\addtofoot{\emailsymbol\emaillink{\@email}}}% \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link @@ -121,7 +120,6 @@ \ifthenelse{\isundefined{\@born}}{}{\addtofoot{\bornsymbol\@born}\flushfoot\@firstfootelementtrue\\}% \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number \addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% - \ifthenelse{\isundefined{\@email}}{}{\addtofoot{\emailsymbol\emaillink{\@email}}}% \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link diff --git a/moderncvheadi.sty b/moderncvheadi.sty index 9396c8d..b09e31e 100644 --- a/moderncvheadi.sty +++ b/moderncvheadi.sty @@ -87,7 +87,6 @@ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% \ifthenelse{\isundefined{\@born}}{}{\makenewline\bornsymbol\@born}% \phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict - \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}% \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \socialsdetails% needs to be pre-rendered as loops and tabulars seem to conflict @@ -177,7 +176,6 @@ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}% - \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}% \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link diff --git a/moderncvheadii.sty b/moderncvheadii.sty index a36c8e1..b38d58b 100644 --- a/moderncvheadii.sty +++ b/moderncvheadii.sty @@ -143,7 +143,6 @@ \ifthenelse{\isundefined{\@born}}{}{\addtomakeheaddetails{\bornsymbol\@born}}% \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number \addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% - \ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}% \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link diff --git a/moderncvheadiii.sty b/moderncvheadiii.sty index bbaad63..aa4d155 100644 --- a/moderncvheadiii.sty +++ b/moderncvheadiii.sty @@ -96,7 +96,6 @@ \ifthenelse{\isundefined{\@born}}{}{\addtomakeheaddetails{\bornsymbol\@born}}% \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number \addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% - \ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}% \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link @@ -156,7 +155,6 @@ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}% - \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}% \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link diff --git a/moderncvheadiv.sty b/moderncvheadiv.sty index 5e39586..8d47b5f 100644 --- a/moderncvheadiv.sty +++ b/moderncvheadiv.sty @@ -112,7 +112,6 @@ \ifthenelse{\isundefined{\@born}}{}{\makenewline\hbox to 1.0em{\bornsymbol}~\@born}% \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number \makenewline\hbox to 1.0em{\csname\collectionloopkey phonesymbol\endcsname}~\collectionloopitem}% - \ifthenelse{\isundefined{\@email}}{}{\makenewline\hbox to 1.0em{\emailsymbol}~\emaillink{\@email}}% \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link @@ -161,7 +160,6 @@ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number \makenewline\hbox to 1.0em{\csname\collectionloopkey phonesymbol\endcsname}~\collectionloopitem}% - \ifthenelse{\isundefined{\@email}}{}{\makenewline\hbox to 1.0em{\emailsymbol}~\emaillink{\@email}}% \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link diff --git a/moderncvheadv.sty b/moderncvheadv.sty index f95b5fc..5a2c390 100644 --- a/moderncvheadv.sty +++ b/moderncvheadv.sty @@ -84,7 +84,6 @@ \ifthenelse{\isundefined{\@born}}{}{\makenewline\bornsymbol~\@born}% \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number \makenewline\csname\collectionloopkey phonesymbol\endcsname~\collectionloopitem}% - \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol~\emaillink{\@email}}% \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol~% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link @@ -157,7 +156,6 @@ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}% - \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}% \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link diff --git a/moderncvheadvi.sty b/moderncvheadvi.sty index 2a5744e..3833012 100644 --- a/moderncvheadvi.sty +++ b/moderncvheadvi.sty @@ -117,7 +117,6 @@ \ifthenelse{\isundefined{\@born}}{}{\addtomakeheaddetails{\bornsymbol\@born}}% \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number \addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% - \ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}% \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link diff --git a/moderncvheadvii.sty b/moderncvheadvii.sty index d52ab0b..f8e4d51 100644 --- a/moderncvheadvii.sty +++ b/moderncvheadvii.sty @@ -94,7 +94,6 @@ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% \ifthenelse{\isundefined{\@born}}{}{\makenewline\bornsymbol\@born}% \phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict - \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}% \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}% \socialsdetails% needs to be pre-rendered as loops and tabulars seem to conflict \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}% @@ -198,7 +197,6 @@ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% \phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict - \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}% \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}% \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}% \end{tabular}% diff --git a/moderncviconsacademic.sty b/moderncviconsacademic.sty index 9e06107..f00941c 100644 --- a/moderncviconsacademic.sty +++ b/moderncviconsacademic.sty @@ -41,7 +41,7 @@ %\newcommand*{\mobilephonesymbol} {} %\newcommand*{\fixedphonesymbol} {} %\newcommand*{\faxphonesymbol} {} -%\newcommand*{\emailsymbol} {} +%\newcommand*{\emailsocialsymbol} {} %\newcommand*{\homepagesymbol} {} %\newcommand*{\linkedinsocialsymbol} {} %\newcommand*{\xingsocialsymbol} {} diff --git a/moderncviconsawesome.sty b/moderncviconsawesome.sty index 601ba32..caaf3ef 100644 --- a/moderncviconsawesome.sty +++ b/moderncviconsawesome.sty @@ -69,7 +69,7 @@ \renewcommand*{\mobilephonesymbol} {{\color{mobilephone}\small\faMobile*}~} % alternative: \faMobile (solid style) \renewcommand*{\fixedphonesymbol} {{\color{fixedphone}\small\faPhone*}~} % alternative: \faPhone (reversed) \renewcommand*{\faxphonesymbol} {{\color{faxphone}\small\faFax}~} % alternative: \faPrint -\renewcommand*{\emailsymbol} {{\color{email}\small\faEnvelope[regular]}~} % alternative: \faInbox, \faEnvelope (solid style) +\renewcommand*{\emailsocialsymbol} {{\color{email}\small\faEnvelope[regular]}~} % alternative: \faInbox, \faEnvelope (solid style) \renewcommand*{\homepagesymbol} {{\color{homepage}\small\faGlobeAmericas}~} % alternative: \faHome, \faGlobe, \faGlobeEurope, \faGlobeAfrica, \faGlobeAsia \renewcommand*{\linkedinsocialsymbol} {{\color{linkedin}\small\faLinkedinIn}~} % alternative: \faLinkedin \renewcommand*{\xingsocialsymbol} {{\color{xing}\small\faXing}~} % alternative: \faXingSquare diff --git a/moderncviconsletters.sty b/moderncviconsletters.sty index 85ae5ae..1bed64d 100644 --- a/moderncviconsletters.sty +++ b/moderncviconsletters.sty @@ -26,7 +26,7 @@ \renewcommand*{\mobilephonesymbol} {\textbf{M}~} \renewcommand*{\fixedphonesymbol} {\textbf{T}~} \renewcommand*{\faxphonesymbol} {\textbf{F}~} -\renewcommand*{\emailsymbol} {\textbf{E}~} +\renewcommand*{\emailsocialsymbol} {\textbf{E}~} \renewcommand*{\homepagesymbol} {\textbf{W}~} \renewcommand*{\linkedinsocialsymbol} {\textbf{in}~} \renewcommand*{\xingsocialsymbol} {\textbf{xi}~} diff --git a/moderncviconsmarvosym.sty b/moderncviconsmarvosym.sty index 2dbc710..c560660 100644 --- a/moderncviconsmarvosym.sty +++ b/moderncviconsmarvosym.sty @@ -22,7 +22,7 @@ \renewcommand*{\mobilephonesymbol} {\marvosymbol{72}~} \renewcommand*{\fixedphonesymbol} {\marvosymbol{84}~} \renewcommand*{\faxphonesymbol} {\marvosymbol{117}~} -\renewcommand*{\emailsymbol} {\marvosymbol{66}~} +\renewcommand*{\emailsocialsymbol} {\marvosymbol{66}~} \renewcommand*{\homepagesymbol} {{\Large\marvosymbol{205}}~} \endinput diff --git a/template.tex b/template.tex index a99c6b6..45c85b7 100644 --- a/template.tex +++ b/template.tex @@ -60,7 +60,7 @@ \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} \phone[fax]{+3~(456)~789~012} -\email{john@doe.org} % optional, remove / comment the line if not wanted +\social[email]{john@doe.org} % optional, remove / comment the line if not wanted \homepage{www.johndoe.com} % optional, remove / comment the line if not wanted % Social icons From 6309e011e0a4b2b2177d6e99a0b6400650943142 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Dobrowolski?= Date: Mon, 15 Sep 2025 01:58:56 +0200 Subject: [PATCH 03/10] Fold phone handling into \social --- moderncv.cls | 18 ++++-------------- moderncvfooti.sty | 4 ---- moderncvheadi.sty | 6 ------ moderncvheadii.sty | 2 -- moderncvheadiii.sty | 4 ---- moderncvheadiv.sty | 4 ---- moderncvheadv.sty | 4 ---- moderncvheadvi.sty | 2 -- moderncvheadvii.sty | 8 -------- moderncviconsacademic.sty | 6 +++--- moderncviconsawesome.sty | 6 +++--- moderncviconsletters.sty | 6 +++--- moderncviconsmarvosym.sty | 6 +++--- 13 files changed, 16 insertions(+), 60 deletions(-) diff --git a/moderncv.cls b/moderncv.cls index ddab9ae..9896fc9 100644 --- a/moderncv.cls +++ b/moderncv.cls @@ -238,22 +238,12 @@ % where should be either "https" (default) or "http" \NewDocumentCommand{\homepage}{O{https}m}{\def\@homepageprotocol{#1}\def\@homepage{#2}} -% adds a fixed/mobile/fax number to one's personal information (optional) -% usage: \phone[]{} -% where should be either "fixed" (default), "mobile" or "fax -\collectionnew{phones} -\NewDocumentCommand{\phone}{O{fixed}m}{% - \ifthenelse{\equal{#1}{fax}}% - {\collectionadd[#1]{phones}{#2}} - {\collectionadd[#1]{phones}{\protect\tellink{#2}}} - } - - % http://latex.org/forum/viewtopic.php?t=12239 \def\SplitMyMacro#1/#2{#2} % Define links for different social networks \newcommand{\emaillink}[2]{\protect\href{mailto:#2}{#1}} +\newcommand{\mobilephonelink}[2]{\protect\tellink[#1]{#2}} \newcommand{\linkedinlink}[2]{\protect\httpslink[#1]{www.linkedin.com/in/#2}} \newcommand{\xinglink}[2]{\protect\httpslink[#1]{www.xing.com/profile/#2}} \newcommand{\twitterlink}[2]{\protect\httpslink[#1]{twitter.com/#2}} @@ -345,9 +335,9 @@ \newcommand*{\listitemsymbol} {\labelitemi~} \newcommand*{\addresssymbol} {} \newcommand*{\bornsymbol} {} -\newcommand*{\mobilephonesymbol} {} -\newcommand*{\fixedphonesymbol} {} -\newcommand*{\faxphonesymbol} {} +\newcommand*{\mobilephonesocialsymbol} {} +\newcommand*{\fixedphonesocialsymbol} {} +\newcommand*{\faxphonesocialsymbol} {} \newcommand*{\emailsocialsymbol} {} \newcommand*{\homepagesymbol} {} \newcommand*{\linkedinsocialsymbol} {} diff --git a/moderncvfooti.sty b/moderncvfooti.sty index 3458f00..d9c10b5 100644 --- a/moderncvfooti.sty +++ b/moderncvfooti.sty @@ -86,8 +86,6 @@ \ifthenelse{\equal{\@addresscountry}{}}{}{\addtofoot[~--~]{\@addresscountry}}% \flushfoot\@firstfootelementtrue\\}% \ifthenelse{\isundefined{\@born}}{}{\addtofoot{\bornsymbol\@born}\flushfoot\@firstfootelementtrue\\}% - \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number - \addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link @@ -118,8 +116,6 @@ \ifthenelse{\equal{\@addresscountry}{}}{}{\addtofoot[~--~]{\@addresscountry}}% \flushfoot\@firstfootelementtrue\\}% \ifthenelse{\isundefined{\@born}}{}{\addtofoot{\bornsymbol\@born}\flushfoot\@firstfootelementtrue\\}% - \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number - \addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link diff --git a/moderncvheadi.sty b/moderncvheadi.sty index b09e31e..f70bbcf 100644 --- a/moderncvheadi.sty +++ b/moderncvheadi.sty @@ -72,9 +72,6 @@ % optional detailed information (pre-rendering) \@initializebox{\makecvheaddetailsbox}% \if@details% - \def\phonesdetails{}% - \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number - \protected@edef\phonesdetails{\phonesdetails\protect\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% \def\socialsdetails{}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\collectionloopitem}}% @@ -86,7 +83,6 @@ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% \ifthenelse{\isundefined{\@born}}{}{\makenewline\bornsymbol\@born}% - \phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \socialsdetails% needs to be pre-rendered as loops and tabulars seem to conflict @@ -174,8 +170,6 @@ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% - \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number - \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}% \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link diff --git a/moderncvheadii.sty b/moderncvheadii.sty index b38d58b..22a9c79 100644 --- a/moderncvheadii.sty +++ b/moderncvheadii.sty @@ -141,8 +141,6 @@ \ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}% \flushmakeheaddetails\@firstmakeheaddetailselementtrue\\\null}% \ifthenelse{\isundefined{\@born}}{}{\addtomakeheaddetails{\bornsymbol\@born}}% - \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number - \addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link diff --git a/moderncvheadiii.sty b/moderncvheadiii.sty index aa4d155..c36e158 100644 --- a/moderncvheadiii.sty +++ b/moderncvheadiii.sty @@ -94,8 +94,6 @@ \ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}% \flushmakeheaddetails\@firstmakeheaddetailselementtrue\\}% \ifthenelse{\isundefined{\@born}}{}{\addtomakeheaddetails{\bornsymbol\@born}}% - \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number - \addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link @@ -153,8 +151,6 @@ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% - \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number - \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}% \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link diff --git a/moderncvheadiv.sty b/moderncvheadiv.sty index 8d47b5f..ece2ec7 100644 --- a/moderncvheadiv.sty +++ b/moderncvheadiv.sty @@ -110,8 +110,6 @@ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% \ifthenelse{\isundefined{\@born}}{}{\makenewline\hbox to 1.0em{\bornsymbol}~\@born}% - \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number - \makenewline\hbox to 1.0em{\csname\collectionloopkey phonesymbol\endcsname}~\collectionloopitem}% \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link @@ -158,8 +156,6 @@ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% - \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number - \makenewline\hbox to 1.0em{\csname\collectionloopkey phonesymbol\endcsname}~\collectionloopitem}% \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link diff --git a/moderncvheadv.sty b/moderncvheadv.sty index 5a2c390..55d18b1 100644 --- a/moderncvheadv.sty +++ b/moderncvheadv.sty @@ -82,8 +82,6 @@ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% \ifthenelse{\isundefined{\@born}}{}{\makenewline\bornsymbol~\@born}% - \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number - \makenewline\csname\collectionloopkey phonesymbol\endcsname~\collectionloopitem}% \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol~% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link @@ -154,8 +152,6 @@ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% - \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number - \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}% \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link diff --git a/moderncvheadvi.sty b/moderncvheadvi.sty index 3833012..f8c0fb7 100644 --- a/moderncvheadvi.sty +++ b/moderncvheadvi.sty @@ -115,8 +115,6 @@ \ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}% \flushmakeheaddetails\@firstmakeheaddetailselementtrue\\\null}% \ifthenelse{\isundefined{\@born}}{}{\addtomakeheaddetails{\bornsymbol\@born}}% - \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number - \addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol% \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link diff --git a/moderncvheadvii.sty b/moderncvheadvii.sty index f8e4d51..7ae84e6 100644 --- a/moderncvheadvii.sty +++ b/moderncvheadvii.sty @@ -79,9 +79,6 @@ % optional detailed information (pre-rendering) \@initializebox{\makecvheaddetailsbox}% \if@details% - \def\phonesdetails{}% - \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number - \protected@edef\phonesdetails{\phonesdetails\protect\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% \def\socialsdetails{}% \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\collectionloopitem}}% @@ -93,7 +90,6 @@ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% \ifthenelse{\isundefined{\@born}}{}{\makenewline\bornsymbol\@born}% - \phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}% \socialsdetails% needs to be pre-rendered as loops and tabulars seem to conflict \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}% @@ -186,9 +182,6 @@ \@initializebox{\makeletterdetailsbox}% \if@details% - \def\phonesdetails{}% - \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number - \protected@edef\phonesdetails{\phonesdetails\protect\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% \savebox{\makeletterdetailsbox}{% \addressfont\color{headtext}% \if@left\begin{tabular}[b]{@{}r@{}}\fi% @@ -196,7 +189,6 @@ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% - \phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}% \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}% \end{tabular}% diff --git a/moderncviconsacademic.sty b/moderncviconsacademic.sty index f00941c..86a1484 100644 --- a/moderncviconsacademic.sty +++ b/moderncviconsacademic.sty @@ -38,9 +38,9 @@ %\newcommand*{\listitemsymbol} {\labelitemi~} %\newcommand*{\addresssymbol} {} %\newcommand*{\bornsymbol} {} -%\newcommand*{\mobilephonesymbol} {} -%\newcommand*{\fixedphonesymbol} {} -%\newcommand*{\faxphonesymbol} {} +%\newcommand*{\mobilephonesocialsymbol} {} +%\newcommand*{\fixedphonesocialsymbol} {} +%\newcommand*{\faxphonesocialsymbol} {} %\newcommand*{\emailsocialsymbol} {} %\newcommand*{\homepagesymbol} {} %\newcommand*{\linkedinsocialsymbol} {} diff --git a/moderncviconsawesome.sty b/moderncviconsawesome.sty index caaf3ef..a2fd58c 100644 --- a/moderncviconsawesome.sty +++ b/moderncviconsawesome.sty @@ -66,9 +66,9 @@ %\renewcommand*{\addresssymbol} {} -\renewcommand*{\mobilephonesymbol} {{\color{mobilephone}\small\faMobile*}~} % alternative: \faMobile (solid style) -\renewcommand*{\fixedphonesymbol} {{\color{fixedphone}\small\faPhone*}~} % alternative: \faPhone (reversed) -\renewcommand*{\faxphonesymbol} {{\color{faxphone}\small\faFax}~} % alternative: \faPrint +\renewcommand*{\mobilephonesocialsymbol} {{\color{mobilephone}\small\faMobile*}~} % alternative: \faMobile (solid style) +\renewcommand*{\fixedphonesocialsymbol} {{\color{fixedphone}\small\faPhone*}~} % alternative: \faPhone (reversed) +\renewcommand*{\faxphonesocialsymbol} {{\color{faxphone}\small\faFax}~} % alternative: \faPrint \renewcommand*{\emailsocialsymbol} {{\color{email}\small\faEnvelope[regular]}~} % alternative: \faInbox, \faEnvelope (solid style) \renewcommand*{\homepagesymbol} {{\color{homepage}\small\faGlobeAmericas}~} % alternative: \faHome, \faGlobe, \faGlobeEurope, \faGlobeAfrica, \faGlobeAsia \renewcommand*{\linkedinsocialsymbol} {{\color{linkedin}\small\faLinkedinIn}~} % alternative: \faLinkedin diff --git a/moderncviconsletters.sty b/moderncviconsletters.sty index 1bed64d..87e6678 100644 --- a/moderncviconsletters.sty +++ b/moderncviconsletters.sty @@ -23,9 +23,9 @@ %\renewcommand*{\labelitemiv} {\labelitemiii} % no change from default in moderncv.cls \renewcommand*{\addresssymbol} {} -\renewcommand*{\mobilephonesymbol} {\textbf{M}~} -\renewcommand*{\fixedphonesymbol} {\textbf{T}~} -\renewcommand*{\faxphonesymbol} {\textbf{F}~} +\renewcommand*{\mobilephonesocialsymbol} {\textbf{M}~} +\renewcommand*{\fixedphonesocialsymbol} {\textbf{T}~} +\renewcommand*{\faxphonesocialsymbol} {\textbf{F}~} \renewcommand*{\emailsocialsymbol} {\textbf{E}~} \renewcommand*{\homepagesymbol} {\textbf{W}~} \renewcommand*{\linkedinsocialsymbol} {\textbf{in}~} diff --git a/moderncviconsmarvosym.sty b/moderncviconsmarvosym.sty index c560660..bdaa241 100644 --- a/moderncviconsmarvosym.sty +++ b/moderncviconsmarvosym.sty @@ -19,9 +19,9 @@ \renewcommand*{\labelitemi} {\strut\textcolor{color1}{\marvosymbol{123}}} % equivalent to \Neutral from marvosym package; alternative: \fontencoding{U}\fontfamily{ding}\selectfont\tiny\symbol{'102} -\renewcommand*{\mobilephonesymbol} {\marvosymbol{72}~} -\renewcommand*{\fixedphonesymbol} {\marvosymbol{84}~} -\renewcommand*{\faxphonesymbol} {\marvosymbol{117}~} +\renewcommand*{\mobilephonesocialsymbol}{\marvosymbol{72}~} +\renewcommand*{\fixedphonesocialsymbol}{\marvosymbol{84}~} +\renewcommand*{\faxphonesocialsymbol}{\marvosymbol{117}~} \renewcommand*{\emailsocialsymbol} {\marvosymbol{66}~} \renewcommand*{\homepagesymbol} {{\Large\marvosymbol{205}}~} From 9f78afc30af71965a73813598959f0ea86fc72aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Dobrowolski?= Date: Mon, 15 Sep 2025 02:27:22 +0200 Subject: [PATCH 04/10] Remove spaces from \socialicon commands --- moderncviconsawesome.sty | 62 ++++++++++++++++---------------- moderncviconsletters.sty | 74 +++++++++++++++++++-------------------- moderncviconsmarvosym.sty | 10 +++--- 3 files changed, 73 insertions(+), 73 deletions(-) diff --git a/moderncviconsawesome.sty b/moderncviconsawesome.sty index a2fd58c..3e3d4d1 100644 --- a/moderncviconsawesome.sty +++ b/moderncviconsawesome.sty @@ -66,41 +66,41 @@ %\renewcommand*{\addresssymbol} {} -\renewcommand*{\mobilephonesocialsymbol} {{\color{mobilephone}\small\faMobile*}~} % alternative: \faMobile (solid style) -\renewcommand*{\fixedphonesocialsymbol} {{\color{fixedphone}\small\faPhone*}~} % alternative: \faPhone (reversed) -\renewcommand*{\faxphonesocialsymbol} {{\color{faxphone}\small\faFax}~} % alternative: \faPrint -\renewcommand*{\emailsocialsymbol} {{\color{email}\small\faEnvelope[regular]}~} % alternative: \faInbox, \faEnvelope (solid style) -\renewcommand*{\homepagesymbol} {{\color{homepage}\small\faGlobeAmericas}~} % alternative: \faHome, \faGlobe, \faGlobeEurope, \faGlobeAfrica, \faGlobeAsia -\renewcommand*{\linkedinsocialsymbol} {{\color{linkedin}\small\faLinkedinIn}~} % alternative: \faLinkedin -\renewcommand*{\xingsocialsymbol} {{\color{xing}\small\faXing}~} % alternative: \faXingSquare -\renewcommand*{\twittersocialsymbol} {{\color{twitter}\small\faTwitter}~} % alternative: \faTwitterSquare -\renewcommand*{\mastodonsocialsymbol} {{\color{mastodon}\small\faMastodon}~} -\renewcommand*{\githubsocialsymbol} {{\color{github}\small\faGithub}~} % alternative: \faGithubSquare, \faGithub* -\renewcommand*{\gitlabsocialsymbol} {{\color{gitlab}\small\faGitlab}~} -\renewcommand*{\stackoverflowsocialsymbol}{{\color{stackoverflow}\small\faStackOverflow}~} -\renewcommand*{\bitbucketsocialsymbol} {{\color{bitbucket}\small\faBitbucket}~} -\renewcommand*{\skypesocialsymbol} {{\color{skype}\small\faSkype}~} -\renewcommand*{\orcidsocialsymbol} {{\color{orcid}\small\faOrcid}~} -\renewcommand*{\researchgatesocialsymbol} {{\color{researchgate}\small\faResearchgate}~} +\renewcommand*{\mobilephonesocialsymbol} {{\color{mobilephone}\small\faMobile*}} % alternative: \faMobile (solid style) +\renewcommand*{\fixedphonesocialsymbol} {{\color{fixedphone}\small\faPhone*}} % alternative: \faPhone (reversed) +\renewcommand*{\faxphonesocialsymbol} {{\color{faxphone}\small\faFax}} % alternative: \faPrint +\renewcommand*{\emailsocialsymbol} {{\color{email}\small\faEnvelope[regular]}} % alternative: \faInbox, \faEnvelope (solid style) +\renewcommand*{\homepagesymbol} {{\color{homepage}\small\faGlobeAmericas}} % alternative: \faHome, \faGlobe, \faGlobeEurope, \faGlobeAfrica, \faGlobeAsia +\renewcommand*{\linkedinsocialsymbol} {{\color{linkedin}\small\faLinkedinIn}} % alternative: \faLinkedin +\renewcommand*{\xingsocialsymbol} {{\color{xing}\small\faXing}} % alternative: \faXingSquare +\renewcommand*{\twittersocialsymbol} {{\color{twitter}\small\faTwitter}} % alternative: \faTwitterSquare +\renewcommand*{\mastodonsocialsymbol} {{\color{mastodon}\small\faMastodon}} +\renewcommand*{\githubsocialsymbol} {{\color{github}\small\faGithub}} % alternative: \faGithubSquare, \faGithub* +\renewcommand*{\gitlabsocialsymbol} {{\color{gitlab}\small\faGitlab}} +\renewcommand*{\stackoverflowsocialsymbol}{{\color{stackoverflow}\small\faStackOverflow}} +\renewcommand*{\bitbucketsocialsymbol} {{\color{bitbucket}\small\faBitbucket}} +\renewcommand*{\skypesocialsymbol} {{\color{skype}\small\faSkype}} +\renewcommand*{\orcidsocialsymbol} {{\color{orcid}\small\faOrcid}} +\renewcommand*{\researchgatesocialsymbol} {{\color{researchgate}\small\faResearchgate}} %\renewcommand*{\researcheridsocialsymbol} {} %\renewcommand*{\googlescholarsocialsymbol}{} -\renewcommand*{\telegramsocialsymbol} {{\color{telegram}\small\faTelegram}~} -\renewcommand*{\whatsappsocialsymbol} {{\color{whatsapp}\small\faWhatsapp}~} -\renewcommand*{\discordsocialsymbol} {{\color{discord}\small\faDiscord}~} -\renewcommand*{\twitchsocialsymbol} {{\color{twitch}\small\faTwitch}~} -\renewcommand*{\youtubesocialsymbol} {{\color{youtube}\small\faYoutube}~} -\renewcommand*{\tiktoksocialsymbol} {{\color{tiktok}\small\faTiktok}~} -\renewcommand*{\instagramsocialsymbol} {{\color{instagram}\small\faInstagram}~} -\renewcommand*{\soundcloudsocialsymbol} {{\color{soundcloud}\small\faSoundcloud}~} -\renewcommand*{\steamsocialsymbol} {{\color{steam}\small\faSteam}~} -\renewcommand*{\xboxsocialsymbol} {{\color{xbox}\small\faXbox}~} -\renewcommand*{\playstationsocialsymbol} {{\color{playstation}\small\faPlaystation}~} -\renewcommand*{\battlenetsocialsymbol} {{\color{battlenet}\small\faBattleNet}~} +\renewcommand*{\telegramsocialsymbol} {{\color{telegram}\small\faTelegram}} +\renewcommand*{\whatsappsocialsymbol} {{\color{whatsapp}\small\faWhatsapp}} +\renewcommand*{\discordsocialsymbol} {{\color{discord}\small\faDiscord}} +\renewcommand*{\twitchsocialsymbol} {{\color{twitch}\small\faTwitch}} +\renewcommand*{\youtubesocialsymbol} {{\color{youtube}\small\faYoutube}} +\renewcommand*{\tiktoksocialsymbol} {{\color{tiktok}\small\faTiktok}} +\renewcommand*{\instagramsocialsymbol} {{\color{instagram}\small\faInstagram}} +\renewcommand*{\soundcloudsocialsymbol} {{\color{soundcloud}\small\faSoundcloud}} +\renewcommand*{\steamsocialsymbol} {{\color{steam}\small\faSteam}} +\renewcommand*{\xboxsocialsymbol} {{\color{xbox}\small\faXbox}} +\renewcommand*{\playstationsocialsymbol} {{\color{playstation}\small\faPlaystation}} +\renewcommand*{\battlenetsocialsymbol} {{\color{battlenet}\small\faBattleNet}} %\renewcommand*{\signalsocialsymbol} {} %\renewcommand*{\matrixsocialsymbol} {} -% \renewcommand*{\arxivsocialsymbol} {{\color{arxiv}{\small\faarXiv}}~} -% \renewcommand*{\inspiresocialsymbol} {{\color{inspire}{\small\faInspire}}~} -\renewcommand*{\bornsymbol} {{\color{born}\small\faAsterisk}~} % alternative: \faBabyCarriage +% \renewcommand*{\arxivsocialsymbol} {{\color{arxiv}{\small\faarXiv}}} +% \renewcommand*{\inspiresocialsymbol} {{\color{inspire}{\small\faInspire}}} +\renewcommand*{\bornsymbol} {{\color{born}\small\faAsterisk}} % alternative: \faBabyCarriage \endinput diff --git a/moderncviconsletters.sty b/moderncviconsletters.sty index 87e6678..89c7708 100644 --- a/moderncviconsletters.sty +++ b/moderncviconsletters.sty @@ -23,43 +23,43 @@ %\renewcommand*{\labelitemiv} {\labelitemiii} % no change from default in moderncv.cls \renewcommand*{\addresssymbol} {} -\renewcommand*{\mobilephonesocialsymbol} {\textbf{M}~} -\renewcommand*{\fixedphonesocialsymbol} {\textbf{T}~} -\renewcommand*{\faxphonesocialsymbol} {\textbf{F}~} -\renewcommand*{\emailsocialsymbol} {\textbf{E}~} -\renewcommand*{\homepagesymbol} {\textbf{W}~} -\renewcommand*{\linkedinsocialsymbol} {\textbf{in}~} -\renewcommand*{\xingsocialsymbol} {\textbf{xi}~} -\renewcommand*{\twittersocialsymbol} {\textbf{tw}~} -\renewcommand*{\mastodonsocialsymbol} {\textbf{ms}~} -\renewcommand*{\githubsocialsymbol} {\textbf{gh}~} -\renewcommand*{\gitlabsocialsymbol} {\textbf{gl}~} -\renewcommand*{\stackoverflowsocialsymbol}{\textbf{so}~} -\renewcommand*{\bitbucketsocialsymbol} {\textbf{bb}~} -\renewcommand*{\skypesocialsymbol} {\textbf{sk}~} -\renewcommand*{\orcidsocialsymbol} {\textbf{orcid}~} -\renewcommand*{\researchgatesocialsymbol} {\textbf{rg}~} -\renewcommand*{\researcheridsocialsymbol} {\textbf{ri}~} -\renewcommand*{\telegramsocialsymbol} {\textbf{tg}~} -\renewcommand*{\whatsappsocialsymbol} {\textbf{wa}~} -\renewcommand*{\signalsocialsymbol} {\textbf{si}~} -\renewcommand*{\matrixsocialsymbol} {\textbf{ma}~} -\renewcommand*{\googlescholarsocialsymbol}{\textbf{gs}~} -\renewcommand*{\bornsymbol} {\textbf{B}~} -\renewcommand*{\codebergsocialsymbol} {\textbf{cb}~} -\renewcommand*{\twitchsocialsymbol} {\textbf{ttv}~} -\renewcommand*{\youtubesocialsymbol} {\textbf{yt}~} -\renewcommand*{\tiktoksocialsymbol} {\textbf{tok}~} -\renewcommand*{\instagramsocialsymbol} {\textbf{insta}~} -\renewcommand*{\soundcloudsocialsymbol} {\textbf{sc}~} -\renewcommand*{\steamsocialsymbol} {\textbf{st}~} -\renewcommand*{\xboxsocialsymbol} {\textbf{xb}~} -\renewcommand*{\playstationsocialsymbol} {\textbf{psn}~} -\renewcommand*{\battlenetsocialsymbol} {\textbf{bn}~} -\renewcommand*{\arxivsocialsymbol} {\textbf{arx}~} -\renewcommand*{\inspiresocialsymbol} {\textbf{ins}~} -\renewcommand*{\simplexsocialsymbol} {\textbf{splx}~} -\renewcommand*{\simplexsocialsymbol} {\textbf{thr}~} +\renewcommand*{\mobilephonesocialsymbol} {\textbf{M}} +\renewcommand*{\fixedphonesocialsymbol} {\textbf{T}} +\renewcommand*{\faxphonesocialsymbol} {\textbf{F}} +\renewcommand*{\emailsocialsymbol} {\textbf{E}} +\renewcommand*{\homepagesymbol} {\textbf{W}} +\renewcommand*{\linkedinsocialsymbol} {\textbf{in}} +\renewcommand*{\xingsocialsymbol} {\textbf{xi}} +\renewcommand*{\twittersocialsymbol} {\textbf{tw}} +\renewcommand*{\mastodonsocialsymbol} {\textbf{ms}} +\renewcommand*{\githubsocialsymbol} {\textbf{gh}} +\renewcommand*{\gitlabsocialsymbol} {\textbf{gl}} +\renewcommand*{\stackoverflowsocialsymbol}{\textbf{so}} +\renewcommand*{\bitbucketsocialsymbol} {\textbf{bb}} +\renewcommand*{\skypesocialsymbol} {\textbf{sk}} +\renewcommand*{\orcidsocialsymbol} {\textbf{orcid}} +\renewcommand*{\researchgatesocialsymbol} {\textbf{rg}} +\renewcommand*{\researcheridsocialsymbol} {\textbf{ri}} +\renewcommand*{\telegramsocialsymbol} {\textbf{tg}} +\renewcommand*{\whatsappsocialsymbol} {\textbf{wa}} +\renewcommand*{\signalsocialsymbol} {\textbf{si}} +\renewcommand*{\matrixsocialsymbol} {\textbf{ma}} +\renewcommand*{\googlescholarsocialsymbol}{\textbf{gs}} +\renewcommand*{\bornsymbol} {\textbf{B}} +\renewcommand*{\codebergsocialsymbol} {\textbf{cb}} +\renewcommand*{\twitchsocialsymbol} {\textbf{ttv}} +\renewcommand*{\youtubesocialsymbol} {\textbf{yt}} +\renewcommand*{\tiktoksocialsymbol} {\textbf{tok}} +\renewcommand*{\instagramsocialsymbol} {\textbf{insta}} +\renewcommand*{\soundcloudsocialsymbol} {\textbf{sc}} +\renewcommand*{\steamsocialsymbol} {\textbf{st}} +\renewcommand*{\xboxsocialsymbol} {\textbf{xb}} +\renewcommand*{\playstationsocialsymbol} {\textbf{psn}} +\renewcommand*{\battlenetsocialsymbol} {\textbf{bn}} +\renewcommand*{\arxivsocialsymbol} {\textbf{arx}} +\renewcommand*{\inspiresocialsymbol} {\textbf{ins}} +\renewcommand*{\simplexsocialsymbol} {\textbf{splx}} +\renewcommand*{\simplexsocialsymbol} {\textbf{thr}} \renewcommand*{\listitemsymbol} {\labelitemi~} diff --git a/moderncviconsmarvosym.sty b/moderncviconsmarvosym.sty index bdaa241..b9c834b 100644 --- a/moderncviconsmarvosym.sty +++ b/moderncviconsmarvosym.sty @@ -19,11 +19,11 @@ \renewcommand*{\labelitemi} {\strut\textcolor{color1}{\marvosymbol{123}}} % equivalent to \Neutral from marvosym package; alternative: \fontencoding{U}\fontfamily{ding}\selectfont\tiny\symbol{'102} -\renewcommand*{\mobilephonesocialsymbol}{\marvosymbol{72}~} -\renewcommand*{\fixedphonesocialsymbol}{\marvosymbol{84}~} -\renewcommand*{\faxphonesocialsymbol}{\marvosymbol{117}~} -\renewcommand*{\emailsocialsymbol} {\marvosymbol{66}~} -\renewcommand*{\homepagesymbol} {{\Large\marvosymbol{205}}~} +\renewcommand*{\mobilephonesocialsymbol}{\marvosymbol{72}} +\renewcommand*{\fixedphonesocialsymbol}{\marvosymbol{84}} +\renewcommand*{\faxphonesocialsymbol}{\marvosymbol{117}} +\renewcommand*{\emailsocialsymbol} {\marvosymbol{66}} +\renewcommand*{\homepagesymbol} {{\Large\marvosymbol{205}}} \endinput From 6b27eb6ac70330555dee67e6ef3088af978f3784 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Dobrowolski?= Date: Sun, 2 Nov 2025 18:05:14 +0100 Subject: [PATCH 05/10] Remove spaces from \socialicon commands --- moderncviconsacademic.sty | 12 ++++++------ moderncviconstikz.sty | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/moderncviconsacademic.sty b/moderncviconsacademic.sty index 86a1484..1a333b8 100644 --- a/moderncviconsacademic.sty +++ b/moderncviconsacademic.sty @@ -51,16 +51,16 @@ %\newcommand*{\stackoverflowsocialsymbol}{} %\newcommand*{\bitbucketsocialsymbol} {} %\newcommand*{\skypesocialsymbol} {} -\renewcommand*{\orcidsocialsymbol} {{\color{orcid}\small\aiOrcid}~} -\renewcommand*{\researchgatesocialsymbol} {{\color{researchgate}\small\aiResearchGateSquare}~} % alternative: \aiResearchGate -\renewcommand*{\researcheridsocialsymbol} {{\color{researcherid}\small\aiResearcherIDSquare}~} % alternative: \aiResearcherID -\renewcommand*{\googlescholarsocialsymbol}{{\color{googlescholar}\raisebox{-1pt}{\large\aiGoogleScholar}}~} +\renewcommand*{\orcidsocialsymbol} {{\color{orcid}\small\aiOrcid}} +\renewcommand*{\researchgatesocialsymbol} {{\color{researchgate}\small\aiResearchGateSquare}} % alternative: \aiResearchGate +\renewcommand*{\researcheridsocialsymbol} {{\color{researcherid}\small\aiResearcherIDSquare}} % alternative: \aiResearcherID +\renewcommand*{\googlescholarsocialsymbol}{{\color{googlescholar}\raisebox{-1pt}{\large\aiGoogleScholar}}} %\newcommand*{\telegramsocialsymbol} {} %\newcommand*{\whatsappsocialsymbol} {} %\newcommand*{\matrixsocialsymbol} {} %\newcommand*{\signalsocialsymbol} {} -\renewcommand*{\arxivsocialsymbol}{{\color{arxiv}{\small\aiarXiv}}~} -\renewcommand*{\inspiresocialsymbol}{{\color{inspire}{\small\aiInspire}}~} +\renewcommand*{\arxivsocialsymbol}{{\color{arxiv}{\small\aiarXiv}}} +\renewcommand*{\inspiresocialsymbol}{{\color{inspire}{\small\aiInspire}}} \endinput diff --git a/moderncviconstikz.sty b/moderncviconstikz.sty index f3f09ad..c4da6d5 100644 --- a/moderncviconstikz.sty +++ b/moderncviconstikz.sty @@ -338,7 +338,7 @@ (23.7698,30.6792) and (25.7191,30.6094) .. (26.0391,30.6094) -- cycle; \protect\end{scope} \protect\end{tikzpicture}} -~} +} }{}\par \ifdefempty{\matrixsocialsymbol} { @@ -385,7 +385,7 @@ (29.2278,31.2454) and (29.6629,31.2462) .. (30.0980,31.2470) -- cycle; \protect\end{scope} \protect\end{tikzpicture}} - ~} + } }{}\par \ifdefempty{\signalsocialsymbol} { @@ -455,7 +455,7 @@ (629.8000,234.8000) .. (512.0000,234.9000) -- cycle; \protect\end{scope} \protect\end{tikzpicture}} - ~} + } }{}\par \ifdefempty{\codebergsocialsymbol} { @@ -475,7 +475,7 @@ -- cycle; \protect\end{scope} \protect\end{tikzpicture}} - ~} + } }{}\par \ifdefempty{\simplexsocialsymbol} { @@ -494,7 +494,7 @@ (100,0) rectangle +(60,20); \protect\end{scope} \protect\end{tikzpicture}} - ~} + } }{}\par \ifdefempty{\threemasocialsymbol} { @@ -522,7 +522,7 @@ (390,553) circle (68); \protect\end{scope} \protect\end{tikzpicture}} - ~} + } }{}\par \endinput From 9eb1aa077a2282381e9ce532977271525f0a4d9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Dobrowolski?= Date: Mon, 3 Nov 2025 12:07:09 +0100 Subject: [PATCH 06/10] Fix phones --- moderncv.cls | 2 ++ template.tex | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/moderncv.cls b/moderncv.cls index 9896fc9..173b1fe 100644 --- a/moderncv.cls +++ b/moderncv.cls @@ -244,6 +244,8 @@ % Define links for different social networks \newcommand{\emaillink}[2]{\protect\href{mailto:#2}{#1}} \newcommand{\mobilephonelink}[2]{\protect\tellink[#1]{#2}} +\newcommand{\fixedphonelink}[2]{\protect\tellink[#1]{#2}} +\newcommand{\faxphonelink}[2]{\protect\tellink[#1]{#2}} \newcommand{\linkedinlink}[2]{\protect\httpslink[#1]{www.linkedin.com/in/#2}} \newcommand{\xinglink}[2]{\protect\httpslink[#1]{www.xing.com/profile/#2}} \newcommand{\twitterlink}[2]{\protect\httpslink[#1]{twitter.com/#2}} diff --git a/template.tex b/template.tex index 45c85b7..fb586a8 100644 --- a/template.tex +++ b/template.tex @@ -57,9 +57,9 @@ \title{Résumé title} % optional, remove / comment the line if not wanted \born{4 July 1776} % 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} -\phone[fax]{+3~(456)~789~012} +\social[mobilephone]{+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" +\social[fixedphone]{+2~(345)~678~901} +\social[faxphone]{+3~(456)~789~012} \social[email]{john@doe.org} % optional, remove / comment the line if not wanted \homepage{www.johndoe.com} % optional, remove / comment the line if not wanted From fb0c0cf100f2cd5c18040165c1bd6847b51bbea5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Dobrowolski?= Date: Tue, 4 Nov 2025 11:48:52 +0100 Subject: [PATCH 07/10] Update CHANGELOG --- CHANGELOG | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 847f38a..cf8f354 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,6 @@ version next +- Fold \phone, \email and friends into \social +- Rework \social command - Fix french babel breaking contemporary style (#219) - Fix birthdate not showing up in contemporary style (#244) - Fix Inspire HEP social link (#241) From b1b30a5fd934ca857e1fc4cbc285488d1f33b1dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Dobrowolski?= Date: Wed, 5 Nov 2025 14:55:04 +0100 Subject: [PATCH 08/10] Add \social stacking example to template.tex --- template.tex | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/template.tex b/template.tex index fb586a8..99a9093 100644 --- a/template.tex +++ b/template.tex @@ -67,10 +67,7 @@ \social[linkedin]{john.doe} % optional, remove / comment the line if not wanted \social[xing]{john\_doe} % optional, remove / comment the line if not wanted -\social[github]{jdoe} % optional, remove / comment the line if not wanted -\social[gitlab]{jdoe} % optional, remove / comment the line if not wanted -\social[codeberg]{jdoe} % optional, remove / comment the line if not wanted -\social[bitbucket]{jdoe} % optional, remove / comment the line if not wanted +\social[bitbucket,codeberg,github,gitlab]{jdoe} % Soclial netowrks with the same username can be stacked. Icons are links and text is part of the last one \social[stackoverflow]{0000000/johndoe} % optional, remove / comment the line if not wanted \social[skype]{jdoe} % optional, remove / comment the line if not wanted From e22d1154fa90f2598c02f089f5a99ef68fcc382e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Dobrowolski?= Date: Thu, 6 Nov 2025 12:24:12 +0100 Subject: [PATCH 09/10] Update manual --- manual/moderncv_userguide.tex | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/manual/moderncv_userguide.tex b/manual/moderncv_userguide.tex index 84fa732..9bd46ea 100644 --- a/manual/moderncv_userguide.tex +++ b/manual/moderncv_userguide.tex @@ -305,19 +305,6 @@ A command for a three-lined street address. \address{}{}{} \end{lstlisting} -\paragraph{\code{\\phone}} -A command for a phone number. Takes the phone type as an optional argument. -\begin{lstlisting} - \phone[]{} -\end{lstlisting} -The allowed values for \code{} are \code{fax}, \code{fixed} and \code{mobile}. - -\paragraph{\code{\\email}} -A command for an email address. -\begin{lstlisting} - \email{} -\end{lstlisting} - \paragraph{\code{\\homepage}} A command for a personal website. \begin{lstlisting} @@ -325,14 +312,18 @@ A command for a personal website. \end{lstlisting} \paragraph{\code{\\social}} -A command for a social media account. -Takes the platform as an optional argument. +A command for a social media accounts. +Takes comma separated list of platforms as an optional argument. \begin{lstlisting} - \social[]{} + \social[]{} \end{lstlisting} -The following values are supported for \code{}: +The following values are supported: \begin{itemize} \begin{multicols}{4} + \item \code{email} + \item \code{mobilephone} + \item \code{fixedphone} + \item \code{faxphone} \item \code{arxiv} \item \code{battlenet} \item \code{bitbucket} @@ -367,6 +358,10 @@ The following values are supported for \code{}: \item \code{youtube} \end{multicols} \end{itemize} +\begin{lstlisting} + % Example: + \social[codeberg,github]{superuser} +\end{lstlisting} \paragraph{\code{\\extrainfo}} A command for any extra information. From 235be7cfc44de10152f292fa3635521626cb2c87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Dobrowolski?= Date: Fri, 7 Nov 2025 15:50:54 +0100 Subject: [PATCH 10/10] template.tex: Remove repeated comments on optionality of \social --- template.tex | 80 +++++++++++++++++++++++----------------------------- 1 file changed, 36 insertions(+), 44 deletions(-) diff --git a/template.tex b/template.tex index 99a9093..886c530 100644 --- a/template.tex +++ b/template.tex @@ -57,54 +57,46 @@ \title{Résumé title} % optional, remove / comment the line if not wanted \born{4 July 1776} % 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 -\social[mobilephone]{+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" -\social[fixedphone]{+2~(345)~678~901} -\social[faxphone]{+3~(456)~789~012} -\social[email]{john@doe.org} % optional, remove / comment the line if not wanted \homepage{www.johndoe.com} % optional, remove / comment the line if not wanted -% Social icons -\social[linkedin]{john.doe} % optional, remove / comment the line if not wanted -\social[xing]{john\_doe} % optional, remove / comment the line if not wanted - -\social[bitbucket,codeberg,github,gitlab]{jdoe} % Soclial netowrks with the same username can be stacked. Icons are links and text is part of the last one -\social[stackoverflow]{0000000/johndoe} % optional, remove / comment the line if not wanted - -\social[skype]{jdoe} % optional, remove / comment the line if not wanted -\social[orcid]{0000-0000-000-000} % optional, remove / comment the line if not wanted -\social[researchgate]{jdoe} % optional, remove / comment the line if not wanted -\social[researcherid]{jdoe} % optional, remove / comment the line if not wanted -\social[googlescholar]{googlescholarid} % optional, remove / comment the line if not wanted - -\social[twitter]{ji\_doe} % optional, remove / comment the line if not wanted -\social[mastodon]{mastodon.social/web/@user} % optional, remove / comment the line if not wanted -\social[telegram]{jdoe} % optional, remove / comment the line if not wanted -\social[whatsapp]{12345678901} % optional, remove / comment the line if not wanted -\social[signal]{12345678901} % optional, remove / comment the line if not wanted -\social[matrix]{@johndoe:matrix.org} % optional, remove / comment the line if not wanted -\social[discord]{jdoe\#0000} % optional, remove / comment the line if not wanted - +% All uses of \social command are optional +\social[mobilephone]{+1~(234)~567~890} +\social[fixedphone]{+2~(345)~678~901} +\social[faxphone]{+3~(456)~789~012} +\social[email]{john@doe.org} +\social[linkedin]{john.doe} +\social[xing]{john\_doe} +\social[bitbucket,codeberg,github,gitlab]{jdoe} % Soclial netowrks with the same username can be stacked. Icons are links and text is part of the last one +\social[stackoverflow]{0000000/johndoe} +\social[skype]{jdoe} +\social[orcid]{0000-0000-000-000} +\social[researchgate]{jdoe} +\social[researcherid]{jdoe} +\social[googlescholar]{googlescholarid} +\social[twitter]{ji\_doe} +\social[mastodon]{mastodon.social/web/@user} +\social[telegram]{jdoe} +\social[whatsapp]{12345678901} +\social[signal]{12345678901} +\social[matrix]{@johndoe:matrix.org} +\social[discord]{jdoe\#0000} +\social[twitch]{jdoe} +\social[tiktok]{jdoe} +\social[instagram]{jdoe} +\social[soundcloud]{jdoe} +\social[steam]{jdoe} +\social[xbox]{jdoe} +\social[playstation]{jdoe} +\social[battlenet]{jdoe\#0000} +\social[arxiv]{doe\_j\_1} +\social[inspire]{0000000} +\social[simplex]{0000000} +\social[threema]{0000000} % YouTube links can take several forms, depending on how your account and channel are set up. % See https://support.google.com/youtube/answer/6180214 for more information. -\social[youtube]{c/jdoeschannel} % optional, remove / comment the line if not wanted; Custom URL - can be shorted by removing 'c/' -\social[youtube]{channel/XXXXXX} % optional, remove / comment the line if not wanted; Channel URL (ID-based) - can not be shortened -\social[youtube]{user/jdoe} % optional, remove / comment the line if not wanted; Legacy username URL - if jdoe is not already claimed by a Custom URL, can be shortened by removing 'user/' - -\social[twitch]{jdoe} % optional, remove / comment the line if not wanted -\social[tiktok]{jdoe} % optional, remove / comment the line if not wanted -\social[instagram]{jdoe} % optional, remove / comment the line if not wanted - -\social[soundcloud]{jdoe} % optional, remove / comment the line if not wanted - -\social[steam]{jdoe} % optional, remove / comment the line if not wanted -\social[xbox]{jdoe} % optional, remove / comment the line if not wanted -\social[playstation]{jdoe} % optional, remove / comment the line if not wanted -\social[battlenet]{jdoe\#0000} % optional, remove / comment the line if not wanted -\social[arxiv]{doe\_j\_1} % optional, remove / comment the line if not wanted -\social[inspire]{0000000} % optional, remove / comment the line if not wanted -\social[simplex]{0000000} % optional, remove / comment the line if not wanted -\social[threema]{0000000} % optional, remove / comment the line if not wanted - +\social[youtube]{c/jdoeschannel} %Custom URL - can be shorted by removing 'c/' +\social[youtube]{channel/XXXXXX} %Channel URL (ID-based) - can not be shortened +\social[youtube]{user/jdoe} %Legacy username URL - if jdoe is not already claimed by a Custom URL, can be shortened by removing 'user/' \extrainfo{additional information} % optional, remove / comment the line if not wanted \photo[64pt][2pt]{picture} % optional, remove / comment the line if not wanted; '64pt' is the height the picture must be resized to, 2pt is the thickness of the frame around it (put it to 0pt for no frame) and 'picture' is the name of the picture file