![Разместить группу текста и изображения на одной экспортированной странице PDF-файла](https://rvso.com/image/254697/%D0%A0%D0%B0%D0%B7%D0%BC%D0%B5%D1%81%D1%82%D0%B8%D1%82%D1%8C%20%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%83%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0%20%D0%B8%20%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BD%D0%B0%20%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9%20%D1%8D%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9%20%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B5%20PDF-%D1%84%D0%B0%D0%B9%D0%BB%D0%B0.png)
Я новичок в 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}