如果整个部分不适合当前页面,则部分应自动开始新页面

如果整个部分不适合当前页面,则部分应自动开始新页面

如果部分内容不适合当前页面,我希望它们从新页面开始。换句话说:如果部分内容适合当前页面,则打印它;如果部分内容不适合,则从下一页开始打印。

我希望这样做自动地

\usepackage{titlesec}似乎是解决方案,但我无法让它完成工作。

  • 应该用 来做什么titlesec?怎么做?
  • 有没有更好的方法?

答案1

有一个简单的解决方案,只需要一次传递......

\documentclass{article}

\newcommand\mysection{\vfil\penalty-9999\vfilneg\section}

\usepackage{lipsum}

\begin{document}
\mysection{A} \lipsum[3]
\mysection{B} \lipsum[1-2]
\mysection{C} \lipsum[5] 
\end{document}

答案2

一些想法:

  1. 在节的开始和结束处设置\labels 并检查它们是否在同一页上。您需要多次运行,并且必须标记节的结束。
  2. 排版部分内容(例如在迷你页面中)并检查其长度。这将非常脆弱。而且您必须抓住内容。

答案3

如果各个部分的长度不会超过一页,您可以将它们包装在一些牢不可破的环境中(例如,小页面),如果它们不适合,它们将自动移动到下一页。

\documentclass{article}

\usepackage{lipsum}

\begin{document}

\noindent\begin{minipage}{\textwidth}
\section{title}
\lipsum[1-2]
\end{minipage}

\bigskip
\noindent\begin{minipage}{\textwidth}
\section{title}
\lipsum[1]
\end{minipage}

\bigskip
\noindent\begin{minipage}{\textwidth}
\section{title}
\lipsum[1-2]
\end{minipage}

\bigskip
\noindent\begin{minipage}{\textwidth}
\section{title}
\lipsum[1-2]
\end{minipage}

\end{document} 

相关内容