2009-11-04 66 views
64

Tengo un documento LaTeX que contiene un párrafo seguido de 4 tablas seguido de un segundo párrafo. Quiero que las 4 tablas aparezcan entre los dos párrafos, que de lo que tengo read significa que debería usar la opción [h] después de comenzar el entorno de la tabla (por ejemplo, \begin{table}[h]).Posicionamiento de tabla LaTeX

Usando esto, las dos primeras tablas aparecen después del párrafo 1 como se esperaba, sin embargo, el párrafo 2 se muestra con las dos últimas tablas que aparecen en la página siguiente. ¿Cómo puedo hacer que las tablas aparezcan en la ubicación correcta?

He intentado varias cosas para corregir la posición, como usar [h!], pero esto no parece tener ningún efecto. Usar \clearpage después de las tablas tiene el efecto deseado de hacer que las tablas aparezcan antes del segundo párrafo pero luego deja las dos últimas tablas en su propia página con un montón de espacio en blanco, cuando preferiría que el segundo párrafo comience inmediatamente después las mesas.

Paragraph 1... 

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

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

Paragraph 2... 
+0

tal vez [! H] en lugar de [h!]? – Gacek

+0

Lo intenté también y no tuvo ningún efecto. –

+4

El orden de (todas) las letras en el argumento opcional no tiene ningún efecto. –

Respuesta

122

Después de hacer un poco más buscando en Google me encontré con el flotador paquete que permite evitar las látex del reposicionamiento de las mesas.

En el preámbulo:

\usepackage{float} 
\restylefloat{table} 

A continuación, para cada tabla que puede utilizar la opción H colocación (por ejemplo \begin{table}[H]) para asegurarse de que no quede colocada de nuevo.

+16

Quizás vale la pena enfatizar que se debe usar "H" y no "h". Eso es lo que observé por mí mismo. – bikashg

3

Es posible que desee agregar esto a su preámbulo, y ajustar los valores según sea necesario:

%------------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 particular, el \ floatpagefraction pueden ser de interés.

2

Si usted quiere tener dos mesas junto a la otra que puede utilizar: (con float paquete cargado)

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

Cada uno tendrá propio título y número. Otra opción es subfigure paquete.

7

¿Qué sucede si el texto más las tablas más el texto no cabe en una sola página? Al tratar de forzar la composición tipográfica de esta manera, es muy probable que termine con páginas demasiado cortas; es decir, porque una tabla no puede romper una página por defecto, se pasará a la siguiente y dejará un espacio en la página anterior. Notarás que nunca ves esto en un libro publicado.

¡El comportamiento de flotación es una buena cosa! Recomiendo usar [htbp] como la configuración predeterminada para todas las tablas y figuras hasta que se complete su documento; solo entonces debería pensar en ajustar su ubicación precisa.

P.S. Lee el FAQ; la mayoría de las otras respuestas aquí son combinaciones parciales de consejos dados allí.

+1

El comportamiento de flotación evita dejar espacio, pero alejarse de las figuras hace la vida más difícil para el lector. Por esta razón, Edward Tufte, un diseñador importante, recomienda integrar texto y figuras/tablas: en sus libros publicados, no se refiere a las tablas por número. "Consulte la Tabla 1" no aparece, ya que la tabla está allí. Simplemente los coloca en el lugar correcto, a mitad de la oración. Supongo que eso significa hacer más trabajo para diseñar las mesas pero menos trabajo para los lectores. – Blaisorblade

+0

@Blaisorblade: claro, y hay otros ejemplos tan notables, pero propongo que escribir un texto de esa manera es un orden de magnitud más difícil para la mayoría de las personas que usar flotadores. Estás hablando de descartar el 99% del diseño del libro para un óptimo inalcanzable. Considere el punto que formulé en mi respuesta: '¿y si una tabla no cabe debajo del texto?' En su escenario, tiene que rediseñar o reescribir, y esto es insostenible en muchas situaciones. –

+1

Bueno, estamos de acuerdo en cuál es el óptimo, y sí, casi siempre es prácticamente inalcanzable. En la vida cotidiana, generalmente me quedo con carrozas. Pero tengo pequeñas tablas y figuras en línea, y funciona bastante bien (siempre que revise la versión final, lo cual es fácil solo porque tengo documentos de un máximo de 20 páginas). Solo veo flotando como una compensación razonable en lugar de una buena cosa :-). – Blaisorblade

4

Aquí es una solución fácil, desde Wikibooks:

El paquete placeins proporciona el comando \ FloatBarrier, que se puede utilizar para evitar que los flotadores se mueva sobre ella.

acabo de poner \FloatBarrier antes y después de cada mesa.

8

esto funcionó para mí,

al principio con los usepackage definiciones incluyen:

\usepackage{placeins} 

y antes y después añadir:

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

Esto coloca a la mesa exactamente donde quiere en el texto.