Why Use LaTeX for Your Resume or CV?
When applying for jobs or academic positions, your resume is your first impression. While many people use word processors, LaTeX offers several distinct advantages for document preparation:
- Professional Typography: LaTeX handles kerning, hyphenation, and spacing far better than standard word processors, resulting in a "published" look.
- Separation of Content and Style: You can focus on writing your achievements while the document class handles the layout.
- Version Control: Since LaTeX files are plain text, you can easily track changes using Git or keep different versions for different job roles.
- Consistency: Once you define a style for your headers or dates, it remains perfectly consistent throughout the document.
In this guide, we will explore how to build a resume from scratch and how to utilize existing templates.
The Basic Structure of a Resume
To build a resume in LaTeX, you generally need to manage three main areas: the page layout (margins), the contact header, and the content sections (Education, Experience, Skills).
We start with the article class but customize it using a few essential packages.
Essential Packages
- geometry: To set narrow margins (resumes usually need more space).
- hyperref: To make your email and LinkedIn profile clickable.
- enumitem: To customize bullet point spacing.
- titlesec: To style section headings.
Here is a basic template to get you started:
\documentclass[11pt,a4paper]{article}
% Load packages
\usepackage[utf8]{inputenc}
\usepackage[margin=0.75in]{geometry} % Set margins
\usepackage{hyperref} % For clickable links
\usepackage{enumitem} % For better lists
\usepackage{titlesec} % For section styling
% Custom section styling
\titleformat{\section}{\large\bfseries}{}{0em}{}[\titlerule]
\titlespacing{\section}{0pt}{10pt}{5pt}
\begin{document}
% Header Section
\begin{center}
{\LARGE \textbf{Jane Doe}} \\
\vspace{5pt}
City, State $|$ 555-0199 $|$ \href{mailto:[email protected]}{[email protected]} \\
\href{https://linkedin.com/in/janedoe}{linkedin.com/in/janedoe} $|$ \href{https://github.com/janedoe}{github.com/janedoe}
\end{center}
\section{Education}
\textbf{University of Technology} \hfill City, State \\
Bachelor of Science in Computer Science \hfill Sept 2018 -- May 2022
\section{Experience}
\textbf{Software Engineering Intern} \hfill Remote \\
Tech Solutions Inc. \hfill June 2021 -- Aug 2021
\begin{itemize}[noitemsep, topsep=0pt]
\item Developed a web dashboard using React and Node.js.
\item Optimized database queries, reducing load times by 20\%.
\end{itemize}
\end{document}Note: The
\hfillcommand is incredibly useful in resumes. It pushes text to the right margin, allowing you to put the company name on the left and the dates on the right on the same line.
Enhancing Design with Icons and Fonts
A plain resume is functional, but adding icons and professional fonts can make it stand out. The fontawesome5 package provides access to thousands of brand and utility icons.
Adding Icons
First, include the package in your preamble:
\usepackage{fontawesome5}Then, you can replace plain text with icons in your header:
\begin{center}
{\LARGE \textbf{Jane Doe}} \\
\vspace{5pt}
\faMapMarker* City, State \quad
\faPhone* 555-0199 \quad
\faEnvelope \href{mailto:[email protected]}{[email protected]}
\end{center}Choosing a Font
By default, LaTeX uses Computer Modern. While classic, it can look "too academic" for some corporate roles. You can change fonts by loading a font package:
mathptmx: Times New Roman stylehelvet: Helvetica (Sans Serif) stylecharter: A very readable, modern serif font
Example of using Helvetica:
\usepackage[scaled]{helvet}
\renewcommand\familydefault{\sfdefault} % Sets the whole document to Sans SerifCreating Custom Commands for Reusability
If you have many job entries, your code can become cluttered. You can create a "Custom Command" to keep your code clean. This ensures that every job entry has the exact same formatting.
% Define a custom command for resume entries
% Usage: \resumeEntry{Title}{Location}{Organization}{Date}
\newcommand{\resumeEntry}[4]{
\vspace{2pt}
\noindent\textbf{#1} \hfill #2 \\
\textit{#3} \hfill \textit{#4} \par
\vspace{2pt}
}
% Usage in the document:
\section{Experience}
\resumeEntry{Senior Developer}{New York, NY}{FinTech Corp}{2022 -- Present}
\begin{itemize}[noitemsep]
\item Lead a team of 5 developers.
\item Implemented CI/CD pipelines.
\end{itemize}Using Pre-made Templates
While building from scratch gives you total control, many beginners prefer using established classes. The two most popular are ModernCV and Awesome-CV.
1. ModernCV
moderncv is highly modular and offers several "themes" (casual, classic, banking). It provides specific commands like \cventry and \cvitem.
2. Awesome-CV
awesome-cv is a modern, trendy template often used by software engineers. It requires XeLaTeX or LuaLaTeX to compile because it uses specific OpenType fonts.
Warning: When using complex templates found online (like those on Typevia), ensure you check which compiler is required. If the template uses
fontspec, you must change your compiler settings from pdfLaTeX to XeLaTeX.
Best Practices and Common Pitfalls
Best Practices
- Keep it to one page: Unless you are an academic with a long list of publications, use
\enlargethispage{\baselineskip}if you just need one more line to fit on the page. - ATS Compatibility: Some Applicant Tracking Systems (ATS) struggle with multi-column layouts or complex graphics. If applying to large corporations, stick to a clean, single-column design.
- Check your PDF Metadata: Use the
hyperrefpackage to set the PDF title and author so it looks professional when opened in a browser.\hypersetup{ pdftitle={Jane Doe - Resume}, pdfauthor={Jane Doe}, colorlinks=true, urlcolor=blue }
Common Pitfalls
- Over-designing: Avoid too many colors or distracting bars. The content is the star.
- Margins too small: Never go below
0.5infor margins. If you do, the document will look cramped and may be cut off during printing. - Broken Links: Always test your email and LinkedIn links after downloading the PDF.
- Forgetting to Compile Twice: If you use packages like
lastpageorbiblatexfor an academic CV, you may need to compile twice to ensure page numbers and citations update correctly.
Summary
LaTeX is a powerful tool for career branding. By using the article class with geometry and titlesec, you can create a bespoke resume that is clean, professional, and easy to maintain. As you grow more comfortable, you can explore dedicated classes like moderncv or build your own suite of custom commands to automate your document's formatting.
