Le besoin
Dans mon mémoire, je souhaite intégrer une carte de l’Afrique Romaine. Je souhaiterais donc avoir un flottant « carte ». En outre, étant donné le format de la carte, il fallait que j’oriente mon flottant dans le sens de la hauteur de page, et non de la largeur, c’est à dire que ma légende soit basculée à la verticale.
Dans mon cas, j’avais pris une carte sur l’Encyclopædia Universalis, mais dans cet article, pour des raisons de précautions vis-à-vis des droits d’auteurs, je prend appui sur une carte de Wikimédia.
Créer un nouveau flottant
Par défaut, LaTeX propose deux types de flottant :
- tableau, insérable avec
\begin{table} … \end{table}
. - figure, insérable avec
\begin{figure} … \end{figure}
.
Je souhaitais donc en créer un nouveau, carte, insérable avec \begin{carte}… \end{carte}
. J’aurais certes pu choisir de détourner un des types standard, en modifiant la chaîne de langue, mais outre que cela n’était pas très satisfaisant du point de vue méthodique, j’avais aussi besoin de garder les types standards.
J’ai donc fait appel au package float
pour en créer de nouveau. Dans ce package, je me sert de deux commandes :
-
\newfloat
qui permet de créer des nouveau flottants et qui prend les arguments suivants :-
type
qui est le type du nouveau flottant à créer. -
placement
qui indique le placement par défaut du flottant, en utilisant l’un des paramètres de positions disponibles. -
extension
qui est l’extension du fichier externe dans lequel sera stocké la table de ce niveau type de flottant (par exemple, si j’avais souhaité avoir une table des cartes). - paramètre facultatif :
dans
. On indique là un niveau de titre (chapter, section etc.) qui sert pour la numérotation des flottants. Par exemple, si on indiquechapter
, la numérotation sera de la forme « numéro de chapitre . numéro du flottant au sein du chapitre ». Dans mon cas, je n’avais pas besoin de cela.
-
-
\floatname
qui reçoit en premier argument le type du flottant et en second son nom, tel qu’il apparaît dans la légende.
Concrètement, dans mon cas, cela donne :
\usepackage{float}
\usepackage{graphicx}
\newfloat{carte}{h}{carte}
\floatname{carte}{Carte}
Avec cela, est créé un environnement carte
, qui est un flottant. Je peux donc intégrer ma carte, en appelant au préalable le package graphicx
qui permet d’inclure des fichier .jpg
, .pdf
ou .png
. Je peux évidemment mettre une légende.
\begin{carte}
\includegraphics{afrique.png}
\caption{L'Afrique Romaine, extrait de xxx}
\end{carte}
Ce qui donne le résultat suivant :
Rotation de la carte
Pour permettre d’avoir la carte en entier sans la réduire trop, il faudrait que je la tourne de 90°.
Je ne souhaite pas modifier le fichier originel ni utiliser la possibilité de tourner l’image offerte par graphicx [1]
En effet, je souhaite conserver la convention qui veut que le Nord soit situé en haut de la carte.
Il faut donc que la légende tourne « en même temps » que la carte.
Pour ce faire, je vais utiliser le package rotating
qui permet d’avoir des flottants tourner. Pour chaque flottant xxx
est créé un flottant sidewaysxxx
permettant d’avoir une orientation dans le sens de la hauteur et non dans celui de la largeur.
Pour que cela puisse fonctionner avec les nouveaux flottants, il faut que ceux-ci soient déclarés après l’appel au package.
Ce qui donne donc dans le préambule :
\usepackage{float}
\usepackage{rotfloat}
\newfloat{carte}{!}{car}
\floatname{carte}{Carte}
Et dans le corps du document :
\begin{sidewayscarte}
\includegraphics{afrique.png}
\caption{L'Afrique Romaine, extrait de xxx}
\end{sidewayscarte}
On obtient alors :
Réduire automatiquement l’image
Mon image étant très large, elle dépasse. Je souhaite la réduire, de telle sorte que la largeur avant la rotation soit égale à la hauteur proposé au texte sur une page.
La hauteur proposé à un texte sur une page est défini par la longueur \textheight
. Je peux passer une option lors de l’appel à la commande includgraphics
pour réduire automatiquement la largeur :
\includegraphics[width=largeur souhaitée]{fichier}
Ainsi, mon appel au flottant se fait donc de la manière suivante :
\begin{sidewayscarte}
\includegraphics[width=\textheight]{afrique.png}
\caption{L'Afrique Romaine, extrait de xxx}
\end{sidewayscarte}
Et j’obtiens au final :