Didacticiel :
LaTeX : les flottants !

Chose promise, chose due dans le précédent article voilà les flottants dans LaTeX

Les flottants sont l'ensemble des éléments qui perturbent le flot du texte (pour faire simple) et désignent classiquement les tables et les figures ;on peut définir des environnements custom de flottants, mais on y reviendra dans un autre article ;).

Les flottants « nagent » dans le texte, et vont se positionner là où il faut pour que la lecture soit fluide. Cela a un avantage certain de beauté et de cohérence par rapport à de bêtes tableaux et de bêtes graphiques inclus sans pouvoir bouger :).

Accrochez-vous, vous allez découvrir plein de trucs chouettes mais un peu difficile.

Les tables

Commençons par les tables. Avant d'apprendre à faire des tables, il va falloir apprendre à faire des tableaux pour remplir cet environnement, sans quoi cela n'aurait que peu d'intérêt. C'est parti !

Les tableaux de base

Pour faire des tableaux « de base » on a besoin de l'environnement tabular  à qui l'on va spécifier le nombre de colonnes en lui disant comment aligner le texte de la cellule.

On procède ainsi :

Et l'on obtient ceci :

Un tableau représentant les saisons et leurs dates de début et de fin

Un tableau représentant les saisons et leurs dates de début et de fin

On remarquera que les 4 c . Ils indiquent que je souhaite que le texte de chacune des 4 colonnes soit centré horizontalement. Voilà comment produire les autres types d'alignements :

  • l  (comme left) pour aligner le texte à gauche
  • r  (comme right) pour aligner le texte à droite
  • c  (comme center) pour centrer le texte

Maintenant vous souhaitez peut-être marquer les lignes des cellules de vos tableaux. Pas de panique, c'est possible, regardez cet extrait de code :

Ce qui donne le résultat suivant :

Tableau des saisons présentant des barres séparant les cellules

Tableau des saisons présentant des barres séparant les cellules

Bien entendu, vous placez le nombre de pipes entre les colonnes et le nombre de \hline  entre les lignes que vous souhaitez 🙂 Expérimentez jusqu'à ce que vous trouviez un truc qui vous plaise !

Vous pouvez également ajouter à votre preambule.tex la ligne suivante :

Qui vous permet d'utiliser de nouvelles commandes décrites dans les commentaires. Cela donne :

Tableau des saisons en utilisant les règles du paquet booktabs

Tableau des saisons en utilisant les règles du paquet booktabs

L'environnement table

Maintenant que l'on sait faire des tableaux, rendons les flottants pour plus de beauté ! Il va falloir utiliser l'environnement table  ce qui va nous permettre, à terme, de faire une table des tables, de leur mettre des légendes et de faire du référencement.

Pour cela, c'est tout simple, il suffit d'encapsuler le tableau dans cet environnement, ainsi :

Alors là on a découvert plein de trucs d'un coup. Commençons par le commencement : on a encapsulé le tabular  dans l'environnement table  en précisant en paramètre [h] ce qui veut dire que l'on souhaite que la figure soit positionnée ici. Voici la liste des paramètres que l'on peut utiliser :

  • h  (pour here) place le flottant à l'endroit où il apparaît dans le texte
  • t  (pour top) place le flottant en haut de la page
  • b  (pour bottom) place le flottant en bas  de la page
  • p  (pour page) place le flottant sur un page dédiée aux flottants

Bon, je vous préviens, les flottants, comme leur nom l'indique sont flottants, et vont aller se balader là où LaTeX va décider qu'il est approprié de les mettre, pour économiser la place. Ne vous arrachez pas trop les cheveux et laissez-vous faire.

On a également découvert la commande \centering  qui permet de centrer le tableau dans l'environnement de flottants, la commande \caption  qui permet d'ajouter une légende au flottant ainsi que la commande \label  qui permet de mettre une référence que l'on pourra utiliser plus tard dans le texte en utilisant la commande \ref qui est dans le texte situé au dessous du tableau. Pour que les références s'affichent, n'oubliez pas de compiler 2 fois, comme pour la table des matières.

Vous remarquerez également que la Table est numérotée : les numéros sont attribués automatiquement dans l'ordre d'apparition dans le code source, pas besoin de donner le numéro de la table, cela sera géré tout seul par LaTeX \o/.

Les tableaux : le multicolonne et le multiligne

Maintenant que l'on sait faire des jolies tables, il est temps d'apprendre un peu plus de choses sur les tableaux parce que bon, on n'a fait qu'effleurer la base !

Voici le code nécessaire pour faire du multicolonne :

Ce qui donne :

Tableau contenant du mulitcolonne

Tableau contenant du multicolonne

Si vous voulez faire du multiligne c'est un peu plus complexe mais c'est possible. Avant toutes choses, il faut ajouter quelque chose au préambule :

Et voici un cas pratique d'utilisation :

Et voilà ce que ça donne :

Tableau avec utilisation de multirow et de cline

Tableau avec utilisation de multirow et de cline

Vous noterez l'utilisation de multirow  et l'utilisation de cline  qui permet (de façon assez explicite de faire des lignes qui n'intersectent pas avec la case multiligne.

La hauteur des cellules

Je sais pas vous, mais je trouve la hauteur des cellules par défaut complètement ignoble, le texte des cellules est tout tassé, bref ça ne me convient pas. J'ai une petite commande à ajouter à votre preambule.tex qui peut améliorer ça :

Évidemment, vous pouvez jouer sur la taille que j'ai mise (c'est celle qui me convient, pas forcément la taille optimale). 🙂

Customisation de la légende

On m'a appris en cours de biologie que les Tables se légendent au dessus du tableau et non pas en dessous, du coup, voici comment faire pour que cela se passe correctement :

On remarquera que j'ai d'autres paramètres de configuré, parce que je les aime bien, je vous laisse aller lire la documentation du package pour vous faire une idée de ce à quoi ils servent et vous faire votre propre customisation. 😉

Faire des tableaux d'une longueur spécifique avec tabularx

Il existe un autre environnement de tableau assez pratique : tabularx. Il permet de modifier la largeur des colonnes pour s'adapter à la taille souhaitée du tableau. C'est pas clair ? Voici un exemple :

Ça marche pas ? C'est normal ! Il faut ajouter quelque chose dans votre préambule ! (Et bah oui, vous croyez que ça allait marcher tout seul ? Ne vous ais-je rien appris ? :D)

 

Ce qui donne :

Un exemple de tableau avec tabularx.

Un exemple de tableau avec tabularx.

Notez bien l'effet du X  qui permet la réalisation de la table comme on le souhaite. \textwidth est la largeur que je souhaite : celle du texte, mais vous pouvez très bien mettre 300pt  si ça vous chante. 🙂

 

Il exitste encore plein de choses que l'on peut faire avec des tableaux, mais je sens que vous en avez marre (et moi aussi un peu :p) alors on va passer à l'autre type de flottants : les figures, c'est-à-dire les images.

Les figures

Comme toujours en LaTeX, pour pouvoir faire des choses particulières, il faut ajouter un \usepackage  dans son préambule 🙂 Et c'est ce que nous allons faire pour gérer correctement les images dans LaTeX, en faisant :

Insérer une image dans un texte

Pour cela il suffit d'utiliser la commande \includegraphics  comme ceci (on présuppose que l'image est dans un dossier Images, dossier situé au même niveau que votre fichier source) :

Vous remarquerez l'option passée entre [ ]. Vous pouvez y passer plusieurs types d'options :

  • width  pour paramétrer la largeur de l'image, comme ici en fonction de la largeur du texte
  • height  pour paramétrer la hauteur de l'image, comme \includegraphics[height=500pt]{Images/youjustlost.jpg}
  • scale  pour paramétrer l'échelle de l'image, comme \includegraphics[scale=0.5]{Images/youjustlost.jpg}

Là l'image est stockée dans le dossiers Images . Si ça vous gonfle de devoir dire à includegraphics  de chercher dans le dossier Images  spécifiquement (par défaut, on va aller chercher dans le dossier où se trouve le .tex ) vous pouvez utiliser la commande suivante dans votre préambule :

Bien évidemment, il faut remplacer le chemin des dossiers par ceux que vous utilisez 🙂 (et le /  terminal est important).

Avec cette commande vous pouvez inclure des images au format suivant :

  • jpg ;
  • png ;
  • PDF.

 

Cela a pour résultat :

Vous avez tous perdus (et vous voyez ce que donne un includegraphics)

Voilà, vous savez comment inclure une image, maintenant, pour plus de beauté rendons tout ça flottant !

L'environnement figure

Pour cela, nous allons procéder comme pour les tableaux et encapsuler l'image dans un environnement appelé figure .

Il suffit d'écrire :

Là on dit à la figure de se placer ici avec [h] , qui fonctionne comme le [h]  de l'environnement table. Pour rappel :

  • h  (pour here) place le flottant à l'endroit où il apparaît dans le texte
  • t  (pour top) place le flottant en haut de la page
  • b  (pour bottom) place le flottant en bas  de la page
  • p  (pour page) place le flottant sur un page dédiée aux flottants

On lui dit également de se centrer avec \centering . On lui demande de mettre une légende grâce à la commande \caption{} . Enfin, on lui demande de mettre un label par la commande \label  afin de pouvoir faire des références (on y reviendra plus tard).

Cela donne :

Et hop ! La première figure dans l'environnement figure

Et hop ! La première figure dans l'environnement figure

Comme pour les tables, les figures sont automatiquement numérotées dans l'ordre du document, pas besoin de s'embêter à les numéroter à la main ! Cela nous sera pratique pour une table des figures.

Customisation de la légende

Tout comme pour les tableaux, on peut customiser les légendes en utilisant le package caption  (qui est déjà dans votre preambule.tex  normalement ^^) :

Et des sous-figures ?

Soyons honnête, si on pouvait pas faire des sous-figures, LaTeX ne nous servirait pas à grand-chose. Heureusement c'est possible si on charge le package idoine dans le préambule, vous connaissez la chanson maintenant 🙂 :

Et maintenant, place au code :

Et tadà :

Et une super figure faites de sous-figures !

Et une super figure faites de sous-figures !

Si c'est pas beau LaTeX…

Des choses sur les flottants en général

Placement des flottants

Bon alors déjà, ils se mettent un peu où ils veulent malgré l'option [h]. Vous pouvez tenter d'imposer un peu plus votre volonté en utilisant l'option [H] qui est cachée dans un package supplémentaire :

Mais c'est pas nécessairement conseillé…

 

Et si jamais vous trouvez que vos flottants se baladent trop, vous pouvez utiliser l'astuce suivante :

More floats

Si jamais LaTeX vous enquiquine avec une histoire de trop de flottants non processés lors de la compilation, je vous suggère d'utiliser :

Liste des tables et table des figures

Je vous l'avais promis au cours du texte, donc voilà comment faire une liste des tables :

à mettre où vous le souhaitez dans votre document !

Et voilà ce que ça donne :

Liste des tables

Liste des tables

Et pour les figures c'est trèèèès difficile à deviner :

Pareil, à mettre où vous voulez dans votre document !

Cela donne :

Liste des figures automatiquement générée ! (Si c'est pas beau la vie…)

Liste des figures automatiquement générée ! (Si c'est pas beau la vie…)

 

Bon, je pense que ça fait assez d'un coup sur les flottants d'un coup, du coup on va s'arrêter là. On y reviendra peut être si jamais l'un d'entre nous a une idée lumineuse sur ce qui pourrait être pertinent de vous raconter. 🙂

  • À propos de
  • Après une prépa BCPST et une licence de bio à l'ENS Cachan, j'ai suivi le master BIBS à l'Université Paris-Sud j'ai suivi des cours d'informatique à l'ENS Cachan. Je commence ma thèse entre INRIA Saclay et l'INRA Jouy-en-Josas.

Catégorie: Didacticiel | Tags: ,

5 commentaires sur “LaTeX : les flottants !

  1. Chouette ! Mais n\'existe-t-il pas des modules javascripts comme jsMath qui permettent de générer le LaTeX sur la page directement plutôt que de faire des captures images png ?

  2. C\'est pas sympa ><

  3. Merci pour ces deux tutos!
    Je suis en train de me mettre a LATEX et j\'aimerais le faire communiquer tranquillement avec R.
    J\'arrive pour l\'instant a exporté mes tables et mes figures, mais ce serait cool si je pouvais inclure ces exports directement dans une session de teXstudio.
    Est ce que tu sait si c\'est possible et si il est possible de faire des liens au sein d\'une session latex entre les différents documents?
    En gros est ce que tu veux pas faire un petit tuto R-Latex 😉

  4. @Yoann : pour ça, il y a Knitr : https://yihui.name/knitr/

  5. Oui il y a un article de prévu sur knitr 🙂

Laisser un commentaire