Catégories
Autres

Créer un CV élégant avec Latex et moderncv

Le CV (curriculum vitae) est très important pour la recherche d’emploi et doit être irréprochable. L’un des éléments les plus difficile pour faire un CV est la mise en forme. La plupart du temps, on passe beaucoup de temps sur Word pour créer la mise en page adéquate. Parfois on est obligé de tout refaire lorsque le logiciel change de version (j’exagère à peine).
J’ai trouvé un élément de réponse à cette problématique de la mise en forme : Latex (prononcer « latèque »). Latex est un langage permettant de créer des documents sans se soucier de la mise en forme. La simplicité de ce langage et la qualité des documents générés ont fait que c’est l’outil majoritairement utilisé pour la rédaction des thèses et tous les autres papiers important destiné à être publiés. Un autre avantage de Latex est la rétro-compatibilité, autrement dit vos documents ne changent pas de forme avec les mises à jours du logiciel.
En résumé, on va créer notre CV avec du code !

Nativement, Latex n’est pas très pratique pour rédiger des CV modernes. Heureusement, quelqu’un a créé un plugin (l’équivalent d’une extension) permettant de créer des CV très professionnel, très facilement. Ce plugin (une classe de documents pour être précis) s’appelle moderncv. Par exemple, voici à quoi ressemble mon CV (version pdf ici) :

CV latex moderncv
Exemple de CV créé avec Latex et ModernCV

Table des matières

Comment ça fonctionne?

Je vous rassure, vous n’avez pas besoin d’apprendre à utiliser Latex pour faire votre CV. Vous avez besoin d’installer un environnement Latex (c’est-à-dire un éditeur et un compilateur). Pour cela, je vous recommande un chapitre particulier du tutoriel pour apprendre Latex sur OpenClassRoom : installer Latex (tous les systèmes d’exploitation sont traités).

Par exemple, sur CentOS, voici les commandes à lancer :

yum install epel-release
yum install texlive texlive-cm-super texlive-xdvi texlive-xdvi-bin gv kile
Installation de Latex et de l'éditeur Kile

Ces commandes permettent d’installer Latex et surtout l’éditeur kile qui permet de rédiger des documents. L’éditeur ressemble à cela :

Kile latex moderncv
Éditeur Kile pour créer des documents Latex

Il n’y a pas grand chose à dire sur l’éditeur, il suffit d’écrire le code de son CV puis de cliquer sur PDFLatex pour faire un export au format PDF. Le bouton convert permet de faire un export au format PNG également. Le logiciel est sans doute très complet mais ce sont les deux seules options que j’ai utilisé, avec la partie Journal et messages pour voir les erreurs.

Installer moderncv

Ensuite, vous devez installer le package moderncv. Pour cela, vous avez 2 grandes approches :

  • L’installation propre, au sein de votre logiciel.
  • La méthode « quick and dirty »

Pour la méthode « quick and dirty », il suffit de télécharger le pachage modernCV à cette adresse. Ensuite, vous dézippez l’archive et vous placez tous les fichiers .sty dans le même répertoire que votre projet (votre fichier .tex).

Il est possible qu’il manque certains fichiers sty (des dépendances de moderncv). Dans ce cas, le plus simple (mais toujours aussi « dirty ») consiste à faire une recherche google sur le fichier .sty manquant pour le télécharger. Vous allez souvent tomber sur ce site donc vous pouvez commencer par là pour vos recherches.

Pour la méthode plus propre, il suffit de créer ce répertoire ~/texmf/tex/latex et de placer les fichiers de l’archive de moderncv à l’intérieur. Pour installer cela de manière plus globale, cela dépend de votre système mais généralement c’est dans ce répertoire :  /usr/share/texmf/tex/latex.

Dans mon cas, j’ai du installer un paquet supplémentaire, FontAwesome qui semble être une dépendance de ModernCV (dans certains cas). Le paquet se trouve sur le site CTAN.

Rédiger votre CV

Pour rédiger votre CV en langage Tex, le plus simple est de s’inspirer de l’exemple très exhaustif que l’auteur de l’extension propose. Vous allez voir, c’est assez intuitif comme syntaxe, vous n’avez pas besoin d’apprendre Latex. Cependant, si vous souhaitez apprendre ce langage, je vous conseille le tutoriel sur le site d’OpenClassRoom qui donne une bonne base.

Un guide rapide pour moderncv

Je vais essayer d’expliquer rapidement la plupart des options disponibles dans le package. Mes explications sont entièrement tirés de l’exemple officiel, donc aller directement à la source si vous voulez en apprendre davantage.

\documentclass[11pt,a4paper]{moderncv}
Entête du document Latex ModernCV

Cette première ligne permet de définir le format de votre document. Ici on précise que l’on veut faire un document « moderncv », avec une taille par défaut pour le texte (11pt), format papier A4. Vous pouvez agrandir ou rétrécir le texte en modifiant la valeur (10,11 ou 12pt sont les valeurs possibles selon la documentation), changer le format du papier (ex: letterpaper, landscape) et même changer la police d’écriture utilisée (en ajoutant « sans » ou « roman » comme troisième paramètres entre crochet).

% ma préférence en terme de design
\moderncvtheme[blue]{classic}

% d'autres valeurs possibles
\moderncvstyle{casual}
\moderncvstyle{oldstyle}
\moderncvstyle{banking}

% une autre manière de définir la couleur
\moderncvcolor{orange}
% couleurs possibles : 'blue' (par defaut),
% 'orange', 'green', 'red', 'purple', 'grey' et 'black'
Les options de personnalisations de ModernCV

Ces lignes définissent le style (la mise en forme) de votre CV. Personnellement, j’ai une grosse préférence pour « classic » en bleu, mais je vous recommande d’expérimenter, car votre CV change radicalement en modifiant seulement cette option (regardez les exemples à la fin de cet article).

\usepackage[top=1.1cm, bottom=1.1cm, left=2cm, right=2cm]{geometry}

% Largeur de la colonne pour les dates
\setlength{\hintscolumnwidth}{2.5cm}
Gestion des marges et espacement avec l'extension Geometry

La première ligne permet d’utiliser le package geometry. Dans Latex, ce package permet de contrôler les marges de votre document. Dans mon cas, j’ai décidé de les réduire un peu pour éviter d’avoir un CV sur plusieurs pages.

La seconde ligne permet de modifier la largeur de la colonne des dates (la colonne de gauche).

\maketitle
% Marge négative entre le titre et la partie expérience, pour gagner de la place
\vspace*{-2.5\baselineskip}

\section{Expériences}
Réduire une marge à un endroit particulier

Cette ligne là est pratique, elle permet de réduire une marge à un endroit particulier de votre document. Dans mon cas, je l’utilise pour réduire la marge entre le titre et le début de mon CV.

% Une entête classique
\firstname{Prénom}
\familyname{Nom}
\title{Votre titre (étudiant ou le job désiré)}
\address{adresse}{code postal et ville}
\email{[email protected]}
\homepage{www.votre-site-web.com}
\mobile{06 00 00 00 00}
\extrainfo{une ligne de votre choix, exemple age/permis}

% d'autres valeurs possibles
\phone{00 00 00 00 00}
\fax{00 00 00 00 00}
\extrainfo{infos supplémentaires, ce que vous voulez}
\photo[64pt][0.4pt]{votre_photo}
\quote{une citation}
Partie supérieure du CV avec ModernCV

Le code précédent permet de créer l’entête de votre CV avec votre nom et vos coordonnées. Il n’y a rien de compliquer à comprendre, sachez seulement que vous pouvez ajouter des lignes supplémentaires (exemple concret : pour préciser votre situation ou dire que vous avez le permis) avec \extrainfo.

Je ne suis pas un grand fan des photos dans les CV, mais vous pouvez l’ajouter avec \photo. Je vous recommande 64*64pt pour la taille et vous précisez entre accolade le nom de votre fichier (vous ne préciser pas l’extension). Ce fichier doit se trouver dans le même répertoire que votre projet latex.

\section{Une section}

% pour votre cursus scolaire
\cventry{année--année}{Diplome}{Institution}{Ville}{\textit{Classe}}{Description}
% les {} 3 à 6 sont optionnelles
% exemple
\cventry{2012 -- 2013}{Licence Professionnelle}{IUT Clermont-Ferrand (63)}{}{}{Spécialité Administration et Sécurité des Réseaux}

% pour une expérience pro
\cventry{année--année}{Titre de l'emploi}{Employeur}{Ville}{}{Description de 1 ou 2 lignes.\newline{}%
% exemple avec une liste (un peu plus complexe)
\cventry{Avril 2012\\à Octobre 2012}{Administrateur systèmes}{Vesalis}{Clermont-Ferrand}{France}{
\begin{itemize}%
\item Mise en place d'une solution de répartition de charge sur un serveur IBM Blade Center (~6 serveurs),
\item Proposition d'une architecture de haute disponibilité (HA),
\item Changement d'hébergeur, réinstallation de toutes les applications et services sur un serveur Windows Server 2008 R2
(configuration d'un SVN, serveur web, base de données, FTP),
\item Adaptation du code des applications de la société pour le rendre compatible Linux.\newline{}
\end{itemize}}
Exemple d'une section du CV ModernCV
  • Une « section » permet d’ajouter une grande partie à votre CV. Par exemple, vous aurez une section pour votre cursus scolaire, une autre pour votre expérience etc…
  • On utilise une « cventry » pour ajouter une école (une étape de votre cursus scolaire plutôt), ou une expérience professionnelle (stage, emploi).
  • \begin{itemize}, \item et \end{itemize} permettent de créer une liste à puce
% plein de choses différentes pour présenter vos compétences
\cvitemwithcomment{Compétence}{Niveau}{Commentaire}
\cvdoubleitem{Categorie 1}{XXX, YYY, ZZZ}{Categorie 2}{XXX, YYY, ZZZ}
\cvitem{Quelque chose}{Description}

% une liste
\cvlistitem{Item 1}
\cvlistitem{Item 2}
\cvlistitem{Item 3}

% une double liste
\cvlistdoubleitem{Item 1}{Item 3}
\cvlistdoubleitem{Item 2}{Item 4}
Exemple d'éléments ModernCV

Vous avez plein d’éléments différents pour présenter vos compétences dans votre CV.

Ci-dessous, vous avez un rendu Latex du code précédent, avec le thème « classic/blue » (« A picture is worth a thousand words » comme on dit) :

Rendu du code précédent avec Latex et Moderncv
Rendu du code précédent avec Latex et Moderncv
\textit{Du texte en italique}
\textbf{Du texte en gras}
\underline{Texte souligné}
% Utile pour faire des carractères plus petit, exemple avec le + ou le /
\texttt{Effet texte écrit à la machine à écrire (1920)}
\href{https://blog.madrzejewski.com}{Ceci est un lien}
Italique, gras, souligné, lien avec Latex

Enfin, le code précédent donne des exemples pour écrire du texte en italique, gras, souligné ou pour faire un lien. La dernière commande \texttt simule du texte rédigé à la machine à écrire (les vielles machines, des années 1920 par exemple). Personnellement, je l’utilise pour rendre plus discret/petit les caractères + et /.

Des exemples concrets

Premier exemple concret, voici le code source de mon CV utilisant Latex avec ModernCV . Avant de l’utiliser, par pitié, relisez-vous, j’ai reçu au moins 6 appels d’entreprises ayant acceptés des candidatures car les personnes ont copiés/collés mon CV sans mettre à jour le téléphone/adresse email (j’ai retenu la leçon, j’ai enlevé cela de l’exemple) ….

\documentclass[12pt,a4paper]{moderncv}
\moderncvtheme[blue]{classic}
\usepackage[utf8]{inputenc}
\usepackage[inline]{enumitem}
% Marge aux 4 coins de la page, ici elles sont réduites pour gagner de la place
\usepackage[top=1.0cm, bottom=1.0cm, left=1.6cm, right=1.6cm]{geometry}
% Largeur de la colonne de gauche pour les dates
\setlength{\hintscolumnwidth}{2.7cm}

\firstname{Alexis}
\familyname{Madrzejewski}
\title{Administrateur système / Devops}
\address{2 rue qui n'existe pas}{63000 Clermont-Ferrand}
\email{[email protected]}
\homepage{www.madrzejewski.com}
\mobile{06 00 00 00 00}
\extrainfo{26 ans -- Permis B}

\begin{document}
\maketitle
% Marge négative entre le titre et la partie expérience, pour gagner de la place
\vspace*{-2.5\baselineskip}

\section{Expériences}
\cventry{Mars 2013\\à Aujourd'hui}{Administrateur système}{o2switch}{Clermont-Ferrand}{France}{
\begin{itemize}%
\item Gestion de \texttt{+}200 serveurs Centos\texttt{/}LAMP basé sur cPanel\texttt{/}WHM, \texttt{+}100k sites hébergés
\item \textbf{Développement} : \textit{scripts bash, web html\texttt{/}css\texttt{/}php\texttt{/}mysql, extensions WHM\texttt{/}cPanel}
\begin{itemize}%
\item Exemple de projet, développement d'une extension cPanel permettant aux clients d'activer un cache Varnish personnalisé sur leur site internet.
Permet aussi de changer l'adresse IP associée à un site internet pour des besoins SEO.
\textbf{Technologies utilisées} : \textit{API WHM/cPanel, PHP POO, Composer, Git, Docker, Symfony4, Tests unitaires phpunit, Nginx, Varnish}
\end{itemize}
\item Support client par ticket\texttt{/}téléphone \textit{(demandes variées)}, gestion de la documentation\newline
\end{itemize}}

\cventry{Avril 2012\\à Octobre 2012}{Administrateur système}{Vesalis}{Clermont-Ferrand}{France}{
\begin{itemize}%
\item Mise en place d'une solution de répartition de charge sur un serveur IBM Blade Center
\item Adaptation du code des logiciels \textit{C\texttt{/}C\texttt{+}\texttt{+}} de la société pour le rendre compatible Linux\newline{}
\end{itemize}}

\cventry{Juin 2009\\à Avril 2012}{Création de Tutoriels-video.fr}{}{}{}{
\begin{itemize}%
\item Formations vidéos gratuites en informatique.
Plus d'un \textbf{million de vues} sur les vidéos.
\end{itemize}}

\section{Formations}
\cventry{2012 -- 2013}{Licence Professionnelle}{IUT Clermont-Ferrand (63)}{}{}{Spécialité Administration et Sécurité des Réseaux}
\cventry{2010 -- 2012}{DUT informatique}{IUT Clermont-Ferrand}{}{}{Spécialité systèmes embarqués. Formation orienté Linux\texttt{/}Debian et programmation C}

\section{Certifications}
\cventry{Juillet 2017}{Certification LFCE}{The Linux Foundation}{Valide 2 ans}{\href{https://www.alexis-madrzejewski.com/ressources/lfce-madrzejewski.pdf}{LFCE-1700-0334-0200}}{
Certification \textit{Linux Foundation Certified Engineer} créé par \textit{The Linux Foundation}.
Les compétences testées sont en rapport avec Linux et l'administration système avancé.\newline
}
\cventry{Août 2016}{Certification LFCS}{The Linux Foundation}{Valide 2 ans}{\href{https://www.alexis-madrzejewski.com/ressources/lfcs-madrzejewski.pdf}{LFCS-1600-0922-0100}}{
Certification \textit{Linux Foundation Certified System Administrator}.
}

\section{Compétences en informatique}
\cvdoubleitem{\underline{OS}}{Centos 6\texttt{/}7, Debian, CloudLinux}{\underline{Virtualisation}}{Proxmox, OpenVZ}
\cvitem{\underline{Programmation}}{HTML, CSS, Javascript, PHP, SQL, Bash, C, Silex, Symfony (3\texttt{/}4), Bootstrap (3)}
\cvitem{\underline{Admin. services}}{Apache, Nginx, Varnish, WHM\texttt{/}cPanel, MySQL, Bind, Postfix, Dovecot, Exim}
\cvitem{\underline{Admin. fichiers}}{LVM, mdadm, Cloisonnement Cloudlinux}
\cvitem{\underline{Sécurité}}{Notions SELinux, CSF, iptables, firewalld}
\cvlanguage{\underline{Anglais}}{lu, écrit, parlé -- Toeic 965 \texttt{/} 990}{}

\section{Centres d'intérêt}
\cvitem{}{\href{https://www.youtube.com/results?search_query=Lockpicking}{Lockpicking} \textit{(crochetage)}, \href{https://www.youtube.com/results?search_query=Cardistry}{Cardistry},
Création d'articles et vidéos sur mes sites}
\end{document}

Pour la version PDF : CV Latex ModernCV

Deuxième exemple, l’exemple officiel : source tex, document pdf

N’hésitez pas à poster vos CV dans vos commentaires avec les sources pour encourager d’autres personnes à faire de même !

26 réponses sur « Créer un CV élégant avec Latex et moderncv »

Merci, tout est parfaitement bien expliqué, pour les dernières infos, j’avais utilisé un exemple avec des commandes du style cvlanguage ou cvcomputer mais j’avais des problèmes de mise en page.

Bonjour,

Merci, très bon article. Actuellement je fais des modifications directement sur ton fichier source (.Tex). Mais j’ai un problème, je n’arrive pas à afficher mes publications. J’ai utilisé \bibentry mais ça donne rien, pas d’erreur, mais aucune publication affichée.

Si vous avez des solutions je suis preneur.

Merci d’avance

Bonjour,

Je souhaite utiliser ce joli paquet mais je rencontre des problèmes à la compilation. Il me manque le fichier ‘xparse.sty’.
J’ai essayé de mettre à jour mon miktex, de récupérer le code du fichier pour l’ajouter à mon répertoire courant, de télécharger le paquet duquel il fait nativement parti d’après CTAN… mais rien n’y fait.

si vous avez une idée de la manière de résoudre ce problème je vous en serai reconnaissant.

Cordialement

Bonjour Antoine,

Je suis désolé, mais je n’ai pas de réponse à ce problème. Chaque fois que j’ai eu des fichiers manquants, je me suis contenté de la méthode « bourin », c’est à dire télécharger le sty et le mettre dans mon projet, mais apparemment c’est déjà fait. Mon premier réflexe dans ce cas, serait de vérifier si le logiciel recherche bien des .sty dans le dossier du projet, si ça se trouve non.

Bonjour à toutes et à tous,

Je vous remercie pour l’article et les » templates » mis à la disposition des internautes.
Toutesfois, j’ai une question à vous poser, la compilation de fichier *.tex ne s’exucute pas et s’est dû à un fichier *.sty manquant!
Je sollicite votre aide et vous remercie pour éventuelles ripostes.

Bien cordialement

Bonjour, très bon article pour la prise en main facile du package.
Toutefois j’aurais bien aimé ajouter un pagination, avec un numérotage de page a mon CV et je n’y arrive pas avec les commandes habituelles.
Y’a t-il un manipulation spéciale a faire ou faut t-il modifier le package à la racine pour « récupérer » cette option ?

Merci d’avance

Bonjour ou bonsoir…
« Il est important de savoir dire merci ». C’est sur ce conseil de ma mère que je vous jette des fleurs et que je vous lance tous les applaudissements pour ce que vous faites sur ce site. Du fond du coeur je vous témoigne ici toute ma gratitude. Tout est bien expliqué, le look est réussi et il est facile de se retrouver.

Once again, thanks…

Bonjour,

Est-il possible de supprimer les numéros de page ?
Cela peut être utile pour l’envoi d’un CV seul (ou de la lettre de motivation seulement).

Merci d’avance.

Bonjour Soumeya,

C’est « normal », j’ai eu le même problème. Ma solution est plutôt « quick and dirty », ça consiste à recherche le fichier .sty manquant sur google et à l’ajouter dans le dossier du projet. Au bout d’un moment (après 5-6 fichiers manquants) la compilation fonctionnera.

Pour faire ça proprement, il faudra installer les fichiers .sty dans un dossier spécial utilisé par le programme tex et le compilateur.

Même problème pour moi : à la compilation, TeXMaker me dit qu’il manque xparse.sty, et me propose de le télécharger. Evidemment j’accepte, mais je reçois automatiquement un message d’erreur me disant que xparse.sty est toujours manquant et que la compilation n’a pas pu se faire.
J’ai également téléchargé la version la plus récente possible de TeXMaker, essayé de télécharger « manuellement » le fichier qui manque, mais rien ne fonctionne…
C’est vraiment dommage parce que la présentation est géniale…

Bonjour,
Super tutoriel merci. Toutefois je n’arrive pas à transformer mon fichier en pdf. J’ai installé texnicenter comme recommandé sur le tuto du site du zéro. J’ai aussi ghostscript mais je n’arrive pas à l’utiliser.

Merci d’avance

Bonjour,

j’ai repris le templaté de ce CV en LaTeX pour mettre en forme le mien de manière semblable, toutefois je ne parviens pas à obtenir les petites icônes pour le téléphone et le mail par exemple. J’ai à la place un « H » pour le téléphone et un « B » pour le mail. As-tu une idée de la source du problème ?

Merci 🙂

Bizarre que les espacements entre les titres et les paragraphes soient si mal gérés. :O

À part ça, très beau CV. 😉

Édition : j’ai compris en regardant le code, un « newline » trainait au mauvais endroit. 🙂

Encore une fois, merci d’avoir mis les modèles de CV en licence libre, c’est un beau geste que j’apprécie. 😉

Bonjour, à partir de la 3ème entrée sur l’expérience, je n’arrive pas à continuer, le format de texte n’est plus respecté 🙁
http://puu.sh/2NX93.png

Sauriez-vous comment insérer toutes mes formations? (Dû aux nombreux échanges universitaires…)

Bonjour,

Petite question, ayant découvert très récemment cette classe LaTeX, ayant décider de jeter un œil aux possibilités pour les CV/Lettres de motivation vu l’utilité que ça peut avoir.

La partie CV fonctionne très bien et ne m’a pas causé de « problème ». J’aurais en revanche aimer utiliser également la partie lettre. Celle-ci n’est malheureusement pas très conforme aux « standards » en cours en France niveau présentation (à ma connaissance tout du moins, je peux me tromper), de plus que cela laisse un bas de page un peu vide en cas de lettre « concise ».

Donc si quelqu’un aurait des informations par rapport à ça, s’il avait trouvé quelque chose…. 🙂

PS : Je sais qu’il existe d’autres classes plus dédiées aux lettres (bien que je n’ai pas spécialement d’exemple en tête), mais j’aurais voulu conserver une uniformité entre le CV et la lettre. (Je suis preneur d’autres informations qui pourraient être utiles niveau lettre(s) !)

Bonjour,

Tout d’abord merci pour ce travail remarquable !!

J’ai utilisé votre exemple (source tex, classic bleu) disponible ci-dessus.
Cependant, lorsque je compile tout va bien mais aucun pdf n’est produit et je ne peut rien visualiser ! Avez-vous une solution pour moi svp?

Je vous remercie d’avance.

Bonjour.
Est-il possible de mettre un titre sur plusieurs lignes. Je m’explique, si par exemple je veux mettre mon nom et en dessous:
Étudiant en Master
A la recherche d’un stage de fin d’étude

Comme ceci, c’est-à-dire sur deux lignes. Est-ce possible ?

Bonjour,
Merci pour ce guide bien pratique à utiliser ! J’aurais une petite question : est-il possible de modifier la couleur/taille des caractères de manière ponctuelle dans le template ? Notamment pour augmenter la taille des informations (tel, adresse etc…), ou mettre en noir la citation qui suit le titre ?
Merci beaucoup par avance,

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.