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
1 |
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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
\documentclass[paper=a4, fontsize=11pt, titlepage, ]{article} \input{preambule} \begin{document} \begin{tabular}{cccc} Automne & ; Hiver & ; Printemps & ; Été \\ 21 septembre – 21 décembre & ; 21 décembre – 21 mars & ; 21 mars – 21 juin & ; 21 juin – 21 septembre \\ \end{tabular} \end{document} |
Et l'on obtient ceci :
On remarquera que les 4
1 |
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 :
1 2 3 4 5 6 7 |
\begin{tabular}{|c|c|c|c|} \hline Automne & ; Hiver & ; Printemps & ; Été \\ \hline 21 septembre – 21 décembre & ; 21 décembre – 21 mars & ; 21 mars – 21 juin & ; 21 juin – 21 septembre \\ \hline \end{tabular} |
Ce qui donne le résultat suivant :
Bien entendu, vous placez le nombre de pipes entre les colonnes et le nombre de
1 |
\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 :
1 2 3 |
%-% Customisation des règles de sépartation des lignes de tableau %-% \toprule, \midrule, \bottomrule, \specialrule{2.5pt}{1pt}{1pt} \usepackage{booktabs} |
Qui vous permet d'utiliser de nouvelles commandes décrites dans les commentaires. Cela donne :
1 2 3 4 5 6 7 |
\begin{tabular}{cccc} \toprule Automne & ; Hiver & ; Printemps & ; Été \\ \midrule 21 septembre – 21 décembre & ; 21 décembre – 21 mars & ; 21 mars – 21 juin & ; 21 juin – 21 septembre \\ \bottomrule \end{tabular} |
L'environnement table
Maintenant que l'on sait faire des tableaux, rendons les flottants pour plus de beauté ! Il va falloir utiliser l'environnement
1 |
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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
\begin{table}[h] \centering \caption{Table des saisons et de leurs dates} \begin{tabular}{cccc} \toprule Automne & ; Hiver & ; Printemps & ; Été \\ \midrule 21 septembre – 21 décembre & ; 21 décembre – 21 mars & ; 21 mars – 21 juin & ; 21 juin – 21 septembre \\ \bottomrule \end{tabular} \label{tab :saisons} \end{table} Comme vous pouvez le voir dans la Table~\ref{tab-saisons}, Chopopope connaît_(presque ^^) ses saisons. |
Alors là on a découvert plein de trucs d'un coup. Commençons par le commencement : on a encapsulé le
1 |
tabular |
dans l'environnement
1 |
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
1 |
\centering |
qui permet de centrer le tableau dans l'environnement de flottants, la commande
1 |
\caption |
qui permet d'ajouter une légende au flottant ainsi que la commande
1 |
\label |
qui permet de mettre une référence que l'on pourra utiliser plus tard dans le texte en utilisant la commande
1 |
\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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
\begin{table}[h] \centering \caption{Table des noms de mutations de patients imaginaires} \begin{tabular}{cccc} \toprule Patient 1 & ; Patient 2 & ; Patient 3 & ; Patient 4 \\ \midrule \multicolumn{2}{c}{Mutation 1} & ; Mutation 2 & ; Mutation 3 \\ \bottomrule \end{tabular} \label{tab :patients} \end{table} Comme vous pouvez le voir dans la Table~\ref{tab-patients}, … |
Ce qui donne :
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 :
1 2 3 |
%-% Pour les tables, faire du multi-ligne %-% \multirow{"num_rows"}{*}{"content"} \usepackage{multirow} |
Et voici un cas pratique d'utilisation :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
\begin{table}[h] \centering \caption{Table des gènes imaginaires} \begin{tabular}{|c|c|c|c|c} \hline Patient & ; Gène 1 & ; Gène 2 & ; Gène 3 \\ \hline Foo & ; \multirow{2}{*}{Mutation 1} & ; Mutation 2 & ; Mutation 3 \\ \cline{1-1} \cline{3-4} Bar & ; & ; Mutation 4 & ; Mutation 5 \\ \hline \end{tabular} \label{tab :genes} \end{table} |
Et voilà ce que ça donne :
Vous noterez l'utilisation de
1 |
multirow |
et l'utilisation de
1 |
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
1 |
preambule.tex |
qui peut améliorer ça :
1 2 3 4 |
%-% Accroissement de la hauteur d'une ligne (parce que de base c'est %-% sérieusement trop petit) \usepackage{array} \setlength{\extrarowheight}{3pt} |
É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 :
1 2 3 4 5 6 7 8 |
%-% Pour customiser les "caption" dans les environnements figure et table %-% /!\ Warning : \usepackage[labelsep=colon]{caption} %-% La conf est faite en dessous et sera prise en compte dans les \caption{} %-% http ://www.lce.esalq.usp.br/clarice/Caption.pdf \captionsetup[table]{format=hang, labelformat=simple, singlelinecheck=true, font=small, position=above} |
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
1 |
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 :
1 2 3 4 5 6 7 8 9 10 |
\begin{table} \centering \begin{tabularx}{\textwidth}{|c|c|X|c|} \hline A & ; B & ; CD & ; EFGHIJKL \\ \hline plop & ; plip & ; Là je peux écrire plein de choses car la largeur de la colonne dépendra de la largeur de la table et c'est beaucoup trop cool & ; j'ai perdu \\ \hline \end{tabularx} \label{tab :useless} \end{table} \lipsum |
Ç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)
1 2 3 4 5 |
%-% L'environnement tabularx permet d'utiliser le "specifier" X. Les colonnes utilisant %-% ce specifier seront étirées pour que la table fasse la largeur souhaitée \o/ %-% \begin{tabularx}{\textwidth}{ |X|X|X|X| } %-% \end{tabularx} \usepackage{tabularx} |
Ce qui donne :
Notez bien l'effet du
1 |
X |
qui permet la réalisation de la table comme on le souhaite.
1 |
\textwidth |
est la largeur que je souhaite : celle du texte, mais vous pouvez très bien mettre
1 |
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
1 |
\usepackage |
dans son préambule 🙂 Et c'est ce que nous allons faire pour gérer correctement les images dans LaTeX, en faisant :
1 2 |
%-% Pour faire joujou avec des images \usepackage{graphicx} |
Insérer une image dans un texte
Pour cela il suffit d'utiliser la commande
1 |
\includegraphics |
comme ceci (on présuppose que l'image est dans un dossier Images, dossier situé au même niveau que votre fichier source) :
1 2 |
\includegraphics[width=0.5\textwidth]{Images/youjustlost.jpg} \lipsum |
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 :
1 |
\graphicspath{ {./Images/}{/home/chopopope/Bioinfo-fr/LaTeX/Images/} } |
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 :
Voilà, vous savez comment inclure une image, maintenant, pour plus de beauté rendons tout ça flottant !
L'environnement
1 |
[crayon-6758830a4c722711745160 inline="1" lang="tex" decode="true" ]figure |
Pour cela, nous allons procéder comme pour les tableaux et encapsuler l'image dans un environnement appelé figure.
Il suffit d'écrire :
1 2 3 4 5 6 |
\begin{figure}[h] \centering \includegraphics[scale=1]{youjustlost.jpg} \caption{Vous avez tous perdu.} \label{fig :lost} \end{figure} |
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 :
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 ^^) :
1 |
\captionsetup[figure]{format=hang, labelformat=simple, singlelinecheck=true, font=small} |
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 🙂 :
1 2 3 |
%-% Pour faire des zoulies subfigure %-% \begin{subfigure} … \end{subfigure} \usepackage{subcaption} |
Et maintenant, place au code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
\begin{figure}[h] \centering \begin{subfigure}[b]{0.45\linewidth} \centering \includegraphics[scale=1]{youjustlost.jpg} \caption{Une première fois…} \end{subfigure}% \hfill \begin{subfigure}[b]{0.45\linewidth} \centering \includegraphics[scale=1]{youjustlost.jpg} \caption{et une deuxième fois} \end{subfigure} \vspace{5pt} \begin{subfigure}[b]{0.45\linewidth} \centering \includegraphics[scale=1]{youjustlost.jpg} \caption{et une troisième fois…} \end{subfigure}% \hfill \begin{subfigure}[b]{0.45\linewidth} \centering \includegraphics[scale=1]{youjustlost.jpg} \caption{et une quatrième (dernière ?) fois} \end{subfigure} \caption{Vous avez tous perdu.} \label{fig :lost} \end{figure} |
Et tadà :
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 :
1 |
\usepackage{floats} |
Mais c'est pas nécessairement conseillé…
Et si jamais vous trouvez que vos flottants se baladent trop, vous pouvez utiliser l'astuce suivante :
1 2 3 |
%-% Afin de pouvoir utiliser un \FloatBarrier et que tous les flottants %-% restent dans leur section \usepackage[section]{placeins} |
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 :
1 2 |
%-% Pour avoir /plus/ de flottants \usepackage[maxfloats=100]{morefloats} |
Liste des tables et table des figures
Je vous l'avais promis au cours du texte, donc voilà comment faire une liste des tables :
1 |
\listoftables |
à mettre où vous le souhaitez dans votre document !
Et voilà ce que ça donne :
Et pour les figures c'est trèèèès difficile à deviner :
1 |
\listoffigures |
Pareil, à mettre où vous voulez dans votre document !
Cela donne :
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. 🙂
Laisser un commentaire