web-dev-qa-db-fra.com

Positionnement de la table LaTeX

J'ai un document LaTeX qui contient un paragraphe suivi de 4 tableaux suivis d'un deuxième paragraphe. Je veux que les 4 tables apparaissent entre les deux paragraphes, ce qui, d'après ce que j'ai read signifie que je devrais utiliser l'option [h] après avoir démarré l'environnement de la table (par exemple, \begin{table}[h]).

En utilisant cela, les deux premiers tableaux apparaissent après le paragraphe 1 comme prévu, mais le paragraphe 2 est ensuite affiché, les deux derniers tableaux apparaissant à la page suivante. Comment puis-je faire en sorte que les tables apparaissent au bon endroit?

J'ai essayé diverses choses pour corriger le positionnement, comme utiliser [h!] cependant cela ne semble pas avoir d’effet. En utilisant \clearpage après que les tableaux ont l’effet souhaité de faire apparaître les tableaux avant le deuxième paragraphe, mais il laisse ensuite les deux derniers tableaux sur leur propre page avec des charges d’espace blanc, alors que je préférerais que le deuxième paragraphe commence immédiatement après les tables.

Paragraph 1...

\begin{table}[h]
    table1...
\end{table}

\begin{table}[h]
   table2...
\end{table}[h]
...

Paragraph 2...
82
Jared Russell

Après avoir fait quelques recherches supplémentaires, je suis tombé sur le paquetage float qui vous permet d’empêcher LaTeX de repositionner les tables.

Dans le préambule:

\usepackage{float}
\restylefloat{table}

Ensuite, pour chaque table, vous pouvez utiliser l’option de placement H (par exemple, \begin{table}[H]) pour s’assurer qu’il ne soit pas repositionné.

152
Jared Russell

Cela a fonctionné pour moi:

Au début avec les usepackage définitions incluent:

\usepackage{placeins}

Et avant et après ajouter:

\FloatBarrier
\begin{table}[h]
    \begin{tabular}{llll}
      .... 
    \end{tabular}
\end{table}
\FloatBarrier

Cela place la table exactement où vous voulez dans le texte.

18
Don Giulio

Que se passe-t-il si le texte plus les tableaux et le texte ne tiennent pas sur une seule page? En essayant de forcer la composition de cette manière, vous vous retrouverez très probablement avec des pages trop courtes. c’est-à-dire qu’une table ne peut pas, par défaut, casser une page, elle sera poussée à la suivante et laisser un espace sur la page précédente. Vous remarquerez que vous ne voyez jamais cela dans un livre publié.

Le comportement de flottement est une bonne chose! Je recommande d'utiliser [htbp] comme paramètre par défaut pour tous les tableaux et figures jusqu'à ce que votre document soit complet; alors seulement devrait penser à affiner leur placement précis.

P.S. Lire le FAQ ; la plupart des autres réponses ici sont des combinaisons partielles de conseils donnés ici.

7
Will Robertson

Voici une solution simple à partir de Wikibooks :

Le package placeins fournit la commande\FloatBarrier, qui peut être utilisée pour empêcher le déplacement des flottants.

Je viens de mettre \FloatBarrier avant et après chaque table.

5
Jason Bertels

Si vous voulez avoir deux tables l'une à côté de l'autre, vous pouvez utiliser: (avec le paquet float chargé)

\begin{table}[H]
 \begin{minipage}{.5\textwidth}
  %first table
 \end{minipage}
 \begin{minipage}{.5\textwidth}
  %second table
 \end{minipage}
\end{table}

Chacun aura sa propre légende et son numéro. Une autre option est le package subfigure.

3
Crowley

Positionnement de la table

Paramètres disponibles

Un tableau peut facilement être placé avec les paramètres suivants:

  • h Placez le float ici , c'est-à-dire approximativement au même endroit où il apparaît dans le texte source (mais pas exactement à l'endroit. )
  • t Position en haut en haut de la page.
  • b Position au bas de la page.
  • p Mettez une page spéciale pour les flottants uniquement.
  • ! Remplacer les paramètres internes utilisés par LaTeX pour déterminer les "bonnes" positions de flottement.
  • H Place le flottant à précisément l'emplacement dans le code LATEX. Nécessite le package float. Ceci est un peu équivalent à h!.

Si vous voulez utiliser H (ou h!) pour un positionnement exact, assurez-vous que le paquet float est correctement configuré dans le préambule:

\usepackage{float}
\restylefloat{table}

Exemple

Si vous souhaitez placer le tableau sur la même page, à l'endroit exact ou au moins en haut de la page (ce qui convient le mieux au moteur latex), utilisez les paramètres h et t comme ça:

\begin{table}[ht]
    table content ...
\end{table}

Sources: Overleaf.com

3
winklerrr

Vous voudrez peut-être ajouter ceci à votre préambule et ajuster les valeurs si nécessaire:

 %------------begin Float Adjustment
%two column float page must be 90% full
\renewcommand\dblfloatpagefraction{.90}
%two column top float can cover up to 80% of page
\renewcommand\dbltopfraction{.80}
%float page must be 90% full
\renewcommand\floatpagefraction{.90}
%top float can cover up to 80% of page
\renewcommand\topfraction{.80}
%bottom float can cover up to 80% of page
\renewcommand\bottomfraction{.80}
%at least 10% of a normal page must contain text
\renewcommand\textfraction{.1}
%separation between floats and text
\setlength\dbltextfloatsep{9pt plus 5pt minus 3pt }
%separation between two column floats and text
\setlength\textfloatsep{4pt plus 2pt minus 1.5pt}

En particulier, la\floatpagefraction peut être intéressante.

3
Mica