> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/fr/autres-sujets/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md).

# Comment écrire un fichier de classe LaTeX et concevoir votre propre CV (partie 1)

Partie 1 | [Partie 2](/latex/fr/autres-sujets/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)

**Auteur : James Allen (mars 2011)**

Tout le monde veut un CV d’aspect professionnel, et il ne manque pas de modèles LaTeX qui peuvent vous en fournir un. Si vous êtes comme moi, cependant, vous voudrez posséder votre CV et le personnaliser. Cela signifie que vous devez pouvoir en modifier vous-même l’apparence et le style, ce qui peut être notoirement difficile en LaTeX. Dans cette série d’articles de blog, j’espère vous guider dans la création de votre propre fichier de classe personnalisé et vous montrer qu’il peut être facile de mettre en forme votre CV exactement comme vous le souhaitez. Nous nous concentrerons sur un style de CV, mais les méthodes seront identiques pour tout type de document.

### Qu’est-ce qu’un fichier de classe ?

Quand vous écrivez `\documentclass{article}` dans votre fichier LaTeX, vous incluez le fichier de classe `article.cls`. Cela définit toutes les commandes comme `\section` et `\title` qui servent à structurer votre document. Cela configure aussi la manière dont ces commandes affectent le format et la mise en page de la page.

### Créer votre propre fichier de classe

La manière la plus élégante de personnaliser le format d’un document consiste à conserver toutes ces informations dans un fichier de classe personnel. Cela permet de séparer clairement la structure de votre document de sa mise en forme et facilite la réutilisation. C’est facile à mettre en place, alors créez un document appelé cv.tex avec le contenu suivant :

```latex
\documentclass{my_cv}
\begin{document}
\section{Formation}
\subsection{Université de Nulle Part}
\section{Travail}
\subsection{ABC Limited.}
\end{document}
```

Cela tente de charger votre fichier de classe personnalisé `my_cv.cls`, qui n’existe pas encore. Créez `my_cv.cls` dans le même répertoire que `cv.tex` et écrivez-y la ligne suivante :

```latex
\LoadClass{article}
```

Si vous compilez votre document maintenant, vous devriez voir les en-têtes dans le style article par défaut.

Alors, que s’est-il passé ici ? Les fichiers de classe doivent contenir beaucoup d’informations de mise en forme et de configuration interne pour faire fonctionner LaTeX correctement, mais nous ne voulons pas avoir à tout saisir manuellement. À la place, nous pouvons baser notre nouveau fichier de classe sur `article.cls`. Nous utilisons `\LoadClass` d’inclure `article.cls` et chargeons toutes les commandes et tous les styles qui y sont définis. Notez que nous n’utilisons pas la commande habituelle `\documentclass` pour inclure `article.cls` parce que `\documentclass` ne doit être appelée qu’une seule fois, tout au début de votre document LaTeX.

### Informer LaTeX de votre classe

Tous les fichiers de classe doivent commencer par deux lignes semblables aux suivantes, que vous devez ajouter en haut de `my_cv.cls` maintenant :

```latex
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{my_cv}[2011/03/26 Ma classe CV personnalisée]
```

Le `\NeedsTeXFormat` les commandes indiquent au compilateur quelle version de LaTeX est visée par le package. La version actuelle de LaTeX est LaTeX2e et presque toutes les distributions l’utilisent.

Le `\ProvidesClass` commande donne au compilateur quelques informations sur votre package. Le premier argument doit correspondre au nom de fichier de votre fichier de classe et indique à LaTeX comment votre package s’appelle. Le second argument est facultatif et fournit une description de votre classe, qui apparaîtra dans le journal et ailleurs. La description doit commencer par une date exactement au format ci-dessus, et il doit s’agir de la date de la dernière modification du package. Cela peut être utilisé, lors de l’inclusion de la classe, pour vérifier que vous disposez d’une version suffisamment récente. Par exemple, si vous l’incluez via `\documentclass{my_cv}[2012/01/01]` avec une date plus récente que celle figurant dans la description de la classe, un avertissement s’affichera indiquant que la classe est obsolète.

### Modifier les titres de section

Les titres de section standard de l’article ne conviennent pas vraiment à un CV, donc nous aimerions les remplacer par quelque chose de plus élégant. Pour cela, nous pouvons redéfinir la commande `\section` pour afficher un en-tête personnalisé.

Heureusement, il existe déjà un excellent package appelé `titlesec` qui offre un moyen simple de personnaliser nos styles d’en-tête. Incluez-le dans votre fichier de classe avec :

```latex
\RequirePackage{titlesec}
```

Notez que nous devons utiliser `\RequirePackage` plutôt que la commande habituelle `\usepackage` car nous sommes dans un fichier de classe. La `\RequirePackage` commande garantit que chaque package n’est chargé qu’une seule fois, même s’il est appelé plusieurs fois depuis différents fichiers de style et de classe.

Le `titlesec` package fournit la commande `\titleformat` qui nous permet de personnaliser nos titres de section. Ajoutez ce qui suit à la fin de `my_cv.cls` pour personnaliser le format du titre :

```latex
\titleformat{\section}         % Personnalise la commande \section
  {\Large\scshape\raggedright} % Rend les en-têtes de section grands (\Large),
                               % en petites capitales (\scshape) et alignés à gauche (\raggedright)
  {}{0em}                      % Peut servir à donner un préfixe à toutes les sections, comme « Section ... »
  {}                           % Peut servir à insérer du code avant le titre
  [\titlerule]                 % Insère une ligne horizontale après le titre
```

Si nous compilons `cv.tex` maintenant, nous verrons que nous avons des en-têtes principaux plus adaptés à un CV :

![Screenshot1.png](/files/d0facfb03d4d7ad4f6a1669962f738ce80a65e17)

Nous pouvons aussi personnaliser les en-têtes de \subsection :

```latex
\titleformat{\subsection}
  {\large\scshape\raggedright}
  {}{0em}
  {}
```

Les sous-sections ont maintenant le même style :

![Screenshot2.png](/files/e8d6ab97190744999e66cc3e81c3901c4a756dc2)

Vous devriez essayer certaines des options de mise en forme disponibles pour voir ce que vous préférez :

* `\bfseries`, `\itshape`: rendre le titre gras ou italique ;
* `\scshape`: petites capitales ;
* `\small`, `\normalsize`, `\large`, `\Large`, `\LARGE`, `\huge`, `\Huge`: définir la taille de police ;
* `\rmfamily`, `\sffamily`, `\ttfamily`: définir le type de police en serif, sans serif ou chasse fixe, respectivement.

### Ajouter des dates aux titres de section

Nous pouvons définir de nouvelles commandes qui nous permettent d’inclure des dates dans nos titres de section. Ajoutez ce qui suit dans votre fichier de classe :

```latex
\newcommand{\datedsection}[2]{%
  \section[#1]{#1 \hfill #2}%
}
\newcommand{\datedsubsection}[2]{%
  \subsection[#1]{#1 \hfill #2}%
}
```

Cela définit deux nouvelles commandes `\datedsection` et `\datedsubsection` qui prennent deux arguments : le nom de la section, comme auparavant, et une date qui sera composée à droite de la page. La commande `\hfill` indique à LaTeX de remplir autant d’espace que possible et pousse donc le second argument (`#2`) vers la droite de la page. Modifiez `cv.tex` pour utiliser ces commandes :

```latex
\documentclass{my_cv}

\begin{document}

\section{Formation}
\datedsubsection{Université de Nulle Part}{2004--2008}
J’ai étudié à l’Université de Nulle Part de 2004 à 2008.

\section{Travail}
\datedsubsection{ABC Limited.}{2008--Now}
J’ai travaillé chez ABC Limited à partir de 2008.

\end{document} ​
```

Notre CV contient maintenant des dates :

![Screenshot3.png](/files/119595570257abf9105ff174f029ea190a68ad12)

### Conclusion

C’est tout pour la première partie de ce guide, mais j’espère avoir couvert suffisamment de choses pour que vous puissiez vous lancer et commencer à créer des fichiers de classe utiles. Il n’a pas fallu beaucoup de commandes pour créer ce qui ressemble déjà à un modèle de CV raisonnable, et nous n’avons qu’effleuré la surface de tout ce que nous pourrions encore personnaliser. Dans les prochaines parties de ce guide, je parlerai de la transmission d’options à votre classe pour la configurer, de la création d’un joli titre et de la façon de définir quelques options générales de mise en page.

Merci d’avoir lu !

Notez que je suis moi-même relativement novice dans la création de fichiers de classe, donc si quelqu’un peut signaler de meilleures façons de faire les choses mentionnées ici, merci de me le faire savoir.

Partie 1 | [Partie 2](/latex/fr/autres-sujets/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/fr/autres-sujets/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
