Comment imposer un emplacement à un flottant ?#

La demande est contradictoire : figure et table sont conçus pour flotter, et auront toujours la possibilité d’être placés loin de l’endroit où vous les avez évoqués. Par conséquent, vous avez besoin de quelque chose qui se présente comme un environnement figure ou table mais sans le comportement d’un flottant.

1.  Avec l’extension float#

Le moyen le plus simple est d’utiliser l’extension float qui vous donne une option de placement flottant H qui empêche le flottement.

\documentclass[french, twoside]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{float}

\begin{document}
La figure suivante est prévue pour être placée à l'endroit où elle a été 
placée dans le code. Elle est donc placée après cette phrase.

\begin{figure}[H]
  \centering % Pour centrer la figure
  \framebox{Vous êtes ici.}
  \caption{Précision, quand tu nous tiens.}
\end{figure}

Et elle est placée avant cette dernière phrase.
\end{document}

Il existe une extension here qui permet d’obtenir la même fonctionnalité mais elle n’est pas recommandée : elle sert uniquement pour des documents anciens.

2.  Avec l’extension caption ou l’extension capt-of#

En fait, vous n’avez pas besoin d’utiliser l’extension float. Il existe un moyen simple pour placer votre figurine à votre guise.

Cette solution s’appuie sur la commande \captionof pour placer une légende sans bénéficier d’un flottant englobant. Cette commande peut être obtenue à partir de l’extension très simple capt-of ou de l’extension plus sophistiquée caption. Elle est présentée à la question « Comment utiliser la commande \caption hors d’un environnement flottant ? ».

\documentclass[french, twoside]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{caption}

\begin{document}
La figure suivante est prévue pour être placée à l'endroit où elle a été 
placée dans le code. Elle est donc placée après cette phrase.

\begin{center}
  \framebox{Vous êtes ici.}
  \captionof{figure}{Précision, quand tu nous tiens.}
  \label{ici}
\end{center}

Et elle est placée avant cette dernière phrase (et il est possible de faire
référence à cette figure \ref{ici}).
\end{document}

3.  Les limites de ces méthodes#

3.1.  Gestion de l’encombrement des flottants#

Quelle que soit la méthode utilisée, vous devrez gérer le cas où une figure ou un tableau soit trop grand pour la page (sous peine d’une erreur décrite « Que signifie le message : « Overfull ⟨objet⟩ » ? » et de mise en page dégradée).

3.2.  Gestion de la numérotation des flottants#

Un autre problème vient de la possibilité que de tels « flottants fixes » s’insèrent entre de vrais flottants, de sorte que leurs numéros seront dans le désordre : la figure 6, non flottante, pourrait être à la page 12, tandis que la figure 5, flottante, pourrait se retrouver en page 13. Ici, mieux vaut n’avoir que des flottants ou que des « flottants fixes ».

Si vous ne pouvez suivre ce conseil, vous pouvez utiliser la commande \MakeSorted de l’extension perpage. En voici un exemple qui corrige la numérotation de vos flottants :

\documentclass[french, twoside]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{float}

  % 
  % 
  % 
  % 

\begin{document}
Notre exemple cumule une figure dont le positionnement est forcé 
et une figure flottante (pour lequel le positionnement en haut de page
est demandé).
\begin{figure}[H]
  \centering % Pour centrer la figure
  \framebox{Vous êtes ici ?}
  \caption{Figure baladeuse}
\end{figure}

\begin{figure}[t]
  \centering % Pour centrer la figure
  \framebox{Vous êtes là ?}
  \caption{Figure figée}
\end{figure}
\end{document}
\documentclass[french, twoside]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{float}

  % Pour redonner une numérotation bien ordonnée aux figures et tables
  \usepackage{perpage}
  \MakeSorted{figure}
  \MakeSorted{table}

\begin{document}
Notre exemple cumule une figure dont le positionnement est forcé 
et une figure flottante (pour lequel le positionnement en haut de page
est demandé).
\begin{figure}[H]
  \centering % Pour centrer la figure
  \framebox{Vous êtes ici ?}
  \caption{Figure baladeuse}
\end{figure}

\begin{figure}[t]
  \centering % Pour centrer la figure
  \framebox{Vous êtes là ?}
  \caption{Figure figée}
\end{figure}
\end{document}