使用 \medskip 避免段落之间分页

使用 \medskip 避免段落之间分页

考虑这个例子

\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}

相关内容