Latex : Personnaliser les titres (chapter)

Partager cet article

Temps estimé pour la lecture de cet article : 31 min

Introduction

Chapitre par défaut sous latex

Chapitre par défaut sous latex

Bien souvent, on utilise latex afin de rédiger des livres ou encore des rapports universitaires ou autres et généralement les auteurs utilisent le style par défaut des chapitres. Mais si vous avez besoin de pouvoir personnaliser pour respecter un thème ou encore tout simplement pour avoir des titres plus jolies et bien sachez que d’autres styles sont disponibles sans avoir à se prendre la tête. Enfin, pour ceux qui veulent aller plus loin nous allons voir, comment on peut créer le style que l’on désire !

Package fncychap

Le package fncychap propose un ensemble de thèmes déjà prédéfinis pour les chapitres de latex. Pour utiliser le package, c’est assez simple, il suffit de préciser le thème à utiliser lors du chargement du package, attention toutefois le style s’écrit toujours en commençant par une majuscule, par exemple :

\documentclass{book}
\usepackage[Lenny]{fncychap}

\begin{document}
\chapter{Fancy title with Latex}
\end{document}

On obtient alors, quelque chose du style pour le thème Lenny :

Package fncychap - thème lenny

Package fncychap – thème lenny

Voici, les autres styles disponibles :

Sonny

Package fncychap - thème sonny

Package fncychap – thème sonny

Glenn

Package fncychap - thème glenn

Package fncychap – thème glenn

Conny

Package fncychap - thème conny

Package fncychap – thème conny

Rejne

Package fncychap - thème rejne

Package fncychap – thème rejne

Bjarne

Package fncychap - thème bjarne

Package fncychap – thème bjarne

Bjornstrup

Package fncychap - thème bjornstrup

Package fncychap – thème bjornstrup

Remarque : Si vous ne précisez pas d’options lors de l’inclusion du package, c’est le thème par défaut de latex qui est utilisé.

Package titlesec

Le package titlesec se veut comme une interface pour pouvoir customiser certaines commandes. On peut par exemple changer le style des titres, des marges, changer la font utiliser pour les titres… Notamment, ici la commande qui va nous intéresser, c’est la commande titleformat dont voici un exemple :

latex-titlesec-blue

Et le code correspondant :

\documentclass{book}
\usepackage[explicit]{titlesec}
\usepackage{lmodern}
\usepackage{lipsum}
\usepackage{color}

\definecolor{darkblue}{rgb}{0.12,0.47,0.87}

\titleformat{\chapter}[display] {\fontsize{17pt}{12pt}\selectfont \bfseries}{\textcolor{darkblue} {\chaptertitlename\ \thechapter: #1}}{20pt}{\Huge}
\titleformat{name=\chapter,numberless}[display] {\fontsize{17pt}{12pt}\selectfont \bfseries}{\textcolor{darkblue} {#1}}{20pt}{\Huge}

\begin{document}
	\chapter{Fancy title with Latex}
  	\lipsum[4]
\end{document}

J’inclus les packages color et lipsum, le premier permet de définir une couleur bleue, selon des valeurs rgb, ce qui me permet donc après un rapide calcul d’obtenir la couleur que je souhaite. Le second package lipsum permet simplement de produire du texte, à la manière du site lorem ipsum petit outil très prisé des développeurs web.

Regardons maintenant en détail la partie qui nous intéresse le plus, il faut savoir que les commandes \chaptertitlename et \thechapter permettent respectivement d’écrire le mot chapitre dans la langue utilisée et l’autre de donner le numéro du chapitre actuel, la variable #1 correspond quant à elle au titre que vous avez donné au chapitre :

\titleformat{\chapter}[display] 
    {\fontsize{17pt}{12pt}\selectfont \bfseries}
    {\textcolor{darkblue} 
    {\chaptertitlename\ \thechapter: #1}}
    {20pt}
    {\Huge}

\titleformat{name=\chapter,numberless}[display] 
    {\fontsize{17pt}{12pt}\selectfont \bfseries}
    {\textcolor{darkblue} 
    {#1}}
    {20pt}
    {\Huge}

La première commande permet de surcharger le style par défaut des chapitres latex, la seconde fait la même chose pour les chapitres sans numéro. Petit aparté pour ceux qui ne le savaient pas, lorsque vous définissez un titre en utilisant la commande \chapter, automatiquement latex se charge de faire correspondre le numéro du chapitre en fonction des titres précédents, toutefois si vous voulez définir un chapitre sans numéro, il suffit de rajouter une étoile après le chapter, comme ceci : \chapter*.

Très de bavardages, voyons maintenant, les différents arguments de la commande titleformat, tiré de la documentation du package titlesec :

  • Les options disponibles permettent de définir la forme du titre, personnellement j’oscille entre display et frame. La première est celle utilisée par défaut par les titres de latex, elle sépare le titre du prochain paragraphe. La seconde permet d’ajouter un cadre autour du titre, il y en a d’autres, mais je trouve que display suffit largement
  • Donc le premier argument de la commande, c’est le format du titre, c’est-à-dire la taille de la police, la font à utiliser…
  • Le second correspond à un label (une étiquette). Ici par exemple je m’en sers pour définir la couleur du texte à afficher.
  • Le troisième argument correspond à la séparation entre notre titre est le corps du document.
  • Les deux derniers arguments permettent d’insérer du code avant ou après le titre

Voici, un autre exemple de titre assez intéressant que j’ai trouvé en naviguant sur internet :

latex-title-number

Et son code correspondant :

\documentclass{book}
\usepackage[explicit]{titlesec}
\usepackage{lmodern}
\usepackage{lipsum}
\usepackage{color}

\newlength\chapnumb
\setlength\chapnumb{3cm}

\titleformat{\chapter}[block] {
  \normalfont\sffamily}{}{0pt} {
    \parbox[b]{\chapnumb}{
      \fontsize{120}{110}\selectfont\thechapter}
      \parbox[b]{\dimexpr\textwidth-\chapnumb\relax}{
        \raggedleft
        \hfill{\LARGE#1}\\
        \rule{\dimexpr\textwidth-\chapnumb\relax}{0.4pt}
  }
}

\titleformat{name=\chapter,numberless}[block]
{\normalfont\sffamily}{}{0pt}
{\parbox[b]{\chapnumb}{%
   \mbox{}}%
  \parbox[b]{\dimexpr\textwidth-\chapnumb\relax}{%
    \raggedleft%
    \hfill{\LARGE#1}\\
    \rule{\dimexpr\textwidth-\chapnumb\relax}{0.4pt}}}

\begin{document}

\chapter*{A Long Title for an Unnumbered Test Chapter}
\lipsum[4]
\chapter{Introduction}
\lipsum[4]

\end{document}

Je ne prendrais pas le temps de vous expliquer en détail ce que fait chaque commande, avec les explications du dessus et en recherchant sur internet vous devriez pouvoir vous en sortir.

Package tikz

Enfin, un exemple d’utilisation du package tikz, que j’avais déjà rapidement abordé dans un autre article. Après un peu d’adaptation du code original, voilà sur quoi on aboutit :

latex-title-tikz

Le code permettant d’obtenir ce résultat :

\documentclass[svgnames]{report}
\usepackage{tikz}
\usepackage{kpfonts}
\usepackage[explicit]{titlesec}
\usepackage{color}
\usepackage{lipsum}

\definecolor{darkblue}{rgb}{0.12,0.47,0.87}

\titleformat{\chapter}
  {\gdef\chapterlabel{}
   \normalfont\sffamily\Huge\bfseries\scshape}
  {\gdef\chapterlabel{\thechapter)\ }}{0pt}
  {\begin{tikzpicture}[remember picture,overlay]
    \node[yshift=-3cm] at (current page.north west)
      {\begin{tikzpicture}[remember picture, overlay]
        \draw[fill=black] (0,0) rectangle
          (\paperwidth,3cm);
        \node[anchor=east,xshift=.9\paperwidth,rectangle,
              rounded corners=20pt,inner sep=11pt,
              fill=darkblue]
              {\color{white}\chapterlabel#1};
       \end{tikzpicture}
      };
   \end{tikzpicture}
  }
\titlespacing*{\chapter}{0pt}{50pt}{-60pt}

\begin{document}
  \chapter{Introduction}
  \lipsum[4]
\end{document}

Je vais décrire très sommairement ce qui est fait ici, si vous voulez plus de détails, je vous laisse regarder l’introduction que j’ai faite sur le package dans un précédent article ou encore la documentation tout simplement !

On définit une figure, qui descendra jusqu’à 3 cm dans la page, à partir de ça, on créé un rectangle partant du point (0,0) jusqu’au point (largeur de la page, 3cm). Ce qui nous permet donc de créer ce rectangle noir, si vous voulez du coup adapter la hauteur du rectangle, il vous suffit de changer, le premier yshift qui est à -3 et la dernière coordonnée du point du rectangle.
Enfin, on affiche les informations sur le chapitre dans une figure différente, un nœud, ce dernier a les bords ronds grâce à l’option rounded corners donc si vous voulez un rectangle plein retirer cette option.

Voilà qui termine mon article, comme vous avez pu le voir, la seule limite c’est votre imagination, amusez-vous et n’hésitez pas à partager vos résultats.

1 comment

  1. Oui à fncychap et à titlesec, avec lesquels on fait des documents sympas.
    La classe document {memoir} fait la même chose et même bcp bcp plus.. (même pour des articles) avec juste l’appel de la classe. 🙂
    une doc de 600 pages !
    le tout intégré dans LaTeX par défaut.
    Un prochain article….? 🙂

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.