--- myst: html_meta: keywords: LaTeX,flottants,placement des figures,placement des tableaux,mettre les figures en fin de document --- # Comment gérer proprement les flottants dans LaTeX ? Les tables et les figures surprennent souvent, en *flottant* loin de l'endroit où elles ont été placées dans le code du document. Il s'agit là d'un principe parfaitement ordinaire dans une conception de document : tout logiciel de composition positionnera les figures et les tableaux là où ils enfreindront le moins possible de règles typographiques. Même si vous utilisez le spécificateur de placement « `h` » (pour *here*, c'est-à-dire « ici »), la figure ou le tableau ne sera pas positionnée « ici » si ces règles ne sont pas respectées. Ces règles elles-mêmes sont assez simples et sont listées à la page 198, section C.9 du manuel LaTeX. :::{warning} (*Sans doute à préciser*.) Mais, dans le pire des cas, les règles de LaTeX peuvent entraîner l'empilement des éléments flottants dans la mesure où vous obtenez un message d'erreur disant « [Too many unprocessed floats](/2_programmation/erreurs/t/too_many_unprocessed_floats) ». ::: Ce qui suit est une simple liste de points à étudier pour résoudre ces problèmes. ## Éviter les flottants non nécessaires La question « [](/3_composition/flottants/positionnement/forcer_la_position_d_un_flottant2) » illustre des méthodes pour contourner la mécanique de flottement, ce qui peut correspondre à une solution efficace pour des documents courts ou des documents ne nécessitant pas un grand formalisme. ## Utiliser les bons spécificateurs de placement La séquence de spécificateurs par défaut, « `[tbp]` », est généralement satisfaisante, mais vous pouvez raisonnablement la modifier (par exemple, en y ajoutant un « `h` »). Quoi que vous fassiez, *n'omettez* pas le « `p` », sinon cela pourrait amener LaTeX à considérer que, si vous ne pouvez pas avoir votre flottant *ici*, vous ne le voulez *nulle part*. ## Changer les paramètres de gestion des flottants Les paramètres de LaTeX gérant le placement des flottants peuvent empêcher des placements vous semblant « raisonnables » : ils sont connus pour être assez stricts. Pour encourager LaTeX à ne pas bouger votre flottant, vous devrez peut-être relâcher ses exigences. Les paramètres les plus importants sont ici les ratios « texte sur page » et « flottant sur page » mais il est judicieux d'avoir plutôt un ensemble fixe de paramètres pour répondre à toutes les éventualités. ```{noedit} \renewcommand{\topfraction}{.85} \renewcommand{\bottomfraction}{.7} \renewcommand{\textfraction}{.15} \renewcommand{\floatpagefraction}{.66} \renewcommand{\dbltopfraction}{.66} \renewcommand{\dblfloatpagefraction}{.66} \setcounter{topnumber}{9} \setcounter{bottomnumber}{9} \setcounter{totalnumber}{20} \setcounter{dbltopnumber}{9} ``` La signification de ces paramètres est donnée en pages 199 à 200, section C.9 du manuel LaTeX. :::{todo} Sans doute à préciser. ::: ## Utiliser la commande « `\clearpage` » Votre document dispose d'endroits où vous où vous pourriez mettre une commande `\clearpage`. Si c'est le cas, faites-le. Les flottants en liste d'attente seront alors tous positionnés là. D'ailleurs, la commande `\chapter` des classes standard et exécute implicitement `\clearpage`, empêchant ainsi aux flottants de passer d'un chapitre à un autre. ## Utiliser l'extension « placeins » L'extension définit une commande `\FloatBarrier` (littéralement, une « barrière à flottant ») au-delà de laquelle les flottants ne peuvent pas aller. Vous pouvez placer des `\FloatBarrier` où vous le souhaitez mais une option de l'extension vous permet aussi de déclarer que les `\section` acquièrent cette propriété. ## Utiliser l'extension « flafter » Si vous êtes gêné par les flottants apparaissant en haut de la page (avant qu'ils ne soient spécifiés dans votre texte), essayez l'extension [flafter](ctanpkg:latex-base), qui évite ce problème en insistant sur le fait que les flottants doivent toujours apparaître *après* leur définition. ## Utiliser l'extension « afterpage » La documentation de l'extension donne à titre d'exemple de son utilisation l'idée de mettre `\clearpage` *après* la page courante (traitant ainsi la liste d'attente des flottants sans pour autant causer un vilain vide dans votre texte), mais cette méthode est quelque peu fragile. Utilisez-la en dernier recours si les autres possibilités ci-dessous ne vous aident pas. ## Utiliser l'extension « morefloats » Si vous souhaitez réellement avoir de larges blocs de flottants à la fin de chacun de vos chapitres, essayez la commande `\extrafloats`, ou pour les anciennes versions de LaTeX l'extension . Cela vous permet d'augmenter le nombre de flottants que LaTeX peut gérer à un instant donné (en partant de la valeur de base, 18 dans les versions anciennes de LaTeX ou 52 dans LaTeX). Dans le cas particulier où vous utiliseriez l'extension [etex](ctanpkg:etex-pkg) pour augmenter le nombre de registres disponibles sur d'anciennes versions de LaTeX, vous aurez alors besoin de réserver des emplacements pour avec le code ressemblant à ceci : ```{noedit} \usepackage{etex} \reserveinserts{18} \usepackage{morefloats} ``` ## Utiliser l'extension « endfloat » Si vous souhaitez avoir tous vos flottants en fin de document (par exemple pour soumettre une version provisoire d'un article), ne comptez pas sur les mécanismes usuels de LaTeX : utilisez l'extension pour traiter ce point. :::{sources} [Moving tables and figures in LaTeX](faquk:FAQ-floats) :::