%% start of file `moderncvstyleclassic.sty'.
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
% available at http://www.latex-project.org/lppl/.


%-------------------------------------------------------------------------------
%                identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{moderncvstyleclassic}[2012/10/31 v1.2.0 modern curriculum vitae and letter style scheme: classic]


%-------------------------------------------------------------------------------
%                required packages
%-------------------------------------------------------------------------------


%-------------------------------------------------------------------------------
%                package options
%-------------------------------------------------------------------------------


%-------------------------------------------------------------------------------
%                overall style definition
%-------------------------------------------------------------------------------
% fonts
%\ifxetexorluatex
%  \setmainfont{Latin Modern Roman}
%  \setsansfont{Latin Modern Sans}
%  \setmathfont{Latin Modern Math}
%\else
\IfFileExists{lmodern.sty}%
{\RequirePackage{lmodern}}%
{}
%\fi

% symbols
\renewcommand*{\mobilesymbol}{\marvosymbol{72}~}
\renewcommand*{\phonesymbol}{\marvosymbol{84}~}
\renewcommand*{\faxsymbol}{\marvosymbol{117}~}
\renewcommand*{\emailsymbol}{\marvosymbol{66}~}
\renewcommand*{\homepagesymbol}{{\Large\marvosymbol{205}}~}


%-------------------------------------------------------------------------------
%                resume style definition
%-------------------------------------------------------------------------------
% fonts
\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}{#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}}}

% lengths
\newlength{\quotewidth}
\newlength{\hintscolumnwidth}
\setlength{\hintscolumnwidth}{0.175\textwidth}
\newlength{\separatorcolumnwidth}
\setlength{\separatorcolumnwidth}{0.025\textwidth}
\newlength{\maincolumnwidth}
\newlength{\doubleitemmaincolumnwidth}
\newlength{\listitemsymbolwidth}
\settowidth{\listitemsymbolwidth}{\listitemsymbol}
\newlength{\listitemmaincolumnwidth}
\newlength{\listdoubleitemmaincolumnwidth}

% commands
\renewcommand*{\recomputecvlengths}{%
    \setlength{\quotewidth}{0.65\textwidth}%
    % main lenghts
    \setlength{\maincolumnwidth}{\textwidth-\separatorcolumnwidth-\hintscolumnwidth}%
    % listitem lengths
    \setlength{\listitemmaincolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
    % doubleitem lengths
    \setlength{\doubleitemmaincolumnwidth}{\maincolumnwidth-\hintscolumnwidth-\separatorcolumnwidth-\separatorcolumnwidth}%
    \setlength{\doubleitemmaincolumnwidth}{0.5\doubleitemmaincolumnwidth}%
    % listdoubleitem lengths
    \setlength{\listdoubleitemmaincolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
    \setlength{\listdoubleitemmaincolumnwidth}{0.5\listdoubleitemmaincolumnwidth}%
    % fancyhdr lengths
    \renewcommand{\headwidth}{\textwidth}%
    % regular lengths
    \setlength{\parskip}{0\p@}}

% optional maketitle width to force a certain width (if set to 0pt, the width is calculated automatically)
\newlength{\makecvtitlenamewidth}
\setlength{\makecvtitlenamewidth}{0pt}% dummy value
\renewcommand*{\makecvtitle}{%
% recompute lengths (in case we are switching from letter to resume, or vice versa)
    \recomputecvlengths%
    % optional detailed information box
    \newbox{\makecvtitledetailsbox}%
    \savebox{\makecvtitledetailsbox}{%
        \addressfont\color{color2}%
        \begin{tabular}[b]{@{}r@{}}%
            \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
            \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}}% 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}}{}{%
                \ifthenelse{\equal{\@homepagetitle}{}}% \homepagetitle could be empty
                {\makenewline\homepagesymbol\httplink{\@homepage}}%
                {\makenewline\homepagesymbol\httplink[\@homepagetitle]{\@homepage}}}%
            \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{\includegraphics[width=\@photowidth]{\@photo}}}}%
    % 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

\newlength{\baseletterheight}
\settoheight{\baseletterheight}{\sectionstyle{o}}
\setlength{\baseletterheight}{\baseletterheight-0.95ex}
\renewcommand*{\section}[1]{%
    \par\addvspace{2.5ex}%
    \phantomsection{}% reset the anchor for hyperrefs
    \addcontentsline{toc}{section}{#1}%
    \parbox[t]{\hintscolumnwidth}{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\rule{\hintscolumnwidth}{0.95ex}}}%
    \hspace{\separatorcolumnwidth}%
    \parbox[t]{\maincolumnwidth}{\strut\sectionstyle{#1}}%
    \par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading

\renewcommand*{\subsection}[1]{%
    \par\addvspace{1ex}%
    \phantomsection{}% reset the anchor for hyperrefs
    \addcontentsline{toc}{subsection}{#1}%
    \begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
        \raggedleft\hintstyle{} & {\strut\subsectionstyle{#1}}%
    \end{tabular}%
    \par\nobreak\addvspace{0.5ex}\@afterheading}% to avoid a pagebreak after the heading

\renewcommand*{\cvitem}[3][.25em]{%
    \begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
        \raggedleft\hintstyle{#2} & {#3}%
    \end{tabular}%
    \par\addvspace{#1}}

\renewcommand*{\cvdoubleitem}[5][.25em]{%
    \cvitem[#1]{#2}{%
        \begin{minipage}[t]{\doubleitemmaincolumnwidth}
            #3
        \end{minipage}%
        \hfill% fill of \separatorcolumnwidth
        \begin{minipage}[t]{\hintscolumnwidth}
            \raggedleft\hintstyle{#4}
        \end{minipage}%
        \hspace*{\separatorcolumnwidth}%
        \begin{minipage}[t]{\doubleitemmaincolumnwidth}
            #5
        \end{minipage}}}

\renewcommand*{\cvlistitem}[2][.25em]{%
    \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemmaincolumnwidth}
                                     #2
    \end{minipage}}}

\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
    \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemmaincolumnwidth}
                                     #2
    \end{minipage}%
        \hfill% fill of \separatorcolumnwidth
        \ifthenelse{\equal{#3}{}}%
        {}%
        {\listitemsymbol\begin{minipage}[t]{\listdoubleitemmaincolumnwidth}
                            #3
        \end{minipage}}}}

\renewcommand*{\cventry}[7][.25em]{%
    \cvitem[#1]{#2}{%
            {\bfseries#3}%
        \ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
        \ifthenelse{\equal{#5}{}}{}{, #5}%
        \ifthenelse{\equal{#6}{}}{}{, #6}%
        .\strut%
        \ifx
            &#7&%
        \else
                {\newline{}\begin{minipage}[t]{\linewidth}
                               \small#7
            \end{minipage}}
        \fi}}

\newbox{\cvitemwithcommentmainbox}
\newlength{\cvitemwithcommentmainlength}
\newlength{\cvitemwithcommentcommentlength}
\renewcommand*{\cvitemwithcomment}[4][.25em]{%
    \savebox{\cvitemwithcommentmainbox}{{\bfseries#3}}%
    \setlength{\cvitemwithcommentmainlength}{\widthof{\usebox{\cvitemwithcommentmainbox}}}%
    \setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentmainlength}%
    \cvitem[#1]{#2}{%
        \begin{minipage}[t]{\cvitemwithcommentmainlength}
            \bfseries#3
        \end{minipage}%
        \hfill% fill of \separatorcolumnwidth
        \begin{minipage}[t]{\cvitemwithcommentcommentlength}
            \raggedleft\small\itshape#4
        \end{minipage}}}

\renewenvironment{thebibliography}[1]%
{%
    \bibliographyhead{\refname}%
%    \small%
    \begin{list}{\bibliographyitemlabel}%
    {%
        \setlength{\topsep}{0pt}%
        \setlength{\labelwidth}{\hintscolumnwidth}%
        \setlength{\labelsep}{\separatorcolumnwidth}%
        \leftmargin\labelwidth%
        \advance\leftmargin\labelsep%
        \@openbib@code%
        \usecounter{enumiv}%
        \let\p@enumiv\@empty%
        \renewcommand\theenumiv{\@arabic\c@enumiv}}%
    \sloppy\clubpenalty4000\widowpenalty4000%
%        \sfcode`\.\@m%
%        \sfcode `\=1000\relax%
}%
{%
    \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
    \end{list}%
}


%-------------------------------------------------------------------------------
%                letter style definition
%-------------------------------------------------------------------------------
% commands
\renewcommand*{\recomputeletterlengths}{%
    \recomputecvlengths%
    \setlength{\parskip}{6\p@}}

\renewcommand*{\makelettertitle}{%
% recompute lengths (in case we are switching from letter to resume, or vice versa)
    \recomputeletterlengths%
    % sender contact info
    \hfill%
    \begin{minipage}{.5\textwidth}%
        \raggedleft%
        \addressfont\textcolor{color2}{%
                {\bfseries\upshape\@firstname~\@familyname}\@firstdetailselementfalse%
            \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
            \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}}%
            \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}}{}{%
                \ifthenelse{\equal{\@homepagetitle}{}}% \homepagetitle could be empty
                {\makenewline\homepagesymbol\httplink{\@homepage}}%
                {\makenewline\homepagesymbol\httplink[\@homepagetitle]{\@homepage}}}%
            \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}%
    \end{minipage}\\[1em]
% 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: "January 1, 1900"; UK formal style: "01/01/1900"
    % opening
    \raggedright%
    \@opening\\[1.5em]%
    % ensure no extra spacing after \makelettertitle due to a possible blank line
%  \ignorespacesafterend% not working
    \hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}

\renewcommand*{\makeletterclosing}{
    \@closing\\[3em]%
    {\bfseries \@firstname~\@familyname}%
    \ifthenelse{\isundefined{\@enclosure}}{}{%
        \\%
        \vfill%
        {\color{color2}\itshape\enclname: \@enclosure}}}


\endinput


%% end of file `moderncvstyleclassic.sty'.