Creating Resumes using LaTeX – templates

I wrote about my current method of keeping my resume organized using LaTeX in this previous post, and I still love it. The combination of keeping things organized with a Google spreadsheet and perfectly consistent formatting using LaTeX means that I can update my resumes at least 10 times throughout the residency application season without breaking a sweat.

LaTeX resume sample output

What the resume looks like

I’ve decided to make a mock resume using the LaTeX template that I am using now and share it with the world. If you like how this looks, you can download the files below. When the resume fills with your information, it will likely look even better.

  1. Spreadsheet to organize the resume. Note if you put a ‘%’ tag in the left-most column, that row will be left out in the final PDF output. This is a convenient way to customize your resume for different audience.
  2. TeX file. There are some personal information fields in the front you should edit infrequently, such as when you change address or add new education diplomas.
  3. This resume template is dependent on the res.cls file, so you should save it to the same folder as your resume TeX files.

If you haven’t installed LaTeX, follow this link to find an installation for your operating system.

I started digging around for a good template for LaTeX resumes, and found this site to be simple and to the point. I adapted my current template from their “res8“.

Like I said before, using LaTeX to build resumes is rewarding but also quite easy to mess up. If you look at the TeX file, it should be obvious where your personal information should go, and how your resume should be copied over from the spreadsheet. Rule of thumb is, the more information you keep on the spreadsheet, the easier it would be to just copy and paste between resume versions.

Let me know if you run into any trouble.

Resume revamped

How do you write your resume?

Most people I know use MS Word and try to maintain the look of a template that they like. I used to use Word as well, and I have a template that I thought was reasonably pleasing to look at.

My old resumes are done in Word. Some lines are starting to get misaligned. With careful adjustment, this can become presentable.

However, there are some obvious problems with using a word processor to edit resumes, due to some inherent characteristics in a resume. Namely, resumes:

  1. Need a moderately complex but highly stable layout to look good. Resumes usually have section headings, job titles, time frame, location, company name, and job description, among other things. They are usually laid out using left, right, and center alignments, bold or italic fonts, and/or varying font sizes. But to look good, the entire resume should have a consistent format. Even if a date is offset by 0.5cm, the resume will start to look sloppy. You can do so by copying and pasting sections to try to preserve a consistent format, but when you edit the text, there is a good chance that the format will be thrown off, leaving you to struggle for ages to make the dates aligned on the right hand side again.
  2. Are constantly updated. You need to add new job items, new volunteer experiences, update the time frames on previous job descriptions, etc. to your resume. You may find yourself in the situation where the delicately designed resumes on Word that you built a few summers ago fall apart like a weathered antique that cannot be tempered with.
  3. Should be tailored. Every time you apply to a job, you should tailor a version of your resume. With Word, you may have to cut and paste items suitable for a specific job from any number of previous resumes, thus creating a mess of slightly different versions that gets more and more cumbersome to keep track.

So I wanted to switch to a system where I can achieve the above with maximal ease. I want to deal with formatting less, and focus on content more. I want to be able to update any section I want without worrying which word should be bolded and which word should have a 11pt font rather than 12pt. I also want to be able to “comment out” unwanted items for any particular job without removing it from my resume, so that while it won’t show up on the finished product, it is still easily accessible on the if I need it in the future. In fact, I want a “Master Resume” where everything I could put on a resume lives, and I just need to pick and choose which items to show up for a particular version and click print.

I explored two options: first is XML/HTML + CSS, which is an improvement over Word but still a bit messy on the content side with all the HTML tags, and the output is a webpage, not an easily printable copy.

So I settled on my old friend: LaTeX.

After a few iterations, I designed a new resume system that I feel very proud of.

1. Content backend. All of my job titles, descriptions, dates, etc, live on an easily readable spreadsheet, on which I can make edits effortlessly. And since this is LaTeX, I can comment out any job item by simply putting “%” in a left column, and that item will not show up in the finished product but it is still available for future use. In fact, I can create a different column of %’s for each version of resume, so that I take one glance and know which job items have been shown in which application.

The columns with content are interlaced with minimal LaTeX syntax, made possible by item 2 below.

For added awesomeness, do this part on Google Docs and edit your resume anywhere!

2. Centralized formatting. I pulled all the formatting up into a method, which means there is only 1 line of code determining which words should be on the left, which ones on the right, and which ones to be indented by how much space. If I want to make all the job titles italic instead of bolded, I only need to change one word. I built on top of the format template found here.

This part I don’t have to edit often, but if I wanted to change how each job item looks, I just need to edit this piece of code and the changes will apply to all resumes.

3. Integration. Now, I just need to copy the spreadsheet with the appropriate selector %’s, paste it onto LaTeX in the appropriate location, and click on generate PDF.

Copied and pasted from the spreadsheet. The coloring is automatic syntax coloring, to help visualize the code.

And then check out the final product for any final touches.

Finished product looks so awesome that I can’t wait to show it to people. Good start for any job application if you ask me.

I would be happy to share the code and spreadsheet I shared the TeX code and spreadsheet in this follow-up post, although this is a highly breakable system because there are countless ways to break it. You just need to miss one tag on the spreadsheet to be entirely stuck.

And of course there is the intimidation factor. All these code-looking things can make those with faint of heart hesitate.

Therefore, if there is market, I think it would be wise to make a more robust and less flexible software that allows the user to enter values in a spreadsheet, and spits out PDF files on the other end, and save everyone from the code.

You said there are lots of software like that?

Well, not exactly the way I made it, I’d bet 🙂