Resume in LaTeX

December 14, 2024

In the past, creating a résumé in Word was the de-facto standard. You open the document, edit the content, export it to PDF, and send it out. For version control, you keep a separate Git repository and commit changes from time to time. Technically, this setup works.

Over time, however, its limitations become clear. Formatting is difficult to control. Diffs make it hard to see what exactly changed. Updating contact details duplicated in different sections turns into unnecessary routine.

Eventually, I switched to a different approach. I install LaTeX (preferably TeX Live). The résumé is written as plain text, with no binary files involved. Any editor works. I make a change, compile, and immediately see the updated PDF. Git tracks every detail because the sources are plain text. The header and contact info are stored in variables or commands, so editing in one place updates the entire document. The resulting PDF is stable, clean, and predictable — no floating tables or accidental layout shifts.

You can, of course, continue using Word and exporting to PDF, but that often turns into a fight with formatting and attempts to maintain precise positioning, which frequently leads to subtle and hard-to-trace layout issues.

Docker file for working with LaTeX

To avoid installing LaTeX locally, you can use Docker. Here is an example of a Docker file:

FROM debian:buster-slim

RUN apt-get update && \
    apt-get install --no-install-recommends -y \
        biber=2.12-2 \
        latexmk=1:4.61-0.1 \
        texlive-full=2018.20190227-2 && \
        rm -rf /var/lib/apt/lists/*

WORKDIR /tmp

Building the image:

docker build -t latex .

Building the document:

docker run -v `pwd`:/tmp latex pdflatex cv.tex

As a result, a cv.pdf will appear in the same directory.

Source: joshfinnie.com/blog/latex-through-docker.

Useful Resources

To get started with resumes in LaTeX, you can use ready-made templates. One of the best resources is: Overleaf Templates

There, you can find many examples that are easy to adapt to your needs.

My Resume Template

Here is an example of what my resume, created in LaTeX, looks like:

And its source code:


% !TeX spellcheck = en_GB
% !TeX program = pdflatex

\documentclass[11pt, a4paper]{article} 

\usepackage[T1]{fontenc}     % We are using pdfLaTeX,
\usepackage[utf8]{inputenc}  % hence this preparation
\usepackage[british]{babel}  
\usepackage[left = 0mm, right = 0mm, top = 8mm, bottom = -8mm]{geometry}
\usepackage[stretch = 25, shrink = 25, tracking=true, letterspace=30]{microtype}  
\usepackage{graphicx}        % To insert pictures
\usepackage{xcolor}          % To add colour to the document
\usepackage{marvosym}        % Provides icons for the contact details
\usepackage{fontawesome5}
%\usepackage{fontspec}
%\setmainfont{Merriweather}
\usepackage[us]{datetime}
\renewcommand{\dateseparator}{, }

\usepackage{enumitem}        % To redefine spacing in lists
\setlist{parsep = 0pt, topsep = 0pt, partopsep = 1pt, itemsep = 1pt, leftmargin = 6mm}

\usepackage{FiraSans}        % Change this to use any font, but keep it simple
\renewcommand{\familydefault}{\sfdefault}

%%%%%%% USER COMMAND DEFINITIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%
% These are the real workhorses of this template

\newcommand{\dates}[1]{\hfill\mbox{\footnotesize\textbf{#1}}}
\newcommand{\is}{\par\vskip.5ex plus .4ex} % Item spacing
\newcommand{\smaller}[1]
\newcommand{\headleft}[1]{\vspace*{3ex}\textsc{\textbf{#1}}\par%
    \vspace*{-1.5ex}\hrulefill\par\vspace*{0.7ex}}
\newcommand{\headright}[1]{\vspace*{2.5ex}\textsc{\Large#1}\par%
     \vspace*{-2ex}{\hrulefill}\par}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage[colorlinks = true, urlcolor = black, linkcolor = black]{hyperref}

\begin{document}
\vspace{1.5cm}

% Style definitions -- killing the unnecessary space and adding the skips explicitly
\setlength{\topskip}{0pt}
\setlength{\parindent}{0pt}
\setlength{\parskip}{0pt}
\setlength{\fboxsep}{0pt}
\pagestyle{empty}
\raggedbottom


\hspace{0.5cm}
\begin{minipage}[t]{0.33\textwidth} %% Left column -- outer definition
%  Left column -- top dark rectangle
\colorbox{white}{\begin{minipage}[t][5mm][t]{\textwidth}\null\hfill\null\end{minipage}}

\vspace{-.2ex} % Eliminates the small gap

\colorbox{white}{\color{black}  %% LEFT BOX
\kern0.09\textwidth\relax% Left margin provided explicitly
\begin{minipage}[t][293mm][t]{0.82\textwidth}
\raggedright
\vspace*{2.5ex}

\Large Stanislav

\textbf{\textsc{Raskumandrin}} \normalsize 

% Centering without extra vertical spacing
\null\hfill\includegraphics[width=0.80\textwidth]{gpt-avatar}\hfill\null

\vspace*{3ex} % Extra space after the picture

% https://ctan.org/pkg/fontawesome5
% http://mirrors.ibiblio.org/CTAN/fonts/fontawesome5/doc/fontawesome5.pdf

\noindent
\begin{tabular}{@{}c@{\hspace{0.5em}}l@{}}
\faEnvelope[regular] & \href{mailto:gmail@gmail.com}{gmail@gmail.com} \\[0.75ex]
\faMobile* & \href{tel:+381123456789}{+381\,12\,345\,67\,89} \\[0.75ex]
\faTelegramPlane & \href{https://t.me/telegram}{https://t.me/telegram}
\end{tabular}

\vspace*{0.75ex}

\headleft{Objective}
With 17 years in Perl and 19 in SQL, I build and maintain data systems that stay clear, stable, and practical.  
I work closely with teams and users, keeping focus on real needs and reliable delivery.  
Stay aware of new technologies that help make work faster and cleaner.

\headleft{LLM Use}
I use Copilot, agents, and different LLMs in daily work — for coding, text, and data tasks.  
Each tool supports precision and saves time, helping me keep focus on logic instead of routine.

\headleft{Soft Skills}
As Team Lead for five developers in an agile environment, I excelled in time management, ensuring efficient project delivery. My conflict resolution and negotiation skills fostered smooth team dynamics and stakeholder communication, enabling effective problem-solving. Meticulous documentation also enhanced project clarity and collaboration.

\end{minipage}%
\kern0.09\textwidth\relax%%Right margin provided explicitly to stretch the colourbox
}
\end{minipage}% Right column
\hskip1.5em% Left margin for the white area
\begin{minipage}[t]{0.56\textwidth}
\setlength{\parskip}{0.8ex}% Adds spaces between paragraphs; use \\ to add new lines without this space. Shrink this amount to fit more data vertically

\vspace{2ex}

\headright{Experience}


\textsc{\normalsize Limited company “Epam”}  \dates{2016--2025}

\footnotesize Team Lead. External project: Health LRP application development and
maintenance (Perl, Bash; SQL, Oracle, Redis; Solaris, Red Hat; AWS; Vim, tmux; SVN, Git;
Chef, Jenkins, Docker; OpenTelemetry; Jira, Figma, Miro; SDLC, Scrum, SAFe, OWASP). https://epam.com/

\textsc{\normalsize Saint Petersburg State Company “Mineral”}  \dates{2014--2016}

\footnotesize Development of tracking and analytical system for air pollution
inspection, development of device drivers (Perl; Tiny Core Linux).

\textsc{\normalsize Limited company “Torgovy Dom Severo-Zapadny”}  \dates{2015}

\footnotesize Development of online–shop platform (Perl; MySQL; CentOS;
Atlassian stack: JIRA, Confluence, Bitbucket, HipChat). http://www.220-volt.ru/

\textsc{\normalsize Limited company “EuroLife”}  \dates{2014}

\footnotesize  Development of order automation system for construction company (Perl, Mojolicious;
MySQL; JavaScript; Bootstrap 3).

https://raskumandrin.pages.dev/en/complicated-calculator

\textsc{\normalsize Limited company “Inter”} \dates{2006--2016}

\footnotesize  Design, development, and maintenance of online–shop platform. (Perl, Mojolicious;
MySQL, PostgreSQL, SQLite; Debian, Apache, Nginx; Memcached; Sphinx; AWS). Implementation of sms-mail service,
automation accounting of suppliers' warehouses, etc.

\textsc{\normalsize Limited company “Solus”} \dates{2012}

\footnotesize Websites development with company's perl–based CMS. http://solus.ru/web-cms.html

\textsc{\normalsize Limited company “DeltaIncom”} \dates{2010--2011}

\footnotesize Development of government registries extracts system (Perl, MySql). http://deltaincom.ru.

\textsc{\normalsize Limited company} \dates{2008--2011}

\footnotesize Development of online banking system. (Perl, MySql). Intranet.

\textsc{\normalsize Closed joint-stock company “Medi”} \dates{2005--2011}

\footnotesize Maintenance of corporate information system (MS SQL 6.5, 2000); BI
reporting (Transact-SQL); programming user interface (Delphi 6).

\textsc{\normalsize Limited company “Rad”, closed joint-stock company “Expoline” and non-profit charitable organization “Hesed”}  \dates{2002--2004}

\footnotesize Developer (Delphi 6, Delphi 7, InterBase, MS Access, administration of a computer network).

\headright{\normalsize Education}

\textsc{Diploma Engineer Degree Programmes Applied mathematics} \dates{1999--2005}

\footnotesize Saint Petersburg Electrotechnical University “LETI” (ETU). The Faculty of Computing Technologies and
Informatics. https://etu.ru/en/university/ 

\textsc{Accounting courses} \dates{2011}

\textsc{Course of English language} \dates{1996--1998}


\headright{\normalsize Certifications}

\textsc{English Assessment. Speaking: B2, writing: B2} \dates{2023}


\headright{\normalsize Online Presence}

\noindent
\begin{tabular}{@{}c@{\hspace{0.5em}}l@{}}
\faGithub & Public Git repositories: \href{https://github.com/raskumandrin/}{github.com/raskumandrin}, \href{https://bitbucket.org/raskumandrin}{bitbucket.org/raskumandrin} \\[0.75ex]
\faBlogger & Blog: \href{https://raskumandrin.pages.dev/en}{raskumandrin.pages.dev/en} \\[0.75ex]
\faLinkedin & LinkedIn: \href{https://www.linkedin.com/in/raskumas/}{linkedin.com/in/raskumas}
\end{tabular}


\end{minipage}

\par\vspace{-8.4ex} % добавить немного вертикального отступа после колонок

\noindent\begin{center}
  {\color[gray]{0.9}\textsf{\fontseries{l}\selectfont Typeset with love in \LaTeX, \today}}

\end{center}
\vspace*{-2ex} % подгоняет расстояние, чтобы текст не уехал на новую страницу
\end{document}