LaTeX/Éléments flottants et figures

Un livre de Wikilivres.

Dans le précédent chapitre, l'importation des images a été abordée. Cependant, avoir juste une image coincée entre des paragraphes ne semble pas très professionnel. Pour les novices, nous voulons une manière d'ajouter des légendes, et pouvoir établir des références croisées. Ce dont nous avons besoin est une manière de définir des figures. Il serait également agréable si Latex pouvait appliquer des principes semblables à ceux utilisés quand il traite le texte, à l'arrangement des images, afin que tout paraisse au mieux. C'est ici que les éléments flottants rentrent en jeu.

Les flottants[modifier | modifier le wikicode]

Les éléments flottants se rapportent à tout ce qui, dans un document, ne peut pas être inséré dans une page. Ils se ramènent fondamentalement aux tables et aux figures. Ils exigent un traitement particulier, et le concept de flottant était la solution pour traiter de tels éléments, tout en maintenant la présentation de document aussi « belle » que possible.

Le problème le plus courant est la manifestation d'un manque de place sur le reste d'une page donnée pour placer une figure particulière. Pour surmonter cela, LaTeX fera nager celle-ci jusqu'à la page suivante, tout en remplissant la page courante avec le corps du texte. Comparez cela avec ce qui se produit sous MS Word, par exemple. Si une image est ajoutée mais est trop grande pour s'adapter à la page courante, il la placera sur la prochaine page, mais laissera un grand espace, au lieu de réarranger le texte aux alentours pour remplir l'espace. Cela exige beaucoup de manipulations délicates pour rectifier, alors que LaTeX prend en charge tout ceci automatiquement.

Les figures[modifier | modifier le wikicode]

Pour créer une figure, vous devez employer l'environnement figure (La Palice).

\begin{figure}[paramètre indiquant le placement] 
  ... corps de la figure ...  
\end{figure}

Dans la section précédente, j'expliquais comment des éléments flottants pouvaient être utilisés pour permettre au Latex de manipuler des figures, tout en maintenant la meilleure présentation. Cependant, il se peut que vous soyez en désaccord avec par exemple le positionnement des figures. Dans ce cas, il existe un paramètre du prescripteur de placement, qui vous donne un plus grand degré de contrôle de placement des éléments flottants.

Paramètre de position Permission
h Place le flottant ici, c'est-à-dire à l'endroit auquel il apparaît dans le texte source.
t Position en haut de la page.
b Position en bas de la page.
p Place sur une page particulière réservée aux flottants.
! Passe outre les paramètres internes que Latex utilise pour déterminer une position optimale des flottants.

Les permissions de placement vous permettent d'indiquer les options que vous souhaitez rendre disponibles au Latex. Ce sont simplement des possibilités, et Latex décidera quand il composera votre document lequel de vos prescripteurs fournis sera le meilleur.

Dans le cas ou vous avez beaucoup de flottants pour peu de texte et que LaTeX éloigne les flottants de leur contexte, la commande \FloatBarrier du paquet placeins permet de vider le tampon de flottants actuellement stockés, et donc de positionner tous les flottants déjà déclarés avant de poursuivre le document.

Les tableaux[modifier | modifier le wikicode]

Bien que les tableaux aient été déjà abordés, nous n'avions discuté que de la syntaxe interne. L'environnement tabular qui a été employé pour construire les tableaux n'est pas un élément flottant par défaut. Par conséquent, si vous souhaitez laisser flotter des tableaux vous devez envelopper l'environnement tabular avec un environnement table, comme ceci:

\begin{table}
  \begin{tabular}{...}
  ... données du tableau ...
  \end{tabular}
\end{table}

Vous avez peut-être l'impression que tout cela est un peu trop enveloppé, mais de telles distinctions sont nécessaires, parce que vous ne voulez pas forcément que tous les tableaux soient traités comme des flottants.

Les légendes[modifier | modifier le wikicode]

C'est toujours une bonne habitude d'ajouter une légende à n'importe quelle figure ou tableau. Heureusement, c'est très simple avec LaTeX. Tout ce que vous avez besoin de faire est d'employer la commande \caption{texte} dans l'environnement de l'élément flottant. En raison de la façon dont Latex travaille avec les structures logiques, il maintiendra automatiquement la numérotation des figures, ainsi vous n'avez nul besoin de l'inclure dans le texte de la légende.

La position de la légende est traditionnellement sous l'élément flottant. Cependant, il vous appartient d'insérer la commande de légende après le contenu même du flotteur (mais toujours dans l'environnement). Si vous le placez avant, alors la légende apparaîtra au-dessus du flotteur. Essayez l'exemple suivant pour montrer cet effet (voyez [tutorial6/legende.tex legende.tex] et [tutorial6/legende.pdf legende.pdf])

\begin{figure}
  \caption{Une image d'un toucan.}
  \centering
  \includegraphics{toucan.eps}
\end{figure}
\begin{figure}
  \centering
  \reflectbox{\includegraphics{toucan.eps}}
  \caption{Une image du même toucan regardant de l'autre côté!}
\end{figure}

Le package babel détermine le nom générique donné aux tableaux et aux figures dans la commande caption. Par défaut avec l'option \usepackage[french]{babel}, on obtient 'FIG -' et 'TAB -'. On peut modifier ces paramètres en ajoutant dans le préambule après le package babel les deux lignes suivantes :

\addto\captionsfrench{\def\figurename{Graphique}}
\addto\captionsfrench{\def\tablename{Tableau}}

ou

\addto\captionsfrench{\def\figurename{Graphique}\def\tablename{Tableau}}

Les étiquettes et les références croisées[modifier | modifier le wikicode]

C'est une bonne occasion d'introduire les étiquettes. Leur utilité en Latex est d'agir comme un marqueur qui peut être référencé à n'importe quel endroit de votre document. Il est très fréquent de devoir se rapporter à chacune des figures, dans le corps du texte. Cependant, vous n'aimeriez pas garder en mémoire leur numéro, ainsi vous pouvez employer une étiquette à la place, et laissez Latex la remplacer automatiquement par le numéro correct de la figure.

Pour ajouter une étiquette, vous devez inclure la commande suivante:

\label{marqueur}.

Pour ensuite référencer une étiquette : \ref{marqueur}.

Une autre solution serait d'utiliser une référence de page: \pageref{marqueur}.

\begin{figure}
  \centering
  \reflectbox{\includegraphics{toucan.eps}}
  \caption{Une image du même toucan regardant dans l'autre sens!}
  \label{toucan}
\end{figure}
La figure~\ref{toucan} montre une photographie de toucan.

Quand une étiquette est déclarée dans un environnement flottant, la commande \ref renvoie le numéro de figure/tableau correspondant (bien que, celui-ci puisse apparaître après la légende). Quand celle-ci est déclarée en dehors, la commande renvoie le numéro de section.

Le tilde (~) dans l'exemple ci-dessus est un symbole spécial en Latex. Il représente un espace insécable. Il est utile ici parce qu'il garde « figure » et le numéro quel qu'il soit auquel \ref se rapporte comme un tout, et ne les coupera pas sur une ligne ou une page lors de la production du document.

Enveloppement des figures[modifier | modifier le wikicode]

Bien que ce ne soit pas normalement utile dans le cadre de l'écriture d'un ouvrage scolaire, un auteur pourrait préférer que certains éléments flottants ne brisent pas le déroulement du texte, mais qu'au lieu de cela, permettent au texte de s'enrouler autour de ceux-ci. Évidemment, cet effet semble réalisable uniquement lorsque la figure en question est sensiblement plus étroite que la largeur du texte. Le paquet wrapfig a été conçu pour effectuer cette tâche.

Pour employer wrapfig, vous devez d'abord ajouter \usepackage{wrapfig} au préambule. Ceci vous donne alors accès à la commande \begin{wrapfigure}{alignement}{largeur}.

alignement peut être soit l pour la gauche, ou r pour la droite.

La largeur est évidemment la largeur de la figure. Un exemple:

\begin{wrapfigure}{r}{40mm}
  \centering
  \includegraphics{toucan.eps}
  \caption{Le toucan}
\end{wrapfigure}

Fichier:Enveloppement.png


Notez que l'environnement wrapfigure est en fait un élément non flottant. Cela signifie qu'il peut vous demander un certain soin afin que votre figure insérée ne passe pas au delà des coupures de page. L'environnement peut être rendu flottant en utilisant une majuscule (L ou R) pour alignement.

Sous-figures[modifier | modifier le wikicode]

Une extension utile est subcaption, qui remplace les extensions subfig et subfigure depuis la distribution TeXLive 2011. Ce paquet donne au rédacteur la possibilité d'insérer des figures dans des figures. Les sous-figures ont leur propre légende, disposent aussi d'une légende globale facultative. Voici un exemple qui en illustre l'utilisation.

\usepackage{subcaption}
...
\begin{figure}[htp]
  \centering
  \begin{subfigure}[b]{0.3\textwidth}
     \centering \includegraphics{toucan.eps}
     \caption{Image d'origine}
     \label{fig:edge-a}
  \end{subfigure}
  \hspace{5pt}
  \begin{subfigure}[b]{0.3\textwidth}
     \centering \includegraphics{laplace_toucan.eps}
     \caption{Après une détection des contours de Laplace}
     \label{fig:contour-b}
  \end{subfigure}
  \hspace{5pt}
  \begin{subfigure}[b]{0.3\textwidth}
     \centering \includegraphics{sobel_toucan.eps}
     \caption{Après une détection des contours de Sobel}
     \label{fig:contour-c}
  \end{subfigure}
  \caption{Différents algorithmes de détection des contours}
  \label{fig:contour}
\end{figure}

Les extensions subfig ou subfigure utilisaient une commande \subfloat ou \subfigure au lieu d'un environnement subfigure, mais le principe était similaire.