Jak zmusić dwie cyfry do pozostania na tej samej stronie w LaTeX?

84

Mam dwa obrazy, które chcę wyświetlić na stronie jako liczby. Każda z nich zajmuje niewiele mniej niż połowę dostępnej przestrzeni, więc na tej stronie nie ma zbyt wiele miejsca na inne rzeczy, ale wiem, że jest wystarczająco dużo miejsca na obie figurki. Próbowałem umieścić cyfry za pomocą [ht] i [hb], zarówno [h], jak i obu [ht], ale nadal nie mogę uzyskać tych dwóch obrazów na tej samej stronie, ale zamiast tego przynajmniej kilka akapitów między nimi.

Jak zmusić te dwie cyfry do pozostania na tej samej stronie?

Kusti
źródło
Podobne pytanie zadano ostatnio w TeX.SX i uważam, że odpowiedź za pomocą \afterpagepolecenia jest najlepszą odpowiedzią.
Lubię

Odpowiedzi:

140

Możesz umieścić dwie figury w jednym środowisku figur. Na przykład:

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

Każdy podpis wygeneruje oddzielny numer figury.

Rob Hyndman
źródło
2
To miła odpowiedź do zapamiętania :). Nigdy o tym nie myślałem, ale wygląda na czysty :).
bastijn
5
Inną możliwością jest pakiet podkonfiguracji i polecenie w środowisku figury czegoś podobnego \subfloat[Caption]{\includegraphics{file}}.
Rupert Nash
11
Wygląda na to, że nie możesz niezależnie oznaczyć dwóch różnych postaci
Mulone
1
Zmieniono flagę „poprawna odpowiedź”, ponieważ ta wydaje się być najlepsza.
Kusti
2
@Mulone - Wydaje się, że możesz, jeśli umieścisz \labelwnętrze \captionśrodowiska.
Chris
20

Jeśli chcesz mieć zdjęcia na ten sam temat, możesz użyć subfigurepakietu i konstrukcji:

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

Jeśli chcesz mieć na przykład dwa różne obrazy obok siebie, możesz użyć:

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

W przypadku obrazów w kolumnach w źródle będzie [1] [2] [3] [4], ale będzie to wyglądać tak

[1] [3]

[2] [4].

Crowley
źródło
1
Możesz również skorzystać z konstrukcji, o której wspomniał Jerred Russel tutaj: stackoverflow.com/questions/1673942/latex-table-positioning Point is in using floatpackage.
Crowley
15

Miałem ten problem podczas próby pomieszania liczb i tekstu. U mnie zadziałała opcja „H” bez „!” opcja. \begin{figure}[H]
„H” próbuje zmusić cyfrę, aby była dokładnie tam, gdzie umieścisz ją w kodzie. Wymaga to uwzględnienia \usepackage{float}

Opcje są wyjaśnione tutaj

Schroeder
źródło
1
Tak, floatpakiet jest tutaj zdecydowanie poprawną odpowiedzią. Często narzekam, że używając! symbol, co \begin{figure}[h!]równie dobrze może zostać przepisane w TeX-ie, \pleaseponieważ kompilator nadal sam decyduje, gdzie umieścić obraz. Tym razem po prostu mruga do ciebie, zamiast cię ignorować. floatPakiet będzie to robić co chcesz, na pewno.
ely
6

Jeśli chcesz, aby oba znalazły się na tej samej stronie i obaj zajmą w zasadzie całą stronę, najlepszym pomysłem jest poinformowanie LaTeX, aby umieścił je obie na własnej stronie!

\begin{figure}[p]

Byłoby prawdopodobnie sprzeczne z rozsądnymi zasadami typograficznymi (np. Brzydkie), gdyby dwie cyfry na stronie zawierały tylko kilka wierszy tekstu powyżej lub poniżej.


Nawiasem mówiąc, powodem, dla którego to [!h]działa, jest to, że mówi LaTeX-owi, aby zastąpił swoje zwykłe ograniczenia dotyczące tego, ile miejsca należy poświęcić na elementy pływające na stronie z tekstem. Jak wskazano powyżej, istnieje powód, dla którego istnieją ograniczenia. Co nie znaczy, że można je nieco poluzować; zobacz FAQ, jak to zrobić.

Will Robertson
źródło
1
Dokładniej, [p]mówi tylko kompilatorowi, aby umieścił je na stronie tylko z liczbami zmiennoprzecinkowymi. To może, ale nie musi, skutkować utworzeniem oddzielnych stron dla dwóch rysunków, w zależności od ich rozmiaru.
fotNelton
2

Spróbuj dodać !np [h!].

Bastien Léonard
źródło
nie działa, latex zastąpi go [ht], a następnie i tak przystąpi do umieszczania rysunku na osobnej stronie.
Boris van Schooten
Działa w szablonie dziennika Wiley.
Anik Islam Abhi
1

najpierw spróbuj [h!], ale możesz to zrobić w brzydki sposób.

Lateks jest nieco trudny do umieszczania obrazów z takimi ograniczeniami, ponieważ potrafi sam się umieszczać. To, co zwykle robię, jeśli chcę mieć postać dokładnie w tym miejscu, to coś takiego |:

text in front of image here

 \newpage 
 \figure1 
 \figure2

text after images here

Wiem, że to może nie być właściwy sposób, ale działa jak urok :).

//edytować

Możesz zrobić to samo, jeśli chcesz, aby mały tekst znajdował się u góry strony, ale po prostu użyj / clearpage. Oczywiście można je również nieco zmniejszyć, więc tak się już nie dzieje. Może niewidoczne białe spacje są nieco większe niż podejrzewasz, zawsze staram się zmniejszać mój obraz, aż pojawią się na tej samej stronie, żeby wiedzieć na pewno, że nie ma 1% nakładania się tylko dzięki czemu wszystko to nie jest potrzebne .

bastijn
źródło
Dzięki, [h!] Działało! Spodobała mi się twoja odpowiedź, ponieważ „brzydka droga” wydaje się również dobrą rzeczą do poznania, nawet jeśli nie potrzebowałem jej w tym przypadku.
Kusti