Make a Resume in LaTeX!
Apr fifteenth, 2022
Conditions
This tutorial assumes you both have (1) a textual content editor the place you’ll be able to edit LaTeX and the corresponding TeX distribution to your OS to compile it right into a PDF or (2) entry to a website the place you’ll be able to edit and compile LaTeX. Moreover, you need to have some fundamental data of LaTeX syntax. If that is your first time with LaTeX, I extremely advocate making an attempt these tutorials to get acquainted with the way it works: link
This tutorial is not going to cowl the way to write an efficient resume. Attempt to have your resume content material ready, so you’ll be able to observe together with the tutorial. start line is that this information for writing an excellent resume by a Technical Recruiter at Tesla: link
Introduction
Creating and updating a resume could be troublesome. There are lots of phrase processing software program choices to select from, like Microsoft Phrase and Google Docs. It’s very onerous to discover a good template and make changes some mixture of the margins, font dimension, and line spacing to get all of the resume content material to suit the web page excellent. Retaining monitor of a number of variations of your resume is troublesome and redundant.
LaTeX is a wonderful answer to all of those issues! LaTeX is used as knowledgeable typesetting system that’s free to make use of and runs on any system and even on-line with Overleaf and works nice to typeset your resume.
Tutorial Objectives
This tutorial will train you the way to make this resume [overleaf link here]. You’ll find out about creating sections and subsections, overwriting instructions, and making customized environments in LaTeX. You’ll be able to clone the challenge on Overleaf or observe the directions on this information from a clean file.
Vocabulary
Some key phrases I will likely be utilizing on this information are:
- Macro = a shortcut that that runs some predefined strains of code.
- Atmosphere = carry out an motion or set of actions on a block of content material (delimited by start and finish statements).
- Instructions/Management Sequences = macros outlined by your kernel.
- Package deal = a set of macros/instructions outlined by an writer that you would be able to import into your challenge to make use of (analogous to libraries for programming languages)
Why LaTeX?
- Separates content material from formatting/styling
Many customers discover it irritating to edit resume contents in Microsoft Phrase or Google Docs as a result of they’ve to fret in regards to the formatting at any time when they attempt to add or take away entries from any sections on the resume. As an alternative of worrying about styling every entry on the resume individually, you’ll be able to automate the styling half for the entries in a single part and focus in your content material. In LaTeX, the content material is separated from the styling/formatting. This separation means that you can write with out worrying in regards to the web page’s aesthetics.
Since LaTeX is a programming language, you’ll be able to simply customise your resume for various positions by commenting and uncommenting. This method is an enormous benefit in case you’re making an attempt to use for 2 or extra forms of jobs (like Software program Engineering and Product Administration). You need your resume to spotlight totally different experiences for every. Alternatively, if you’re typesetting your CV and resume in the identical challenge, you’ll be able to write one factor in your content material file after which configure two LaTeX templates to make your CV and Resume.
Since LaTeX is plaintext, you should utilize any model management system (like Git) to maintain monitor of the totally different variations you could have created and shortly revert to an older model. Moreover, it’s simple to share your resume with others utilizing Overleaf or GitHub.
You’ll be able to obtain packages to do practically any sort of advanced formatting in LaTeX. Should you want glyphs or particular characters for any purpose, LaTeX is ideal for this. Moreover, there are lots of preexisting doc templates that you would be able to fork, modify, and adapt to to your wants.
LaTeX is Free and Open Supply Software program (FOSS), which suggests the supply code is publicly obtainable. Moreover, this software program has existed because the 80s, so it’s unlikely {that a} doc you make now utilizing LaTeX will likely be incompatible with the language sooner or later. It’s additionally simply transformed to just about any format like PDF, HTML, Markdown, or another format (see Pandoc: https://pandoc.org/)
There are some drawbacks to creating your resume in LaTeX, like the training curve, however you’ll be able to shortly treatment this situation by studying utilizing this tutorial.
Whereas making your personal resume, you may additionally hear issues about TeX, KaTeX, or MathJaX, so right here’s this diagram to assist simplify your understanding. They each use LaTeX syntax however are restricted in scope
LaTeX is a set of useful TeX macros that run some TeX instructions to format your doc. TeX means that you can write customized instructions, features, and macros to assist velocity up your publishing course of. As well as, LaTeX will allow you so as to add further packages for particular typesetting functions like customized fonts, tables, math symbols, and good hyperlink formatting.
You can even obtain some enjoyable packages: one for making sheet music, sudoku creators/solvers, coffee-stain makers, and a lot extra.
Setup
I extremely advocate following together with this tutorial in Overleaf [https://www.overleaf.com/project] because it means that you can share LaTeX information with different individuals, and so they could make feedback in your doc to supply suggestions. Overleaf works on Chrome/Chromium Browsers/Firefox and cell units (like tablets) with most performance.
I wrote this tutorial utilizing Overleaf. Nonetheless, you might be welcome to observe alongside utilizing any textual content editor and tex distribution of your alternative if you’re extra snug and acquainted with that. See https://www.latex-project.org/get/ for obtain hyperlinks to your working system.
Should you select to make use of Overleaf, listed here are the steps you could observe.
-
Navigate to the ‘Initiatives’ web page
-
Click on on the ‘Clean Venture’ choice beneath ‘New Venture’
-
Hit
Recompile
to render the challenge within the pane to the fitting. Performed! Your challenge ought to look one thing like this.
Step 1: Add your Content material
First, let’s begin by making a fundamental doc in LaTeX. In case you are utilizing Overleaf and adopted the setup directions from above, you need to get this:
documentclass{article}
usepackage[utf8]{inputenc}
usepackage{titlesec}
title{resume instruction handbook code}
writer{Sofie T. Ware}
date{January 2022}
finish{doc}
The code beneath is simply what Overleaf offers you while you create a brand new doc, so don’t fear in case you don’t perceive what it means simply but.
In case you are not utilizing Overleaf, listed here are the steps you could observe: Use the article
class to your doc. Use the package deal titlesec
to generate a title to your article. Fill within the applicable values for the title
writer
and date
macros. Make certain so as to add the finish{doc}
tag to shut the doc
atmosphere.
You don’t want to fret about what you could have within the title subject since you may be overwriting the category definition in later steps.
Hit the Recompile
button to render your adjustments. It’s essential to do that to replace the preview any time you could have made adjustments to the doc.
Right here’s what that appears like
The following belongings you would wish to embody in your resume could be schooling or the cool initiatives you could have constructed! Let’s add that after our date subject. Use the part{}
command to make a brand new part and subsection{}
and subsubsection{}
for creating sub headings beneath that. Fill these sections in with the data you need beneath every part. Right here’s an instance of what you need to find yourself with for one part from my demo resume:
part{Abilities}
subsection{Technical Abilities}
Java, Python, Rust, Haskell
subsection{Instruments}
LaTeX
subsubsection{Comfortable Abilities}
Making squishy brownies
When you’re happy with all the pieces right here, you’ll be able to transfer on to the following step, which is styling. Right here’s what the code appears to be like like when you’re carried out with the primary half.
% the stuff above that is the 'usepackage{}' instructions
start{doc}
maketitle
part{Training}
subsection{UIUC}
textbf{Coursework:} Laptop Science I, Laptop Science II, Laptop Science III, Ethics for Laptop Science
textbf{Awards:} Skilled paper towel Juggler of the yr 2020
part{Expertise}
subsection{A Firm}
textbf{November 2018 - Current}
textit{Enterprise Analyst}
merchandise I used to be chargeable for writing person tales for ROA Template, testing person tales, gathering and analysing knowledge.
merchandise I additionally created a wireframe for a function that will likely be added on BT Panorama and designed a touchdown web page for each traders and advisers.
merchandise Apart from my obligations as a Enterprise Analyst, I additionally led a staff of interns in making a technique to grasp and resolve the issue underlying the BT Panorama.
subsection{B Firm}
textbf{November 2008 - 2018}
textit{Enterprise Analyst}
merchandise I used to be chargeable for writing person tales for ROA Template, testing person tales, gathering and analysing knowledge.
merchandise I additionally created a wireframe for a function that will likely be added on BT Panorama and designed a touchdown web page for each traders and advisers.
merchandise Apart from my obligations as a Enterprise Analyst, I additionally led a staff of interns in making a technique to grasp and resolve the issue underlying the BT Panorama.
part{Management}
subsection{ACM @ UIUC}
textbf{November 2018 - Current}
textit{President}
I mainly was the supreme ruler of the most important pupil run chapter of ACM at UIUC.
subsection{UIUC Ducky}
textbf{November 2020- Current}
textit{President}
Spearheaded a inititative to present debugging geese to everybody at UIUC.
part{Publications}
subsection{Deconstructing odor based mostly socia media}
textbf{Oct 2019}
textit{ACM CSCW}
This paper takes a scientific strategy for characterizing phermonic based mostly social media platforms and introduces a framework to categorise affordances in platform design.
part{Abilities}
subsubsection
{Technical Abilities}
Java, Python, Rust, Haskell
vspace{-1.5em}
subsubsection
{Comfortable Abilities}
Making squishy brownies
finish{doc}
Your code ought to render like this:
Step 2: Defining Sections and Styling
We’re going to begin by modifying how sections seem. Add the next line beneath your doc class declaration:
You wish to override the conduct of the part
tag. Use the titleformat{}
command and cross the part
command as a parameter. The titleformat{}
command takes 4 parameters, of which the third one is necessary.
Make the textual content daring and bigger utilizing the enormous
dimension and the bfseries
macro. Then, set the spacing to be 0em
within the third parameter. Lastly, add a line beneath the heading by appending the [titlerule]
selector after the brackets for the final parameter.
The ultimate code snippets appear to be this:
% The road above that is:
usepackage{titlesec}
titleformat{part}
{hugebfseries} % purple = main styling
{} % blue = main textual content
{0em} % pink = area earlier than the part heading
{} %inexperienced = any features to use
[titlerule] %yellow = formatting beneath the part heading
A diagram explaining what every of the parameters within the titleformat{} do.
Now apply the identical styling to the subsection
and subsubsection
titles. It might make logical sense to make every sub heading a dimension smaller. Change the scale of the subsection
to be massive utilizing the Massive
macro and daring it utilizing bfseries
. Daring the subsubsection
with bfseries
. Right here’s what the ultimate code snippets appear to be.
titleformat{subsection}{bfseriesLarge}{}{0em}{}
titleformat{subsubsection}[runin]{bfseries}{}{0em}{}
Optionally, add the [runin]
modifier to the subsubsection
class. I made a decision to make use of this since I needed the physique of the subsubsection
to be inline with the heading. Within the demo resume, you should utilize that this styling was used within the expertise subsection.
2.1 Web page Structure Setup
Now let’s set the web page structure. Since I reside within the US, I made a decision to set the web page dimension to be letter and the margins to be 1” since that’s normal right here. You’ll be able to change the margins or web page dimension (like A4) based mostly on what the requirements are in your nation. To do that you must use a package deal known as geometry
, so import it with the usepackage{}
command. Then, set the choices for web page dimension and margins. Right here’s what the ultimate code snippet appears to be like like:
usepackage{geometry} % add this the place your different package deal declarations are
% this could go proper beneath the package deal declarations
geometry{
letterpaper,
left=1in,
high=1in,
}
Now it’s a lot nicer! Our content material has some room to breathe.
2.2 Title Setup
Subsequent, you must arrange the title correctly because it’s at the moment simply the doc title and the date. You need to use the titling
package deal to make use of theauthor
in locations apart from the start of the doc.
Import the titling
package deal and use the renewcommand
command to override the default conduct of maketitle
. Middle align the title utilizing the middle
atmosphere. Within the first line, add your identify utilizing the theauthor
macro. Make your identify greater and daring utilizing the enormous
and bfseries
instructions. Optionally, add some white area following your identify.
Right here’s what the ultimate code snippet appears to be like like:
usepackage{titling} % add this the place your different package deal declarations are
% This replaces the next ---------
% title{resume instruction handbook code}
% writer{Sofie T. Ware}
% date{January 2022}
%--------------------------------------
renewcommand{maketitle} {
start{middle} % atmosphere to middle the enclosed gadgets
{hugebfseriestheauthor} % add massive, bolded writer identify
vspace{.25em} % add some vertical area/padding beneath the identify
finish{middle}
}
One other factor that may very well be good to incorporate could be your electronic mail and GitHub hyperlink beneath your identify. Import the hyperref
package deal into your doc (be sure that that is the final import). Add hyperlinks beneath your identify utilizing the href{}{}
command.
renewcommand{maketitle} {
start{middle}
{hugebfseriestheauthor}
[email protected] |
href{github.com/sofie}{https://github.com} |
href{www.linkedin.com}{linkedin.com/in/sofie}
vspace{.25em}
finish{middle}
}
The hyperlinks at the moment look fairly boring; I can’t even inform that you would be able to click on on them proper now! Let’s repair that by altering among the styling. Use the hypersetyp{}
command to vary the linkcolor
to be blue
, urlcolor
to be cyan
, set colorlinks
to be true
and make the pdfpagemode to be fullscreen
.
Right here’s what the ultimate code snippet ought to appear to be:
usepackage{hyperref}
% this could go proper beneath the package deal declarations
hypersetup{
colorlinks=true,
linkcolor=blue,
urlcolor=cyan,
pdfpagemode=FullScreen,
}
To summarize, right here’s what you simply added:
usepackage{titlesec} % Makes a piece for the title
usepackage{titling} % Permits you to format the title
usepackage{geometry} % Permits us to change web page setup
usepackage{hyperref} % Required for hyperlinks
%-------------------------------------------------------------------------------
% PAGE FORMATTING
%-------------------------------------------------------------------------------
geometry{ % Web page structure setup
letterpaper,
left=.5in,
high=.5in,
backside=.5in,
proper=.5in
}
hypersetup{ % Hyperlink structure setup
colorlinks=true,
linkcolor=blue,
urlcolor=cyan,
pdfpagemode=FullScreen,
}
titleformat{part}{hugebfseries}{}{0em}{}[titlerule] % Sections have largest textual content and underline
titleformat{subsection}{bfseriesLarge}{}{0em}{} % Subsections are bolded and enormous
titleformat{subsubsection}[runin]{bfseries}{}{0em}{} % Subsubsections are appended to the tip of subsections
%-------------------------------------------------------------------------------
% TITLE FORMATTING
%-------------------------------------------------------------------------------
writer{Sofie T. Ware} % Change this to your identify
renewcommand{maketitle}{
start{middle}
{hugebfseriestheauthor} % Renders your identify
[email protected] | % E mail
href{https://github.com}{github.com/sofie} % Github URL
| href{www.linkedin.com}{linkedin.com/in/sofie} % Linkedin URL
finish{middle}
vspace{-1.5em} % Add some whitespace
}
And right here’s our progress to date:
This on it’s personal isn’t a nasty resume… however you can also make it higher!
Step 3: Modularization with Environments
Now that is the place it begins getting fancy! Environments in LaTeX can help you outline a sure set of macros on the weather inside all of sudden. Consider it like a div in HTML. Should you set the shade=inexperienced;
in a div, it applies to the entire HTML components inside. You’ll be able to initialize a textual content block in an atmosphere utilizing the start{}
command.
3.1 Introduction to Environments
start{middle}
is an instance of a atmosphere that we talked about earlier. You’ll now outline your personal atmosphere that means that you can generate properly formatted resume entries. To display how Environments work, right here’s a fast instance that you would be able to observe together with (however will not be on the resume itself).
- To outline our new atmosphere, use the
newenvironment{}
command.
This instance creates a centered textual content field. So I created two extra environments inside this boxed atmosphere that middle the textual content:start{middle}
and put the textual content in a field:start{tabular}
.
newenvironment{boxed}
{start{middle}
start{tabular}{|p{0.9textwidth}|}
hline % creates a horizontal line spanning all the doc
}
{
\hline
finish{tabular}
finish{middle}
}
Then you’ll be able to name our surroundings within the doc to see the way it renders! Use the start{boxed}
command to start the boxed syntax.
start{boxed}
That is the textual content formatted by the boxed atmosphere
finish{boxed}
Right here’s a visible overview of what you simply did:
You first created the centered atmosphere [red box], then the tabular atmosphere [yellow box], and eventually, our textual content is within the middle [blue box].
-
You can even outline an atmosphere with parameters and designate one to be non-compulsory. Within the context of this tutorial, this may very well be helpful while you wish to make the situation of considered one of your resume entries non-compulsory to incorporate. So the ultimate syntax would appear to be this:
newenvironment{<identify>}{<start code>}{<finish code>}
This defines an atmosphere with no parameters.
newenvironment{<identify>}[<number>][<default>]
This defines an atmosphere with
<quantity>
of parameters of which<default>
is the worth to set for all uninitialized parameters.If you wish to make extra parameters non-compulsory, you must use a further package deal like enumitem. Additionally, see this stack overflow article for additional studying.
newenvironment{boxed}[1] {start{middle} #1[1ex] start{tabular}{|p{0.9textwidth}|} hline } { \hline finish{tabular} finish{middle} }
Then, while you go to make use of the
boxed
atmosphere, the parameter for the title will present up within the middle above the field.start{boxed}{Title of the Field} That is the textual content formatted by the boxed atmosphere finish{boxed}
3.2 Creating the Resume Subsection Atmosphere
Now that you understand how to create an atmosphere, let’s outline a customized atmosphere for a resume entry.
First, let’s make an inventory of the attributes in a resume entry. For instance, you could have the title, place identify, dates, and placement. So you recognize that you must create an atmosphere with 4 parameters. For this instance, let’s make the situation parameter non-compulsory.
Lastly, you must resolve on a reputation for this atmosphere. I went with rSubsection
for resume subsection, however you may name it something so long as the identify will not be already used for the standard atmosphere or command. Initialize it utilizing the newenvironment
command as detailed above.
newenvironment{rSubsection}[4]{}
The primary two issues you must show is the identify and length of the place like this:
Google Could-August 2020
To show every handed parameter, use the #1
image the place the 1 is the variety of the parameter (1 = first parameter, 2 = second parameter, 3 = third parameter so on). Add some versatile horizontal area between the identify and the dates utilizing the hfill
macro.
I’m additionally selecting to daring the corporate identify utilizing bf
to assist differentiate it from the place that can go beneath. Add a newline with , after which you’ll be able to transfer on to the second line, which appears to be like like this:
Software program Engineering Intern **** Mountain view, CA
Because the location parameter is non-compulsory, you must deal with the case that it’s not handed utilizing the ifthenelse
command. If the compiler will not be supplied with variable #4
, print variable #3
. In any other case, print each #3
and #4
. Optionally, use em
to italicize the place identify and placement.
ifthenelse{equal{#3}{}}{}{
{em #3} hfill {em #4}
}
If you would like the entries in your resume to be in bullet factors, you must create an inventory atmosphere. For the bullet factors, I used the $cdot$
command. I added some non-compulsory styling to the left margin, separation between checklist gadgets, and a few vertical area so that every resume entry has some respiration room. You’re welcome to take this code and adapt it to your function and area wants:
start{checklist}{$cdot$}{leftmargin=0em}
itemsep -0.5em vspace{-0.5em}
}{
finish{checklist}
Right here’s the ultimate code snippet (I added some feedback for readability):
%-----------------------------------------------------------------------------
% SECTION FORMATTING
%-----------------------------------------------------------------------------
newenvironment{rSubsection}[4]{ % 4 enter arguments - firm identify, yr(s) employed, job title and placement
{bf #1} hfill {#2} % Daring firm identify and date on the fitting
ifthenelse{equal{#3}{}}{}{ % If the third argument will not be specified, do not print the job title and placement line
{em #3} hfill {em #4} % Italic job title and placement
}
start{checklist}{$cdot$}{leftmargin=0em} % cdot used for bullets, no indentation
itemsep -0.5em vspace{-0.5em} % Compress gadgets in checklist collectively for aesthetics
}{
finish{checklist}
vspace{0.5em} % Some area after the checklist of bullet factors
}
start{doc}
Now, add the next packages to the highest of your file to permit what you simply wrote to work:
usepackage{ifthen}
— Required forifthenelse
statementsusepackage[parfill]{parskip}
— Removes indent on new paragraphspagestyle{empty}
— Suppresses web page numbers
Now that you’ve lastly completed defining your atmosphere, you can begin utilizing it! Right here is an instance job expertise that demonstrates how simple it’s to enter your info. LaTeX takes care of all of the heavy formatting give you the results you want.
start{rSubsection}{Westpac - BT Financials}{November 2018 - Current}{Enterprise Analyst}{Barangaroo, Sydney}
merchandise I used to be chargeable for writing person tales for ROA Template, testing person tales, gathering and analysing knowledge.
merchandise I additionally created a wireframe for a function that will likely be added on BT Panorama and designed a touchdown web page for each traders and advisers.
merchandise Apart from my obligations as a Enterprise Analyst, I additionally led a staff of interns in making a technique to grasp and resolve the issue underlying the BT Panorama.
finish{rSubsection}
End result:
Step 4: Macros
Now, let’s make some macros to simplify elements of our resume that you’re typing lots. For instance, Sofie goes to UIUC, and he or she doesn’t wish to should sort out College of Illinois at Urbana-Champaign
or Champaign, IL
each time. Additionally, Sofie collaborates fairly often with Harsh on faculty initiatives. So, let’s add a macro to hyperlink to his GitHub each time she mentions him. You can also make this simpler by creating some macros.
Initialize a brand new macro utilizing newcommand{}{}
and set the primary argument to be the identify of your macro. Set the second argument to be the expanded textual content that you really want the macro to generate. Your remaining macros ought to appear to be this:
% part formatting from earlier step goes right here
newcommand{uiuc}{College of Illinois at Urbana-Champaign}
newcommand{loc}{Champaign, IL}
newcommand{harsh}{github.com/harsh183}
start{doc}
Now to make use of this in our code, you’ll be able to sort out the macro uiuc
wherever you need the compiler to spit out College of Illinois at Urbana-Champaign
part{Training}
start{rSubsection}
{uiuc}{August 2020 - Could 2024}{BS Laptop Science}{loc}
textbf{Coursework:} Laptop Science I, Laptop Science II, Laptop Science III, Ethics for Laptop Science
textbf{Awards:} Skilled paper towel Juggler of the yr (2020)
finish{rSubsection}
Right here’s an instance of the Macros getting used within the Training subsection.
It appears to be like just about the identical within the preview, nevertheless it’s simply a lot faster so that you can sort now!
Completed product
Congratulations, you simply made a tremendous resume utilizing LaTeX! This tutorial has launched you to among the fundamentals of LaTeX for document-making and helped you construct your resume. Better of luck in your job search!
References / Extra Studying
Listed here are some websites that I used as inspiration/background info whereas making this information. Be happy to make use of it as you develop your resume additional.