125 votes

Positionnement des tableaux LaTeX

J'ai un document LaTeX qui contient un paragraphe suivi de 4 tableaux suivis d'un second paragraphe. Je veux que les 4 tableaux apparaissent entre les deux paragraphes, ce qui, d'après ce que j'ai vu, n'est pas possible. lire signifie que je dois utiliser l'option [h] après avoir commencé l'environnement de la table (par ex. \begin{table}[h] ).

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

J'ai essayé plusieurs choses pour corriger le positionnement, comme l'utilisation de [h!] mais cela ne semble pas avoir d'effet. Utilisation de \clearpage après les tableaux a l'effet désiré de faire apparaître les tableaux avant le deuxième paragraphe, mais il laisse ensuite les deux derniers tableaux sur leur propre page avec beaucoup d'espace blanc, alors que je préférerais que le deuxième paragraphe commence immédiatement après les tableaux.

Paragraph 1...

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

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

Paragraph 2...

6 votes

L'ordre des lettres (ou de toutes les lettres) dans l'argument facultatif n'a aucun effet.

1 votes

@Gacek, je parie que Will Robertson a raison. Selon mintaka.sdsu.edu/GF/bibliog/latex/floats.html Les arguments entre parenthèses indiquent à LaTeX où il est possible de placer le flottant ; leur ordre n'a pas d'importance.

1 votes

Ceci n'est que légèrement lié, mais je pense qu'il est important de le savoir : L'option [h] ne doit jamais être utilisée seule. En fait, les nouvelles versions de LaTeX la remplacent automatiquement par [ht]. C'est peut-être là que se situe votre problème. Vous pouvez en savoir plus dans ce guide à la section 17.2 "Placement des figures".

202voto

Jared Russell Points 3616

Après avoir fait un peu plus de recherches sur Internet, je suis tombé sur le site suivant float qui permet d'empêcher LaTeX de repositionner les tableaux.

Dans le préambule :

\usepackage{float}

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

2 votes

Au cas où quelqu'un utilise org-mode, mettez ceci en haut : #+LATEX_HEADER: \usepackage{float} #+LATEX_HEADER: \restylefloat{table} Et puis, #+CAPTION: A table #+NAME: tab:table-label #+ATTR_LATEX: :placement [H] :center t <<actual table content>> Excusez le mauvais formatage des nouvelles lignes dans les commentaires.

3 votes

Désolé, mais l'affirmation selon laquelle il est nécessaire d'exécuter \restylefloat{table} afin d'utiliser le [H] Le spécificateur de positionnement est faux . On ne devrait jamais courir \restylefloat{table} si l'on a d'abord exécuté les instructions du paquet \floatstyle , \floatplacement ou \floatname . Veuillez mettre à jour votre réponse à supprimer la référence à \restylefloat . Au cas où vous auriez besoin de plus de preuves que courir \restylefloat routinier n'est pas une bonne idée, voir l'affichage. La légende et le libellé d'un tableau, de deux tableaux juxtaposés, sont affectés à un autre tableau. .

33voto

don giulio Points 421

Au début, avec le usepackage Les définitions comprennent :

\usepackage{placeins}

Et avant et après l'ajout :

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

Cela permet de placer le tableau exactement là où vous le souhaitez dans le texte.

8voto

Will Robertson Points 19581

Que se passe-t-il si le texte plus les tableaux plus le texte ne tiennent pas sur une seule page ? En essayant de forcer la composition de cette manière, vous risquez fort de vous retrouver avec des pages trop courtes ; en d'autres termes, comme un tableau ne peut pas, par défaut, déborder d'une page, il sera poussé à la suivante et laissera un vide sur la page précédente. Vous remarquerez que vous ne verrez jamais cela dans un livre publié.

Le comportement flottant 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 ; ce n'est qu'à ce moment-là que vous devez penser à ajuster leur emplacement précis.

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

1 votes

Le comportement flottant évite de laisser de l'espace, mais l'éloignement des figures rend la vie plus difficile au lecteur. C'est pourquoi Edward Tufte, un important designer, recommande d'intégrer le texte et les figures/tableaux - dans les livres qu'il publie, il ne fait pas référence aux tableaux par un numéro. "Voir tableau 1" n'apparaît pas, puisque le tableau est juste là. Il les place simplement au bon endroit - au milieu de la phrase. Je suppose que cela signifie qu'il faut plus de travail pour présenter les tableaux, mais moins de travail pour les lecteurs.

0 votes

@Blaisorblade - bien sûr, et il y a d'autres exemples notables, mais je pense que l'écriture d'un texte de cette manière est un ordre de grandeur plus difficile pour la plupart des gens que l'utilisation de flottants. Vous parlez de rejeter 99% de la conception d'un livre pour un optimum irréalisable. Considérez le point que j'ai soulevé dans ma réponse : "que se passe-t-il si un tableau ne peut pas être placé sous le texte" ? Dans votre scénario, il faut revoir la conception ou réécrire, ce qui est intenable dans de nombreuses situations.

1 votes

Eh bien, nous sommes d'accord sur ce qu'est l'optimum - et oui, le plus souvent, c'est pratiquement irréalisable. Dans la vie de tous les jours, je m'en tiens aussi généralement aux flottants. Mais il m'arrive d'avoir de petits tableaux et figures en ligne, et cela fonctionne plutôt bien (à condition que je vérifie la version finale - ce qui n'est facile que parce que j'ai des documents de 20 pages maximum). Je considère simplement les flottants comme un compromis raisonnable plutôt qu'une bonne chose :-).

5voto

Crowley Points 498

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

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

Chacun d'eux aura sa propre légende et son propre numéro. Une autre option est subfigure paquet.

4voto

Mica Points 7392

Vous pouvez ajouter cela à 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, le \floatpagefraction peut être intéressant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X