Creating Professional CVs and Resumes with LaTeX

Build stunning, ATS-friendly CVs and resumes using LaTeX. This comprehensive guide covers everything from simple resumes to detailed academic CVs with publication lists.

Quick start: LaTeX Cloud Studio includes professional CV templates. Choose from modern, academic, or classic designs when creating a new document.

Why LaTeX for CVs? Perfect typography, consistent formatting, version control friendly, and easily customizable once set up.

LaTeX vs Word for CVs: Why Choose LaTeX?

Advantages of LaTeX CVs

Professional Typography

Superior font rendering and spacing that stands out to recruiters

Version Control

Track changes, maintain multiple versions, collaborate easily

Consistent Formatting

Automatic alignment and spacing - no manual adjustments needed

Multi-Format Output

Generate PDF, HTML, or even plain text from same source

When to Use LaTeX for Your CV

Perfect for:

  • Academic CVs with publications
  • Technical/STEM positions
  • International applications
  • Long-term career documentation
  • When you need multiple CV versions

Consider alternatives for:

  • Quick one-time applications
  • Non-technical roles requiring creative designs
  • When applying through systems requiring Word docs

Quick Start Templates

Modern Professional Resume

\documentclass[11pt,a4paper,sans]{moderncv}
\moderncvstyle{banking} % Style options: casual, classic, banking, oldstyle, fancy
\moderncvcolor{blue}    % Color options: blue, orange, green, red, purple, grey, black

% Personal data
\name{John}{Smith}
\title{Senior Software Engineer}
\phone[mobile]{+1 (555) 123-4567}
\email{john.smith@email.com}
\homepage{github.com/johnsmith}
\social[linkedin]{johnsmith}
\social[github]{johnsmith}

% Adjust margins
\usepackage[scale=0.85]{geometry}
\recomputelengths

\begin{document}
\makecvtitle

\section{Professional Summary}
Experienced software engineer with 8+ years developing scalable web applications. 
Expert in Python, JavaScript, and cloud technologies. Proven track record of 
leading teams and delivering complex projects on time.

\section{Experience}
\cventry{2020--Present}{Senior Software Engineer}{Tech Corp}{San Francisco, CA}{}{
\begin{itemize}
\item Led team of 5 developers in redesigning core platform, improving performance by 40\%
\item Architected microservices solution handling 1M+ daily requests
\item Mentored junior developers and established coding standards
\end{itemize}}

\cventry{2017--2020}{Software Engineer}{StartupXYZ}{San Francisco, CA}{}{
\begin{itemize}
\item Developed RESTful APIs serving 100k+ users
\item Implemented CI/CD pipeline reducing deployment time by 60\%
\item Collaborated with product team to design new features
\end{itemize}}

\cventry{2015--2017}{Junior Developer}{Web Solutions Inc}{San Jose, CA}{}{
\begin{itemize}
\item Built responsive web applications using React and Node.js
\item Participated in Agile development process
\item Maintained and optimized legacy systems
\end{itemize}}

\section{Education}
\cventry{2011--2015}{Bachelor of Science in Computer Science}{Stanford University}{Stanford, CA}{GPA: 3.8/4.0}{
\begin{itemize}
\item Dean's List: Fall 2013, Spring 2014
\item Relevant Coursework: Algorithms, Data Structures, Machine Learning, Databases
\end{itemize}}

\section{Technical Skills}
\cvitem{Languages}{Python, JavaScript, Java, Go, SQL}
\cvitem{Frameworks}{React, Node.js, Django, Express, Spring Boot}
\cvitem{Tools}{Git, Docker, Kubernetes, AWS, Jenkins, PostgreSQL}
\cvitem{Practices}{Agile, TDD, CI/CD, Microservices, REST APIs}

\section{Projects}
\cvitem{OpenAPI Tool}{\url{github.com/johnsmith/openapi-tool} - Open-source API documentation generator with 500+ stars}
\cvitem{ML Platform}{Built machine learning platform for real-time predictions, processing 50k requests/day}

\section{Certifications}
\cvitem{2022}{AWS Certified Solutions Architect - Professional}
\cvitem{2021}{Google Cloud Professional Cloud Developer}

\end{document}

Rendered output:

John Smith

Senior Software Engineer

📱 +1 (555) 123-4567 | ✉️ john.smith@email.com | 🔗 github.com/johnsmith | 💼 linkedin.com/in/johnsmith

Academic CV Template

\documentclass[11pt,a4paper]{article}
\usepackage{academicpreamble} % Custom package for formatting
\usepackage[margin=1in]{geometry}
\usepackage{hyperref}
\usepackage{enumitem}

% Custom commands
\newcommand{\cvheading}[1]{\section*{\sc #1}\vspace{-0.5em}\hrule\vspace{0.5em}}
\newcommand{\cvsubheading}[1]{\subsection*{#1}}

\begin{document}

% Header
\begin{center}
\textbf{\LARGE Dr. Jane Doe}\\[0.5em]
Department of Computer Science | University Name\\
123 Academic Street, City, State 12345\\
\href{mailto:jane.doe@university.edu}{jane.doe@university.edu} | 
\href{https://janedoe.com}{janedoe.com} | 
ORCID: 0000-0000-0000-0000
\end{center}

\cvheading{Education}
\begin{itemize}[leftmargin=0em, label={}]
\item \textbf{Ph.D. in Computer Science}, Massachusetts Institute of Technology, 2018\\
\textit{Dissertation}: ``Machine Learning Approaches to Natural Language Understanding''\\
\textit{Advisor}: Prof. John Smith

\item \textbf{M.S. in Computer Science}, Stanford University, 2014\\
\textit{Thesis}: ``Neural Networks for Text Classification''

\item \textbf{B.S. in Computer Science}, \textit{Summa Cum Laude}, Harvard University, 2012\\
\textit{GPA}: 3.95/4.00, Phi Beta Kappa
\end{itemize}

\cvheading{Academic Appointments}
\begin{itemize}[leftmargin=0em, label={}]
\item \textbf{Assistant Professor}, Department of Computer Science, University Name, 2020--Present
\item \textbf{Postdoctoral Researcher}, AI Research Lab, Tech University, 2018--2020
\end{itemize}

\cvheading{Research Interests}
Machine Learning, Natural Language Processing, Deep Learning, Information Retrieval, 
Computational Linguistics, Human-Computer Interaction

\cvheading{Publications}
\cvsubheading{Peer-Reviewed Journal Articles}
\begin{enumerate}[leftmargin=2em]
\item \textbf{Doe, J.}, Smith, A., \& Johnson, B. (2023). ``Advanced transformer architectures 
for multilingual NLP.'' \textit{Journal of Machine Learning Research}, 24(1), 123--145.

\item Johnson, B., \textbf{Doe, J.}, \& Williams, C. (2022). ``Efficient attention mechanisms 
for long documents.'' \textit{Computational Linguistics}, 48(3), 567--592.

\item \textbf{Doe, J.} \& Smith, A. (2021). ``Zero-shot learning for low-resource languages.'' 
\textit{Artificial Intelligence}, 295, 103--120.
\end{enumerate}

\cvsubheading{Conference Proceedings}
\begin{enumerate}[leftmargin=2em, resume]
\item \textbf{Doe, J.}, et al. (2023). ``Scaling language models efficiently.'' In \textit{Proceedings 
of the 61st Annual Meeting of the Association for Computational Linguistics (ACL)}, pp. 234--245.

\item Smith, A., \textbf{Doe, J.}, \& Brown, D. (2022). ``Cross-lingual transfer learning.'' 
In \textit{Proceedings of NeurIPS 2022}, pp. 1234--1245.
\end{enumerate}

\cvheading{Grants and Funding}
\begin{itemize}[leftmargin=0em, label={}]
\item \textbf{NSF CAREER Award}, ``Interpretable AI for Healthcare,'' \$500,000, 2022--2027 (PI)
\item \textbf{Google Research Award}, ``Efficient NLP Models,'' \$75,000, 2021--2022 (PI)
\item \textbf{NIH R01}, ``AI for Clinical Decision Support,'' \$2.1M, 2021--2026 (Co-PI)
\end{itemize}

\cvheading{Teaching Experience}
\cvsubheading{Courses Taught}
\begin{itemize}[leftmargin=0em, label={}]
\item CS 231: Machine Learning (Fall 2020, 2021, 2022) - Enrollment: 150 students
\item CS 450: Advanced NLP (Spring 2021, 2022, 2023) - Graduate course
\item CS 101: Introduction to Programming (Fall 2019) - Enrollment: 300 students
\end{itemize}

\cvheading{Selected Presentations}
\begin{itemize}[leftmargin=0em, label={}]
\item ``Future of Language Models,'' Keynote, International Conference on ML, June 2023
\item ``Efficient NLP at Scale,'' Invited Talk, Google Research, March 2023
\item ``Transformers Tutorial,'' ACL 2022, Dublin, Ireland, May 2022
\end{itemize}

\cvheading{Professional Service}
\cvsubheading{Editorial Positions}
\begin{itemize}[leftmargin=0em, label={}]
\item Associate Editor, \textit{Computational Linguistics}, 2022--Present
\item Editorial Board, \textit{Journal of AI Research}, 2021--Present
\end{itemize}

\cvsubheading{Conference Organization}
\begin{itemize}[leftmargin=0em, label={}]
\item Program Chair, EMNLP 2024
\item Area Chair, ACL 2023, NeurIPS 2022
\item Reviewer: ICML, ICLR, AAAI, ACL, EMNLP, NAACL (50+ papers annually)
\end{itemize}

\cvheading{Awards and Honors}
\begin{itemize}[leftmargin=0em, label={}]
\item Best Paper Award, ACL 2023
\item Rising Star in AI, MIT Technology Review, 2022
\item Outstanding Dissertation Award, MIT, 2018
\item Google PhD Fellowship, 2016--2018
\end{itemize}

\end{document}

Essential CV Packages

% Different ModernCV styles
\moderncvstyle{casual}   % Casual style with photo
\moderncvstyle{classic}  % Traditional layout
\moderncvstyle{banking}  % Clean professional look
\moderncvstyle{oldstyle} % Classic typography
\moderncvstyle{fancy}    % Decorative elements

% Color schemes
\moderncvcolor{blue}     % Default blue theme
\moderncvcolor{orange}   % Warm orange theme
\moderncvcolor{green}    % Nature green theme
\moderncvcolor{red}      % Bold red theme
\moderncvcolor{purple}   % Royal purple theme
\moderncvcolor{grey}     % Subtle grey theme
\moderncvcolor{black}    % Classic black theme

% Custom colors
\definecolor{color0}{rgb}{0,0,0}     % Black
\definecolor{color1}{rgb}{0.22,0.45,0.70} % Blue
\definecolor{color2}{rgb}{0.45,0.45,0.45} % Grey

2. EuropassCV - EU Standard Format

\documentclass[english,a4paper]{europasscv}
\ecvname{John Smith}
\ecvaddress{123 Main Street, City, Country}
\ecvtelephone{+1 555 123 4567}
\ecvemail{john.smith@email.com}
\ecvnationality{American}
\ecvdateofbirth{01/01/1990}
\ecvgender{Male}

\begin{document}
\begin{europasscv}
\ecvpersonalinfo

\ecvsection{Work Experience}
\ecvtitle{September 2020 -- Present}{Senior Developer}
\ecvitem{Employer}{Tech Company Inc.}
\ecvitem{Responsibilities}{Leading development team, architecting solutions}

\ecvsection{Education and Training}
\ecvtitle{2008 -- 2012}{Bachelor of Science in Computer Science}
\ecvitem{Institution}{University Name}

\end{europasscv}
\end{document}

3. AltaCV - Modern Single Column

\documentclass[10pt,a4paper,ragged2e,withhyper]{altacv}
\geometry{left=1.25cm,right=1.25cm,top=1.5cm,bottom=1.5cm,columnsep=1.2cm}

\usepackage{paracol}
\usepackage[default]{lato}

\definecolor{SlateGrey}{HTML}{2E2E2E}
\definecolor{LightGrey}{HTML}{666666}
\definecolor{DarkPastelRed}{HTML}{450808}
\definecolor{PastelRed}{HTML}{8F0D0D}
\definecolor{GoldenEarth}{HTML}{E7D192}
\colorlet{name}{black}
\colorlet{tagline}{PastelRed}
\colorlet{heading}{DarkPastelRed}
\colorlet{headingrule}{GoldenEarth}
\colorlet{subheading}{PastelRed}
\colorlet{accent}{PastelRed}
\colorlet{emphasis}{SlateGrey}
\colorlet{body}{LightGrey}

\begin{document}
\name{Your Name}
\tagline{Your Position}
\photoR{2.8cm}{photo}
\personalinfo{
  \email{your.email@example.com}
  \phone{+1-234-567-890}
  \location{City, Country}
  \linkedin{yourlinkedin}
  \github{yourgithub}
}

\makecvheader
% Content continues...
\end{document}

ATS-Friendly CV Best Practices

Making Your LaTeX CV ATS-Compatible

Critical for Online Applications: Many companies use Applicant Tracking Systems (ATS) that scan resumes. Follow these guidelines to ensure your LaTeX CV passes ATS screening.

% ATS-Friendly LaTeX CV Template
\documentclass[11pt,letterpaper]{article}
\usepackage[margin=1in]{geometry}
\usepackage{enumitem}
\usepackage[hidelinks]{hyperref}

% Avoid fancy fonts - use standard fonts
\usepackage{helvet}
\renewcommand{\familydefault}{\sfdefault}

% No columns, graphics, or special characters in main content
\setlist[itemize]{leftmargin=*, label={\textbullet}}

\begin{document}

% Simple header - no tables or columns
\begin{center}
\textbf{\Large JOHN SMITH}\\
Senior Software Engineer\\
Email: john.smith@email.com | Phone: (555) 123-4567\\
LinkedIn: linkedin.com/in/johnsmith | Location: San Francisco, CA
\end{center}

\section*{PROFESSIONAL SUMMARY}
Experienced software engineer with 8+ years developing scalable applications. 
Expert in Python, JavaScript, React, Node.js, and AWS cloud services.

\section*{PROFESSIONAL EXPERIENCE}

\textbf{Senior Software Engineer} \hfill January 2020 - Present\\
\textit{Tech Corp, San Francisco, CA}
\begin{itemize}[nosep]
\item Led team of 5 developers to redesign core platform, improving performance by 40 percent
\item Architected microservices handling 1 million plus daily API requests
\item Implemented CI/CD pipeline using Jenkins and Docker
\item Mentored 3 junior developers on best practices and code reviews
\end{itemize}

\textbf{Software Engineer} \hfill June 2017 - December 2019\\
\textit{StartupXYZ, San Francisco, CA}
\begin{itemize}[nosep]
\item Developed RESTful APIs in Python Django serving 100,000 plus users
\item Built responsive React components for customer dashboard
\item Reduced deployment time by 60 percent through automation
\item Collaborated with product team using Agile methodology
\end{itemize}

\section*{EDUCATION}

\textbf{Bachelor of Science in Computer Science} \hfill 2011 - 2015\\
Stanford University, Stanford, CA\\
GPA: 3.8/4.0 | Dean's List: Fall 2013, Spring 2014

\section*{TECHNICAL SKILLS}

\textbf{Programming Languages:} Python, JavaScript, Java, Go, SQL, HTML, CSS\\
\textbf{Frameworks:} React, Node.js, Express, Django, Spring Boot, Flask\\
\textbf{Tools and Technologies:} Git, Docker, Kubernetes, AWS, Jenkins, PostgreSQL, MongoDB\\
\textbf{Practices:} Agile, Scrum, Test-Driven Development, CI/CD, Microservices

\section*{CERTIFICATIONS}

AWS Certified Solutions Architect - Professional (2022)\\
Google Cloud Professional Cloud Developer (2021)

\end{document}

ATS Optimization Checklist

Do:

  • Use standard section headings (Experience, Education, Skills)
  • Include keywords from job description
  • Use standard fonts (Arial, Helvetica, Times)
  • Save as PDF (unless .docx requested)
  • Use bullet points with simple markers
  • Spell out acronyms first time
  • Use both acronyms and full terms

Avoid:

  • Tables, columns, or text boxes
  • Headers and footers
  • Images, logos, or graphics
  • Unusual fonts or characters
  • Complex formatting
  • Colored text (except hyperlinks)
  • Special LaTeX symbols in text

Advanced CV Features

Publication Lists and Citations

% Using biblatex for publication management
\usepackage[style=authoryear,sorting=ydnt,maxbibnames=99]{biblatex}
\addbibresource{publications.bib}

% Custom bibliography sections
\defbibnote{myprenote}{* indicates equal contribution, † indicates corresponding author}

\section{Publications}

\subsection{Peer-Reviewed Journal Articles}
\newrefsection
\nocite{doe2023nature, doe2022science, doe2021cell}
\printbibliography[
  heading=none,
  type=article,
  resetnumbers=true,
  prenote=myprenote
]

\subsection{Conference Proceedings}
\newrefsection
\nocite{doe2023neurips, doe2023icml, doe2022iclr}
\printbibliography[
  heading=none,
  type=inproceedings,
  resetnumbers=true
]

\subsection{Preprints}
\newrefsection
\nocite{doe2023arxiv1, doe2023arxiv2}
\printbibliography[
  heading=none,
  type=unpublished,
  resetnumbers=true
]

% Alternative: Manual formatting with custom counters
\newcounter{pubcounter}
\newcommand{\pub}[1]{\stepcounter{pubcounter}[\thepubcounter] #1}

\subsection{Selected Publications (h-index: 25, Citations: 1,234)}
\begin{enumerate}[leftmargin=2em]
\item \textbf{Doe, J.*}, Smith, A.*, et al. (2023). ``Major discovery in field.'' 
\textit{Nature}, 601, 123--128. [Impact Factor: 49.9]

\item Johnson, B., \textbf{Doe, J.†}, et al. (2022). ``Important findings.'' 
\textit{Science}, 375, 456--461. [135 citations]
\end{enumerate}

Multi-Language CVs

\documentclass{article}
\usepackage[english,spanish,french]{babel}
\usepackage[utf8]{inputenc}
\usepackage{iflang}

% Language-specific content
\newcommand{\sectionname}[1]{%
  \IfLanguageName{english}{#1}{}%
  \IfLanguageName{spanish}{\translateSpanish{#1}}{}%
  \IfLanguageName{french}{\translateFrench{#1}}{}%
}

% Usage
\section{\sectionname{Experience}}

% Or use separate files
\IfLanguageName{english}{\input{cv-content-en}}{}
\IfLanguageName{spanish}{\input{cv-content-es}}{}
\IfLanguageName{french}{\input{cv-content-fr}}{}

Interactive CV Elements

% QR code for digital portfolio
\usepackage{qrcode}

\section{Digital Portfolio}
\begin{minipage}{0.7\textwidth}
Scan the QR code to view my interactive portfolio with live project demos, 
code samples, and detailed case studies.
\end{minipage}
\begin{minipage}{0.3\textwidth}
\raggedleft
\qrcode[height=1in]{https://yourportfolio.com}
\end{minipage}

% Clickable elements
\usepackage{hyperref}
\hypersetup{
    colorlinks=true,
    linkcolor=blue,
    urlcolor=blue,
    pdftitle={John Smith - CV},
    pdfauthor={John Smith},
    pdfsubject={Curriculum Vitae},
    pdfkeywords={software engineer, python, javascript}
}

% Skills with proficiency bars
\usepackage{tikz}
\newcommand{\skillbar}[2]{%
  \begin{tikzpicture}
    \fill[gray!30] (0,0) rectangle (4,0.2);
    \fill[blue!60] (0,0) rectangle (#2*0.04,0.2);
    \node[right] at (4.1,0.1) {\small #1};
  \end{tikzpicture}
}

\section{Technical Skills}
\skillbar{Python}{95}\\[0.5em]
\skillbar{JavaScript}{90}\\[0.5em]
\skillbar{Machine Learning}{85}\\[0.5em]
\skillbar{DevOps}{80}

CV Design Principles

Typography and Spacing

% Professional typography settings
\usepackage{microtype} % Better text appearance
\usepackage[tracking=true]{microtype}

% Font combinations
% Option 1: Modern sans-serif
\usepackage[sfdefault]{roboto}
\usepackage[T1]{fontenc}

% Option 2: Classic serif
\usepackage{palatino}
\usepackage[T1]{fontenc}

% Option 3: Mixed fonts
\usepackage{libertine} % Serif for body
\usepackage[scaled=0.85]{beramono} % Monospace
\usepackage[libertine]{newtxmath} % Math

% Spacing adjustments
\setlength{\parskip}{0pt}
\setlength{\parindent}{0pt}
\renewcommand{\baselinestretch}{1.1}

% Section spacing
\usepackage{titlesec}
\titlespacing*{\section}{0pt}{12pt plus 4pt minus 2pt}{6pt plus 2pt minus 2pt}
\titlespacing*{\subsection}{0pt}{10pt plus 3pt minus 2pt}{4pt plus 2pt minus 2pt}

% Custom section formatting
\titleformat{\section}{\large\bfseries\color{darkblue}}{\thesection}{0pt}{}[\titlerule]
\titleformat{\subsection}{\normalsize\bfseries}{\thesubsection}{0pt}{}

Color Schemes

% Professional color palettes
% Blue theme (most common)
\definecolor{headerblue}{RGB}{41,128,185}
\definecolor{textblue}{RGB}{52,73,94}
\definecolor{lightblue}{RGB}{174,214,241}

% Green theme (eco/sustainability)
\definecolor{headergreen}{RGB}{27,94,32}
\definecolor{textgreen}{RGB}{46,125,50}
\definecolor{lightgreen}{RGB}{200,230,201}

% Burgundy theme (academic)
\definecolor{headerburg}{RGB}{136,14,79}
\definecolor{textburg}{RGB}{123,31,75}
\definecolor{lightburg}{RGB}{248,187,208}

% Usage example
\newcommand{\cvheader}[1]{%
  \color{headerblue}\section*{#1}\color{black}
}

% Accent colors for highlights
\newcommand{\highlight}[1]{\textcolor{headerblue}{\textbf{#1}}}

Industry-Specific Templates

Tech/Software Engineering CV

Key sections:

  • Technical skills (languages, frameworks, tools)
  • GitHub/Portfolio links
  • Open source contributions
  • Technical projects with metrics
  • Certifications

Academic CV

Essential elements:

  • Education (including thesis titles)
  • Publications (peer-reviewed, preprints)
  • Grants and funding
  • Teaching experience
  • Conference presentations
  • Professional service
  • Awards and honors

Business/MBA CV

Focus areas:

  • Leadership experience
  • Quantifiable achievements (ROI, revenue)
  • Strategic initiatives
  • Team management
  • Business development
  • Industry expertise

Maintenance and Version Control

% Version control in LaTeX
\usepackage{datetime2}
\usepackage{gitinfo2}

% Add version info to footer
\fancyfoot[L]{\scriptsize Last updated: \today}
\fancyfoot[R]{\scriptsize Version: \gitAbbrevHash}

% Conditional content for different versions
\newif\ifacademic
\newif\ifindustry
\academictrue % or \industryfalse

\ifacademic
  \input{academic-content}
\else
  \input{industry-content}
\fi

% Track changes
\usepackage{changes}
\definechangesauthor[color=blue]{JS}{John Smith}
\added[id=JS]{New certification added}
\deleted[id=JS]{Outdated skill removed}

Common CV Mistakes to Avoid

Top LaTeX CV Pitfalls:

  1. Over-designing: Keep it professional and readable
  2. Font chaos: Stick to 2 fonts maximum
  3. Margin crimes: Maintain proper whitespace
  4. Length issues: 1-2 pages for industry, longer for academia
  5. PDF problems: Always check PDF output on different devices
  6. Missing keywords: Include relevant terms from job posting
  7. Complex layouts: Avoid multi-column formats for ATS
  8. Outdated information: Review and update regularly

Quick Reference

Essential Packages for CVs

PackagePurposeBest For
moderncvFull CV frameworkQuick professional CVs
europasscvEU standard formatEuropean applications
altacvModern single columnCreative fields
biblatexPublication managementAcademic CVs
fontawesome5Icons and symbolsModern designs
progressbarSkill visualizationsTech resumes
timelineCareer progressionExecutive CVs

Compilation Tips

# Standard compilation
pdflatex cv.tex
pdflatex cv.tex  # Run twice for references

# With bibliography
pdflatex cv.tex
biber cv
pdflatex cv.tex
pdflatex cv.tex

# Check for ATS compatibility
pdftotext cv.pdf - | less  # View as plain text

Next Steps

Pro tip: Keep a master CV in LaTeX with all your accomplishments, then create tailored versions by commenting out sections. Use Git to track changes and maintain different versions for different industries or positions.


Ready to create your CV? Try our CV templates in LaTeX Cloud Studio - no installation needed!