mirror of https://github.com/eyhc1/rendercv.git
302 lines
8.9 KiB
TeX
302 lines
8.9 KiB
TeX
%% The MIT License (MIT)
|
|
%%
|
|
%% Copyright (c) 2015 Daniil Belyakov
|
|
%%
|
|
%% Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
%% of this software and associated documentation files (the "Software"), to deal
|
|
%% in the Software without restriction, including without limitation the rights
|
|
%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
%% copies of the Software, and to permit persons to whom the Software is
|
|
%% furnished to do so, subject to the following conditions:
|
|
%%
|
|
%% The above copyright notice and this permission notice shall be included in all
|
|
%% copies or substantial portions of the Software.
|
|
%%
|
|
%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
%% SOFTWARE.
|
|
|
|
\ProvidesClass{mcdowellcv}[2022/03/18 v1.2.0 McDowell CV class]
|
|
|
|
% Set up the fonts according to options
|
|
\def\mainfontsize{11pt}
|
|
\def\mainfontface{Times New Roman}
|
|
|
|
\DeclareOption{calibri}{%
|
|
\def\mainfontface{Calibri}
|
|
}
|
|
|
|
% Set up papersize according to options, default to US letter
|
|
\def\papersize{letterpaper}
|
|
%Set up bool for adjusting vspacing later
|
|
\newif\ifpapersize
|
|
|
|
\DeclareOption{a4paper}{%
|
|
\def\papersize{a4paper}
|
|
\papersizetrue
|
|
}
|
|
|
|
\DeclareOption{letterpaper}{%
|
|
\def\papersize{letterpaper}
|
|
\papersizefalse
|
|
}
|
|
\ProcessOptions\relax
|
|
|
|
% Set font size and paper type
|
|
\LoadClass[\papersize,\mainfontsize]{article}
|
|
|
|
% Set document margins
|
|
\usepackage[left=0.75in,top=0.6in,right=0.75in,bottom=0.6in]{geometry}
|
|
|
|
% Set font face
|
|
% \usepackage{fontspec}
|
|
% \setmainfont[SmallCapsFeatures={Renderer=Basic},
|
|
% Ligatures={TeX, NoCommon, NoDiscretionary}]{\mainfontface}
|
|
|
|
% Remove paragraph indentation
|
|
\usepackage[parfill]{parskip}
|
|
|
|
% Required for boldface (\bf and \bfseries) tabular columns
|
|
\usepackage{array}
|
|
|
|
% Required for ifthenelse statements
|
|
\usepackage{etoolbox}
|
|
|
|
% Suppress page numbers
|
|
\pagestyle{empty}
|
|
|
|
% Flexible tables
|
|
\usepackage{tabu}
|
|
|
|
% For custom margins
|
|
\usepackage{changepage}
|
|
|
|
% To customize lists
|
|
\usepackage{enumitem}
|
|
% Remove left margin from lists, suppress vertical item separation and set top
|
|
% separation to a negative value to suppress a single parskip before lists
|
|
\setlist{leftmargin=*, noitemsep, topsep=-1\parskip}
|
|
|
|
% For adjusting spacing based on the platform used
|
|
\usepackage{ifthen}
|
|
\usepackage{ifplatform}
|
|
|
|
% For spcaed small caps
|
|
\usepackage{microtype}
|
|
|
|
\DeclareMicrotypeSet*{smallcapsi} {
|
|
encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2},
|
|
shape = {sc*,si,scit}
|
|
}
|
|
|
|
%--------------------------------------------------------------------------------
|
|
% Constants -
|
|
%--------------------------------------------------------------------------------
|
|
|
|
\ifthenelse{\equal{\platformname}{\notwindowsname}}{
|
|
\def\namespaceskip{0.575em}
|
|
\def\afterheaderspace{1.1pt}
|
|
\def\beforesectionheaderspace{5pt}
|
|
\def\sectionheadermargin{6pt}
|
|
\def\beforesectionheaderhrulespace{2.85pt}
|
|
\def\sectionheaderhrlueheight{0.518pt}
|
|
\def\aftersectionheaderspace{-5.8pt}
|
|
|
|
\ifpapersize
|
|
\def\aftersinglelinesubsectionheaderspace{-5.75pt}
|
|
\else
|
|
\def\aftersinglelinesubsectionheaderspace{-20.25pt}
|
|
\fi
|
|
|
|
\def\afterdoublelinesubsectionheaderspace{-11.75pt}
|
|
\def\aftermultilinesubsectionheaderspace{-7.75pt}
|
|
\def\afteremptysubsectionheaderspace{1.25pt}
|
|
\def\subsectionmargin{9pt}
|
|
\def\aftersubsectionspace{2.1pt}
|
|
}{
|
|
\def\namespaceskip{0.4em}
|
|
\def\afterheaderspace{3pt}
|
|
\def\beforesectionheaderspace{4.75pt}
|
|
\def\sectionheadermargin{6pt}
|
|
\def\beforesectionheaderhrulespace{3pt}
|
|
\def\sectionheaderhrlueheight{0.5pt}
|
|
\def\aftersectionheaderspace{-4pt}
|
|
|
|
\ifpapersize
|
|
\def\aftersinglelinesubsectionheaderspace{-4pt}
|
|
\else
|
|
\def\aftersinglelinesubsectionheaderspace{-18.5pt}
|
|
\fi
|
|
|
|
\def\afterdoublelinesubsectionheaderspace{-10pt}
|
|
\def\aftermultilinesubsectionheaderspace{-6pt}
|
|
\def\afteremptysubsectionheaderspace{3pt}
|
|
\def\subsectionmargin{9pt}
|
|
\def\aftersubsectionspace{4pt}
|
|
}
|
|
|
|
%--------------------------------------------------------------------------------
|
|
% Header Setup and Printing -
|
|
%--------------------------------------------------------------------------------
|
|
|
|
% Address
|
|
\makeatletter
|
|
|
|
\newcommand\address[1]{\def\@address{#1}}
|
|
\address{}
|
|
|
|
\newcommand\printaddress{
|
|
\small{\@address}
|
|
}
|
|
|
|
\makeatother
|
|
|
|
% Name
|
|
\makeatletter
|
|
|
|
\newcommand\name[1]{\def\@name{#1}}
|
|
\name{}
|
|
|
|
\newcommand\printname{
|
|
\typeout {kokoko}
|
|
\typeout \spaceskip
|
|
\spaceskip \namespaceskip \relax
|
|
\textbf{\LARGE\textls[110]{\textsc{\@name}}}
|
|
}
|
|
|
|
\makeatother
|
|
|
|
% Contacts
|
|
\makeatletter
|
|
|
|
\newcommand\contacts[1]{\def\@contacts{#1}}
|
|
\contacts{}
|
|
|
|
\newcommand\printcontacts{
|
|
\small{\@contacts}
|
|
}
|
|
|
|
\makeatother
|
|
|
|
\makeatletter
|
|
\newcommand\makeheader{
|
|
\begin{center}
|
|
\begin{tabu} to 1\textwidth { X[l,m] X[2,c,m] X[r,m] }
|
|
\printaddress & \printname & \printcontacts \\
|
|
\end{tabu}
|
|
\end{center}
|
|
\vspace*{\afterheaderspace}
|
|
}
|
|
\makeatother
|
|
|
|
%--------------------------------------------------------------------------------
|
|
% Sections and Subsections -
|
|
%--------------------------------------------------------------------------------
|
|
|
|
% Print a section header
|
|
\makeatletter
|
|
\newenvironment{cvsection}[1]{
|
|
\vspace*{\beforesectionheaderspace}
|
|
% Set text margins to equal \tabcolsep (6pt by default)
|
|
\begin{adjustwidth}{\sectionheadermargin}{\sectionheadermargin}
|
|
\textsc{\textbf{#1}}
|
|
\end{adjustwidth}
|
|
\vspace*{\beforesectionheaderhrulespace}
|
|
\hrule height \sectionheaderhrlueheight
|
|
\vspace*{\aftersectionheaderspace}
|
|
}{}
|
|
\makeatother
|
|
|
|
% Print a subsection
|
|
\makeatletter
|
|
% Define toggles checking if titles were defined
|
|
\newtoggle{lefttitledefined}
|
|
\newtoggle{centertitledefined}
|
|
\newtoggle{righttitledefined}
|
|
|
|
\newenvironment{cvsubsection}[4][1]{
|
|
\notblank{#2}{\toggletrue{lefttitledefined}}{}
|
|
\notblank{#3}{\toggletrue{centertitledefined}}{}
|
|
\notblank{#4}{\toggletrue{righttitledefined}}{}
|
|
\ifboolexpr{togl {lefttitledefined} or togl {centertitledefined} or togl {righttitledefined}}{
|
|
\begin{tabu} to 1\textwidth { X[l,p] X[c,p] X[r,p] }
|
|
\textbf{#2} & \textbf{#3} & \textbf{#4} \\
|
|
\end{tabu}
|
|
% Add space according to the specidied number of lines
|
|
\ifnumcomp{#1}{=}{1}{\vspace*{\aftersinglelinesubsectionheaderspace}}{
|
|
\ifnumcomp{#1}{=}{2}{\vspace*{\afterdoublelinesubsectionheaderspace}}{
|
|
\vspace*{\aftermultilinesubsectionheaderspace}
|
|
}
|
|
}
|
|
}{
|
|
\vspace*{\afteremptysubsectionheaderspace}
|
|
}
|
|
\togglefalse{lefttitledefined}
|
|
\togglefalse{centertitledefined}
|
|
\togglefalse{righttitledefined}
|
|
\begin{adjustwidth}{\subsectionmargin}{\subsectionmargin}
|
|
}
|
|
{
|
|
\end{adjustwidth}
|
|
\vspace*{\aftersubsectionspace}
|
|
}
|
|
|
|
\newenvironment{cvpublicationsubsection}[4][2]{
|
|
\notblank{#2}{\toggletrue{lefttitledefined}}{}
|
|
\notblank{#3}{\toggletrue{centertitledefined}}{}
|
|
\notblank{#4}{\toggletrue{righttitledefined}}{}
|
|
\ifboolexpr{togl {lefttitledefined} or togl {centertitledefined} or togl {righttitledefined}}{
|
|
\begin{tabu} to 1\textwidth { X[3.5,p] X[r,p] }
|
|
\textbf{#2} & \textbf{#4} \\
|
|
\end{tabu}
|
|
% Add space according to the specidied number of lines
|
|
\ifnumcomp{#1}{=}{1}{\vspace*{\aftersinglelinesubsectionheaderspace}}{
|
|
\ifnumcomp{#1}{=}{2}{\vspace*{\afterdoublelinesubsectionheaderspace}}{
|
|
\vspace*{\aftermultilinesubsectionheaderspace}
|
|
}
|
|
}
|
|
}{
|
|
\vspace*{\afteremptysubsectionheaderspace}
|
|
}
|
|
\togglefalse{lefttitledefined}
|
|
\togglefalse{centertitledefined}
|
|
\togglefalse{righttitledefined}
|
|
\begin{adjustwidth}{\subsectionmargin}{\subsectionmargin}
|
|
}
|
|
{
|
|
\end{adjustwidth}
|
|
\vspace*{\aftersubsectionspace}
|
|
}
|
|
|
|
\newenvironment{cvonelinesubsection}[4][1]{
|
|
\notblank{#2}{\toggletrue{lefttitledefined}}{}
|
|
\notblank{#3}{\toggletrue{centertitledefined}}{}
|
|
\notblank{#4}{\toggletrue{righttitledefined}}{}
|
|
\ifboolexpr{togl {lefttitledefined} or togl {centertitledefined} or togl {righttitledefined}}{
|
|
\begin{tabu} to 1\textwidth { X[l,p] X[c,p] X[r,p] }
|
|
\textbf{#2} & \textbf{#3} & \textbf{#4} \\
|
|
\end{tabu}
|
|
% Add space according to the specidied number of lines
|
|
\ifnumcomp{#1}{=}{1}{\vspace*{\aftersinglelinesubsectionheaderspace}}{
|
|
\ifnumcomp{#1}{=}{2}{\vspace*{\afterdoublelinesubsectionheaderspace}}{
|
|
\vspace*{\aftermultilinesubsectionheaderspace}
|
|
}
|
|
}
|
|
}{
|
|
\vspace*{\afteremptysubsectionheaderspace}
|
|
}
|
|
\togglefalse{lefttitledefined}
|
|
\togglefalse{centertitledefined}
|
|
\togglefalse{righttitledefined}
|
|
\begin{adjustwidth}{\subsectionmargin}{\subsectionmargin}
|
|
}
|
|
{
|
|
\end{adjustwidth}
|
|
\vspace*{-5pt}
|
|
}
|
|
\makeatother
|