
Я хочу создать среду, в которой контент не будет допускать разрыва страницы в последних трех строках последнего абзаца.
Если последние три строки текста внутри окружения достигают границы страницы, разрыв страницы должен происходить после четвертой строки снизу.
За пределами среды обычное поведение разрывов страниц не должно меняться.
Окружение будет содержать только обычный текст, но с увеличенными полями слева и справа. Также могут встречаться некоторые встроенные математические уравнения, но это должно быть все.
\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}
Редактировать:
Я не уверен, смогу ли я ясно объяснить, чего я пытаюсь добиться: я обычно не знаю, где именно начнутся последние строки. Вместо этого, это больше похоже на предотвращение вдов, но не только на предотвращение разрыва последней строки абзаца на следующую страницу, но и на то, что последние три строки текста внутри окружения {env}
всегда должны оставаться вместе, либо на самой странице, либо на следующей странице.
решение1
Вы можете использовать \widowpenalties
; с
\widowpenalties 3 10000 10000 0
вы добавляете штраф 10000 между последними тремя строками и ничего между предыдущими строками. Смотрите такжеКак избежать разрывов страниц внутри абзацев?
\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}