我正在处理一份文档,其中各个部分位于同一页面非常重要。
我怎样才能告诉 LaTeX 仅在我写新内容时进行分页(如果需要),\section
而无需手动添加\newpages
?
答案1
\section
可以重新定义宏来添加\newpage
或\clearpage
。后者还强制放置待处理的浮动对象。
% Save the old meaning of \section in \OrgSection
\newcommand*{\OrgSection}{}%
\let\OrgSection\section
% Redefine \section to add \clearpage at the beginning
\renewcommand*{\section}{%
\clearpage
\OrgSection
}
答案2
minipage
通过某些安排,只要该部分不超过一页,就可以使用环境来完成。在其他情况下,文本填充底部边距而不分页,如 MWE 的最后一节(见下文)。
不过,我认为一个一般的经验法则是建议 LaTeX 在哪里分页,通过\pagebreak[3]
每个部分之前的 a(或少于 3 个),以及在哪里不分页,在 \clubpenalty
和中设置高值\windowpenalty
,但让 LaTeX 找到更好的分页位置。然后,如果真的是最终如果结果在某些时候不令人满意,您总是可以在真正需要的地方(且仅在真正需要的地方)使用蛮力(a \pagebreak[4]
,或a\newpage
或\clearpage
如果有浮点数,如 Heiko Oberdiek 所述)。
\documentclass{article}
\usepackage{lipsum} % dummy text
\makeatletter
\renewcommand{\section}{
~\par\@startsection
{section}% % the name
{1}% % the level
{0mm}% % the indent
{2\baselineskip}% % the before skip
{1\baselineskip}% % the after skip
{\Large\bfseries}} % the style
\makeatother
\begin{document}
\section{Lore ipsum}
\lipsum[1]
\noindent\begin{minipage}{\textwidth}
\setlength{\parindent}{2em}
\section{Lore ipsum}
\lipsum[2-5]
\end{minipage}
\noindent\begin{minipage}{\textwidth}
\setlength{\parindent}{2em}
\section{Lore ipsum}
\lipsum[6]
\end{minipage}
\noindent\begin{minipage}{\textwidth}
\setlength{\parindent}{2em}
\section{Lore ipsum}
\lipsum[7]
\end{minipage}
% Ooops .... too long for a **mini** page
\noindent\begin{minipage}{\textwidth}
\setlength{\parindent}{2em}
\section{Lore ipsum}
\lipsum[8-15]
\end{minipage}
\end{document}