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?


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.


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].


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


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ć.


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


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 .


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.