1

Moderncv, cover letter: Does anybody know how to diminish for the distance between the "to whom it may concern:"-line and the following actual cover letter?

Thanks in advance.

\documentclass[11pt,a4paper,sans]{moderncv}

\moderncvtheme[black]{banking}

\usepackage[scale=0.75, top=20mm, bottom=15mm]{geometry}
\usepackage{graphicx} %notwendig für eingescannte Unterschrift.
\usepackage[ngerman]{babel} %notwendig für die Darstellung des Datums in deutscher Weise.



\makeatletter


\newcommand*{\birthdate}[1]{\def\@birthdate{#1}}
\newcommand*{\civilstatus}[1]{\def\@civilstatus{#1}}

\renewcommand*{\namefont}{\fontsize{34}{36}\mdseries\upshape}
\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
\renewcommand*{\addressfont}{\small\mdseries\slshape}
\renewcommand*{\quotefont}{\large\slshape}
\renewcommand*{\sectionfont}{\Large\mdseries\upshape}
\renewcommand*{\subsectionfont}{\large\mdseries\upshape}
\renewcommand*{\hintfont}{}

% styles
\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2!60}{#1}}}
\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color1}{#1}}}
\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
%
\newlength{\makecvtitlenamewidth}
\setlength{\makecvtitlenamewidth}{0pt}% dummy value
\renewcommand*{\makecvtitle}{%
  % recompute lengths (in case we are switching from letter to resume, or vice versa)
  \recomputecvlengths%
  \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}}%
  % optional detailed information box
  \newbox{\makecvtitledetailsbox}%
  \savebox{\makecvtitledetailsbox}{%
    \addressfont\color{color2}%
    \begin{tabular}[b]{@{}r@{}}%
    \ifthenelse{\isundefined{\@birthdate}}{}{\makenewline{\@birthdate}}%
    \ifthenelse{\isundefined{\@civilstatus}}{}{\makenewline{\@civilstatus}}%
      \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
        \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}%
        \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% if \addresstreet is defined, \addresscity will always be defined but could be empty
      \ifthenelse{\isundefined{\@mobile}}{}{\makenewline\mobilesymbol\@mobile}%
      %\ifthenelse{\isundefined{\@phone}}{}{\makenewline\phonesymbol\@phone}%
      %\ifthenelse{\isundefined{\@fax}}{}{\makenewline\faxsymbol\@fax}%
      \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}%
    \end{tabular}
  }%
  % optional photo (pre-rendering)
  \newbox{\makecvtitlepicturebox}%
  \savebox{\makecvtitlepicturebox}{%
    \ifthenelse{\isundefined{\@photo}}%
    {}%
    {%
      \hspace*{\separatorcolumnwidth}%
      \color{color1}%
      \setlength{\fboxrule}{\@photoframewidth}%
      \ifdim\@photoframewidth=0pt%
        \setlength{\fboxsep}{0pt}\fi%
      \framebox{}}}%
  % name and title
  \newlength{\makecvtitledetailswidth}\settowidth{\makecvtitledetailswidth}{\usebox{\makecvtitledetailsbox}}%
  \newlength{\makecvtitlepicturewidth}\settowidth{\makecvtitlepicturewidth}{\usebox{\makecvtitlepicturebox}}%
  \ifthenelse{\lengthtest{\makecvtitlenamewidth=0pt}}% check for dummy value (equivalent to \ifdim\makecvtitlenamewidth=0pt)
    {\setlength{\makecvtitlenamewidth}{\textwidth-\makecvtitledetailswidth-\makecvtitlepicturewidth}}%
    {}%
  \begin{minipage}[b]{\makecvtitlenamewidth}%
    \namestyle{\@firstname\ \@familyname}%
    \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
  \end{minipage}%
  \hfill%
  % detailed information
  \llap{\usebox{\makecvtitledetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvtitlenamewidth is forced
  % optional photo (rendering)
  \usebox{\makecvtitlepicturebox}\\[2.5em]%
  % optional quote
  \ifthenelse{\isundefined{\@quote}}%
    {}%
    {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
  \par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvtitle

%------------------

\makeatother

% personal data
\firstname{John}
\familyname{Doe}
\title{Title}
\birthdate{Birthday}
\photo[64pt][0.4pt]{picture}

\usepackage{xpatch}
\makeatletter
\xpatchcmd{\makelettertitle}{\bfseries\upshape\@recipientname}{\upshape\@recipientname}{}{}
\makeatother

\begin{document}


%-----       letter       ---------------------------------------------------------
% recipient data
\recipient{Company}{Street\\ City}
\date{\today}

\opening{To who it may concern:}
\closing{Kind regards,}

\makelettertitle

%------------------------------

Hello



%----------Schlussformel-------

\makeletterclosing

\end{document}
2

Update (moderncv v2.0)

With moderncv v2.0, the command to be patched is no more \makelettertitle but \makeletterhead, so the correct patch for this version is

\xpatchcmd{\makeletterhead}{\@opening\\[1.5em]}{\@opening\\[.5em]}{}{}

Original answer (works with older versions of moderncv)

You're already using xpatch, so simply add the line

\xpatchcmd{\makelettertitle}{\@opening\\[1.5em]}{\@opening\\[.5em]}{}{}

to your preamble (adjust .5em to your needs)

MWE

\documentclass[11pt,a4paper,sans]{moderncv}

\moderncvtheme[black]{banking}

\usepackage[scale=0.75, top=20mm, bottom=15mm]{geometry}
\usepackage{graphicx} %notwendig für eingescannte Unterschrift.
\usepackage[ngerman]{babel} %notwendig für die Darstellung des Datums in deutscher Weise.



\makeatletter


\newcommand*{\birthdate}[1]{\def\@birthdate{#1}}
\newcommand*{\civilstatus}[1]{\def\@civilstatus{#1}}

\renewcommand*{\namefont}{\fontsize{34}{36}\mdseries\upshape}
\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
\renewcommand*{\addressfont}{\small\mdseries\slshape}
\renewcommand*{\quotefont}{\large\slshape}
\renewcommand*{\sectionfont}{\Large\mdseries\upshape}
\renewcommand*{\subsectionfont}{\large\mdseries\upshape}
\renewcommand*{\hintfont}{}

% styles
\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2!60}{#1}}}
\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color1}{#1}}}
\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
%
\newlength{\makecvtitlenamewidth}
\setlength{\makecvtitlenamewidth}{0pt}% dummy value
\renewcommand*{\makecvtitle}{%
  % recompute lengths (in case we are switching from letter to resume, or vice versa)
  \recomputecvlengths%
  \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}}%
  % optional detailed information box
  \newbox{\makecvtitledetailsbox}%
  \savebox{\makecvtitledetailsbox}{%
    \addressfont\color{color2}%
    \begin{tabular}[b]{@{}r@{}}%
    \ifthenelse{\isundefined{\@birthdate}}{}{\makenewline{\@birthdate}}%
    \ifthenelse{\isundefined{\@civilstatus}}{}{\makenewline{\@civilstatus}}%
      \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
        \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}%
        \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% if \addresstreet is defined, \addresscity will always be defined but could be empty
      \ifthenelse{\isundefined{\@mobile}}{}{\makenewline\mobilesymbol\@mobile}%
      %\ifthenelse{\isundefined{\@phone}}{}{\makenewline\phonesymbol\@phone}%
      %\ifthenelse{\isundefined{\@fax}}{}{\makenewline\faxsymbol\@fax}%
      \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}%
    \end{tabular}
  }%
  % optional photo (pre-rendering)
  \newbox{\makecvtitlepicturebox}%
  \savebox{\makecvtitlepicturebox}{%
    \ifthenelse{\isundefined{\@photo}}%
    {}%
    {%
      \hspace*{\separatorcolumnwidth}%
      \color{color1}%
      \setlength{\fboxrule}{\@photoframewidth}%
      \ifdim\@photoframewidth=0pt%
        \setlength{\fboxsep}{0pt}\fi%
      \framebox{}}}%
  % name and title
  \newlength{\makecvtitledetailswidth}\settowidth{\makecvtitledetailswidth}{\usebox{\makecvtitledetailsbox}}%
  \newlength{\makecvtitlepicturewidth}\settowidth{\makecvtitlepicturewidth}{\usebox{\makecvtitlepicturebox}}%
  \ifthenelse{\lengthtest{\makecvtitlenamewidth=0pt}}% check for dummy value (equivalent to \ifdim\makecvtitlenamewidth=0pt)
    {\setlength{\makecvtitlenamewidth}{\textwidth-\makecvtitledetailswidth-\makecvtitlepicturewidth}}%
    {}%
  \begin{minipage}[b]{\makecvtitlenamewidth}%
    \namestyle{\@firstname\ \@familyname}%
    \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
  \end{minipage}%
  \hfill%
  % detailed information
  \llap{\usebox{\makecvtitledetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvtitlenamewidth is forced
  % optional photo (rendering)
  \usebox{\makecvtitlepicturebox}\\[2.5em]%
  % optional quote
  \ifthenelse{\isundefined{\@quote}}%
    {}%
    {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
  \par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvtitle

%------------------

\makeatother

% personal data
\firstname{John}
\familyname{Doe}
\title{Title}
\birthdate{Birthday}
\photo[64pt][0.4pt]{picture}

\usepackage{xpatch}
\makeatletter
\xpatchcmd{\makelettertitle}{\bfseries\upshape\@recipientname}{\upshape\@recipientname}{}{}
\xpatchcmd{\makelettertitle}{\@opening\\[1.5em]}{\@opening\\[.5em]}{}{}
\makeatother

\begin{document}


%-----       letter       ---------------------------------------------------------
% recipient data
\recipient{Company}{Street\\ City}
\date{\today}

\opening{To who it may concern:}
\closing{Kind regards,}

\makelettertitle

%------------------------------

Hello



%----------Schlussformel-------

\makeletterclosing

\end{document} 

Output:

enter image description here


If you don't want to use xpatch replace the lines

\usepackage{xpatch}
\makeatletter
\xpatchcmd{\makelettertitle}{\bfseries\upshape\@recipientname}{\upshape\@recipientname}{}{}
\xpatchcmd{\makelettertitle}{\@opening\\[1.5em]}{\@opening\\[.5em]}{}{}
\makeatother

with

\renewcommand*{\makelettertitle}{%
  % recompute lengths (in case we are switching from letter to resume, or vice versa)
  \recomputeletterlengths%
  % sender block
  \maketitle%
  \par%
   % recipient block
  \begin{minipage}[t]{.5\textwidth}
    \raggedright%
    \addressfont%
    {\bfseries\upshape\@recipientname}\\%
    \@recipientaddress%
  \end{minipage}
  % date
  \hfill % US style
%  \\[1em] % UK style
  \@date\\[2em]% US informal style: "April 6, 2006"; UK formal style: "05/04/2006"
  % opening
  \raggedright%
  \@opening\\[.5em]%
  % ensure no extra spacing after \makelettertitle due to a possible blank line
%  \ignorespacesafterend% not working
  \hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}

Be sure they are inside \makeatletter...\makeatother. With this redefinition also the problem of bolding the first line of \recipient is addressed.

  • All right. Is there a solution without using the xpatch-package? – Phil Mar 30 '15 at 8:18
  • @Phil Yes, added in the answer. – karlkoeller Mar 30 '15 at 8:23
  • Thank you very much. I figured that adding the following would work to determine the line distance between the cover letter and the letter closing but it didn't: \xpatchcmd{\makeletterclosing}{\@closing\[1.5em]}{\@closing\[.5em]}{}{} Could you please help me with that, too? Thanks in advance. – Phil Mar 30 '15 at 8:29
  • @Phil First read the comments I leaved for you in my answers. – karlkoeller Mar 30 '15 at 8:51
  • I guess you refer your very last comment: I have to add the command \xpatchcmd{\makeletterclosing}{\@closing\[1.5em]}{\@closing\[.5em]}{}{} within \makeatletter...\makeatother. That's what I actually did: \usepackage{xpatch} \makeatletter \xpatchcmd{\makelettertitle}{\bfseries\upshape\@recipientname}{\upshape\@recipientname}{}{} \xpatchcmd{\makelettertitle}{\@opening\\[1.5em]}{\@opening\\[.1em]}{}{} \xpatchcmd{\makeletterclosing}{\@closing\[1.5em]}{\@closing\[.5em]}{}{} \makeatother however, the line distance is not changing for the letterclosing... Any further hints? – Phil Mar 30 '15 at 9:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.