如果部分内容不适合当前页面,我希望它们从新页面开始。换句话说:如果部分内容适合当前页面,则打印它;如果部分内容不适合,则从下一页开始打印。
我希望这样做自动地。
\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
一些想法:
- 在节的开始和结束处设置
\label
s 并检查它们是否在同一页上。您需要多次运行,并且必须标记节的结束。 - 排版部分内容(例如在迷你页面中)并检查其长度。这将非常脆弱。而且您必须抓住内容。
答案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}