28

I've heard making and managing a resume in LaTeX is highly useful. I am sure consistent and easy to maintain output format is one reason.

I haven't used LaTeX before (a suggestion to where from to learn will also be helpful) so my question may be fairly trivial.

The questions:

  1. Is it possible to have one resume and have multiple outputs (I don't know what it is called, but I mean when you make a PDF, etc. of it) based on you selecting show this section and don't show this section? How?

    For example, at some places I would like to give them my resume with mentions of X and Y and not A while I would like to give my resume elsewhere with A and not X or Y.

  2. Also, is it possible to have a couple of summary sections written and chose one of them to be inserted when the documented is exported (as in made into a PDF, etc.)? How?
3
  • This is certainly all possible. (La)TeX is a programming language so can cope with conditionals. As you're a newcomer to LaTeX, I'll wait to see if someone knows of a good package to do this rather than leaping in with my usual hacks! Aug 13, 2010 at 11:10
  • 1
    Yeah, a guide or a GUI or something that'll ease it for me will be very helpful. Eventually I would like to do the way you guys do it but right now I'm just starting off. I just installed LyX.
    – Ashish
    Aug 13, 2010 at 11:19
  • I'll second Juan's comment below. If you intend ever to learn to use LaTeX directly, don't bother with LyX at all but jump right in. (I say this as someone who used LyX for a couple years before learning LaTeX.) Aug 13, 2010 at 18:10

8 Answers 8

16

For this sort of “conditional” compilation I would suggest the use of, e.g., verbatim to create comment environments to skip over parts of a document with respect to your selected options. A quick example

\documentclass{article}

\usepackage{verbatim}
\newenvironment{optionA}{}{} % use this to show
% \newenvironment{optionA}{\comment}{\endcomment} % use this to hide

\begin{document}

\begin{optionA}
Some text to show only if optionA is enabled.
\end{optionA}

\end{document}

Toggling between the two definitions of the optionA environment (of course you should give it a more descriptive name) you can select whether the appropriate content is shown (or not) in the final pdf output.

2
  • That sounds very helpful and you've laid out how to do it too. But I'm lost. I'll get a hang of LyX first and then use your answer.
    – Ashish
    Aug 13, 2010 at 11:21
  • 2
    Ashish, I've edited the example to make it complete so that you can copy&paste it on a .tex file, compile it with pdflatex, play with it and see how it works. In the end, of course, you should take whatever decision sounds better to you, but I would recommend to stop with LyX and read some excellent suggestions to start using LaTeX. Aug 13, 2010 at 12:04
15

Even simpler than using comment (and more versatile), you can use multiple files for different sections. For instance you can have a main file cv.tex, and the a file for each section, for instance hobbies.tex, programming.tex, study.tex, languages.tex and so on.

Then you include exactly the sections you want, using input

Here goes the preamble
...
\begin{document}
\input{study}
\input{programming}
%\input{hobbies}
\input{languages}
\end{document}

Whenever you put a % sign at the beginning of a line, that line is ignored. So in the example I made you would have sections study, programming and languages, but not hobbies.

As for writing the CV itself, I advise this very nice template.

11

I am probably late to the party for @Ashish, but this might be of interest to others: CurVe by Didier Verna is a document class that handles different CVs for different occasions particularly well.

CurVe allows "flavors" and enables the production of different outputs. The different sections of one CV are saved in separate "rubric" documents, as CurVe calls them. Minimal example:

CV_minimal.ltx

\NeedsTeXFormat{LaTeX2e}
\documentclass[a4paper,skipsamekey,12pt,english,final]{curve}
\usepackage[english]{babel}

\title{Graduate Student}
\subtitle{at the Peace Institute, Z\"urich, Switzerland}

\begin{document} 
\maketitle
\makerubric{experience}
%\makerubric{education}
%\makerubric{skills}
\end{document}

experience.ltx

\begin{rubric}{Professional Experience} %rubric title
\subrubric{Customer Services} % subrubric title
\entry*[Month/Year --- Month/Year]
Customer Service Assistant at Fresh'n'Fruity, a bar / caf\'e{} serving organic smoothies, London, UK (xy hours/week)

\subrubric{Research} % subrubric title
\entry*[Month/Year --- Month/Year]
Graduate Assistant, the Department for Science Fiction, Hogwarts School of Witchcraft and Wizardry, UK (xy hours/week) 
\entry*[MM/YY --- MM/YY]
Research Intern with the ``Non-Violent Communication''-Project at the Peace Institute, Z\"urich, Switzerland
\end{rubric}

If you need different variants of that CV – e.g. to apply for a academic type job and for an industry job – you can highlight different areas of experience by applying "flavors" to your CV: Calling on

\flavor{corp}%to include the experience.corp.ltx version of the job experience section

or respectively

 \flavor{academic}%to include the experience.academic.ltx version of the job experience section

in the preamble. Instead of one experience.ltx file you will need the two different versions of the file in the same folder as your main document. In this example these would be 2 files named according to the pattern rubricname.flavorname.ltx, as in:

experience.academic.ltx 
experience.corp.ltx 

In addition to this option of having different types of content for your CV, the CurVe class also accommodates different styles for non-rubric-elements. That means that you could, for instance, have different styles for your title and subtitle elements.

A typical example would be: you want a clickable element that links your name (in the title) to you professional homepage. Your want to style this linked title for readers of your CV online. However, for people who will read the hardcopy print-out of your CV, you'd want a different, maybe printerfriendly, version of your CV without the link.

The input-element enables you to use non-rubric elements accordingly: in the preamble of your main document you will call upon those different types via

\input{title.online.ltx}
\input{title.print.ltx}

In your working directory you will have two different versions of the title element in two separate files:

title.print.ltx

\title{Print Version of Your Title} 

title.online.ltx

\title{Online Version of \href{http://link-to-my-homepage.com}{Your Title with Link}} 

Monsieur Verna has written an article in PracTeX Journal about his document class which is more readable and entry-level user-friendly than the documentation with its abundance of options: LaTeX curricula vitae with the CurVe class.

8

Like Andrea, I maintain separate bits of my CV/resume in individual files, but for each style (full CV (for academia), brief CV (likewise), industry resume, separate list of publication, etc...) I have a separate master file to pull in the bits I want. On top of that, I use make to handle the build management.{*}

{*} Yes, I have the usual trouble with knowing how many passes are needed, and no I don't have a magic solution.

2
  • 2
    Rubber is the magic solution; it discovers the dependencies automatically (e.g., if you change one of your individual files, it knows which PDF files are out-of-date), and it parses Latex output and thus knows how many passes are needed. Aug 13, 2010 at 21:37
  • Can you elaborate on the makefile you use? Not necessarily the actual calls to (La)TeX...
    – Dror
    Jan 10, 2014 at 16:01
8

You may want to consider my tagging package for this. Here's a taster:

\documentclass{article}
\usepackage{tagging}
\begin{document}
\usetag{informal}

\tagged{formal}{%
    \section{Education}
    I went to Cambridge...
}

\tagged{informal}{%
\section{My adventures on life's beach}
    I went to the Notting Hill carnival...
}

\untagged{formal,informal}{%
    I'm just a normal person...
}
\end{document}

That's a fairly simple example. It works across the whole document, so using it to configure which subfiles you input, and within those files, is also possible.

1
  • This is exactly what I was looking for! Just amazing!
    – f-hollow
    Nov 17, 2020 at 3:57
6

Possibly the simplest solution (in that it requires no extra packages) is just to use LaTeX's own conditionals. (Or are they TeX primitives? I don't know...)

\newif\ifbigfont
\newif\ifhobbies

\hobbiestrue
%\bigfonttrue

\ifbigfont
\PassOptionsToClass{12pt}{article}
\fi


\documentclass{article}

\begin{document}
Here is some text that always appears

\ifhobbies
Here is some text that appears only when ``hobbies'' is set to true.
\fi
\end{document}

This blog post discusses the basics.

As you can see, you can put \newif declarations before the documentclass, and use it to determine which options get passed to the document class.

4

The easiest way is using TeX conditionals. Here's an example with two languages, English (code en) and German (code de):

\newif\ifen
\newif\ifde
\csname\target true\endcsname

\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}

\ifen
Hello, world.
\fi
\ifde
Hallo, Welt.
\fi

\end{document}

Now, in order to compile a particular version, you would do

xelatex -jobname=OUTPUT-FILE '\def\target{LANGUAGE-CODE}\input{INPUT-FILE}'

To get things like hyphenation to work would require a little more work.

3
  • This is one of the most straight forward answers of all!! Is there a way where I can avoid a customized compilation? Could you set a compiler to run main.tex >> main.pdf according to a single line setting in .tex (instead of in the command line)?
    – nilon
    May 14, 2020 at 13:24
  • This is the answer to my, and the posts, question: manage multiple translation with a single document.
    – nilon
    May 14, 2020 at 13:30
  • 1
    @nilon you can define the value of \target at the beginning of the file, e.g. \def\target{en}
    – Ernest A
    May 22, 2020 at 18:44
3

I don't use LyX, so I don't know what constraints you're working under, but I'd structure the problem like this:

  1. Use the comment package
  2. Create a stub (cv1, cv2, etc) for each instance of your CV.
  3. Create a common file with everything in it, with the variable stuff in comment-derived environments
  4. Call the common file from each stub

Here's a simple example for you to try:

cv1.tex:

\documentclass[11pt,a4paper]{article}
\usepackage{comment}
\includecomment{cv1}
\excludecomment{cv2}
\excludecomment{cv3}
\input{cvcommon}

cv2.tex:

\documentclass[11pt,a4paper]{article}
\usepackage{comment}
\excludecomment{cv1}
\includecomment{cv2}
\excludecomment{cv3}
\input{cvcommon}

cvcommon.tex:

% Rest of your preamble here
\begin{document}
This text appears everywhere.
\begin{cv1}%
This is my Number 1 CV!
\end{cv1}
\begin{cv2}%
This is my Number 2 CV!
\end{cv2}
I 
\begin{cv1}%
did
\end{cv1}
\begin{cv2}%
didn't
\end{cv2}
go to university.
\end{document}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .