Разместить группу текста и изображения на одной экспортированной странице PDF-файла

Разместить группу текста и изображения на одной экспортированной странице PDF-файла

Я новичок в Tex, и этот вопрос, возможно, сформулирован не совсем удачно, поэтому я постараюсь объяснить его подробнее.

Я пишу справочное руководство, в котором много «блоков», имеющих одинаковую структуру: фрагмент текста (возможно, один или два коротких абзаца), а затем изображение (обычно снимок экрана).

Я хотел бы иметь возможность определить такой блок таким образом, чтобы при экспорте документа в PDF вывод был на той же странице. Я понимаю, что некоторые страницы будут заполнены наполовину, когда этот "блок" начнется и не влезет на текущую страницу. В этих случаях я ожидаю, что блок будет полностью размещен на следующей странице.

Я играл с \begin{samepage}, \begin{minipage}и подобными вещами (много искал в этом же интернете) безуспешно. Очевидно, я делаю что-то неправильно или выбираю плохой подход к решению проблемы.

Взгляните на мой код:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Phasellus leo ipsum, dictum non auctor quis, euismod vitae enim. Mauris varius.

\begin{figure}[h]
  \begin{center} \includegraphics[scale={0.7}]{IMG1} \end{center}
  \caption{Image caption}
  \label{fig:IMG1}
\end{figure}

Я бы хотел, чтобы весь этот фрагмент текста (2 абзаца) и один рисунок всегда находились на одной странице.

Можно ли этого достичь? На самом деле я думал, что понял это, когда обнаружил \begin{minipage}! Если это так, можете ли вы написать короткий код, показывающий, как это использовать? (помните, я новичок, и некоторые очевидные вещи для меня сейчас не так очевидны).

Редактировать:Я попробую совет @Werner, но я уже использую \newcommand для сокращения всех ранее написанных сред \begin{figure}. Как это:

\newcommand{\figureSF}[4]{
  \begin{figure}[h]
    \begin{center} \includegraphics[scale={#4}]{#1} \end{center}
    \caption{#2}
\label{#3}
\end{figure}
}

Таким образом, предыдущий фрагмент кода превращается в:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Phasellus leo ipsum, dictum non auctor quis, euismod vitae enim. Mauris varius.

\figureSF{IMG1}{Image caption}{fig:IMG1}{0.7}

Поскольку эта новая команда принимает только 4 параметра, есть ли простой способ изменить ее, чтобы справиться с ситуацией, которую вы описываете?

решение1

Похоже, вы пишете кучу текста, а между ними есть эти "блоки", которые вы хотите "сохранить вместе". Для этого, учитывая, что вы уже используете окружение figureдля изображения, вы можете включить текст абзаца в свой figure. TeX неважно, что содержится внутри окружения - это может быть таблица, изображение, какой-то текст, что угодно. Вот небольшой пример:

введите описание изображения здесь

\documentclass{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage[demo]{graphicx}% http://ctan.org/pkg/graphicx
\begin{document}
\lipsum[1-2]
\begin{figure}
  \hrulefill\par
  \lipsum[3-4]
  \centering\includegraphics[scale={0.7}]{IMG1}
  \caption{Some caption}\label{fig:label1}
  \hrulefill
\end{figure}
\lipsum[5-6]
\lipsum[7-8]
\begin{figure}
  \hrulefill\par
  \lipsum[9-10]
  \centering\includegraphics[scale={0.7}]{IMG2}
  \caption{Some other caption}\label{fig:label2}
  \hrulefill
\end{figure}
\lipsum[11-12]
\end{document}​

Я добавил \hrulefillвыше и ниже плавающего "блока", чтобы было понятно, что текстовое содержимое плавает вместе с изображением. Также, [demo]возможностьgraphicxэто только для этого примера, так как у меня нет изображений, которые вы упоминаете/используете.

Обратите внимание, что все ограничения (и преимущества!) для float-элементов относятся к этому использованию. Например, часть текста/float-элементов, разрешенная вверху/внизу страницы и т. д. Подробнее об этом можно узнать наlayoutsупаковка документация(раздел6 макетов плавающих элементов, стр. 21).

Что касается размещения фигур, см.Как повлиять на положение плавающих объектов, таких как рисунок и таблица, в LaTeX?Размещение таблиц и рисунков поблизости от места их упоминания).

Также возможно объединение этого в одну команду:

\documentclass{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage[demo]{graphicx}% http://ctan.org/pkg/graphicx
\newcommand{\figureSF}[5]{%
  \begin{figure}[ht]
    \hrulefill\par
    #1\par\bigskip
    \centering\includegraphics[scale=#5]{#2}
    \caption{#3}\label{#4}
    \hrulefill
  \end{figure}
}
\begin{document}
\lipsum[1-2]
\figureSF{\lipsum[3-4]}{IMG1}{Some caption}{fig:label1}{0.7}
\lipsum[5-6]
\lipsum[7-8]
\figureSF{\lipsum[9-10]}{IMG2}{Some other caption}{fig:label2}{0.7}
\lipsum[11-12]
\end{document}​

Связанный контент