将“摘要”一词与实际摘要放在同一页上

将“摘要”一词与实际摘要放在同一页上

我正在写一份报告,并使用特定的 .cls 文件进行布局和字体等。摘要定义如下:

\newenvironment{abstract}
{
\btypeout{Abstract Page}
\thispagestyle{empty}
\null\vfil
\begin{center}
\setlength{\parskip}{0pt}
{\normalsize \UNIVNAME \par}
\bigskip
{\underline{ABSTRACT} \par}
\bigskip
{\normalsize \FACNAME \par}
{\normalsize \DEPTNAME \par}
\bigskip
{\normalsize \underline{This is a report}\par}
\bigskip
{\normalsize\bf \@title \par}
\medskip
{\normalsize by \authornames \par}
\bigskip
 \end{center}
 }

然而,在文档中当我使用

\begin{abstract}
 Many words that require 2 pages
\end{abstract}

“摘要”一词连同其余定义的术语出现在页面底部,摘要实际上从下一页开始。我想要的是“摘要”一词位于页面顶部,然后实际的摘要页面应该从那里开始,我认为这是正常的做法。到目前为止,一种解决方法是将minipage整个摘要包含在其中,从而强制“摘要”从页面顶部开始。但是,我很难在 minipage 中手动拆分页面,因为整个文本不适合。仅供参考,就在我之前,abstract我有以下内容:

\begin{document} 
\frontmatter
\title{My title} % TODO Fill in your title
\authors{\texorpdfstring
{\href{mailto:myemail@myuni}{My name}} % TODO Fill in your email address and name
{My name} % TODO Fill in your name (again)
}
\addresses{\groupname\\\deptname\\\univname} 
\date{\today}
\subject{}
\keywords{}
\supervisor{Some names} % TODO Fill in your supervisor's name(s)
\examiner{Some names} % TODO Fill in your examiner's name

\maketitle

答案1

实际上,您得到的正是您想要的:一个可无限拉伸的垂直空间,后面是标题,后面是您自己指出的最理想的分页符 —— 即环境的结尾center。后面的其他潜在分页符都没有如此高的“奖励”(段落行间分页会被收取“惩罚”,两段间分页通常不会收取,但也不会获得奖励),而另一方面,您已规定标题上方的垂直空间可以任意拉伸,且完全没有成本。

我详细阐述了 cfr 的答案中提供的代码,以禁止在环境中包含的文本开始之前出现所有可能的分页符abstract

\documentclass{article}
\usepackage{lipsum}

\makeatletter
\renewenvironment{abstract}
{%
  \typeout{Abstract Page}%
  \cleardoublepage % or simply \clearpage
  \thispagestyle{empty}%
  \begingroup
    \centering
    \setlength{\parskip}{0pt}%
    {\normalsize UNIVNAME \par}%
    \nobreak\bigskip
    {\underline{ABSTRACT} \par}%
    \nobreak\bigskip
    {\normalsize FACNAME \par}%
    {\normalsize DEPTNAME \par}%
    \nobreak\bigskip
    {\normalsize \underline{This is a report}\par}%
    \nobreak\bigskip
    {\normalsize\bfseries \@title \par}%
    \nobreak\medskip
    {\normalsize by \@author \par}%
  \endgroup
  \nobreak\addvspace{\glueexpr\topsep+\partopsep}%
}{}

\makeatother
\title{Title}
\author{Author}

\begin{document}
  \begin{abstract}
    \lipsum[1-5]
  \end{abstract}
\end{document}

该代码产生的输出基本与 cfr 相同。

\null\vfil最后说一句:在环境定义开头说的原因abstract可能是你想要一个短的摘要(或多或少)垂直居中在一页上;那对命令可能与\vfil\null终止环境的代码中发出的命令配对,这在您的问题中没有显示。但是您说您的摘要有两页长。我同意 cfr 的观点,您没有足够清楚地说明您真正想要实现的目标。除非您这样做,否则几乎不可能有效地帮助您。

答案2

由于您的代码不完整,粘贴到标准文档的序言中时无法编译,因此很难确切知道发生了什么。但是,如果您的摘要需要运行到第二页或更多,那么包含\null\vfil几乎肯定不是您想要的。

我已经用占位符或标准命令替换了未定义的命令,并且使用\renewcommand而不是\newcommand仅仅为了重现问题。

下面的代码避免了我尝试重建时不必要地推送到页面底部。它是否适合您是另一个问题。

您发布的代码本质上假设摘要不需要继续到第二页。否则,就会发生您发现的奇怪事情。

\bf我还用LaTeX-2e 等效项替换了早已过时的字体开关\bfseries。过时的命令早已弃用,不应再使用。

\documentclass{article}
\usepackage{kantlipsum}
\makeatletter
\renewenvironment{abstract}
{%
  \typeout{Abstract Page}
  \thispagestyle{empty}
  \begin{center}
    \setlength{\parskip}{0pt}
    {\normalsize UNIVNAME \par}
    \bigskip
    {\underline{ABSTRACT} \par}
    \bigskip
    {\normalsize FACNAME \par}
    {\normalsize DEPTNAME \par}
    \bigskip
    {\normalsize \underline{This is a report}\par}
    \bigskip
    {\normalsize\bfseries \@title \par}
    \medskip
    {\normalsize by \@author \par}
    \bigskip
  \end{center}
}{}
\makeatother
\title{Title}
\author{Author}

\begin{document}
  \begin{abstract}
    \kant[1-5]
  \end{abstract}

\end{document}

长摘要

相关内容