Como forçar duas figuras a permanecer na mesma página no LaTeX?

84

Tenho duas imagens que desejo exibir em uma página como figuras. Cada um consome pouco menos da metade do espaço disponível, então não há muito espaço para qualquer outra coisa nessa página, mas sei que há espaço suficiente para ambas as figuras. Tentei colocar as figuras com [ht] e [hb], ambos [h] e ambos [ht], mas ainda não consigo colocar essas duas imagens na mesma página, mas pelo menos alguns parágrafos entre elas.

Como faço para forçar essas duas figuras a permanecer na mesma página?

Kusti
fonte
Uma pergunta semelhante foi feita mais recentemente no TeX.SX, e acredito que a resposta usando o \afterpagecomando é a melhor resposta.
Eu gosto de codificar

Respostas:

140

Você pode colocar duas figuras dentro de um ambiente de figura. Por exemplo:

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

Cada legenda irá gerar um número de figura separado.

Rob Hyndman
fonte
2
Essa é uma boa resposta para lembrar :). Nunca pensei nisso, mas parece limpo :).
bastijn
5
Outra possibilidade é o pacote de subfiguração e um comando dentro do ambiente de figura de algo parecido \subfloat[Caption]{\includegraphics{file}}.
Rupert Nash
10
parece que você não pode \ rotular as duas figuras diferentes independentemente
Mulone
1
Mudou o sinalizador "resposta correta" porque esta parece ser a melhor.
Kusti
2
@Mulone - Parece que você consegue se colocar o \labeldentro do \captionambiente.
Chris
20

Se você quiser ter imagens sobre o mesmo assunto, você pode usar subfigurepacote e construção:

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

Se você quiser ter, por exemplo, duas imagens diferentes uma ao lado da outra, você pode 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 imagens em colunas, você terá [1] [2] [3] [4] na fonte, mas será semelhante a

[1] [3]

[2] [4].

Crowley
fonte
1
Você também pode usar a construção mencionada por Jerred Russel aqui: stackoverflow.com/questions/1673942/latex-table-positioning Point is in using floatpackage.
Crowley
15

Eu tive esse problema ao tentar misturar figuras e texto. O que funcionou para mim foi a opção 'H' sem o '!' opção. \begin{figure}[H]
'H' tenta forçar a figura a estar exatamente onde você a colocou no código. Isso requer que você inclua \usepackage{float}

As opções são explicadas aqui

Schroeder
fonte
1
Sim, o floatpacote é definitivamente a resposta correta aqui. Muitas vezes lamento que usar o! símbolo, como também \begin{figure}[h!]pode ser reescrito no TeX ou \pleaseporque o compilador ainda decide por si mesmo onde colocar sua imagem. Ele apenas pisca para você neste momento, em vez de ignorá-lo. O floatpacote fará com que ele faça o que você quiser com certeza.
ely
6

Se você quiser que os dois estejam na mesma página e ambos ocuparão basicamente a página inteira, a melhor ideia é dizer ao LaTeX para colocá-los em uma página própria!

\begin{figure}[p]

Provavelmente seria contra princípios tipográficos sólidos (por exemplo, feio) ter duas figuras em uma página com apenas algumas linhas de texto acima ou abaixo delas.


A propósito, isso [!h]funciona porque está dizendo ao LaTeX para substituir suas restrições usuais sobre quanto espaço deve ser dedicado aos flutuantes em uma página com texto. Conforme indicado acima, há uma razão para as restrições existirem. O que não quer dizer que possam ser um pouco afrouxados; veja o FAQ sobre como fazer isso.

Will Robertson
fonte
1
Mais precisamente, [p]apenas diz ao compilador para colocá-los em uma página apenas com floats. Isso pode ou não resultar em páginas separadas para as duas figuras, dependendo de seu tamanho.
fotNelton
2

Experimente adicionar um !, por exemplo [h!].

Bastien Léonard
fonte
não funciona, o latex irá substituí-lo por [ht] e, de qualquer maneira, colocar a figura em uma página separada.
Boris van Schooten
Funciona no modelo de jornal Wiley.
Anik Islam Abhi
1

tente [h!] primeiro, mas você pode fazer da maneira mais feia.

LateX é um pouco difícil em colocar imagens com tais restrições, uma vez que consegue se colocar. O que normalmente faço se quero uma figura bem naquele local é algo como |:

text in front of image here

 \newpage 
 \figure1 
 \figure2

text after images here

Eu sei que pode não ser a maneira correta de fazer isso, mas funciona como um encanto :).

//editar

Você pode fazer o mesmo se quiser um pequeno texto no topo da página, mas então apenas usar / clearpage. Claro que você também pode escalá-los um pouco menores para que isso não aconteça mais. Talvez o espaço em branco não visto seja um pouco maior do que você suspeita, eu sempre tento diminuir minha imagem até que apareçam na mesma página, só para ter certeza de que não há sobreposição de 1% apenas tornando tudo isso desnecessário .

Bastijn
fonte
Obrigado, [h!] Funcionou! Eu favoreci sua resposta porque o "jeito feio" também parece uma coisa boa para saber, mesmo quando eu não precisava dela neste caso.
Kusti