如果页面不适合某一部分,则强制在部分之前分页

如果页面不适合某一部分,则强制在部分之前分页

我正在尝试制作一本食谱书。我希望在每个新食谱前都设置一个分页符,但分页符必须能容纳在页面的剩余空间内。

我首先尝试将我的食谱包含在小页面中,但长度超过一页的食谱会显示在一页上(或被剪切)。

我尝试了 Needspace 包,但它似乎不是我想要的,因为如果一个简短的食谱可以放在页面的剩余空间里,我不想浪费空间。

这是一个不起作用的例子:我想将 section2 放在新页面上。

\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage[a6paper]{geometry}
\usepackage[french]{babel}
\usepackage{lipsum}
\linespread{1.5} 
\newenvironment{env1}{\vspace{-1em}\begin{flushright} \itshape }{\end{flushright}\vspace{-1em}}
\title{Test2}

\begin{document}

\section*{section 1}
\begin{env1}
env1 text
\end{env1}
\lipsum[1][1-4]
\section*{section 2}
\begin{env1}
env1 text
\end{env1}
\begin{enumerate}
    \item item1
    \item item2
    \item item3
\end{enumerate}
\lipsum[1][1-4]
\section*{section 3}
\begin{env1}
env1 text
\end{env1}
\lipsum[1][1-4]
\begin{enumerate}
    \item item1
    \item item2
    \item item3
    \item item4
    \item item5
    \item item6
\end{enumerate}
\section*{section 4}
\begin{env1}
env1 text
\end{env1}
\lipsum[1][1-3]
\end{document}

编辑

@David Calisle:谢谢帮助。我可能误用了 needspace:如果我想将第 2 节放在新页​​面上(因为它无法容纳剩余空间),我需要使用 \needspace{.7\textheight}(0.6 是不够的)。但现在第 4 节被发送到新页面,而它可以放在第 3 节下方(在同一页面上)。

以下是代码的背面链接:https://www.overleaf.com/read/mdstfpxpwwsp

\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{needspace}
\usepackage[a6paper]{geometry}
\usepackage[french]{babel}
\usepackage{lipsum}
\usepackage{titlesec}
\linespread{1.5} 
\let\LaTeXStandardSection\section
\makeatletter
\renewcommand{\section}[1]{\needspace{0.7\textheight}\LaTeXStandardSection{#1} }
\makeatother
\newenvironment{env1}{\vspace{-1em}\begin{flushright} \itshape }{\end{flushright}\vspace{-1em}}
\title{Test2}

\begin{document}

\section{section 1}
\begin{env1}
env1 text
\end{env1}
\lipsum[1][1-2]
\section{section 2}
\begin{env1}
env1 text
\end{env1}
\begin{enumerate}
    \item item1
    \item item2
    \item item3
\end{enumerate}
\lipsum[1][1-4]
\section{section 3}
\begin{env1}
env1 text
\end{env1}
\lipsum[1][1-2]
\begin{enumerate}
    \item item1
    \item item2
\end{enumerate}
\section{section 4}
\begin{env1}
env1 text
\end{env1}
\lipsum[1][1-2]
\end{document}

答案1

Donals Arseneau 给了我需要的答案。但我无法选择这个答案,因为它是评论。通过在所有部分之前添加 \filbreak,分页行为就是我需要的。

\let\LaTeXStandardSubsection\subsection
\makeatletter
\renewcommand{\subsection}[1]{\filbreak\LaTeXStandardSubsection{#1}}
\makeatother

感谢大家的帮助。

相关内容