This article is part of a series about building my personal website:

  1. The idea and choosing the right tool
  2. SEO essentials: meta tags and base head element
  3. Content management with Markdown and Frontmatter
  4. Semantic HTML for accessibility and external readers
  5. Minimalist CSS: styling and native-like design
  6. Adding color themes with JavaScript
  7. Astro plugins: RSS, Sitemap, Word count
  8. SVG icons and Favicon
  9. Building resume with XeLaTeX
  10. Extras

I wanted my resume in PDF format so it would be easy to share and print. Of course, I could have used Word or Google Docs, but I don’t like relying on GUI and proprietary tools. It also makes automation and templating much harder.

Why XeLaTeX?

There are multiple “engines” for LaTeX. The most common one is pdfLaTeX, but I went with XeLaTeX because:

With pdfLaTeX, this would have been messy, requiring inputenc, fontenc, and font packages. With XeLaTeX, I just type Russian or English text directly and it works.

My setup

Here’s the LaTeX preamble I used to configure my resume:

% Main parameters
\documentclass[a4paper, 12pt]{article}
\usepackage[left=1.5cm, right=1.5cm, top=1.5cm]{geometry}
% Links
\usepackage[
  colorlinks=true,
  urlcolor=blue,
  pdftitle={Resume},
  pdfauthor={Efim Ishenin}
]{hyperref}
% Customizable lists
\usepackage{enumitem}
% Roboto font
\usepackage{fontspec}
\setmainfont{Roboto}
% Remove page numbering
\pagenumbering{gobble}
% Remove paragraph indentation
\setlength{\parindent}{0pt}
% Customize titles
\usepackage{titlesec}
\titleformat{\section}
  {\normalfont\large\bfseries}
  {}
  {0pt}
  {}
  [\vspace{1pt}\titlerule\vspace{-6.5pt}]
% Russian language support
\usepackage[russian]{babel}

I ended up with both English and Russian versions!

Now I can keep my resume fully version-controlled, easily tweakable, and always looking consistent in print and digital form.