McDowell CV LaTeX template

The McDowell CV LaTeX template is Daniil Belyakov's one page resume class, built around the compact design that Gayle McDowell proposed for software engineers.

First page of the McDowell CV template

Open in LaTeX.to Download all files (zip)

Files:
McDowell_CV_Template.tex

Download McDowell_CV_Template.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.

% The font could be set to Windows-specific Calibri by using the 'calibri' option
\documentclass[]{mcdowellcv}

% For mathematical symbols
\usepackage{amsmath}

% Set applicant's personal data for header
\name{Gayle L. McDowell}
\address{123 Spruce St, Apt 35 \linebreak Philadelphia PA 19103}
\contacts{(555) 555-1212 \linebreak [email protected]}

\begin{document}

	% Print the header
	\makeheader
	
	% Print the content
	\begin{cvsection}{Employment}
		\begin{cvsubsection}{Software Engineer, Intern}{Apple Computer}{Summer 2004}
			iChat AV			
			\begin{itemize}
				\item Reduced time to render the user’s buddy list by 75\% by implementing prediction algorithm.
				\item Implemented iChat integration with OS X Spotlight Search by creating tool which extracts metadata from saved chat transcripts and provides metadata to a system-wide search database.
				\item Redesigned chat file format and implemented backwards compatibility for search.
			\end{itemize}
		\end{cvsubsection}
		
		\begin{cvsubsection}{Lead Student Ambassador}{Microsoft Corporation}{Fall 2003 -- Spring 2005}	
			\begin{itemize}
				\item Promoted to Lead Student Ambassador in Fall 2004; supervised 10 -- 15 Student Ambassadors.
				\item Created and taught Computer Science course, CSE 099: Software Design and Development.
			\end{itemize}
		\end{cvsubsection}
		
		\begin{cvsubsection}{Head Teaching Assistant}{University of Pennsylvania}{Fall 2001 -- Spring 2005}		
			\begin{itemize}
				\item Courses: Advanced Java III, Software Engineering, Mathematical Foundations of Computer Science I \& II.
				\item Promoted to Head TA in Fall 2004; led weekly meetings and supervised four other TAs.
			\end{itemize}
		\end{cvsubsection}
		
		\begin{cvsubsection}{Software Design Engineer, Intern}{Microsoft Corporation}{Summers 2001 -- 2003}
			Visual Studio Core (Summer 2003)		
			\begin{itemize}
				\item Implemented a user interface for the VS open file switcher (ctrl-tab) and extended it to tool windows.
				\item Created service to provide gradient across VS and VS add-ins. Optimized service via caching.
			\end{itemize}
			Programmer Productivity Research Center (Summers 2001, 2002)
			\begin{itemize}
				\item Built app to compute similarity of all methods in a code base; reduced time from $O(n^2)$ to $O(n\ log\ n)$. 
				\item Created test case generation tool which creates random XML docs from XML Schema.
			\end{itemize}
		\end{cvsubsection}
	\end{cvsection}
	
	\begin{cvsection}{Education}
		\begin{cvsubsection}{Philadelphia, PA}{University of Pennsylvania}{Fall 2000 -- May 2005}
			\begin{itemize}
				\item M.S.E. in Computer and Information Science, May 2005. GPA: 3.6
				\item B.S.E. in Computer Science Engineering with Minor in Mathematics, May 2005.  In-major GPA: 3.4.
				\item Graduate Coursework: Software Foundations; Computer Architecture; Algorithms; Artificial Intelligence; Comparison of Learning Algorithms; Computational Theory.
				\item Undergraduate Coursework: Operating Systems; Databases; Algorithms; Programming Languages; Comp. Architecture; Engineering Entrepreneurship; Calculus III.
			\end{itemize}
		\end{cvsubsection}
	\end{cvsection}
	
	\begin{cvsection}{Technical Experience}
		\begin{cvsubsection}{Projects}{}{}
			\begin{itemize}
				\item \textbf{Multi-User Drawing Tool} (2004). Electronic classroom where multiple users can view and simultaneously draw on a “chalkboard” with each person’s edits synchronized.  C++, MFC
				\item \textbf{Synchronized Calendar} (2003 – 2004). Desktop calendar with globally shared and synchronized calendars, allowing users to schedule meetings with other users.  C\#.NET, SQL, XML
				\item \textbf{Operating System} (2002).  UNIX-style OS with scheduler, file system, text editor and calculator. C
			\end{itemize}
		\end{cvsubsection}
	\end{cvsection}
	
	\begin{cvsection}{Additional Experience and Awards}
		\begin{cvsubsection}{}{}{}	
			\begin{itemize}
				\item \textbf{Instructor (2003 – 2005):} Taught two full-credit Computer Science courses; average ratings of 4.8 out of 5.0.
				\item \textbf{Third Prize, Senior Design Projects:} Awarded 3rd prize for Synchronized Calendar project, out of 100 projects.
			\end{itemize}
		\end{cvsubsection}
	\end{cvsection}
	
	\begin{cvsection}{Languages and Technologies}
		\begin{cvsubsection}{}{}{}	
			\begin{itemize}
				\item C++; C; Java; Objective-C; C\#.NET; SQL; JavaScript; XSLT; XML (XSD) Schema 
				\item Visual Studio; Microsoft SQL Server; Eclipse; XCode; Interface Builder
			\end{itemize}
		\end{cvsubsection}
	\end{cvsection}
	
\end{document}

mcdowellcv.cls

Download mcdowellcv.cls

%% 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{TeX Gyre Termes}

\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}
\expandafter\in@\expandafter$\expandafter{\@tabular}
\ifin@\else
  \patchcmd\tabu@setcleanup{\aftergroup\aftergroup\aftergroup\tabu@cleanup}{\aftergroup\tabu@cleanup}{}{}
\fi

% 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}
}
\makeatother
LICENSE

Download LICENSE

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.

changes.txt

Download changes.txt

Changes made for LaTeX.to to the McDowell CV template

Template page: https://latex.to/templates/github/mcdowell-cv/
Repository:    https://github.com/dnl-blkv/mcdowell-cv
Commit:        b7e2d271c64814ee02b3505b191389c8df614035
Author:        Daniil Belyakov
License:       MIT, see LICENSE

Changes from the original (a/) to this copy (b/):

--- a/mcdowellcv.cls
+++ b/mcdowellcv.cls
@@ -24,7 +24,7 @@
 
 % Set up the fonts according to options
 \def\mainfontsize{11pt}
-\def\mainfontface{Times New Roman}
+\def\mainfontface{TeX Gyre Termes}
 
 \DeclareOption{calibri}{%
   \def\mainfontface{Calibri}
@@ -71,6 +71,10 @@
 
 % Flexible tables
 \usepackage{tabu}
+\expandafter\in@\expandafter$\expandafter{\@tabular}
+\ifin@\else
+  \patchcmd\tabu@setcleanup{\aftergroup\aftergroup\aftergroup\tabu@cleanup}{\aftergroup\tabu@cleanup}{}{}
+\fi
 
 % For custom margins
 \usepackage{changepage}

Why each change was made, in the order of the diff:

- mcdowellcv.cls: the default font is TeX Gyre Termes instead of Times New
  Roman. Times New Roman is a commercial font that TeX Live does not carry and
  that cannot be shipped with the copy. TeX Gyre Termes is the free Times
  design in TeX Live, it has the bold and small caps faces the class sets the
  name and the headings in, and it keeps the example on one page. To use Times
  New Roman on a computer that has it, put the name back in the
  \def\mainfontface line.
- mcdowellcv.cls: four lines are added after the tabu package is loaded. tabu
  2.9 (2019, no longer maintained) stops at every table with "Undefined
  control sequence" in \tabu@cleanup under the array package of TeX Live 2026
  (v2.7b): array no longer sets a tabular inside a math group, so the cleanup
  tabu schedules two groups out runs after \end{tabu}, where the values it
  restores are gone. The added lines look for that math group in array's
  \@tabular and, only when it is missing, schedule the cleanup one group out.
  An older TeX Live still has the group and compiles the class as the
  repository ships it.

How to use this template

Everything runs in your browser: nothing to install, no login, no compile timeout.

How to use A4 paper

The class is made for US letter, and its A4 option is the most commented topic in the repository.

How to change the font

The class asks for Times New Roman or Calibri, fonts a TeX system does not have, which is what the repository's users report as a failed compile.

More templates: Awesome CV, billryan resume, sb2nov resume, Deedy Resume, latexcv, Jake's Resume, moderncv, AltaCV and all templates.