Latex : Réaliser une page de garde personnalisé grâce au package titlepage

Partager cet article

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

Aujourd’hui, on va parler de latex et de plus précisément, les pages de garde ! Récemment, j’ai dû réaliser un rapport de stage pour mon école, cette dernière impose une certaine mise en forme. Habitué à écrire mes rapports avec latex, j’ai donc dû respecter cette norme et réaliser ma propre page de garde, ce qui peut-être assez long à faire. Même si vous débutez avec latex, après cet article, vous devriez être à même de créer votre page de garde. Tout d’abord un aperçu du résultat final !

latex-page-garde

Et le code correspondant à cette page :

\documentclass[a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{graphicx}
\usepackage{fullpage}
\usepackage{eso-pic}

\newcommand{\HRule}{\rule{\linewidth}{0.5mm}}
\newcommand{\blap}[1]{\vbox to 0pt{#1\vss}}
\newcommand\AtUpperLeftCorner[3]{%
  \put(\LenToUnit{#1},\LenToUnit{\dimexpr\paperheight-#2}){\blap{#3}}%
}
\newcommand\AtUpperRightCorner[3]{%
  \put(\LenToUnit{\dimexpr\paperwidth-#1},\LenToUnit{\dimexpr\paperheight-#2}){\blap{\llap{#3}}}%
}

\title{\LARGE{Stage chez Google France}}
\author{\textsc{Smith} John\\1A Spécialité Informatique\\Année universitaire 2013/2014}
\date{\today}
\makeatletter

\begin{document}

\begin{titlepage}
	\enlargethispage{2cm}

	\AddToShipoutPicture{
	 	\AtUpperLeftCorner{1.5cm}{1cm}{\includegraphics[width=4cm]{data/google.jpg}}
		\AtUpperRightCorner{1.5cm}{1cm}{\includegraphics[width=6.5cm]{data/ensi.jpg}}
	}

	\begin{center}
		\vspace*{10cm}

		\textsc{\@title}
		\HRule
		\vspace*{0.5cm}

		\large{\@author} 
	\end{center}

	\vspace*{9.2cm}

	\begin{center}
		\makebox[\textwidth]{\includegraphics[width=\paperwidth]{data/footer.jpg}}
	\end{center}

\end{titlepage}
\ClearShipoutPicture

\end{document}

Voyons dans l’ordres les différents packages ou les différentes fonctions utilisés afin d’obtenir ce résultat.

Fullpage

Le package fullpage permet de réduire les marges par défaut utilisé par latex, qui on peut se l’avouer sont un peu grandes. Voici la mise en page de base d’une page latex.

Latex - Mise en page

Latex – Mise en page

Et voici, cette même mise en page, après l’utilisation du package fullpage.

Latex - Mise en page fullpage

Latex – Mise en page fullpage

Tout ce que vous avez à faire, c’est d’inclure le package fullapge comme ceci :

\usepackage{fullpage}

Les images viennent de cet article.

La commande enlargethispage

Malgré, le package précédent qu’on vient d’inclure, on a encore une marge assez importante en bas de page qui fera sauter rapidement votre footer (bas de page). Afin d’éviter cela il existe la commande \enlargethispage qui va vous permettre de diminuer les marges de bas de page pour la page courante, ainsi ici pour pouvoir faire coller notre logo vraiment en bas de page, on agrandit un peu la hauteur de cette dernière.

\enlargethispage{2cm}

Titlepage

Afin de pouvoir définir une page de titre personnalisé, une solution possible est l’environnement titlepage. Le contenu de cette page sera alors placé sur une page non numérotée et le compteur de page sera remis à zéro.

La commande \makeatletter sert à indiquer à LaTeX que l’on va utiliser les commandes internes appelées grâce à l’@. Vous l’aurez donc compris, grâce à ce makeatletter, les fonctions\author{}, \title{} et \date{} peuvent être utilisés.

Eso-pic

Le package eso-pic permet d’insérer des images sur le fond d’une page, pratique donc par exemple pour réaliser un filigrane. Ici, on va s’en servir afin de placer des logos, dans notre exemple, le logo google et celui de mon école l’ENSICAEN. Pour ce faire on va définir plusieurs commandes qui vont nous permettre de placer les éléments à en haut à gauche, en haut au centre et à en haut à droite de la page.

\newcommand{\blap}[1]{\vbox to 0pt{#1\vss}}

\newcommand\AtUpperLeftCorner[3]{%
  \put(\LenToUnit{#1},\LenToUnit{\dimexpr\paperheight-#2}){\blap{#3}}%
}

\newcommand\AtTopCenterPage[2]{%
  \put(\LenToUnit{.5\paperwidth},\LenToUnit{\dimexpr\paperheight-#1}){\blap{\hbox to 0pt{\hss#2\hss}}}%
}


\newcommand\AtUpperRightCorner[3]{%
  \put(\LenToUnit{\dimexpr\paperwidth-#1},\LenToUnit{\dimexpr\paperheight-#2}){\blap{\llap{#3}}}%
}

Afin de placer les images, on doit utiliser la fonction AddToShipoutPicture du package.

\AddToShipoutPicture{%
  \AtUpperLeftCorner{1cm}{1cm}{\includegraphics[width=5cm]{logo1}}
  \AtTopCenterPage{1cm}{\includegraphics[width=5cm]{logo2}}
  \AtUpperRightCorner{1cm}{1cm}{\includegraphics[width=5cm]{logo3}}
}

Enfin, si on ne précise pas au package la fonction \ClearShipoutPicture, les fonds vont se répéter sur toutes les pages pour éviter cela, on déclare la fonction juste après la fermeture de l’environnement titlepage.

\ClearShipoutPicture

Makebox

La commande makebox permet de spécifier la largeur d’une « boite » et la position du texte à l’intérieur par le biais de deux options. C’est cette commande qui me permet de placer une image sur toute la largeur de la page ! La forme générale de la commande est :

\makebox[Largeur][Position]{Texte}

La première option est la largeur de la boite, la seconde option est la position du texte dans la boite, par défaut, quand on ne spécifie rien, le texte est centré. Sinon, on peut mettre les valeurs suivantes :

  • l : Pousse le texte contre le bord gauche de la boite
  • r : Pousse le texte contre le bord droit de la boite
  • s : Pour que le texte occupe toute la largeur de la boite
\makebox[5cm]{Centré}
\makebox[5cm][l]{Texte à gauche}
\makebox[5cm][r]{Texte à droite}
\makebox[5cm][s]{Toute la largeur}

Alignement

Ici, le logo de mon école contenant déjà le texte, je n’ai pas besoin d’en insérer. Si vous, vous en avez besoin, il faut savoir que par défaut LaTeX justifie les paragraphes, pour changer cela, c’est assez simple, il existe quelques environnements dédiés à l’alignement. Ces environnements sont très simples, il s’agit de flushleft et flushright pour aligner respectivement à gauche et à droite et center pour centrer.

\begin{flushleft}
Un petit texte aligné à gauche
\end{flushleft}
 
\begin{flushright}
Un petit text aligné à droite
\end{flushright}
 
\begin{center}
Un petit text centré
\end{center}

La commande hrule

\hrule width height depth 

Cette commande commence par terminer la paragraphe courant et insère ensuite une ligne horizontale. Si on ne spécifie aucune des options, la ligne horizontale occupe toute la largeur de la page.

Par exemple pour une ligne de 2 cm de long :

\hrule width 2cm

Espace

Il est également possible d’insérer un espace horizontal ou vertical à l’aide des commandes respectives \hspace{taille} et \vspace{taille}, la taille pouvant notamment être exprimée en mm et cm. L’espace créé peut être un peu compressé par LaTeX pour des questions de mise en page. Pour insérer un espace incompressible, il suffit d’ajouter un astérisque à la commande :

\vspace*{7mm}

Pour finir, les commandes magiques : \vfill et \hfill. A l’appel de ces commandes, LaTeX va mettre l’espace le plus grand possible afin de remplir tout l’espace restant. Ainsi, si vous voulez aligner verticalement deux images, tout en les plaçant de part et d’autre de la page :

\includegraphics[height=0.1\textheight]{test.png}
\hfill
\includegraphics[height=0.1\textheight]{test.jpg}

De même, si vous voulez placer un élément (du texte, une image etc.) en bas de page, un \vfill juste avant l’élément fera l’affaire.

Voila, une bonne introduction en la matière. Bon courage à tous pour vos modifications !

4 comments

  1. Nickel, je venais de passer plus de 5 heures sur google, duckduckgo, …… à rechercher des tutos pour faire la page de garde en latex quand, comme par magie, je suis tombé sur ce tuto. Tout sa pour te dire que ton tuto est simple, claire et précis.
    Merci donc

  2. Bonsoir,

    Ou as-tu trouvé la vague du milieu? je pensais que tu l’avais construite mais je vois que c’est un « logo », j’aimerais bien l’utiliser aussi…

    Merci d’avance et beau boulot!

  3. Bonjour,
    je suis débutant en latex et je profite de votre site pour améliorer mes compétences en la matière par l’exemple.
    Est-ce que quelqu’un pourrait m’expliquer la commande suivante se trouvant dans le code ci-dessus :
    \newcommand{\blap}[1]{\vbox to 0pt{#1\vss}}
    c’est la partie après  » \vbox  » qui me pose problème
    merci d’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.