LaTeX : les flottants !

Chose pro­mise, chose due dans le pré­cé­dent article voi­là les flot­tants dans LaTeX

Les flot­tants sont l'ensemble des élé­ments qui per­turbent le flot du texte (pour faire simple) et dési­gnent clas­si­que­ment les tables et les figures ;on peut défi­nir des envi­ron­ne­ments cus­tom de flot­tants, mais on y revien­dra dans un autre article ;).

Les flot­tants « nagent » dans le texte, et vont se posi­tion­ner là où il faut pour que la lec­ture soit fluide. Cela a un avan­tage cer­tain de beau­té et de cohé­rence par rap­port à de bêtes tableaux et de bêtes gra­phiques inclus sans pou­voir bou­ger :).

Accro­chez-vous, vous allez décou­vrir plein de trucs chouettes mais un peu dif­fi­cile.

Les tables

Com­men­çons par les tables. Avant d'apprendre à faire des tables, il va fal­loir apprendre à faire des tableaux pour rem­plir cet envi­ron­ne­ment, sans quoi cela n'aurait que peu d'intérêt. C'est par­ti !

Les tableaux de base

Pour faire des tableaux « de base » on a besoin de l'environnement

tabu­lar

  à qui l'on va spé­ci­fier le nombre de colonnes en lui disant com­ment ali­gner le texte de la cel­lule.

On pro­cède ain­si :

Et l'on obtient ceci :

Un tableau représentant les saisons et leurs dates de début et de fin
Un tableau repré­sen­tant les sai­sons et leurs dates de début et de fin

On remar­que­ra que les 4

c

 . Ils indiquent que je sou­haite que le texte de cha­cune des 4 colonnes soit cen­tré hori­zon­ta­le­ment. Voi­là com­ment pro­duire les autres types d'alignements :

  • l  (comme left) pour ali­gner le texte à gauche
  • r  (comme right) pour ali­gner le texte à droite
  • c  (comme cen­ter) pour cen­trer le texte

Main­te­nant vous sou­hai­tez peut-être mar­quer les lignes des cel­lules de vos tableaux. Pas de panique, c'est pos­sible, regar­dez cet extrait de code :

Ce qui donne le résul­tat sui­vant :

Tableau des saisons présentant des barres séparant les cellules
Tableau des sai­sons pré­sen­tant des barres sépa­rant les cel­lules

Bien enten­du, vous pla­cez le nombre de pipes entre les colonnes et le nombre de

\hline

  entre les lignes que vous sou­hai­tez 🙂 Expé­ri­men­tez jusqu'à ce que vous trou­viez un truc qui vous plaise !

Vous pou­vez éga­le­ment ajou­ter à votre preambule.tex la ligne sui­vante :

Qui vous per­met d'utiliser de nou­velles com­mandes décrites dans les com­men­taires. Cela donne :

Tableau des saisons en utilisant les règles du paquet booktabs
Tableau des sai­sons en uti­li­sant les règles du paquet book­tabs

L'environnement table

Main­te­nant que l'on sait faire des tableaux, ren­dons les flot­tants pour plus de beau­té ! Il va fal­loir uti­li­ser l'environnement

table

  ce qui va nous per­mettre, à terme, de faire une table des tables, de leur mettre des légendes et de faire du réfé­ren­ce­ment.

Pour cela, c'est tout simple, il suf­fit d'encapsuler le tableau dans cet envi­ron­ne­ment, ain­si :

Alors là on a décou­vert plein de trucs d'un coup. Com­men­çons par le com­men­ce­ment : on a encap­su­lé le

tabu­lar

  dans l'environnement

table

  en pré­ci­sant en para­mètre [h] ce qui veut dire que l'on sou­haite que la figure soit posi­tion­née ici. Voi­ci la liste des para­mètres que l'on peut uti­li­ser :

  • h  (pour here) place le flot­tant à l'endroit où il appa­raît dans le texte
  • t  (pour top) place le flot­tant en haut de la page
  • b  (pour bot­tom) place le flot­tant en bas  de la page
  • p  (pour page) place le flot­tant sur un page dédiée aux flot­tants

Bon, je vous pré­viens, les flot­tants, comme leur nom l'indique sont flot­tants, et vont aller se bala­der là où LaTeX va déci­der qu'il est appro­prié de les mettre, pour éco­no­mi­ser la place. Ne vous arra­chez pas trop les che­veux et lais­sez-vous faire.

On a éga­le­ment décou­vert la com­mande

\cen­te­ring

  qui per­met de cen­trer le tableau dans l'environnement de flot­tants, la com­mande

\cap­tion

  qui per­met d'ajouter une légende au flot­tant ain­si que la com­mande

\label

  qui per­met de mettre une réfé­rence que l'on pour­ra uti­li­ser plus tard dans le texte en uti­li­sant la com­mande

\ref

 qui est dans le texte situé au des­sous du tableau. Pour que les réfé­rences s'affichent, n'oubliez pas de com­pi­ler 2 fois, comme pour la table des matières.

Vous remar­que­rez éga­le­ment que la Table est numé­ro­tée : les numé­ros sont attri­bués auto­ma­ti­que­ment dans l'ordre d'apparition dans le code source, pas besoin de don­ner le numé­ro de la table, cela sera géré tout seul par LaTeX \o/​.

Les tableaux : le multicolonne et le multiligne

Main­te­nant 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 !

Voi­ci le code néces­saire pour faire du mul­ti­co­lonne :

Ce qui donne :

Tableau contenant du mulitcolonne
Tableau conte­nant du mul­ti­co­lonne

Si vous vou­lez faire du mul­ti­ligne c'est un peu plus com­plexe mais c'est pos­sible. Avant toutes choses, il faut ajou­ter quelque chose au pré­am­bule :

Et voi­ci un cas pra­tique d'utilisation :

Et voi­là ce que ça donne :

Tableau avec utilisation de multirow et de cline
Tableau avec uti­li­sa­tion de mul­ti­row et de cline

Vous note­rez l'utilisation de

mul­ti­row

  et l'utilisation de

cline

  qui per­met (de façon assez expli­cite de faire des lignes qui n'intersectent pas avec la case mul­ti­ligne.

La hauteur des cellules

Je sais pas vous, mais je trouve la hau­teur des cel­lules par défaut com­plè­te­ment ignoble, le texte des cel­lules est tout tas­sé, bref ça ne me convient pas. J'ai une petite com­mande à ajou­ter à votre

pream­bule.tex

 qui peut amé­lio­rer ça :

Évi­dem­ment, vous pou­vez jouer sur la taille que j'ai mise (c'est celle qui me convient, pas for­cé­ment la taille opti­male). 🙂

Customisation de la légende

On m'a appris en cours de bio­lo­gie que les Tables se légendent au des­sus du tableau et non pas en des­sous, du coup, voi­ci com­ment faire pour que cela se passe cor­rec­te­ment :

On remar­que­ra que j'ai d'autres para­mètres de confi­gu­ré, parce que je les aime bien, je vous laisse aller lire la docu­men­ta­tion du package pour vous faire une idée de ce à quoi ils servent et vous faire votre propre cus­to­mi­sa­tion. 😉

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

Il existe un autre envi­ron­ne­ment de tableau assez pra­tique : tabu­larx. Il per­met de modi­fier la lar­geur des colonnes pour s'adapter à la taille sou­hai­tée du tableau. C'est pas clair ? Voi­ci un exemple :

Ça marche pas ? C'est nor­mal ! Il faut ajou­ter quelque chose dans votre pré­am­bule ! (Et bah oui, vous croyez que ça allait mar­cher tout seul ? Ne vous ais-je rien appris ? :D)

 

Ce qui donne :

Un exemple de tableau avec tabularx.
Un exemple de tableau avec tabu­larx.

Notez bien l'effet du

X

  qui per­met la réa­li­sa­tion de la table comme on le sou­haite.

\text­width

 est la lar­geur que je sou­haite : celle du texte, mais vous pou­vez 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 aus­si un peu :p) alors on va pas­ser à l'autre type de flot­tants : les figures, c'est-à-dire les images.

Les figures

Comme tou­jours en LaTeX, pour pou­voir faire des choses par­ti­cu­lières, il faut ajou­ter un

\use­pa­ckage

  dans son pré­am­bule 🙂 Et c'est ce que nous allons faire pour gérer cor­rec­te­ment les images dans LaTeX, en fai­sant :

Insérer une image dans un texte

Pour cela il suf­fit d'utiliser la com­mande

\inclu­de­gra­phics

  comme ceci (on pré­sup­pose que l'image est dans un dos­sier Images, dos­sier situé au même niveau que votre fichier source) :

Vous remar­que­rez l'option pas­sée entre [ ]. Vous pou­vez y pas­ser plu­sieurs types d'options :

  • width  pour para­mé­trer la lar­geur de l'image, comme ici en fonc­tion de la lar­geur du texte
  • height  pour para­mé­trer la hau­teur de l'image, comme \inclu­de­gra­phics[height=500pt]{Images/​youjustlost.jpg}
  • scale  pour para­mé­trer l'échelle de l'image, comme \inclu­de­gra­phics[scale=0.5]{Images/​youjustlost.jpg}

Là l'image est sto­ckée dans le dos­siers

Images

 . Si ça vous gonfle de devoir dire à

inclu­de­gra­phics

  de cher­cher dans le dos­sier

Images

  spé­ci­fi­que­ment (par défaut, on va aller cher­cher dans le dos­sier où se trouve le

.tex

 ) vous pou­vez uti­li­ser la com­mande sui­vante dans votre pré­am­bule :

Bien évi­dem­ment, il faut rem­pla­cer le che­min des dos­siers par ceux que vous uti­li­sez 🙂 (et le

/​

  ter­mi­nal est impor­tant).

Avec cette com­mande vous pou­vez inclure des images au for­mat sui­vant :

  • jpg ;
  • png ;
  • PDF.

 

Cela a pour résul­tat :

Vous avez tous per­dus (et vous voyez ce que donne un inclu­de­gra­phics)

Voi­là, vous savez com­ment inclure une image, main­te­nant, pour plus de beau­té ren­dons tout ça flot­tant !

L'environnement figure

Pour cela, nous allons pro­cé­der comme pour les tableaux et encap­su­ler l'image dans un envi­ron­ne­ment appe­lé

figure

 .

Il suf­fit d'écrire :

Là on dit à la figure de se pla­cer ici avec

[h]

 , qui fonc­tionne comme le

[h]

  de l'environnement table. Pour rap­pel :

  • h  (pour here) place le flot­tant à l'endroit où il appa­raît dans le texte
  • t  (pour top) place le flot­tant en haut de la page
  • b  (pour bot­tom) place le flot­tant en bas  de la page
  • p  (pour page) place le flot­tant sur un page dédiée aux flot­tants

On lui dit éga­le­ment de se cen­trer avec

\cen­te­ring

 . On lui demande de mettre une légende grâce à la com­mande

\cap­tion{}

 . Enfin, on lui demande de mettre un label par la com­mande

\label

  afin de pou­voir faire des réfé­rences (on y revien­dra plus tard).

Cela donne :

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

Comme pour les tables, les figures sont auto­ma­ti­que­ment numé­ro­tées dans l'ordre du docu­ment, pas besoin de s'embêter à les numé­ro­ter à la main ! Cela nous sera pra­tique pour une table des figures.

Customisation de la légende

Tout comme pour les tableaux, on peut cus­to­mi­ser les légendes en uti­li­sant le package

cap­tion

  (qui est déjà dans votre

pream­bule.tex

  nor­ma­le­ment ^^) :

Et des sous-figures ?

Soyons hon­nête, si on pou­vait pas faire des sous-figures, LaTeX ne nous ser­vi­rait pas à grand-chose. Heu­reu­se­ment c'est pos­sible si on charge le package idoine dans le pré­am­bule, vous connais­sez la chan­son main­te­nant 🙂 :

Et main­te­nant, 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 mal­gré l'option [h]. Vous pou­vez ten­ter d'imposer un peu plus votre volon­té en uti­li­sant l'option [H] qui est cachée dans un package sup­plé­men­taire :

Mais c'est pas néces­sai­re­ment conseillé…

 

Et si jamais vous trou­vez que vos flot­tants se baladent trop, vous pou­vez uti­li­ser l'astuce sui­vante :

More floats

Si jamais LaTeX vous enqui­quine avec une his­toire de trop de flot­tants non pro­ces­sés lors de la com­pi­la­tion, je vous sug­gère d'utiliser :

Liste des tables et table des figures

Je vous l'avais pro­mis au cours du texte, donc voi­là com­ment faire une liste des tables :

à mettre où vous le sou­hai­tez dans votre docu­ment !

Et voi­là ce que ça donne :

Liste des tables
Liste des tables

Et pour les figures c'est trèèèès dif­fi­cile à devi­ner :

Pareil, à mettre où vous vou­lez dans votre docu­ment !

Cela donne :

Liste des figures automatiquement générée ! (Si c'est pas beau la vie…)
Liste des figures auto­ma­ti­que­ment géné­rée ! (Si c'est pas beau la vie…)

 

Bon, je pense que ça fait assez d'un coup sur les flot­tants d'un coup, du coup on va s'arrêter là. On y revien­dra peut être si jamais l'un d'entre nous a une idée lumi­neuse sur ce qui pour­rait être per­ti­nent de vous racon­ter. 🙂



Pour continuer la lecture :


Commentaires

5 réponses à “LaTeX : les flottants !”

  1. Chouette ! Mais n'existe-t-il pas des modules javas­cripts comme jsMath qui per­mettent de géné­rer le LaTeX sur la page direc­te­ment plu­tôt que de faire des cap­tures images png ?

  2. C'est pas sym­pa ><

  3. Avatar de Yoann

    Mer­ci pour ces deux tutos !
    Je suis en train de me mettre a LATEX et j'aimerais le faire com­mu­ni­quer tran­quille­ment avec R.
    J'arrive pour l'instant a expor­té mes tables et mes figures, mais ce serait cool si je pou­vais inclure ces exports direc­te­ment dans une ses­sion de teXs­tu­dio.
    Est ce que tu sait si c'est pos­sible et si il est pos­sible de faire des liens au sein d'une ses­sion latex entre les dif­fé­rents docu­ments ?
    En gros est ce que tu veux pas faire un petit tuto R‑Latex 😉

  4. Avatar de arnome

    @Yoann : pour ça, il y a Kni­tr : https://​yihui​.name/​k​n​i​tr/

  5. Avatar de Chopopope

    Oui il y a un article de pré­vu sur kni­tr 🙂

Laisser un commentaire