From 71e57b1c98740d1fbb24981d390bd3ec8f2e967b Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sun, 17 May 2020 03:03:04 +0000 Subject: CTAN sync 202005170303 --- macros/latex/contrib/readablecv/ReadableCV.cls | 560 +++++++++++++++++++++++++ 1 file changed, 560 insertions(+) create mode 100644 macros/latex/contrib/readablecv/ReadableCV.cls (limited to 'macros/latex/contrib/readablecv/ReadableCV.cls') diff --git a/macros/latex/contrib/readablecv/ReadableCV.cls b/macros/latex/contrib/readablecv/ReadableCV.cls new file mode 100644 index 0000000000..db6197592d --- /dev/null +++ b/macros/latex/contrib/readablecv/ReadableCV.cls @@ -0,0 +1,560 @@ +%% ReadableCV +%% Copyright 2020 Philip Stone +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Philip Stone +% +% This work consists of the files ReadableCV.cls and ReadableCV.tex + +\def\ClassDate{2020/05/14} +\def\ClassVersion{2.0} +\ProvidesClass{ReadableCV}[\ClassDate ReadableCV \ClassVersion class written by Philip Stone] + +\LoadClass[10pt, a4paper, onecolumn, oneside, notitlepage]{article} +\NeedsTeXFormat{LaTeX2e} + +%set up PDF metadata +\usepackage{hyperref} + +% Set up paper size and language +\RequirePackage[a4paper, total={7in, 10in}]{geometry} +\RequirePackage{titlesec} +\RequirePackage[nodayofweek]{datetime} + +% Allow use of multiple columns +\RequirePackage{multicol} + +% Support for graphics, fonts and colour +\RequirePackage{marvosym} +\RequirePackage{graphicx} +\RequirePackage[x11names]{xcolor} +\RequirePackage[sfdefault,thin]{roboto} +\RequirePackage[T1]{fontenc} + +\pagestyle{empty} +\setlength{\parindent}{0em} + +% Allow use of if statements +\RequirePackage{etoolbox} +\RequirePackage{xstring} + + +% Set up whether sections align to the left or right +\def\SectionAlignment{flushleft} + +\newcommand{\setSectionAlignment}[1]{ + \IfEqCase{#1}{ + {left}{\def\SectionAlignment{flushleft}} + {right}{\def\SectionAlignment{flushright}} + } +} + +% Displays section title or heading +\newcommand{\newHeading}[2]{ + \begin{\SectionAlignment} +% \vspace{\baselineskip} + \bigskip + \textcolor{\HeadingColour}{\textbf{\Large{#1}}} + \smallskip + \hrule +% \vspace{\baselineskip} + \end{\SectionAlignment} +} + +% Define page colour +% Uses X11names +\def\PageColour{white} +\newcommand{\setPageColour}[1]{ + \def\PageColour{#1} + \pagecolor{\PageColour} +} + +% Define left or right aligned header +% Can be either 'left' or 'right' +\def\HeaderAlignment{flushright} +% Create command to change header alignment +\newcommand{\setHeaderAlignment}[1]{ + \IfEqCase{#1}{ + {left}{\def\HeaderAlignment{flushleft}} + {right}{\def\HeaderAlignment{flushright}} + } +} + +% Define default colour of headings +% Uses X11names +\def\HeadingColour{SlateGray3} +% Create command to change header colour +\newcommand{\setHeadingColours}[1]{ + \def\HeadingColour{#1} +} + +\def\rcvname{} +\def\rcvjobtitle{} +\def\rcvmobileno{} +\def\rcvhomeno{} +\def\rcvemailaddr{} +\def\rcvwebaddr{} + +\newcommand{\HeaderText}{ + + \begin{minipage}{1.0\linewidth} + \begin{\HeaderAlignment} + \textcolor{\HeadingColour}{\textbf{\Huge{\rcvname}}}\\ + \vspace{-0.3em} + \LARGE{\rcvjobtitle}\\ + + \smallskip + \ifdefempty{\rcvmobileno}% + { + %if mobile number not defined + \ifdefempty{\rcvhomeno}% + { + % mobile and home numbers not defined + } + { + %mobile number not defined, home number is + \normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\} + } + } + { + %if mobile number defined + \ifdefempty{\rcvhomeno}% + { + %if mobile number defined, home number not defined + \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\} + } + { + %if home number and mobile number defined + \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\ {\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}} + } + } + + \ifdefempty{\rcvemailaddr}% + { + \ifdefempty{\rcvwebaddr}% + { + % email and web not defined + } + { + %email not defined, web is + \normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\} + } + } + { + %if email defined + \ifdefempty{\rcvwebaddr}% + { + %if email defined, web not defined + \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\} + } + { + %if email and web defined + \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\ {\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}} + } + } + \end{\HeaderAlignment} + \end{minipage} +} + +\newcommand{\HeaderRightContact}{ + % Name and jobtitle on the left. Contact details on the right. + + \begin{minipage}{0.5\linewidth} + \begin{flushleft} + \textcolor{\HeadingColour}{\textbf{\Huge{\rcvname}}}\\ + \vspace{-0.3em} + \LARGE{\rcvjobtitle}\\ + \end{flushleft} + \end{minipage} + \begin{minipage}{0.5\linewidth} + \begin{flushright} + \ifdefempty{\rcvmobileno} + {} + {\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}} + \ifdefempty{\rcvhomeno} + {} + {\normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}} + \ifdefempty{\rcvemailaddr} + {} + {\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}} + \ifdefempty{\rcvwebaddr} + {} + {\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}} + \end{flushright} + \end{minipage} +} + +\newcommand{\HeaderLeftContact}{ + % Name and jobtitle on the right. Contact details on the left. + + \begin{minipage}{0.5\linewidth} + \begin{flushleft} + \ifdefempty{\rcvmobileno} + {} + {\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}} + \ifdefempty{\rcvhomeno} + {} + {\normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}} + \ifdefempty{\rcvemailaddr} + {} + {\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}} + \ifdefempty{\rcvwebaddr} + {} + {\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}} + \end{flushleft} + \end{minipage} + \begin{minipage}{0.5\linewidth} + \begin{flushright} + \textcolor{\HeadingColour}{\textbf{\Huge{\rcvname}}}\\ + \vspace{-0.3em} + \LARGE{\rcvjobtitle}\\ + \end{flushright} + \end{minipage} + +} + +\newcommand{\HeaderTextOppo}{ + \IfEqCase{\HeaderAlignment}{ + {flushleft}{\HeaderRightContact} + {flushright}{\HeaderLeftContact} + } +} + +\newcommand{\HeaderLeftImage}{ + \begin{minipage}{0.5\linewidth} + \begin{flushleft} + \includegraphics[width=2.5cm,height=2.5cm,keepaspectratio]{\rcvimageloc} + \end{flushleft} + \end{minipage} + \begin{minipage}{0.5\linewidth} + \begin{flushright} + \textcolor{\HeadingColour}{\textbf{\Huge{\rcvname}}}\\ + \vspace{-0.3em} + \LARGE{\rcvjobtitle}\\ + + \smallskip + \ifdefempty{\rcvmobileno}% + { + %if mobile number not defined + \ifdefempty{\rcvhomeno}% + { + % mobile and home numbers not defined + } + { + %mobile number not defined, home number is + \normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\} + } + } + { + %if mobile number defined + \ifdefempty{\rcvhomeno}% + { + %if mobile number defined, home number not defined + \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\} + } + { + %if home number and mobile number defined + \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\ {\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}} + } + } + + \ifdefempty{\rcvemailaddr}% + { + \ifdefempty{\rcvwebaddr}% + { + % email and web not defined + } + { + %email not defined, web is + \normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\} + } + } + { + %if email defined + \ifdefempty{\rcvwebaddr}% + { + %if email defined, web not defined + \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\} + } + { + %if email and web defined + \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\ {\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}} + } + } + \end{flushright} + \end{minipage} +} + +\newcommand{\HeaderRightImage}{ + \begin{minipage}{0.5\linewidth} + \begin{flushleft} + \textcolor{\HeadingColour}{\textbf{\Huge{\rcvname}}}\\ + \vspace{-0.3em} + \LARGE{\rcvjobtitle}\\ + + \smallskip + \ifdefempty{\rcvmobileno}% + { + %if mobile number not defined + \ifdefempty{\rcvhomeno}% + { + % mobile and home numbers not defined + } + { + %mobile number not defined, home number is + \normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\} + } + } + { + %if mobile number defined + \ifdefempty{\rcvhomeno}% + { + %if mobile number defined, home number not defined + \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\} + } + { + %if home number and mobile number defined + \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\ {\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}} + } + } + + \ifdefempty{\rcvemailaddr}% + { + \ifdefempty{\rcvwebaddr}% + { + % email and web not defined + } + { + %email not defined, web is + \normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\} + } + } + { + %if email defined + \ifdefempty{\rcvwebaddr}% + { + %if email defined, web not defined + \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\} + } + { + %if email and web defined + \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\ {\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}} + } + } + \end{flushleft} + \end{minipage} + \begin{minipage}{0.5\linewidth} + \begin{flushright} + \includegraphics[width=2.5cm,height=2.5cm,keepaspectratio]{\rcvimageloc} + \end{flushright} + \end{minipage} +} + +% Define image use +\newtoggle{useImage} +\def\rcvimageloc{} + +% Set up use of image +\newcommand{\setImage}[1]{ + \IfEq {#1}{}{ + \togglefalse{useImage} + \def\rcvimageloc{} + } + { + \toggletrue{useImage} + \def\rcvimageloc{#1} + } +} + +\def\contactloc{below} + +\newcommand{\setContactLocation}[1]{ + \IfEqCase{#1}{ + {below}{\def\contactloc{below}} + {opposite}{\def\contactloc{opposite}} + } +} + +\newcommand{\setYourName}[1]{\def\rcvname{#1}} +\newcommand{\setYourJobTitle}[1]{\def\rcvjobtitle{#1}} +\newcommand{\setYourMobileNo}[1]{\def\rcvmobileno{#1}} +\newcommand{\setYourHomeNo}[1]{\def\rcvhomeno{#1}} +\newcommand{\setYourEmailAddr}[1]{\def\rcvemailaddr{#1}} +\newcommand{\setYourWebAddr}[1]{\def\rcvwebaddr{#1}} + +% Display header +\newcommand{\showHeader}{ + + \hypersetup + { + pdftitle = {CV for \rcvname}, + pdfauthor = {\rcvname}, + pdfsubject = {CV for \rcvname}, + pdfkeywords = {CV, curriculum, vitae, resume, \rcvname, \rcvjobtitle}, + pdfproducer = {ReadableCV \ClassVersion\ template written by Philip Stone} + } + + \iftoggle{useImage}% + { + % Image present + \IfEqCase{\HeaderAlignment}{ + {flushleft}{\HeaderRightImage} + {flushright}{\HeaderLeftImage} + } + } + { + % Image not present + \IfEqCase{\contactloc}{ + {below}{\HeaderText} + {opposite}{\HeaderTextOppo} + } + } + + \vspace{\baselineskip} +} + +\newcommand{\addSkills}[9]{ + \def\sone{#1} + \def\stwo{#2} + \def\sthree{#3} + \def\sfour{#4} + \def\sfive{#5} + \def\ssix{#6} + \def\sseven{#7} + \def\seight{#8} + \def\snine{#9} + + \begin{multicols}{3} + \begin{itemize} + \ifdefempty{\sone}{}{\item \sone} + \ifdefempty{\stwo}{}{\item \stwo} + \ifdefempty{\sthree}{}{\item \sthree} + \ifdefempty{\sfour}{}{\item \sfour} + \ifdefempty{\sfive}{}{\item \sfive} + \ifdefempty{\ssix}{}{\item \ssix} + \ifdefempty{\sseven}{}{\item \sseven} + \ifdefempty{\seight}{}{\item \seight} + \ifdefempty{\snine}{}{\item \snine} + \end{itemize} + \end{multicols} +} + +% Set up whether job title or company printed first +\newtoggle{jobfirst} +\toggletrue{jobfirst} + +\newcommand{\setJobCompanyOrder}[1]{ + \IfEqCase{#1}{ + {JobFirst}{\toggletrue{jobfirst}} + {CompanyFirst}{\togglefalse{jobfirst}} + } +} + +\newcommand{\newRole}[4]{ + % This displays the whole of the role information + % including dates [1], job title [2], + % company name [3] and role summary [4] + + \iftoggle{jobfirst}{ + % Display job before company + \begin{tabular}{@{}p{3cm} l} + \textbf{#1} & \textbf{#2}\\ + & \textbf{#3}\\ + \end{tabular} + } + { + % Display company before job + \begin{tabular}{@{}p{3cm} l} + \textbf{#1} & \textbf{#3}\\ + & \textbf{#2}\\ + \end{tabular} + } + + \vspace{\baselineskip} + \textit{Role outline} \par \par \hspace{2em}#4 \bigskip +} + +\newcommand{\roleAchievements}[5]{ + % Adds up to five achievements in an itemized list + \textit{Key achievements} \par \par + + \def\aone{#1} + \def\atwo{#2} + \def\athree{#3} + \def\afour{#4} + \def\afive{#5} + + \begin{itemize} + \ifdefempty{\aone}{}{\item \aone} + \ifdefempty{\atwo}{}{\item \atwo} + \ifdefempty{\athree}{}{\item \athree} + \ifdefempty{\afour}{}{\item \afour} + \ifdefempty{\afive}{}{\item \afive} + \end{itemize} + + \bigskip +} + +\newcommand{\newCourse}[4]{ +% Allows the display of a new course. Arguments are +% [1] date, [2] course title, [3] awarding body. +% If JobFirst set then course title will be first +% If CompanyFirst set then awarding body will be first + + \iftoggle{jobfirst}{ + % Display job before company + \begin{tabular}{@{}p{3cm} l} + \textbf{#1} & \textbf{#2} (#3)\\ + \end{tabular} +} +{ + % Display company before job + \begin{tabular}{@{}p{3cm} l} + \textbf{#1} & \textbf{#3} (#2)\\ + \end{tabular} +} +} + +% Recipients address +\def\recpname{} +\def\recpjobtitle{} +\def\recproad{} +\def\recptown{} +\def\recpcity{} +\def\recppostcode{} + +\newcommand{\setRecpName}[1]{\def\recpname{#1}} +\newcommand{\setRecpJobTitle}[1]{\def\recpjobtitle{#1}} +\newcommand{\setRecpRoad}[1]{\def\recproad{#1}} +\newcommand{\setRecpTown}[1]{\def\recptown{#1}} +\newcommand{\setRecpCity}[1]{\def\recpcity{#1}} +\newcommand{\setRecpPostcode}[1]{\def\recppostcode{#1}} + +\newcommand{\makeLetter}{ + \begin{flushright} + \today + \end{flushright} + + \bigskip \bigskip + + \recpname \\ + \ifdefempty{\recpjobtitle}{}{\recpjobtitle \\} + \recproad \\ \recptown \\ \recpcity \\ \recppostcode + + \bigskip + +} + +% Finish letter image of signature and your name +\newcommand{\closeletter}[1]{% + \includegraphics{#1}\\ \bigskip \rcvname +} \ No newline at end of file -- cgit v1.2.3