Як змусити дві фігури залишатися на одній сторінці в LaTeX?


84

У мене є два зображення, які я хочу відобразити на сторінці у вигляді рисунків. Кожен з’їдає трохи менше половини доступного місця, тому на цій сторінці не залишається місця для будь-якого іншого матеріалу, але я знаю, що місця для обох малюнків достатньо. Я намагався розмістити малюнки з [ht] і [hb], як [h], так і обома [ht], але все одно я не можу отримати ці два зображення на одній сторінці, а замість них хоча б кілька абзаців між ними.

Як змусити ці дві фігури залишатися на одній сторінці?


Подібне запитання було задано нещодавно на TeX.SX, і я вважаю, що відповідь за допомогою \afterpageкоманди є найкращою відповіддю.
Я люблю

Відповіді:


140

Ви можете помістити дві фігури всередину одного фігурного середовища. Наприклад:

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

Кожен підпис буде генерувати окремий номер цифри.


2
Це гарна відповідь, яку слід пам’ятати :). Ніколи про це не думав, але це виглядає чисто :).
bastijn

5
Інша можливість - пакет підфігур і команда всередині фігурного середовища чогось подібного \subfloat[Caption]{\includegraphics{file}}.
Rupert Nash

10
здається, що ви не можете \ позначити дві різні фігури самостійно, проте
Мулоне

1
Змінено прапор "правильної відповіді", оскільки цей, здається, найкращий.
Кусті,

2
@Mulone - Здається, ти можеш, якщо помістити \labelвсередину \captionсередовища.
Кріс

20

Якщо ви хочете мати зображення на ту саму тему, ви можете використовувати subfigureпакет та конструкцію:

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

Якщо ви хочете мати, наприклад, два різних зображення поруч один з одним, ви можете використовувати:

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

Для зображень у стовпцях у джерелі буде [1] [2] [3] [4], але це буде виглядати так

[1] [3]

[2] [4].


1
Ви також можете використовувати конструкцію згадуваного Jerred Russel тут: stackoverflow.com/questions/1673942/latex-table-positioning точки знаходиться у використанні floatпакета.
Кроулі,

15

У мене була ця проблема під час спроби змішати рисунки та текст. У мене спрацював варіант "H" без "!" варіант. \begin{figure}[H]
"H" намагається змусити фігуру знаходитись саме там, де ви ввели її в код. Для цього потрібно включити \usepackage{float}

Варіанти пояснюються тут


1
Так, floatпакет тут - це точно правильна відповідь. Я часто нарікую, що за допомогою! символ, як і \begin{figure}[h!]може бути переписаний в TeX, \pleaseоскільки компілятор все ще просто вирішує сам, куди помістити ваше зображення. Цього разу воно просто підморгує вам, а не ігнорує вас. floatПакет буде зробити це робити то , що ви хочете точно.
Елі,

6

Якщо ви хочете, щоб вони обидва були на одній сторінці, і вони обидва займуть в основному цілу сторінку, то найкраща ідея - сказати LaTeX розмістити їх обох на власній сторінці!

\begin{figure}[p]

Ймовірно, було б протилежним типографським принципам (наприклад, потворним) мати на сторінці дві фігури з лише кількома рядками тексту над ними або нижче.


До речі, причина, яка [!h]працює, полягає в тому, що вона наказує LaTeX відмінити свої звичні обмеження щодо того, скільки місця слід відвести плаваючим сторінкам із текстом. Як мається на увазі вище, є причина, через яку існують обмеження. Що не означає, що їх можна дещо послабити; дивіться поширені запитання щодо цього.


1
Точніше, [p]лише говорить компілятору розміщувати їх на сторінці лише з поплавками. Це може або не призведе до окремих сторінок для двох рисунків, залежно від їх розміру.
fotNelton


1

спробуйте спочатку [h!], але в іншому випадку ви можете зробити це потворно.

LateX трохи важко розміщувати зображення з такими обмеженнями, оскільки він сам управляє розміщенням. Що я зазвичай роблю, якщо хочу фігуру прямо в цьому місці, це щось на зразок |:

text in front of image here

 \newpage 
 \figure1 
 \figure2

text after images here

Я знаю, що це може бути не правильним способом, але це працює як шарм :).

// редагувати

Ви можете зробити те ж саме, якщо хочете трохи тексту у верхній частині сторінки, але потім просто використовуйте / clearpage. Звичайно, ви також можете зменшити їх трохи менше, щоб цього більше не траплялося. Можливо, невидимий пробіл трохи більший, ніж ви підозрюєте, я завжди намагаюся зменшити своє зображення, доки вони не з'являться на одній сторінці, просто щоб точно знати, що не є перекриття на 1%, і все це не потрібно .


Дякуємо, [h!] Спрацювало! Я підтримав вашу відповідь, тому що "потворний спосіб", здається, також хороший матеріал, який потрібно знати, навіть коли мені це не потрібно було в цьому випадку.
Кусті,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.