rendercv/tests/reference_files/mcdowell_theme_auxiliary_files/mcdowellcv.cls

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