编辑我的 google-fu 显然低于标准,这里有一个简单的解决方案:如果整个部分不适合当前页面,则部分应自动开始新页面
如果整个部分不适合页面的剩余部分,我想强制每个部分从新的页面开始。
我曾尝试使用迷你页面,但当文本超出页面可用空间时,它们就会失败。(我希望仅当这些部分是该页面上的唯一内容时,才允许它们溢出到另一个页面)。
这也不起作用:
\begin{samepage}
\section{Some title}
\lipsum[1-5]
\end{samepage}
\begin{samepage}
\section{Some title}
\lipsum[1-4]
\end{samepage}
\begin{samepage}
\section{Some title}
\lipsum[1-30]
\end{samepage}
答案1
下面的代码可以实现你想要的效果。但是它有一些重要的限制:
- s内部不可能存在浮点数
Section
。 - 章节不能任意长,总高度最大为 16383.99998 pt。
不确定是否还有更多限制。
\documentclass[]{article}
\makeatletter
\newsavebox\Section@box
\newenvironment*{Section}
{%
\par
\setbox\Section@box\vbox\bgroup
\@ifnextchar[
\Section@
\Section@@
}
{%
\egroup
\ifdim\pagetotal=0pt
\else
\ifdim\pagegoal<\dimexpr\ht\Section@box+\dp\Section@box\relax
\clearpage
\fi
\fi
\unvbox\Section@box
}
\long\def\Section@[#1]#2%
{%
\section[{#1}]{#2}%
}
\newcommand\Section@@[1]
{%
\section{#1}%
}
\makeatother
\usepackage{lipsum}
\begin{document}
\begin{Section}{Some title}
\lipsum[1-5]
\end{Section}
\begin{Section}{Some title}
\lipsum[1-4]
\end{Section}
\begin{Section}{Some title}
\lipsum[1-30]
\end{Section}
\end{document}