
Рассмотрим этот пример.
\documentclass{report}
\begin{document}
Some text
\medskip
\textbf{Mini title}
\medskip
\nopagebreak
Some more text
\end{document}
Как мне избежать разрыва страницы между "Мини-заголовком" и "Еще немного текста". Я пытаюсь \nopagebreak
сделать это, но безрезультатно?
решение1
Я скопировал \medbreak
команду из LaTeX и создал \mednobreak
. Она делает \nopagebreak
и \medskip
. Она прикрепит первую строку следующего абзаца к \textbf{Mini title}
. Закомментируйте отмеченную строку, чтобы увидеть эффект.
\documentclass{report}
\usepackage{lipsum}
\def\mednobreak{\par\ifdim\lastskip<\medskipamount
\removelastskip\nopagebreak\medskip\fi}
\begin{document}
\lipsum[1-4]
\lipsum[2]
another line % comment to see difference
\medskip
\textbf{Mini title}
\mednobreak
\lipsum[1]
\end{document}
решение2
Избегайте использования явных команд изменения шрифта.
Если вы используете команду заголовка раздела, разметка становится более гибкой, и LaTeX автоматически заботится о том, чтобы не допустить разрыва страницы после заголовка.
\documentclass{report}
\begin{document}
Some text
\vspace{40\baselineskip}% heading and text stay on this page
%\vspace{41\baselineskip}% heading and text go to next page
Some text
\subsection*{Mini title}
Some more text
\end{document}
решение3
Предлагаю вам загрузить needspace
пакет и выдать директиву
\Needspace*{3\baselineskip}
непосредственно перед первой \medskip
директивой.
Полный MWE (минимальный рабочий пример):
\documentclass{report}
\usepackage{needspace}
\begin{document}
\dots
Some text
\Needspace*{3\baselineskip}
\medskip
\textbf{Mini title}
\medskip
Some more text
\end{document}