섹션이 페이지에 맞지 않으면 섹션 앞에 페이지 나누기를 강제 적용합니다.

섹션이 페이지에 맞지 않으면 섹션 앞에 페이지 나누기를 강제 적용합니다.

레시피북을 만들려고 합니다. 나는 페이지의 나머지 공간에 맞을 수 있다는 점을 제외하고 각각의 새로운 레시피 전에 페이지 나누기를 갖고 싶습니다.

먼저 미니페이지에 레시피를 포함시키려고 하는데 한 페이지보다 긴 레시피가 한 페이지에 표시되거나 잘려 표시됩니다.

페이지의 남은 공간에 짧은 레시피가 들어갈 수 있다면 공간을 허비하고 싶지 않기 때문에 내가 원하는 것이 아닌 것 같은 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\texttheight}를 사용해야 합니다(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를 추가하면 pagebreak 동작이 필요합니다.

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

도움을 주셔서 감사합니다.

관련 정보