Compare commits

...

4 commits

Author SHA1 Message Date
LLdaniel
45e7d7f26e
support pronouns in other styles as well 2026-08-09 22:45:38 +02:00
LLdaniel
91f15a1cf9
use gendericon with the correct color 2026-08-09 22:45:03 +02:00
LLdaniel
282cb09675
correct compilation issue: change request of the previous PR #249 2026-08-09 21:00:44 +02:00
Mazunki Hoksaas
9e16e08831
Add support for including pronouns in header (#249)
* Add support for including pronouns in header

* Provide documentation and changelog for pronouns

pending render of manual/moderncv_userguide.pdf

* <automated> build of user guide

---------

Co-authored-by: daniel <Daniel.adlkofer@freenet.de>
2026-08-09 20:48:25 +02:00
14 changed files with 39 additions and 3 deletions

View file

@ -47,6 +47,7 @@ version 2.5.1 (31 Jan 2026)
- Add contemporary CV header style to cover letter, which also makes icons
visible (#186)
- Fix minor horizontal spacing issue in 'contemporary' style header
- Added optional support for specifying pronouns (#249)
version 2.4.2 (01 Feb 2025)

Binary file not shown.

View file

@ -97,7 +97,7 @@
emph={
cvitem, cventry, cvdoubleentry, cvdoubleitem, cvtripleitem, cvlistitem, cvlistdoubleitem, cvcolumns, moderncvstyle, moderncvcolor,
cvskill, cvskilllegend, cvskillplainlegend, cvskillhead, cvskillentry, nopagenumbers,
name, born, address, email, link, social, phone, homepage, extrainfo, photo, quote, section, subsection, setlength, NewDocumentCommand, definecolor, colorlet, cvitemwithcomment,
name, born, pronouns, address, email, link, social, phone, homepage, extrainfo, photo, quote, section, subsection, setlength, NewDocumentCommand, definecolor, colorlet, cvitemwithcomment,
recipient, subject, opening, closing, signature, postscript, enclosure, makelettertitle, makeletterclosing, httplink, httpslink, emaillink
},
emphstyle={\color{cvblue}},
@ -106,7 +106,7 @@
addresssymbol, mobilephonesymbol, fixedphonesymbol, faxphonesymbol, emailsymbol, homepagesymbol, linkedinsocialsymbol,
xingsocialsymbol, twittersocialsymbol, githubsocialsymbol, gitlabsocialsymbol, mastodonsocialsymbol, codebergsocialsymbol, discordsocialsymbol, twitchsocialsymbol, youtubesocialsymbol, tiktoksocialsymbol, instagramsocialsymbol, soundcloudsocialsymbol, steamsocialsymbol, xboxsocialsymbol, playstationsocialsymbol, battlenetsocialsymbol, simplexsocialsymbol, threemasocialsymbol,
stackoverflowsocialsymbol, bitbucketsocialsymbol, skypesocialsymbol, orcidsocialsymbol, researchgatesocialsymbol, arxivsocialsymbol, inspiresocialsymbol,
researcheridsocialsymbol, telegramsocialsymbol, whatsappsocialsymbol, signalsocialsymbol, matrixsocialsymbol, googlescholarsocialsymbol, cvstretchability, bornsymbol
researcheridsocialsymbol, telegramsocialsymbol, whatsappsocialsymbol, signalsocialsymbol, matrixsocialsymbol, googlescholarsocialsymbol, cvstretchability, bornsymbol, gendersymbol
},
emphstyle={[2]\color{cvblue!60!cvgrey}\bfseries},
literate={{é}{{\'e}}1},
@ -299,6 +299,18 @@ A command for a birth date.
\born{<birth date>}
\end{lstlisting}
\paragraph{\code{\\pronouns}}
A command for your pronouns.
\begin{lstlisting}
\pronouns{<pronouns>}
\end{lstlisting}
\paragraph{\code{\\gendericon}}
A command for the icon used for your gender.
\begin{lstlisting}
\gendericon{<icon>}
\end{lstlisting}
\paragraph{\code{\\address}}
A command for a three-lined street address.
\begin{lstlisting}
@ -815,6 +827,7 @@ Currently \Moderncv supports the following commands as \code{<\\symbolcommand>}:
\item \code{\\battlenetsocialsymbol}
\item \code{\\mediumsocialsymbol}
\item \code{\\bornsymbol}
\item \code{\\gendersymbol}
\item \code{\\arxivsocialsymbol}
\item \code{\\inspiresocialsymbol}
\item \code{\\simplexsocialsymbol}

View file

@ -224,6 +224,14 @@
% usage: \title{<title>}
\renewcommand*{\title}[1]{\def\@title{#1}}
% defines one's preferred pronouns (optional)
% usage: \pronouns{<pronouns>}
\newcommand*{\pronouns}[1]{\def\@pronouns{#1}}
% defines one's preferred gender icon (optional)
% usage: \gendericon{<gendericon>}
\newcommand*{\gendericon}[1]{\def\@gendericon{#1}}
% defines one's address (optional)
% usage: \address{<street>}{<city>}{<country>}
% where the <city> and <country> arguments can be omitted or provided empty
@ -361,6 +369,7 @@
\newcommand*{\listitemsymbol} {\labelitemi~}
\newcommand*{\addresssymbol} {}
\newcommand*{\bornsymbol} {}
\newcommand*{\gendersymbol} {}
\newcommand*{\mobilephonesymbol} {}
\newcommand*{\fixedphonesymbol} {}
\newcommand*{\faxphonesymbol} {}

View file

@ -86,6 +86,7 @@
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtofoot[~--~]{\@addresscountry}}%
\flushfoot\@firstfootelementtrue\\}%
\ifthenelse{\isundefined{\@born}}{}{\addtofoot{\bornsymbol\@born}\flushfoot\@firstfootelementtrue\\}%
\ifthenelse{\isundefined{\@pronouns}}{}{\addtofoot{\gendersymbol\@pronouns}\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}}}%

View file

@ -86,6 +86,7 @@
\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}%
\ifthenelse{\isundefined{\@pronouns}}{}{\makenewline\gendersymbol\@pronouns}%
\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%

View file

@ -141,6 +141,7 @@
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
\flushmakeheaddetails\@firstmakeheaddetailselementtrue\\\null}%
\ifthenelse{\isundefined{\@born}}{}{\addtomakeheaddetails{\bornsymbol\@born}}%
\ifthenelse{\isundefined{\@pronouns}}{}{\addtomakeheaddetails{\gendersymbol\@pronouns}}%
\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}}}%

View file

@ -94,6 +94,7 @@
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
\flushmakeheaddetails\@firstmakeheaddetailselementtrue\\}%
\ifthenelse{\isundefined{\@born}}{}{\addtomakeheaddetails{\bornsymbol\@born}}%
\ifthenelse{\isundefined{\@pronouns}}{}{\addtomakeheaddetails{\gendersymbol\@pronouns}}%
\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}}}%

View file

@ -110,6 +110,7 @@
\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}%
\ifthenelse{\isundefined{\@pronouns}}{}{\makenewline\hbox to 1.0em{\gendersymbol}~\@pronouns}%
\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}}%

View file

@ -82,6 +82,7 @@
\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}%
\ifthenelse{\isundefined{\@pronouns}}{}{\makenewline\gendersymbol~\@pronouns}%
\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}}%

View file

@ -115,6 +115,7 @@
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
\flushmakeheaddetails\@firstmakeheaddetailselementtrue\\\null}%
\ifthenelse{\isundefined{\@born}}{}{\addtomakeheaddetails{\bornsymbol\@born}}%
\ifthenelse{\isundefined{\@pronouns}}{}{\addtomakeheaddetails{\gendersymbol\@pronouns}}%
\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}}}%

View file

@ -98,6 +98,7 @@
\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}%
\ifthenelse{\isundefined{\@pronouns}}{}{\makenewline\gendersymbol\@pronouns}%
\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}}%

View file

@ -55,6 +55,7 @@
\providecolor{playstation}{named}{default-socialicon-color}
\providecolor{battlenet}{named}{default-socialicon-color}
\providecolor{born}{named}{default-socialicon-color}
\providecolor{gender}{named}{default-socialicon-color}
\providecolor{signal}{named}{default-socialicon-color}
\providecolor{medium}{named}{default-socialicon-color}
@ -104,8 +105,10 @@
% \renewcommand*{\arxivsocialsymbol} {{\color{arxiv}{\small\faIcon{arxiv}}}~}
% No inspire icon in fontawesome6 (v6.7.2-3) or fontawesome7 (v7.1.0-1)
% \renewcommand*{\inspiresocialsymbol} {{\color{inspire}{\small\faIcon{inspire}}}~}
\def\@gendericon{\faNeuter}
\renewcommand*{\gendersymbol} {{\color{gender}\small\@gendericon}~}
\renewcommand*{\bornsymbol} {{\color{born}\raisebox{.5ex}{\tiny\faIcon{asterisk}}}~} % alternative: \faIcon{baby-carriage}
\renewcommand*{\mediumsocialsymbol} {{\color{medium}\small\faIcon{medium}}~}
\renewcommand*{\mediumsocialsymbol} {{\color{medium}\small\faIcon{medium}}~}
\endinput

View file

@ -56,6 +56,8 @@
\name{John}{Doe}
\title{Résumé title} % optional, remove / comment the line if not wanted
\born{4 July 1776} % optional, remove / comment the line if not wanted
\pronouns{they/them} % optional, remove / comment the line if not wanted
\gendericon{\faNeuter} % 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}