Try Live
Add Docs
Rankings
Pricing
Docs
Install
Install
Docs
Pricing
More...
More...
Try Live
Rankings
Enterprise
Create API Key
Add Docs
Moderncv
https://github.com/moderncv/moderncv
Admin
Moderncv is a customizable LaTeX document class for typesetting professional curricula vitae and
...
Tokens:
7,183
Snippets:
45
Trust Score:
6.1
Update:
2 months ago
Context
Skills
Chat
Benchmark
75.6
Suggestions
Latest
Show doc for...
Code
Info
Show Results
Context Summary (auto-generated)
Raw
Copy
Link
# ModernCV LaTeX Document Class ## Introduction ModernCV is a LaTeX document class designed for typesetting professional curricula vitae (CVs) and cover letters. Originally created by Xavier Danaux and now maintained by a community team, it provides a modern, clean approach to CV creation with extensive customization options. The package is distributed on CTAN and licensed under LPPL-1.3c. The class offers five pre-built visual styles (classic, casual, banking, oldstyle, fancy, and contemporary), multiple color schemes (black, blue, burgundy, cerulean, green, grey, orange, purple, red), and modular components that allow mixing header, body, and footer styles. It includes built-in support for social media links (40+ platforms including LinkedIn, GitHub, ORCID, Twitter, Mastodon), contact information formatting, skill matrices, bibliography integration via BibTeX, and both XeLaTeX/LuaLaTeX support for advanced typography. ## Document Class Declaration Creating a new CV document The document class is declared with paper size, font size, and font family options, followed by style and color configuration. ```latex \documentclass[11pt,a4paper,sans]{moderncv} % Select color scheme (must be before style) \moderncvcolor{cerulean} % Select visual style \moderncvstyle{contemporary} % Adjust page margins \usepackage[hmargin=0.5in,vmargin=10pt]{geometry} % Configure font loading \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} % Document language \usepackage[english]{babel} ``` ## Personal Information Commands Defining contact and biographical information Personal details are set using dedicated commands in the preamble before `\begin{document}`. ```latex % Basic information \name{John}{Doe} \title{Senior Software Engineer} \born{4 July 1985} % Contact details \address{123 Main Street}{12345 City}{Country} \phone[mobile]{+1~(234)~567~890} \phone[fixed]{+2~(345)~678~901} \phone[fax]{+3~(456)~789~012} \email{john@doe.org} \homepage{www.johndoe.com} % Optional elements \photo[64pt][2pt]{picture} \quote{Passionate developer with 10+ years experience} \extrainfo{Available for relocation} ``` ## Social Media Links Adding social profiles to CV header ModernCV supports 40+ social platforms with automatic URL generation and icon display. ```latex % Professional networks \social[linkedin]{john.doe} \social[github]{jdoe} \social[gitlab]{jdoe} \social[stackoverflow]{0000000/johndoe} \social[orcid]{0000-0002-1234-5678} \social[researchgate]{John_Doe} \social[googlescholar]{abc123XYZ} % Communication platforms \social[twitter]{ji\_doe} \social[mastodon]{mastodon.social/web/@user} \social[telegram]{jdoe} \social[matrix]{@johndoe:matrix.org} \social[discord]{jdoe\#0000} \social[signal]{12345678901} % Content platforms \social[youtube]{c/jdoeschannel} \social[twitch]{jdoe} \social[tiktok]{jdoe} % Academic platforms \social[arxiv]{doe\_j\_1} \social[inspire]{0000000} % Custom URL (second optional parameter) \social[custom][example.com/profile]{My Profile} ``` ## Document Structure and Sections Organizing CV content into sections The CV body contains sections with various entry types for education, experience, skills, and more. ```latex \begin{document} \makecvtitle \section{Education} \cventry{2010--2014}{Bachelor of Science in Computer Science}{University Name}{City}{\textit{GPA: 3.8/4.0}}{Thesis: "Machine Learning Applications in Natural Language Processing"} \cventry{2014--2016}{Master of Science in Artificial Intelligence}{Tech Institute}{City}{\textit{Distinction}}{Focus: Deep Learning and Computer Vision} \section{Experience} \subsection{Professional} \cventry{2018--Present}{Senior Software Engineer}{Tech Company Inc.}{San Francisco}{}{ Leading a team of 5 developers building cloud-native applications \begin{itemize} \item Architected microservices platform serving 1M+ daily users \item Reduced deployment time by 70\% through CI/CD automation \item Mentored junior developers and conducted code reviews \end{itemize}} \cventry{2016--2018}{Software Developer}{StartUp Ltd.}{New York}{}{ Full-stack development of web applications using React and Node.js \begin{itemize} \item Implemented real-time chat feature with WebSocket \item Optimized database queries reducing load time by 50\% \end{itemize}} \section{Skills} \cvitem{Languages}{Python, JavaScript, Go, Java, C++} \cvitem{Frameworks}{React, Django, Flask, Node.js, Spring Boot} \cvitem{DevOps}{Docker, Kubernetes, AWS, Jenkins, Terraform} \cvitem{Databases}{PostgreSQL, MongoDB, Redis, Elasticsearch} \end{document} ``` ## CV Entry Types Various formatted entry types for different content ModernCV provides multiple commands for different types of information display. ```latex % Single item with header and content \cvitem{Header}{Content text goes here} % Two-column items \cvdoubleitem{Header 1}{Text 1}{Header 2}{Text 2} % Three-column items \cvtripleitem{Header 1}{Text 1}{Header 2}{Text 2}{Header 3}{Text 3} % List items with bullet points \cvlistitem{First achievement or skill} \cvlistitem{Second achievement with longer description that wraps} % Two-column list items \cvlistdoubleitem{Item 1}{Item 4} \cvlistdoubleitem{Item 2}{Item 5} % Item with proficiency comment \cvitemwithcomment{Spanish}{Fluent}{Native speaker} \cvitemwithcomment{French}{Intermediate}{B2 level} \cvitemwithcomment{German}{Basic}{A2 level} % Standard entry (most common) \cventry{dates}{degree/title}{institution}{location}{grade}{description} ``` ## Skill Matrix Visual skill proficiency display The skill matrix feature allows rating skills on a 1-5 scale with automatic legend generation. ```latex \section{Technical Proficiency} % Configure column widths (optional) \setcvskillcolumns[5em][][] % Add legend with skill levels \cvskilllegend*[1em]{} % Add skill matrix header \cvskillhead[-0.1em] % Add skills with ratings (1-5 scale) \cvskillentry*{Languages:}{5}{Python}{8}{Expert in Django, Flask, FastAPI frameworks} \cvskillentry{}{4}{JavaScript}{6}{React, Node.js, TypeScript proficiency} \cvskillentry{}{3}{Go}{2}{Building microservices and CLI tools} \cvskillentry*{Cloud:}{4}{AWS}{5}{EC2, S3, Lambda, RDS, CloudFormation} \cvskillentry{}{3}{Azure}{2}{App Services, Functions, Storage} \cvskillentry*{Tools:}{5}{Docker}{4}{Container orchestration and optimization} \cvskillentry{}{4}{Kubernetes}{3}{Cluster management and deployment} % Custom legend text (for localization) \cvskilllegend[0.2em][Basic][Intermediate][Advanced][Expert][Master]{Legend} ``` ## Bibliography Integration Including publications using BibTeX ModernCV integrates with BibTeX for automatic publication listing with proper formatting. ```latex % In preamble: configure bibliography style \renewcommand*{\bibliographyitemlabel}{[\arabic{enumiv}]} % In document body \section{Publications} % Simple bibliography \nocite{*} \bibliographystyle{plain} \bibliography{publications} % Multiple bibliographies using multibib package \usepackage{multibib} \newcites{book,misc}{{Books},{Conference Papers}} \section{Publications} \nocitebook{book1,book2} \bibliographystylebook{plain} \bibliographybook{publications} \nocitemisc{paper1,paper2,paper3} \bibliographystylemisc{ieeetr} \bibliographymisc{publications} ``` Example BibTeX file (publications.bib): ```bibtex @ARTICLE{paper1, author = {Doe, John and Smith, Jane}, title = {Deep Learning Approaches to Natural Language Understanding}, journal = {Journal of Machine Learning Research}, year = {2023}, volume = {24}, pages = {1-25} } @INPROCEEDINGS{paper2, author = {Doe, John}, title = {Scalable Microservices Architecture for Cloud Applications}, booktitle = {Proceedings of CloudConf 2022}, year = {2022}, pages = {45-52} } ``` ## Multi-Column Layout Creating column-based sections The cvcolumns environment enables multi-column layouts for references or other structured content. ```latex \section{References} \begin{cvcolumns} \cvcolumn{Academic}{ \begin{itemize} \item Prof. Jane Smith\\ Department of CS\\ jane.smith@university.edu\\ +1 (555) 123-4567 \item Dr. Robert Johnson\\ AI Research Lab\\ r.johnson@research.org \end{itemize}} \cvcolumn{Professional}{ \begin{itemize} \item Sarah Williams\\ Engineering Manager\\ Tech Corp\\ sarah.w@techcorp.com \item Michael Brown\\ CTO, StartUp Inc.\\ m.brown@startup.io \end{itemize}} \cvcolumn[0.5]{Available upon request}{ Additional references and recommendation letters can be provided on request} \end{cvcolumns} ``` ## Cover Letter Creating professional cover letters ModernCV includes cover letter support with matching style to the CV. ```latex \clearpage % Define recipient \recipient{Hiring Manager}{ Tech Company Inc.\\ 123 Corporate Blvd\\ San Francisco, CA 94105} % Letter metadata \date{January 15, 2024} \subject{Application for Senior Software Engineer Position} \opening{Dear Hiring Manager,} \closing{Sincerely,} % Optional signature image \signature{0.9}{signature.png} % Optional enclosure line \enclosure[Attached]{curriculum vit\ae{}, portfolio} % Generate letter header \makelettertitle % Letter body I am writing to express my strong interest in the Senior Software Engineer position at Tech Company Inc. With over 8 years of experience in full-stack development and a proven track record of leading successful projects, I am excited about the opportunity to contribute to your team. In my current role at StartUp Ltd., I have architected and deployed cloud-native applications serving over 1 million daily users. My expertise in Python, Go, and modern DevOps practices has enabled me to reduce deployment times by 70\% through comprehensive CI/CD automation. I am particularly drawn to your company's focus on innovative solutions and would bring both technical excellence and collaborative leadership to your engineering team. My experience aligns well with your requirements, particularly in microservices architecture, cloud infrastructure, and team mentorship. I am confident that my skills and passion for technology would make me a valuable addition to Tech Company Inc. Thank you for considering my application. I look forward to discussing how my background and skills can contribute to your team's success. % Letter closing with signature \makeletterclosing ``` ## Style Customization Switching between visual styles and colors ModernCV allows easy style changes and custom color definitions. ```latex % Available styles \moderncvstyle{casual} % Relaxed, friendly appearance \moderncvstyle{classic} % Traditional, professional \moderncvstyle{banking} % Clean, minimalist, corporate \moderncvstyle{oldstyle} % Vintage-inspired design \moderncvstyle{fancy} % Decorative with colored accents \moderncvstyle{contemporary} % Modern with optional QR code % Style options \moderncvstyle[noqr]{contemporary} % Contemporary without QR code \moderncvstyle[right]{classic} % Name aligned right \moderncvstyle[left]{classic} % Name aligned left (default) % Available colors \moderncvcolor{blue} % Default blue \moderncvcolor{black} \moderncvcolor{burgundy} \moderncvcolor{cerulean} \moderncvcolor{green} \moderncvcolor{grey} \moderncvcolor{orange} \moderncvcolor{purple} \moderncvcolor{red} % Custom color definition \definecolor{color1}{rgb}{0.22,0.45,0.70} % Primary color \definecolor{color2}{rgb}{0.45,0.45,0.45} % Secondary color % Suppress page numbers \nopagenumbers{} % Custom column width for dates \setlength{\hintscolumnwidth}{3cm} ``` ## Advanced Formatting Font selection and special features ModernCV supports advanced typography with XeLaTeX/LuaLaTeX and custom formatting. ```latex % Using XeLaTeX or LuaLaTeX \ifxetexorluatex \usepackage{fontspec} \usepackage{unicode-math} \defaultfontfeatures{Ligatures=TeX} % Modern font selection \setsansfont[ ItalicFont={Fira Sans Light Italic}, BoldFont={Fira Sans}, BoldItalicFont={Fira Sans Italic} ]{Fira Sans Light} \setmainfont{Latin Modern Roman} \setmonofont{Latin Modern Mono} \fi % Hyperlink customization \newcommand*{\customlink}[2]{\href{#1}{\textcolor{color1}{#2}}} % Custom list spacing \setlength{\listitemsymbolspace}{10pt} % Timeline visualization with vertical timeline package \usepackage{moderncvverticaltimeline} % Academic icons (requires XeLaTeX/LuaLaTeX) \moderncvicons{academic} % Use academicons \moderncvicons{awesome} % Use Font Awesome (default) \moderncvicons{marvosym} % Use Marvosym \moderncvicons{letters} % Use letter symbols ``` ## Compilation Building the PDF document ModernCV documents are compiled using standard LaTeX tools. ```bash # Using pdflatex (standard compilation) pdflatex template.tex bibtex template pdflatex template.tex pdflatex template.tex # Using latexmk (automatic compilation) latexmk -pdf template.tex # Using XeLaTeX (for advanced fonts/icons) xelatex template.tex bibtex template xelatex template.tex xelatex template.tex # Using LuaLaTeX (alternative modern engine) lualatex template.tex bibtex template lualatex template.tex lualatex template.tex # Clean auxiliary files latexmk -c ``` ## Summary ModernCV streamlines professional CV and cover letter creation for academics, researchers, software engineers, and professionals across industries. Its primary use cases include academic CVs with publication lists, technical resumes highlighting programming skills through skill matrices, professional CVs with extensive social media integration, multi-language CVs using babel localization, and cover letters with matching visual style. The package is particularly popular in academic settings, tech industry job applications, and international positions requiring multiple language versions. Integration patterns typically involve using ModernCV with BibTeX or biblatex for publication management, the multibib package for categorized bibliographies, TikZ for custom graphics and icons, fontspec for XeLaTeX/LuaLaTeX typography, and Overleaf or local TeX distributions for online/offline editing. The modular architecture allows mixing header styles (i through vii), body styles (i through vi), footer styles, color schemes, and icon sets to create unique professional documents. Users commonly maintain separate .tex files for content in different languages while sharing the same structure, use Git for version control with different branches for different positions, and generate multiple CV variants from a single source by commenting/uncommenting sections based on target audience requirements.