Wie kann man zwei Figuren zwingen, in LaTeX auf derselben Seite zu bleiben?

84

Ich habe zwei Bilder, die ich auf einer Seite als Abbildungen anzeigen möchte. Jeder verbraucht etwas weniger als die Hälfte des verfügbaren Platzes, sodass auf dieser Seite nicht viel Platz für andere Dinge ist, aber ich weiß, dass für beide Figuren genügend Platz vorhanden ist. Ich habe versucht, die Zahlen mit [ht] und [hb] zu platzieren, sowohl mit [h] als auch mit [ht], aber ich kann diese beiden Bilder immer noch nicht auf derselben Seite sehen, sondern mindestens ein paar Absätze dazwischen.

Wie zwinge ich diese beiden Figuren, auf derselben Seite zu bleiben?

Kusti
quelle
Eine ähnliche Frage wurde kürzlich auf TeX.SX gestellt, und ich glaube, die Antwort mit dem \afterpageBefehl ist die beste Antwort.
Ich mag Code

Antworten:

139

Sie können zwei Figuren in eine Figurenumgebung einfügen. Beispielsweise:

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

Jede Beschriftung generiert eine separate Ziffernnummer.

Rob Hyndman
quelle
2
Das ist eine schöne Antwort, an die man sich erinnert :). Ich habe nie daran gedacht, aber es sieht sauber aus :).
Bastijn
5
Eine andere Möglichkeit ist das Subfigure-Paket und ein Befehl in der Figurenumgebung von so etwas \subfloat[Caption]{\includegraphics{file}}.
Rupert Nash
10
Es scheint jedoch, dass Sie die beiden verschiedenen Figuren nicht unabhängig voneinander
beschriften können
1
Das Flag "Richtige Antwort" wurde geändert, da dieses das beste zu sein scheint.
Kusti
2
@ Mulone - Es scheint, Sie können, wenn Sie das \labelInnere der \captionUmgebung setzen.
Chris
20

Wenn Sie Bilder zu demselben Thema haben möchten, können Sie subfigurePaket und Konstruktion verwenden:

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

Wenn Sie beispielsweise zwei verschiedene Bilder nebeneinander haben möchten, können Sie Folgendes verwenden:

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

Für Bilder in Spalten haben Sie [1] [2] [3] [4] in der Quelle, aber es sieht so aus

[1] [3]

[2] [4].

Crowley
quelle
1
Sie können auch die von Jerred Russel erwähnte Konstruktion hier verwenden: stackoverflow.com/questions/1673942/latex-table-positioning Point verwendet das floatPaket.
Crowley
15

Ich hatte dieses Problem beim Versuch, Zahlen und Text zu mischen. Was für mich funktioniert hat, war die Option 'H' ohne das '!' Möglichkeit. \begin{figure}[H]
'H' versucht, die Figur genau dort zu erzwingen, wo Sie sie in den Code eingefügt haben. Dies erfordert, dass Sie einschließen \usepackage{float}

Die Optionen werden hier erklärt

Schröder
quelle
1
Ja, das floatPaket ist hier definitiv die richtige Antwort. Ich beklage das oft mit dem! Symbol, wie in \begin{figure}[h!]könnte genauso gut in TeX umgeschrieben werden, \pleaseweil der Compiler immer noch selbst entscheidet, wo Sie Ihr Bild ablegen sollen. Diesmal zwinkert es dir nur zu, anstatt dich zu ignorieren. Mit dem floatPaket wird es sicher das tun, was Sie wollen.
Ely
6

Wenn Sie möchten, dass beide auf derselben Seite sind und beide im Grunde genommen die gesamte Seite einnehmen, ist es die beste Idee, LaTeX anzuweisen, beide auf eine eigene Seite zu stellen!

\begin{figure}[p]

Es wäre wahrscheinlich gegen vernünftige typografische Prinzipien (z. B. hässlich), zwei Abbildungen auf einer Seite mit nur wenigen Textzeilen darüber oder darunter zu haben.


Der Grund dafür [!h]ist übrigens, dass LaTeX angewiesen wird, die üblichen Einschränkungen zu überschreiben, wie viel Speicherplatz für Floats auf einer Seite mit Text vorgesehen werden soll. Wie oben angedeutet, gibt es einen Grund, warum die Einschränkungen vorhanden sind. Das heißt nicht, dass sie etwas gelockert werden können; Siehe dazu die FAQ .

Will Robertson
quelle
1
Genauer gesagt, [p]weist den Compiler nur an, sie nur mit Floats auf eine Seite zu setzen. Dies kann je nach Größe zu getrennten Seiten für die beiden Abbildungen führen oder auch nicht.
fotNelton
2

Versuchen Sie, ein hinzuzufügen !, z [h!].

Bastien Léonard
quelle
funktioniert nicht, Latex ersetzt es durch [ht] und setzt die Abbildung trotzdem auf eine separate Seite.
Boris van Schooten
Funktioniert in der Wiley-Journalvorlage.
Anik Islam Abhi
1

versuche es zuerst mit [h!], aber sonst kannst du es auf hässliche Weise tun.

LateX ist etwas schwierig beim Platzieren von Bildern mit solchen Einschränkungen, da es das Platzieren selbst verwaltet. Was ich normalerweise mache, wenn ich eine Figur genau an dieser Stelle haben möchte, ist etwas wie |:

text in front of image here

 \newpage 
 \figure1 
 \figure2

text after images here

Ich weiß, dass es vielleicht nicht der richtige Weg ist, aber es funktioniert wie ein Zauber :).

//bearbeiten

Sie können dasselbe tun, wenn Sie oben auf der Seite einen kleinen Text wünschen, aber dann einfach / clearpage verwenden. Natürlich können Sie sie auch etwas kleiner skalieren, damit es nicht mehr passiert. Vielleicht ist das nicht sichtbare Leerzeichen etwas größer als Sie vermuten. Ich versuche immer, mein Bild zu verkleinern, bis es auf derselben Seite angezeigt wird, nur um sicherzugehen, dass es keine Überlappung von 1% gibt, sodass all dies nicht benötigt wird .

bastijn
quelle
Danke, [h!] Hat funktioniert! Ich habe Ihre Antwort favorisiert, weil der "hässliche Weg" auch gut zu wissen scheint, selbst wenn ich ihn in diesem Fall nicht brauchte.
Kusti