¿Cómo forzar a dos figuras a permanecer en la misma página en LaTeX?

84

Tengo dos imágenes que quiero mostrar en una página como figuras. Cada uno ocupa poco menos de la mitad del espacio disponible, por lo que no hay mucho espacio para otras cosas en esa página, pero sé que hay suficiente espacio para ambas figuras. Traté de colocar las figuras con [ht] y [hb], tanto [h] como con ambos [ht] pero aún así no puedo poner esas dos imágenes en la misma página, sino al menos algunos párrafos entre ellas.

¿Cómo hago para que esas dos cifras permanezcan en la misma página?

Kusti
fuente
Se hizo una pregunta similar más recientemente en TeX.SX, y creo que la respuesta usando el \afterpagecomando es la mejor respuesta.
Me gusta codificar

Respuestas:

140

Puede poner dos figuras dentro de un entorno de figura. Por ejemplo:

\begin{figure}[p]
\centering
\includegraphics{fig1}
\caption{Caption 1}
\includegraphics{fig2}
\caption{Caption 2}
\end{figure}

Cada título generará un número de figura separado.

Rob Hyndman
fuente
2
Esa es una buena respuesta para recordar :). Nunca pensé en ello, pero parece limpio :).
bastijn
5
Otra posibilidad es el paquete de subfiguras y un comando dentro del entorno de la figura de algo como \subfloat[Caption]{\includegraphics{file}}.
Rupert Nash
11
parece que no se puede \ label las dos figuras diferentes de forma independiente, aunque
Mulone
1
Se cambió la bandera de "respuesta correcta" porque esta parece ser la mejor.
Kusti
2
@Mulone: ​​parece que puedes si pones el \labelinterior del \captionentorno.
Chris
20

Si desea tener imágenes sobre el mismo tema, puede usar el subfigurepaquete y la construcción:

\begin{figure}
 \subfigure[first image]{\includegraphics{image}\label{first}}
 \subfigure[second image]{\includegraphics{image}\label{second}}
 \caption{main caption}\label{main_label}
\end{figure}

Si desea tener, por ejemplo, dos imágenes diferentes una al lado de la otra, puede usar:

\begin{figure}
 \begin{minipage}{.5\textwidth}
  \includegraphics{image}
  \caption{first}
 \end{minipage}
 \begin{minipage}{.5\textwidth}
  \includegraphics{image}
  \caption{second}
 \end{minipage}
\end{figure}

Para las imágenes en columnas, tendrá [1] [2] [3] [4] en la fuente, pero se verá como

[1] [3]

[2] [4].

Crowley
fuente
1
También puede usar la construcción mencionada por Jerred Russel aquí: stackoverflow.com/questions/1673942/latex-table-positioning El punto está en uso del floatpaquete.
Crowley
15

Tuve este problema al intentar mezclar figuras y texto. Lo que funcionó para mí fue la opción 'H' sin el '!' opción. \begin{figure}[H]
'H' intenta forzar a la figura a estar exactamente donde la pones en el código. Esto requiere que incluyas \usepackage{float}

Las opciones se explican aquí.

Schroeder
fuente
1
Sí, el floatpaquete es definitivamente la respuesta correcta aquí. A menudo lamento que el uso de! símbolo, ya \begin{figure}[h!]que bien podría reescribirse en TeX \pleaseporque el compilador todavía decide por sí mismo dónde colocar su imagen. Esta vez te guiña el ojo en lugar de ignorarte. El floatpaquete hará que haga lo que quieras con seguridad.
Ely
6

Si quieres que ambos estén en la misma página y ambos ocupen básicamente toda la página, entonces la mejor idea es decirle a LaTeX que los ponga a ambos en una página propia.

\begin{figure}[p]

Probablemente sería contrario a los principios tipográficos sólidos (por ejemplo, feo) tener dos figuras en una página con solo unas pocas líneas de texto arriba o debajo de ellas.


Por cierto, la razón por la que [!h]funciona es porque le está diciendo a LaTeX que anule sus restricciones habituales sobre cuánto espacio debe dedicarse a los flotadores en una página con texto. Como se indicó anteriormente, hay una razón por la que existen restricciones. Lo que no quiere decir que se puedan aflojar un poco; consulte las preguntas frecuentes sobre cómo hacerlo.

Will Robertson
fuente
1
Más precisamente, [p]solo le dice al compilador que los ponga en una página con flotantes solamente. Eso puede resultar o no en páginas separadas para las dos figuras, dependiendo de su tamaño.
fotNelton
2

Intente agregar !, por ejemplo [h!].

Bastien Léonard
fuente
no funciona, latex lo reemplazará con [ht], luego proceda a poner la figura en una página separada de todos modos.
Boris van Schooten
Funciona en la plantilla de la revista Wiley.
Anik Islam Abhi
1

intente [h!] primero, pero de lo contrario puede hacerlo de la manera más fea.

LateX es un poco difícil de colocar imágenes con restricciones como se las arregla para colocarse. Lo que suelo hacer si quiero una figura en ese lugar es hacer algo como |:

text in front of image here

 \newpage 
 \figure1 
 \figure2

text after images here

Sé que puede que no sea la forma correcta de hacerlo, pero funciona como un encanto :).

//editar

Puede hacer lo mismo si desea un pequeño texto en la parte superior de la página, pero luego use / clearpage. Por supuesto, también puede escalarlos un poco más pequeños para que no suceda más. Tal vez el espacio en blanco no visto es un poco más grande de lo que sospecha, siempre trato de reducir mi imagen hasta que aparecen en la misma página, solo para estar seguro de que no hay una superposición del 1%, lo que hace que todo esto no sea necesario .

bastijn
fuente
Gracias, [¡h!] ¡Funcionó! Me incliné por tu respuesta porque el "camino feo" también parece una buena información incluso cuando no lo necesitaba en este caso.
Kusti