• PRO Courses Guides New Tech Help Pro Expert Videos About wikiHow Pro Upgrade Sign In
  • EXPLORE Tech Help Pro About Us Random Article Quizzes Request a New Article Community Dashboard This Or That Game Popular Categories Arts and Entertainment Artwork Books Movies Computers and Electronics Computers Phone Skills Technology Hacks Health Men's Health Mental Health Women's Health Relationships Dating Love Relationship Issues Hobbies and Crafts Crafts Drawing Games Education & Communication Communication Skills Personal Development Studying Personal Care and Style Fashion Hair Care Personal Hygiene Youth Personal Care School Stuff Dating All Categories Arts and Entertainment Finance and Business Home and Garden Relationship Quizzes Cars & Other Vehicles Food and Entertaining Personal Care and Style Sports and Fitness Computers and Electronics Health Pets and Animals Travel Education & Communication Hobbies and Crafts Philosophy and Religion Work World Family Life Holidays and Traditions Relationships Youth
  • Browse Articles
  • Learn Something New
  • Quizzes Hot
  • This Or That Game New
  • Train Your Brain
  • Explore More
  • Support wikiHow
  • About wikiHow
  • Log in / Sign up
  • Job Application Documents
  • Resume Preparation

How to Write a Resume in LaTeX

Last Updated: March 29, 2019

wikiHow is a “wiki,” similar to Wikipedia, which means that many of our articles are co-written by multiple authors. To create this article, 16 people, some anonymous, worked to edit and improve it over time. This article has been viewed 156,571 times. Learn more...

While Microsoft Word can be great, when it comes to writing technical documents like engineering reports, Word is irritating to say the least. LaTeX is a technical document creation program that allows engineers to write technical document without all that worry about formatting. This tutorial will let you create a simple resume in LaTeX in order to give a general introduction to creating LaTeX documents. Here is what you will create.

Sample Resume and LaTeX Code

how to build resume in latex

Writing a Resume in LaTeX

Step 1 The first step is to download a free copy of a LaTeX editor.

Set Up the Document

  • 1 In LaTeX, you have to set up each of the margins manually, which can seem tedious at first. However if you have too much information or too little, these settings can be easily adjusted to make your document look its best. This can be done with the following code:

Write a Resume in LaTeX Step 4

Begin the Document

  • 1 The next step is to actually begin your document. In LaTeX this is done by simply inserting the following code:

Write a Resume in LaTeX Step 5

Make the Header

  • 1 In LaTeX you write your document in the same manner that would would in Word, except you have to use commands like:

Write a Resume in LaTeX Step 6

Making the Body

  • 1 The next part of your resume should be some simple objective and summary type sections. This can easily be accomplished by making headers and following them with text. Here is an example:

Write a Resume in LaTeX Step 9

Extra Helpful Commands

  • 1 While this may look a little bit silly on the sample resume we created, it serves the purpose of demonstrating how you can make columns in LaTeX. In order to do a list of known programming languages I used the following command:

Write a Resume in LaTeX Step 11

  • 1 Here is a sample of \hfill using the following code:

Write a Resume in LaTeX Step 12

  • 2 Here is a look at the code and the product after you add in these lines:

Write a Resume in LaTeX Step 14

Finishing Up

  • 1 Now all you need to do to finish the resume is add in more sections (using the same steps show above), tweak your dimensions, and it never hurts to have a professional look at it to make sure you did a good job. I hope this is helpful to whoever decides to use it, and I hope it will inspire more people to start learning LaTeX as it can be a great skill to have.

Expert Q&A

  • The first line (\documentclass) is necessary to tell LaTeX what you want type of default style you want. Thanks Helpful 1 Not Helpful 0
  • There are better ways to do columns (in terms of formatting), however, they are not discussed in this article Thanks Helpful 1 Not Helpful 0
  • In LaTeX everything with a "\" is a command and everything that comes after a "%" is a comment and thus won't show up in your document. Thanks Helpful 1 Not Helpful 0

how to build resume in latex

You Might Also Like

Include References on a Resume

  • http://en.wikibooks.org/wiki/LaTeX/Page_Layout (This gives a good description of the dimensions we set up and what they each affect individully)

About This Article

  • Send fan mail to authors

Is this article up to date?

Am I a Narcissist or an Empath Quiz

Featured Articles

How to Read Palms

Trending Articles

What Is My Personal Color Quiz

Watch Articles

Oven Dry Bread

  • Terms of Use
  • Privacy Policy
  • Do Not Sell or Share My Info
  • Not Selling Info

Keep up with the latest tech with wikiHow's free Tech Help Newsletter

Make a Resume in LaTeX!

Drshika asher's personal website.

Apr 15th, 2022


This tutorial assumes you either have (1) a text editor where you can edit LaTeX and the corresponding TeX distribution for your OS to compile it into a PDF or (2) access to a site where you can edit and compile LaTeX. Additionally, you should have some basic knowledge of LaTeX syntax. If this is your first time with LaTeX, I highly recommend trying these tutorials to get familiar with how it works: link

This tutorial will not cover how to write an effective resume. Try to have your resume content prepared, so you can follow along with the tutorial. A good starting point is this guide for writing a good resume by a Technical Recruiter at Tesla: link


Creating and updating a resume can be difficult. There are many word processing software options to choose from, like Microsoft Word and Google Docs. It’s very hard to find a good template and make adjustments some combination of the margins, font size, and line spacing to get all the resume content to fit the page just right. Keeping track of multiple versions of your resume is difficult and redundant.

LaTeX is an excellent solution to all of these problems! LaTeX is used as a professional typesetting system that is free to use and runs on any system or even online with Overleaf and works great to typeset your resume.

Tutorial Goals

This tutorial will teach you how to make this resume [ overleaf link here ]. You will learn about creating sections and subsections, overwriting commands, and making custom environments in LaTeX. You can clone the project on Overleaf or follow the instructions in this guide from a blank file.

demo resume

Some keywords I will be using in this guide are:

  • Macro = a shortcut that that runs some predefined lines of code.
  • Environment = perform an action or set of actions on a block of content (delimited by begin and end statements).
  • Commands/Control Sequences = macros defined by your kernel.
  • Package = a set of macros/commands defined by an author that you can import into your project to use (analogous to libraries for programming languages)
  • Separates content from formatting/styling

Many users find it frustrating to edit resume contents in Microsoft Word or Google Docs because they have to worry about the formatting whenever they try to add or remove entries from any sections on the resume. Instead of worrying about styling each entry on the resume individually, you can automate the styling part for the entries in one section and focus on your content. In LaTeX, the content is separated from the styling/formatting. This separation allows you to write without worrying about the page’s aesthetics.

Since LaTeX is a programming language, you can easily customize your resume for different positions by commenting and uncommenting. This technique is a massive advantage if you’re trying to apply for two or more types of jobs (like Software Engineering and Product Management). You want your resume to highlight different experiences for each. Alternatively, if you are typesetting your CV and resume in the same project, you can write one thing in your content file and then configure two LaTeX templates to make your CV and Resume.

  • Version Control

Since LaTeX is plaintext, you can use any version control system (like Git) to keep track of the different versions you have created and quickly revert to an older version. Additionally, it’s easy to share your resume with others using Overleaf or GitHub.

You can download packages to do nearly any type of complex formatting in LaTeX. If you need glyphs or special characters for any reason, LaTeX is perfect for this. Additionally, there are many preexisting document templates that you can fork, modify, and adapt to for your needs.

LaTeX is Free and Open Source Software (FOSS), which means the source code is publicly available. Additionally, this software has existed since the 80s, so it’s unlikely that a document you make now using LaTeX will be incompatible with the language in the future. It’s also easily converted to nearly any format like PDF, HTML, Markdown, or any other format (see Pandoc: https://pandoc.org/ )

There are some drawbacks to making your resume in LaTeX, like the learning curve, but you can quickly remedy this issue by learning using this tutorial.

While making your own resume, you might also hear things about TeX, KaTeX, or MathJaX, so here’s this diagram to help simplify your understanding. They both use LaTeX syntax but are limited in scope

LaTeX is a collection of helpful TeX macros that run some TeX commands to format your document. TeX allows you to write custom commands, functions, and macros to help speed up your publishing process. In addition, LaTeX will enable you to add extra packages for specific typesetting purposes like custom fonts, tables, math symbols, and nice link formatting.

You can also download some fun packages: one for making sheet music, sudoku creators/solvers, coffee-stain makers, and so much more.

flow diagram

I highly recommend following along with this tutorial in Overleaf [ https://www.overleaf.com/project ] since it allows you to share LaTeX files with other people, and they can make comments on your document to offer feedback. Overleaf works on Chrome/Chromium Browsers/Firefox and mobile devices (like tablets) with most functionality.

I wrote this tutorial using Overleaf. However, you are welcome to follow along using any text editor and tex distribution of your choice if you are more comfortable and familiar with that. See https://www.latex-project.org/get/ for download links for your operating system.

If you choose to use Overleaf, here are the steps you must follow.

Navigate to the ‘Projects’ page

Projects page

Click on the ‘Blank Project’ option under ‘New Project’

Blank Project Button

Hit Recompile to render the project in the pane to the right. Done! Your project should look something like this.

Recompile Button

Step 1: Add your Content

First, let’s start by creating a basic document in LaTeX. If you are using Overleaf and followed the setup instructions from above, you should get this:

The code below is just what Overleaf gives you when you create a new document, so don’t worry if you don’t understand what it means just yet.

If you are not using Overleaf, here are the steps you must follow: Use the article class for your document. Use the package titlesec to generate a title for your article. Fill in the appropriate values for the \title \author and \date macros. Make sure to add the \end{document} tag to close the document environment.

You don’t need to worry about what you have in the title field since you will be overwriting the class definition in later steps.

Hit the Recompile button to render your changes. You must do this to update the preview any time you have made changes to the document.

Here’s what that looks like

Here’s what that looks like

The next things you would want to include on your resume might be education or the cool projects you have built! Let’s add that after our date field. Use the \section{} command to make a new section and \subsection{} and \subsubsection{} for creating sub headings underneath that. Fill these sections in with the information you want under each section. Here’s an example of what you should end up with for one section from my demo resume:

Once you’re satisfied with everything here, you can move on to the next step, which is styling. Here’s what the code looks like once you’re done with the first part.

Your code should render like this:


Step 2: Defining Sections and Styling

We’re going to start by modifying how sections appear. Add the following line below your document class declaration:

You want to override the behavior of the \section tag. Use the \titleformat{} command and pass the \section command as a parameter. The \titleformat{} command takes four parameters, of which the third one is mandatory.

Make the text bold and larger using the \huge size and the \bfseries macro. Then, set the spacing to be 0em in the third parameter. Finally, add a line beneath the heading by appending the [\titlerule] selector after the brackets for the last parameter.

The final code snippets look like this:

A diagram explaining what each of the parameters in the \titleformat{} do.

Now apply the same styling to the subsection and subsubsection titles. It would make logical sense to make each sub heading a size smaller. Change the size of the subsection to be large using the \Large macro and bold it using \bfseries . Bold the subsubsection with \bfseries . Here’s what the final code snippets look like.

Optionally, add the [runin] modifier to the subsubsection category. I decided to use this since I wanted the body of the subsubsection to be inline with the heading. In the demo resume, you can use that this styling was used in the skills subsection.

2.1 Page Layout Setup

Now let’s set the page layout. Since I live in the US, I decided to set the page size to be letter and the margins to be 1” since that’s standard here. You can change the margins or page size (like A4) based on what the standards are in your country. To do this you have to use a package called geometry , so import it with the \usepackage{} command. Then, set the options for page size and margins. Here’s what the final code snippet looks like:

Now it’s so much nicer! Our content has some room to breathe.

2.2 Title Setup

Next, you need to set up the title properly since it’s currently just the document title and the date. You have to use the titling package to use \theauthor in places other than the beginning of the document.

Import the titling package and use the \renewcommand command to override the default behavior of \maketitle . Center align the title using the center environment. In the first line, add your name using the \theauthor macro. Make your name bigger and bold using the \huge and \bfseries commands. Optionally, add some white space following your name.

Here’s what the final code snippet looks like:

Another thing that could be nice to include would be your email and GitHub link below your name. Import the hyperref package into your document (make sure that this is the last import). Add hyperlinks below your name using the \href{}{} command.

The hyperlinks currently look pretty boring; I can’t even tell that you can click on them right now! Let’s fix that by changing some of the styling. Use the \hypersetyp{} command to change the linkcolor to be blue , urlcolor to be cyan , set colorlinks to be true and make the pdfpagemode to be fullscreen .

Here’s what the final code snippet should look like:

To summarize, here’s what you just added:

And here’s our progress so far:

This on it’s own isn’t a bad resume... but you can make it better!

This on it’s own isn’t a bad resume… but you can make it better!

Step 3: Modularization with Environments

Now this is where it starts getting fancy! Environments in LaTeX allow you to define a certain set of macros on the elements inside all at once. Think of it like a div in HTML. If you set the color=green; in a div, it applies to all of the HTML elements inside. You can initialize a text block in an environment using the \begin{} command.

3.1 Introduction to Environments

\begin{center} is an example of a environment that we talked about earlier. You will now define your own environment that allows you to generate nicely formatted resume entries. To demonstrate how Environments work, here’s a quick example that you can follow along with (but is not on the resume itself).

  • To define our new environment, use the \newenvironment{} command. This example creates a centered text box. So I created two more environments inside this boxed environment that center the text: \begin{center} and put the text in a box: \begin{tabular} .

Then you can call our environment in the document to see how it renders! Use the \begin{boxed} command to begin the boxed syntax.

Here’s a visual overview of what you just did:


You first created the centered environment [red box], then the tabular environment [yellow box], and finally, our text is in the center [blue box].

You can also define an environment with parameters and designate one to be optional. In the context of this tutorial, this could be useful when you want to make the location of one of your resume entries optional to include. So the final syntax would look like this:

\newenvironment{<name>}{<begin code>}{<end code>}

This defines an environment with no parameters.


This defines an environment with <number> of parameters of which <default> is the value to set for all uninitialized parameters.

If you want to make more parameters optional, you have to use an additional package like enumitem . Also, see this stack overflow article for further reading.

Then, when you go to use the boxed environment, the parameter for the title will show up in the center above the box.

3.2 Creating the Resume Subsection Environment

Now that you know how to create an environment, let’s define a custom environment for a resume entry.

First, let’s make a list of the attributes in a resume entry. For example, you have the title, position name, dates, and location. So you know that you have to create an environment with four parameters. For this example, let’s make the location parameter optional.

Finally, you need to decide on a name for this environment. I went with rSubsection for resume subsection, but you could call it anything as long as the name is not already used for a standard environment or command. Initialize it using the \newenvironment command as detailed above.

The first two things you need to display is the name and duration of the position like this:

Google May-August 2020

To display each passed parameter, use the #1 symbol where the 1 is the number of the parameter (1 = first parameter, 2 = second parameter, 3 = third parameter so on). Add some flexible horizontal space between the name and the dates using the \hfill macro.

I’m also choosing to bold the company name using \bf to help differentiate it from the position that will go below. Add a newline with \\ , and then you can move on to the second line, which looks like this:

Software Engineering Intern ** ** Mountain view, CA

Since the location parameter is optional, you need to handle the case that it is not passed using the \ifthenelse command. If the compiler is not provided with variable #4 , print variable #3 . Otherwise, print both #3 and #4 . Optionally, use \em to italicize the position name and location.

If you want the entries on your resume to be in bullet points, you have to create a list environment. For the bullet points, I used the $\cdot$ command. I added some optional styling to the left margin, separation between list items, and some vertical space so that each resume entry has some breathing room. You are welcome to take this code and adapt it to your purpose and space needs:

Here’s the final code snippet (I added some comments for readability):

Now, add the following packages to the top of your file to allow what you just wrote to work:

  • \usepackage{ifthen} — Required for \ifthenelse statements
  • \usepackage[parfill]{parskip} — Removes indent on new paragraphs
  • \pagestyle{empty} — Suppresses page numbers

Now that you have finally finished defining your environment, you can start using it! Here is an example job experience that demonstrates how easy it is to input your information. LaTeX takes care of all the heavy formatting work for you.

Screen Shot 2022-02-04 at 1.29.50 AM.png

Step 4: Macros

Now, let’s make some macros to simplify parts of our resume that you are typing a lot. For example, Sofie goes to UIUC, and she doesn’t want to have to type out University of Illinois at Urbana-Champaign or Champaign, IL every time. Also, Sofie collaborates very often with Harsh on school projects. So, let’s add a macro to link to his GitHub every time she mentions him. You can make this easier by creating some macros.

Initialize a new macro using \newcommand{}{} and set the first argument to be the name of your macro. Set the second argument to be the expanded text that you want the macro to generate. Your final macros should look like this:

Now to use this in our code, you can type out the macro \uiuc wherever you want the compiler to spit out University of Illinois at Urbana-Champaign

Here’s an example of the Macros being used in the Education subsection.

It looks pretty much the same in the preview, but it’s just so much quicker for you to type now!

It looks pretty much the same in the preview, but it’s just so much quicker for you to type now!

Finished product

Congratulations, you just made an amazing resume using LaTeX! This tutorial has introduced you to some of the fundamentals of LaTeX for document-making and helped you build your resume. Best of luck on your job search!

References / Additional Reading

Here are some sites that I used as inspiration/background information while making this guide. Feel free to use it as you develop your resume further.

  • https://web.archive.org/web/20180727051638/http://www.thelinuxdaily.com/2008/10/latex-resume-examples/
  • https://lukesmith.xyz/articles/wanna-learn-latex#tutorials — used this as a reference for the first part of the guide
  • https://web.archive.org/web/20151031150425/
  • http://www.toofishes.net/blog/latex-resume-follow-up/
  • https://web.archive.org/web/20151023065248/
  • http://www.toofishes.net/blog/why-i-do-my-resume-latex/
  • �https://tex.stackexchange.com/questions/11955/what-are-the-benefits-of-writing-resumes-in-tex-latex
  • Great symbol look-up site: Detexify: http://detexify.kirelabs.org/
  • The Comprehensive LATEX Symbol List: http://amath.colorado.edu/documentation/LaTeX/Symbols.pdf
  • The Not So Short Introduction to LATEX 2ε: ftp://tug.ctan.org/pub/tex-archive/info/symbols/comprehensive/symbols-letter.pdf
  • TUG: The TEX Users Group: http://mirrors.med.harvard.edu/ctan/info/lshort/english/lshort.pdf
  • CTAN: The Comprehensive TEX Archive Network: http://www.ctan.org/
  • LATEX for the Mac: MacTEX: http://www.tug.org/mactex/
  • LATEX for the PC: TEXnicCenter and http://www.texniccenter.org/
  • MiKTEXLATEX online: http://miktex.org/ & WriteLaTeX1

Templates — Résumé / CV

Templates tagged Résumé / CV

Show all Templates

Your curriculum vitae (CV) or resume is often the first impression you’ll make on a prospective employer, and it’s important to stand out amongst the crowd. These templates provide a range of styles – classical, professional, academic, plain, fancy – which can be adapted to fit your personal preference. Sections for employment history, education, skills, experience, publications and interests can be arranged to best show off your fit for the role you’re applying for, whether you’re a graduate fresh out of university or an experienced professional looking to change career.

Selected by Overleaf staff

These templates were hand-picked by Overleaf staff for their high quality and positive feedback received from the Overleaf community over the years.

AltaCV Template

Related Tags

Have you checked our knowledge base ?

Message sent! Our team will review it and reply by email.

Javatpoint Logo

  • Design Pattern
  • Interview Q

Latex Tutorial

Latex basics, latex using tikz, online latex editor.


  • Send your Feedback to [email protected]

Help Others, Please Share


Learn Latest Tutorials

Splunk tutorial


Tumblr tutorial

Reinforcement Learning

R Programming tutorial

R Programming

RxJS tutorial

React Native

Python Design Patterns

Python Design Patterns

Python Pillow tutorial

Python Pillow

Python Turtle tutorial

Python Turtle

Keras tutorial



Verbal Ability

Interview Questions

Interview Questions

Company Interview Questions

Company Questions

Trending Technologies

Artificial Intelligence

Artificial Intelligence

AWS Tutorial

Cloud Computing

Hadoop tutorial

Data Science

Angular 7 Tutorial

Machine Learning

DevOps Tutorial

B.Tech / MCA

DBMS tutorial

Data Structures

DAA tutorial

Operating System

Computer Network tutorial

Computer Network

Compiler Design tutorial

Compiler Design

Computer Organization and Architecture

Computer Organization

Discrete Mathematics Tutorial

Discrete Mathematics

Ethical Hacking

Ethical Hacking

Computer Graphics Tutorial

Computer Graphics

Software Engineering

Software Engineering

html tutorial

Web Technology

Cyber Security tutorial

Cyber Security

Automata Tutorial

C Programming

C++ tutorial

Control System

Data Mining Tutorial

Data Mining

Data Warehouse Tutorial

Data Warehouse

Javatpoint Services

JavaTpoint offers too many high quality services. Mail us on h [email protected] , to get more information about given services.

  • Website Designing
  • Website Development
  • Java Development
  • PHP Development
  • Graphic Designing
  • Digital Marketing
  • On Page and Off Page SEO
  • Content Development
  • Corporate Training
  • Classroom and Online Training

Training For College Campus

JavaTpoint offers college campus training on Core Java, Advance Java, .Net, Android, Hadoop, PHP, Web Technology and Python. Please mail your requirement at [email protected] . Duration: 1 week to 2 week

RSS Feed


How to write a minimalistic cv in latex: step-by-step guide, learn how to write and customize a minimalistic curriculum vitae in latex. understand the logic behind every macro, and also how you can make modifications to customize it..

how to build resume in latex

If your goal is not to become a TeXnician, but instead to have an easy way to write a CV in LaTeX, I am sure this tutorial will also be useful to you. You will find a fully working LaTeX template to write a CV and a detailed explanation that can serve as a reference when you want to change any aspect of the template. If you don’t care about the Technical details, you can jump straight to the last section , in which you will find a high-level and user-friendly use of the macros, to quickly produce a professional CV.

Without further introduction, let’s start writing our professional and minimalistic CV in LaTeX.

Required packages for typsetting a CV in LaTeX

1. document class.

Opens in a new tab.

As an optional argument, we will choose the font size of the document to be 12pt. Thus the first line of our document is:

2. Language and encoding

Next, we have to load the packages we will use. To begin with, let us load some basic packages:

3. Set the document font

In our example, the main font of the document is not LaTeX’s default font Computer Modern ; instead, we load the package:

which sets as default font the TeX Gyre Pagella.

CV LaTeX Font

4. Specify the CV margins

As you can see, the configuration command \geometry is very straightforward and lets us easily modify the size of the left, right, top, and bottom margins, setting them to the TeX dimension we want. Note that in our example we leave the default right and bottom margins, that’s why those lines are commented out (any margin that is not specified as the default length).

5. Remove headers, footers and page numbers

The page layout configuration is finished with the following command:

which empties the page from other elements like headers, footers, page numbers, margin notes, or anything like that.

6. Modify sections style to meet CV style

We change the font of the sectioning commands in the following ways:

  • We make the font smaller: instead of using the \Large default font size it uses \large.
  • We change the font family: instead of the font set for the entire document, for the sections we use the font \TeX Gyre Adventor, which can be loaded with the font code qag.
  • Finally, we print a horizontal rule 5pt below the title, with a thickness of 1pt.

Once we have loaded the packages we will need, we have to define the macros used to write each of the entries in the document.

2. The macros

It is important to define macros for this purpose, instead of writing the text directly in the main document, for at least two reasons.

  • First, the code becomes much shorter and cleaner, since we don’t have to specify the font size, type, etc. each time we want to write a new entry.
  • Second, the code becomes much more reusable, because this way the user doesn’t need to understand what’s working behind, he can simply use the macros to write his CV without knowing any LaTeX at all.

Before writing our first macros, we need to define a new length, which will be used to align text on the same line (for example, in the entries for personal information, or to write the duration of each work entry):

1. Predefined lengths for space boxes

As you can see, we set this new length to be equal to the width of the box formed by 123456789. It is also convenient to define a macro to easily insert the same vertical separation between entries each time:

2. Name macro

Now it is time to write the macro that prints our name at the top of the CV:

This macro does the following:

  • First, it sets the \Huge font size , so that our name outstands in the document.
  • Next, it changes the font family. In this case, we chose the Helvetica font family, with font code phv .
  • Following that it prints the name (which is passed as the first and unique argument to the macro) centered and using the boldface .
  • After all of this, it ends the paragraph with \par and sets back the default size and font .

3. Slogan macro

A similar macro is used to define the motto, or slogan, of the candidate:

The only thing that changes with respect to the \name macro is that the font size is now \large, and the text is printed with a slanted font.

4. Personal details macro

Once we have the heading of our CV, we want to print the personal details of the candidate (contact information, address, and the like). Thus we define a macro to write each of these personal entries:

Let’s break down what this macro does since it is pretty different from the ones defined before:

  • Before the contents of the macro, note that it will be passed to parameters: the first one will specify the name of the (personal information) entry, while the second will specify the contents of that entry. We separate these two so that we can give different format to each of them, and also set some separation.
  • For this entries we set a specific indentation from the right margin. We first delete the default indentation with \noindent , then set our custom indentation with \hangindent , and finally indicate for how many lines we want this indentation with \hangafter (zero means that all the lines will have this same indentation).
  • Now we create a paragraph mode box with \parbox of size \spacebox as was defined previously. Inside this box we want to have the entry name slanted.
  • Finally, we print the entry contents using the default font and end the paragraph with \par .

If you get what this macro does, and understand what each command means, the remaining macros will be a piece of cake, since the structure is very similar.

5. Skills macro

To introduce skills and language levels we have the macros

As you can see, these are essentially the same as the \info macro , but let me make you aware of some differences.

  • First the entry name space for the \verb|\skill| command is \verb|3\spacebox| instead of \verb|\spacebox|, since we want one of the skills to be “Programming languages” which doesn’t fit in a single line of width \verb|\spacebox|. I suggest you too adjust these lengths to fit the needs of your entries.
  • What also changes is the font type of the entry names: for the skill it is smallcaps, and for the languages is boldface. These are, of course, arbitrary choices, and you can set them as you like the most.

6. Education macro

Finally let’s have a look at the two most complex macros, designed for education and work entries. First the macro for education entries is

This may seem a lot to get your head around to, but let me break it down for you into small steps:

  • This macro has four arguments: the first specifies the name of the studies, the second the duration, the third the institution, and the fourth a more or less brief description.
  • We write the name of the studies with no indentation in bold text.
  • Then we use the \hfill command to write at the right the duration of the studies. This duration is written inside a \parbox of width 6em , is centered inside the paragraph box with \centering , and written in bold. Finally, the box is wrapped with a frame, using the \framebox command.
  • Then we start a new paragraph with \par , and with no indentation we write the institution using italics. Again, we end the paragraph and start a new one.
  • Finally, we leave 0.5em of vertical space, and with the same custom indentation as the one used for the personal, technical and language entries, we write in small text the description of the studies. Finally, we go back to the normal text size and end the paragraph.

7. Work macro

The work entry for our curriculum is essentially the same as the education entry:

But we wrote a separate macro in case you wanted to customize its appearance.

The main document

Now all of the hard work is done. It is time to see a small implementation of the previous macros, that is to say, a small example of how to use these macros, so that we can produce the example below.

Of course, every snippet that will appear in this section is no longer part of the preamble of our document; instead, it is all written inside the document environment .

First let’s write our name, motivation, and personal information:

  • Note the need for the adequate vertical spacing each time: to get the motto closer to the name, we deleted 10pt of vertical space, which in our opinion made the title look better.
  • We also added a \sepspace between the title and the personal info, and wrote the email with the typewriter font type, to make it look more professional.

Following this we have the work experience:

As you can see, between each entry we use a \sepspace . Similarly, we have the education section:

In this case, the education entries need no description. For this reason, we don’t use the \sepspace between entries, since they seem to look fine this way. However, this is just a matter of taste, so it is your final decision how it should look like.

And to finish the curriculum we have the sections with skills and languages:

In this tutorial we have seen a comprehensive explanation of the source code needed to compile the example of CV shown above.

  • Along the way, we have explained several LaTeX commands to modify spacing , indenting , font size , font types , etc. that I hope will be useful to you in your LaTeX life beyond this project.
  • We have seen some external packages, such as geometry or sectsty , used to customize the appearance of our document, that may also be useful in other kinds of documents.

Therefore I hope this tutorial has not only helped you typeset a professional CV, but that you have also gained some more insight into how LaTeX works with a practical example.

Recent Posts

Typesetting Multiple Choice Questions in LaTeX

n this tutorial, we will see how to write a multiple-choice exam in LaTeX, using the exam document class. This document class provides multiple tools to easily typeset exams in LaTeX, and we have...

How to denote the dot product in LaTeX?

In this post, we will learn how to denote the dot product in LaTeX and which commands can be used!


  1. 10+ Best LaTeX CV Templates for 2023 (+Examples)

    how to build resume in latex

  2. 16 Free LaTeX Resume Templates [+LaTeX CV Templates]

    how to build resume in latex

  3. Latex Cv Template Academic

    how to build resume in latex

  4. how to build resume in latex

    how to build resume in latex

  5. 16 Free LaTeX Resume Templates [+LaTeX CV Templates]

    how to build resume in latex

  6. Pin on Latex Resume Template

    how to build resume in latex


  1. Database Spotlight: ResumeMaker

  2. This is my latex# collection#latex tutorial#

  3. I Made A Critter

  4. latex tutorial|latex tutorial for beginners

  5. GPT-4 & LaTeX Templates: Effortless Creation Unleashed!

  6. Latex Playlist


  1. Building an Effective Resume: Key Tactics for People Looking for Employment

    In today’s competitive job market, having an effective resume is essential for individuals looking for employment. A well-crafted resume can make a significant difference in catching the attention of potential employers and landing the desi...

  2. Building a Strong Resume: How an Online Student Job Enhances Your Skillset

    In today’s fast-paced digital world, many students are seeking opportunities to work from the comfort of their own homes. Online student jobs have become increasingly popular, providing flexible schedules and valuable experience.

  3. Unlock Your Future: How to Create a Professional Resume for Free

    In today’s competitive job market, having a professional resume is essential for landing your dream job. However, many individuals are hesitant to invest in expensive resume-building services. The good news is that you can create a high-qua...

  4. Create your Professional/Educational resume using LaTeX

    Create your Professional/Educational resume using LaTeX · Introduction Section above the first page · Education section · Career's long-term

  5. Creating a Professional Resume with LaTeX: A Step-by-Step Guide

    Creating a Professional Resume with LaTeX: A Step-by-Step Guide · Step 1: Choose a LaTeX template · Step 2: Install LaTeX · Step 3: Customize

  6. Latex Video Tutorial: How to Create a Resume or CV in Latex

    http://quicklatex.blogspot.com has a series of video tutorials. The files used for this tutorial can be downloaded from the website.

  7. Creating a Curriculum Vitae with LaTeX

    First, we need to define the preamble of the LaTeX document. This starts with the declaration of the class moderncv. Then we can choose the

  8. Your new CV

    Creating a professional CV or resume is quick and easy with Overleaf and writeLaTeX. With this free template you can start editing online instantly

  9. 8 Ways to Write a Resume in LaTeX

    Steps · Writing a Resume in LaTeX · Set Up the Document · Begin the Document · Make the Header · Making the Body · Extra Helpful Commands · Finishing Up.

  10. Make a Resume in LaTeX!

    If you are not using Overleaf, here are the steps you must follow: Use the article class for your document. Use the package titlesec to generate

  11. Templates

    How to create tables. Plans & pricing. Premium features · For individuals & groups

  12. Latex Resume and Templates

    ... create your style and design for your resume or CV. ADVERTISEMENT. ADVERTISEMENT. Let-s understand this by creating a simple resume. The first part begins

  13. How to Write a Minimalistic CV in LaTeX: Step-by-step Guide

    Required packages for typsetting a CV in LaTeX · 1. Document class · 2. Language and encoding · 3. Set the document font · 4. Specify the CV margins · 5. Remove

  14. The 16 Best LaTeX Resume Templates & CV Templates

    Creating a LaTeX resume template from scratch is laborious. Why do the hard work when there are plenty of free LaTeX resumes available