Evite quebra de página entre parágrafos com \medskip no meio

Evite quebra de página entre parágrafos com \medskip no meio

Considere este exemplo

\documentclass{report}
\begin{document}
Some text

\medskip
\textbf{Mini title}
\medskip

\nopagebreak
Some more text
\end{document}

Como posso evitar uma quebra de página entre “Mini título” e “Mais algum texto”. Estou explorando \nopagebreakpara esse fim, mas sem sucesso?

Responder1

Copiei o \medbreakcomando do LaTeX e fiz um arquivo \mednobreak. Faz um \nopagebreake um \medskip. Ele anexará a primeira linha do parágrafo seguinte ao arquivo \textbf{Mini title}. Comente a linha marcada para ver o efeito.

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

Responder2

Evite usar comandos explícitos de alteração de fonte.

se você usar um comando de título de seção a marcação será mais flexível e o LaTeX automaticamente cuidará de não permitir uma quebra de página após o título

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

Responder3

Eu sugiro que você carregue o needspacepacote e emita a diretiva

\Needspace*{3\baselineskip}

imediatamente antes da primeira \medskipdirectiva.


Um MWE completo (exemplo mínimo de trabalho):

\documentclass{report}
\usepackage{needspace}
\begin{document}
\dots 

Some text

\Needspace*{3\baselineskip}
\medskip
\textbf{Mini title}
\medskip

Some more text
\end{document}

informação relacionada