summaryrefslogtreecommitdiff
path: root/moderncvstyleclassic.sty
diff options
context:
space:
mode:
authorchris <chris@asuspades>2018-12-15 19:25:00 -0500
committerchris <chris@asuspades>2018-12-15 19:25:00 -0500
commitc6b8d1f6dce63752049cffe9bc42f90087634966 (patch)
treebeca9147567c2008f25d77732930204ea2798189 /moderncvstyleclassic.sty
downloadcv-c6b8d1f6dce63752049cffe9bc42f90087634966.tar
cv-c6b8d1f6dce63752049cffe9bc42f90087634966.tar.gz
cv-c6b8d1f6dce63752049cffe9bc42f90087634966.tar.bz2
cv-c6b8d1f6dce63752049cffe9bc42f90087634966.tar.lz
cv-c6b8d1f6dce63752049cffe9bc42f90087634966.tar.xz
cv-c6b8d1f6dce63752049cffe9bc42f90087634966.tar.zst
cv-c6b8d1f6dce63752049cffe9bc42f90087634966.zip
first commit
Diffstat (limited to 'moderncvstyleclassic.sty')
-rw-r--r--moderncvstyleclassic.sty297
1 files changed, 297 insertions, 0 deletions
diff --git a/moderncvstyleclassic.sty b/moderncvstyleclassic.sty
new file mode 100644
index 0000000..badd5e1
--- /dev/null
+++ b/moderncvstyleclassic.sty
@@ -0,0 +1,297 @@
+%% start of file `moderncvstyleclassic.sty'.
+%% Copyright 2006-2013 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}[2013/02/09 v1.3.0 modern curriculum vitae and letter style scheme: classic]
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+% Latin Modern fonts
+%\ifxetexorluatex
+% \setmainfont{Latin Modern Roman}
+% \setsansfont{Latin Modern Sans}
+% \setmathfont{Latin Modern Math}
+%\else
+ \IfFileExists{lmodern.sty}%
+ {\RequirePackage{lmodern}}%
+ {}
+%\fi
+
+
+%-------------------------------------------------------------------------------
+% overall style definition
+%-------------------------------------------------------------------------------
+% symbols
+\moderncvicons{marvosym}
+
+
+%-------------------------------------------------------------------------------
+% 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 (pre-rendering)
+ \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}}%
+ \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 and addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \phonesdetails% needed 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}
+ }%
+ % 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\ \@lastname}%
+ \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
+ \end{minipage}%
+ \hfill%
+ % optional detailed information (rendering)
+ \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}
+\RenewDocumentCommand{\section}{sm}{%
+ \par\addvspace{2.5ex}%
+ \phantomsection{}% reset the anchor for hyperrefs
+ \addcontentsline{toc}{section}{#2}%
+ \parbox[t]{\hintscolumnwidth}{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\rule{\hintscolumnwidth}{0.95ex}}}%
+ \hspace{\separatorcolumnwidth}%
+ \parbox[t]{\maincolumnwidth}{\strut\sectionstyle{#2}}%
+ \par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading
+
+\RenewDocumentCommand{\subsection}{sm}{%
+ \par\addvspace{1ex}%
+ \phantomsection{}% reset the anchor for hyperrefs
+ \addcontentsline{toc}{subsection}{#2}%
+ % \begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
+ % \raggedleft\hintstyle{} &{\strut\subsectionstyle{#2}}%
+ %\end{tabular}%
+ \parbox[t]{\hintscolumnwidth}{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\rule{.6\hintscolumnwidth}{0.5ex}}}%
+ \hspace{\separatorcolumnwidth}%
+ \parbox[t]{\maincolumnwidth}{\strut\subsectionstyle{#2}}%
+ \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~\@lastname}\@firstdetailselementfalse%
+ \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{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@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~\@lastname}%
+ \ifthenelse{\isundefined{\@enclosure}}{}{%
+ \\%
+ \vfill%
+ {\color{color2}\itshape\enclname: \@enclosure}}}
+
+
+\endinput
+
+
+%% end of file `moderncvstyleclassic.sty'.