Como evitar quebra de página nas três últimas linhas de um ambiente?

Como evitar quebra de página nas três últimas linhas de um ambiente?

Quero criar um ambiente cujo conteúdo não deva permitir quebra de página nas três últimas linhas do último parágrafo.

Se as últimas três linhas do texto dentro do ambiente atingirem a borda da página, a quebra de página deverá ocorrer após a quarta linha a partir da parte inferior.

Fora do ambiente o comportamento normal das quebras de página não deve ser alterado.

O ambiente conterá apenas texto normal, mas com margem aumentada à esquerda e à direita. Também podem ocorrer algumas equações matemáticas embutidas, mas deve ser isso.

\documentclass{scrartcl}

\usepackage{lipsum}

\newenvironment{env}{%
    \begin{addmargin}{2em}%
}{%
    \end{addmargin}
}%


\begin{document}
\lipsum[1-3]

\begin{env}
    \lipsum[1]
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This last lines should not be broken to the next page.
    This last lines should not be broken to the next page.
    This last lines should not be broken to the next page.
\end{env}
\end{document}

Editar:

Não tenho certeza, se posso deixar claro, o que tento alcançar: normalmente não saberei onde exatamente começarão as últimas linhas. Em vez disso, é mais provável evitar viúvas, mas não apenas evitar que a última linha do parágrafo seja quebrada para a próxima página, mas as últimas três linhas de texto dentro do ambiente {env}devem sempre permanecer juntas, seja na página real ou no próxima página.

Responder1

Você pode usar \widowpenalties; com

\widowpenalties 3 10000 10000 0

você adiciona uma penalidade de 10.000 entre as últimas três linhas e nenhuma entre as linhas anteriores. Veja tambémComo evitar quebras de página dentro de parágrafos?

\documentclass{scrartcl}

\usepackage{lipsum}

\newenvironment{env}
 {\begin{addmargin}{2em}\widowpenalties 3 10000 10000 0 }
 {\end{addmargin}}


\begin{document}
\lipsum[1-3]

\begin{env}
    \lipsum[1]
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This is just some filler text, to reach the page break.
    This last lines should not be broken to the next page.
    This last lines should not be broken to the next page.
    This last lines should not be broken to the next page.
\end{env}
\end{document}

insira a descrição da imagem aqui

informação relacionada