Come forzare due figure a rimanere sulla stessa pagina in LaTeX?


84

Ho due immagini che desidero visualizzare su una pagina come figure. Ciascuno consuma poco meno della metà dello spazio disponibile, quindi non c'è molto spazio per altre cose su quella pagina, ma so che c'è abbastanza spazio per entrambe le figure. Ho provato a posizionare le figure con [ht] e [hb], sia [h] che entrambi [ht] ma ancora non riesco a ottenere quelle due immagini sulla stessa pagina, ma almeno alcuni paragrafi tra di loro.

Come costringo queste due figure a rimanere sulla stessa pagina?


Una domanda simile è stata posta più recentemente su TeX.SX e credo che la risposta utilizzando il \afterpagecomando sia la risposta migliore.
Mi piace programmare il

Risposte:


141

Puoi mettere due figure all'interno di un ambiente di figure. Per esempio:

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

Ogni didascalia genererà un numero di cifre separato.


2
Questa è una bella risposta da ricordare :). Non ci ho mai pensato ma sembra pulito :).
bastijn

5
Un'altra possibilità è il pacchetto subfigure e un comando all'interno dell'ambiente figure di qualcosa di simile \subfloat[Caption]{\includegraphics{file}}.
Rupert Nash,

11
sembra che tu non possa etichettare le due diverse figure indipendentemente, però
Mulone

1
Cambiato il flag "risposta corretta" perché questo sembra essere il migliore.
Kusti

2
@Mulone - Sembra che puoi se metti \labeldentro l' \captionambiente.
Chris

20

Se vuoi avere immagini sullo stesso argomento, puoi usare subfigurepacchetto e costruzione:

\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 vuoi avere, ad esempio due, immagini diverse una accanto all'altra puoi usare:

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

Per le immagini nelle colonne avrai [1] [2] [3] [4] nella sorgente, ma sembrerà

[1] [3]

[2] [4].


1
È inoltre possibile utilizzare la costruzione di cui parla Jerred Russel qui: stackoverflow.com/questions/1673942/latex-table-positioning Point è nel usando floatil pacchetto.
Crowley,

15

Ho avuto questo problema mentre cercavo di mescolare figure e testo. Ciò che ha funzionato per me è stata l'opzione "H" senza "!" opzione. \begin{figure}[H]
'H' cerca di forzare la cifra ad essere esattamente dove l'hai inserita nel codice. Ciò richiede di includere \usepackage{float}

Le opzioni sono spiegate qui


1
Sì, il floatpacchetto è sicuramente la risposta corretta qui. Mi lamento spesso che usando il! simbolo, come \begin{figure}[h!]potrebbe anche essere riscritto in TeX \pleaseperché il compilatore decide da solo dove mettere la tua immagine. Questa volta ti fa l'occhiolino invece di ignorarti. Il floatpacchetto gli farà fare quello che vuoi di sicuro.
ely

6

Se li vuoi entrambi sulla stessa pagina ed entrambi occuperanno praticamente l'intera pagina, allora l'idea migliore è dire a LaTeX di metterli entrambi su una pagina a parte!

\begin{figure}[p]

Probabilmente sarebbe contrario ai sani principi tipografici (ad esempio, brutto) avere due figure su una pagina con solo poche righe di testo sopra o sotto di esse.


A proposito, il motivo per cui [!h]funziona è perché dice a LaTeX di sovrascrivere le sue solite restrizioni su quanto spazio dovrebbe essere dedicato ai float su una pagina con testo. Come accennato sopra, c'è una ragione per cui ci sono restrizioni. Il che non vuol dire che possano essere allentati in qualche modo; vedere le FAQ su come farlo.


1
Più precisamente, [p]dice solo al compilatore di metterli in una pagina con solo float. Ciò potrebbe o meno portare a pagine separate per le due figure, a seconda delle loro dimensioni.
fotNelton


1

prima prova [h!] ma altrimenti puoi farlo nel modo più brutto.

LateX è un po 'difficile nel posizionare le immagini con tali vincoli in quanto riesce a posizionarsi da solo. Quello che faccio di solito se voglio una figura proprio in quel punto è fare qualcosa come |:

text in front of image here

 \newpage 
 \figure1 
 \figure2

text after images here

So che potrebbe non essere il modo corretto di farlo, ma funziona a meraviglia :).

//modificare

Puoi fare lo stesso se vuoi un piccolo testo nella parte superiore della pagina, ma poi usa / clearpage. Ovviamente puoi anche ridimensionarli un po 'più piccoli in modo che non accada più. Forse lo spazio bianco non visibile è un po 'più grande di quanto sospetti, cerco sempre di ridimensionare la mia immagine fino a quando non appaiono sulla stessa pagina, solo per sapere con certezza che non c'è come l'1% di sovrapposizione solo rendendo tutto ciò non necessario .


Grazie, [h!] Ha funzionato! Ho preferito la tua risposta perché il "modo brutto" sembra anche una cosa buona da sapere anche quando non ne avevo bisogno in questo caso.
Kusti
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.