Using org-mode to generate your CV
The solution I'm about to discuss is inspired by the one of Puneeth Chaganti. The main idea is to have one central org file which will serve as a database for the generation of either PDF or ODT (openoffice) versions of the resume. The key idea is to have a dedicated package which will format the exporting of the data to a PDF. This will yield a nicely formatted PDF that is managed by the org file. At the moment I don't know how to improve the formatting of the ODT output, but this is less important; only automated systems (ATS) are suppose to "open" this version of the CV.
The dedicated package
Its main highlights are:
- Defines the sectioning to allow a CV-like appearance. In particular:
\section
serves as sections of the CV, \subsection
serves an item's heading (e.g. where you studied). Finally, \subsubsection
is used for a marginal title.
- optional key-value that defines a profile image that will be inserted into the resulting PDF
Following is the code of the dedicated package:
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{orgCV}
%%%%%%%%%%%%%%%%%%%%%%%%%%%% Options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
family=CV,
prefix=CV@
}
\DeclareStringOption{profilePic} % holding the filename of profile pic
\DeclareStringOption[60pt]{profilePicWidth} % holding width of profile pic
\ProcessKeyvalOptions*
%%%%%%%%%%%%%%%%%%%%%%%%%%%% END Options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% A Few Useful Packages
\RequirePackage[paper=a4paper,top=0.5in, bottom=0.5in, left=2in, right=1in]%
{geometry}
\RequirePackage{titlesec} % custom section
\RequirePackage{etoolbox} % Needed for if-else statements
\RequirePackage{paralist} % Define special lists
\RequirePackage{tabto} % Allow tabbing for inline tabbed list
\RequirePackage[symbol]{footmisc} % Have symbols instead of number for footnotes
\RequirePackage{tikz} % Used for insertion and decoration of the profile picture
\usetikzlibrary{calc}
\RequirePackage{color}
\RequirePackage{hyperref}
\definecolor{linkcolour}{rgb}{0,0.2,0.6}
\hypersetup{colorlinks,breaklinks, urlcolor=linkcolour,linkcolor=linkcolour}
\pagestyle{empty} % plain
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Measure profile picture's dimensions for the insertion in the title.
\newlength{\ProfilePich} % Will store the height of the profile picture
\newcommand{\setProfilePich}[1]{
\settoheight{\ProfilePich}{\usebox{#1}}
}
\newlength{\ProfilePicd} % Will store the depth of the profile picture
\newcommand{\setProfilePicd}[1]{
\settowidth{\ProfilePicd}{\usebox{#1}}
}
\newlength{\ProfilePicw} % Will store the width of the profile picture
\newcommand{\setProfilePicw}[1]{
\settowidth{\ProfilePicw}{\usebox{#1}}
}
\newsavebox{\ProfilePic}
\newcommand{\profilePicDimensions}[1]{
% create and save the box
\savebox{\ProfilePic}{%
\includegraphics[keepaspectratio=true,width=\@yourpicturewidth]{#1}%
}
\setProfilePich{\ProfilePic}
\setProfilePicw{\ProfilePic}
\setProfilePicd{\ProfilePic}
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Title
%%
% Check whether profile picture was provided as a package option.
\ifx \CV@profilePic \@empty
\relax % profile pic was not provided in package's options
\else
\def\@yourpicture{\CV@profilePic}
\def\@yourpicturewidth{\CV@profilePicWidth}
\fi
\renewcommand*{\maketitle}{%
\begin{minipage}[t]{0.7\linewidth}
% Insert candidate's name as given in the org-file.
\raggedright{{\Huge \bfseries \scalebox{1.2}{\@title}}}\\[.5in]
\end{minipage}
\hfill
\ifdef{\@yourpicture}{ % profile pic was provided
\profilePicDimensions{\@yourpicture}
\begin{minipage}[t]{0.2\linewidth}
\raggedleft{
\begin{tikzpicture}
\fill[black!20] (0,0) %
node[anchor=south west] {%
\includegraphics[keepaspectratio=true,width=\@yourpicturewidth]%
{\@yourpicture}%
} %
rectangle ($(\the\ProfilePicw,\the\ProfilePich)$);
\end{tikzpicture}
}
\end{minipage}
} % end of profile picture insertion.
{
% No profile picture to insert
}
}
%%%%%%%%%%%%%%%%%%%%%%%%End of heading%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Section Headings, etc.
\titleformat{\section} %command
% [] % shape
{\Large\scshape\raggedright} %format
{} %label
{0pt} %sep
{} %before
[\titlerule\vspace{2ex}]
\titlespacing{\section}{0pt}{6ex}{0ex}
\titleformat{\subsection} %command
{\small\bfseries\raggedright} %format
{} %label
{0pt} %sep
{} %before
[\vspace{0.5ex}] %after
\titlespacing{\subsection}{0pt}{4ex}{0ex}
\titleformat{\subsubsection} %command
[leftmargin] %shape
{\small\scshape\raggedleft} %format
{} %label
{0pt} %sep
{} %before
[] %after
\titlespacing{\subsubsection}{16em}{0.25ex}{2em}
%%%%%%%%%%%%%%%%%%%%%%%%End of sectioning%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Paragraph indent
\setlength{\parindent}{0cm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Lists
% This macro alters a list by removing some of the space that follows the list
% (is used by lists below)
% Inline tabbed itemize
\newenvironment{tabbedenum}[1]
{\NumTabs{#1}\inparaitem\let\latexitem\item
\def\item{%
\def\item{\tab\latexitem}\latexitem}}
{\endinparaenum}
\renewenvironment{itemize}{
\begin{list}{\textbullet}{%
\setlength{\itemsep}{0.25ex}
\setlength{\parsep}{0em}
\setlength{\parskip}{0em}
\setlength{\topsep}{0em}
\setlength{\partopsep}{0em}
\setlength{\leftmargin}{1em}}}{\end{list}}
%%%%%%%%%%%%%%%%%%%%%%%%End of lists definitions%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Sample of a CV in its org file
Consider the following simple example
#+OPTIONS: tags:nil toc:nil author:nil num:nil H:3
#+LATEX_HEADER: \usepackage[profilePic=profile-pic,profilePicWidth=60pt]{orgCV}
#+TITLE: Foo Bar
* Contact and Personal Information
*** Address
Right here street, Somewhere
*** Email
[[mailto:foo@bar.com][foo@bar.com]]
*** Web Pages
[[http://www.foo.bar.com]]
* Language Skills
*** Klingon
Native language
*** Elvish
Fluent (speaking, reading and writing)
* Fields of Interest
- Space traveling
- Hunting goblins
* Education
** University of nowhere (since 1234)
PhD. Candidate. Title of dissertation:
# Dissertation's title
#+BEGIN_CENTER
*/Find and Kill Goblins/*
#+END_CENTER
* Technical Skills
** Hunting Skills
#+ATTR_LATEX: :environment tabbedenum :options {3}
- ~wolves~
- ~bears~
- ~elephants~
** Social Skills
None.
* References
Do you really need them?
Here is the result:

cmap
, which improves the search and copy facilities. Also check out the Access PDF Topic on CTAN..pdf
format are, in general, discouraged... The reason is the so-called Applicant Tracking System (ATS) which, again in general, tend to handle.doc
files. I find it a very sad truth, since it implicitly says that one has to have WORD in order to find a job.