帮助理解:amsart 类如何存储摘要的内容以供稍后在 \maketitle 中使用?

帮助理解:amsart 类如何存储摘要的内容以供稍后在 \maketitle 中使用?

我希望了解类如何amsart设法存储抽象内容以供后者使用\maketitle,以及为什么它们要求abstract环境先于\maketitle(即这样做有什么好处?)。定义如下:

\newbox\abstractbox
\newenvironment{abstract}{%
  \ifx\maketitle\relax
    \ClassWarning{\@classname}{Abstract should precede
      \protect\maketitle\space in AMS document classes; reported}%
  \fi
  \global\setbox\abstractbox=\vtop \bgroup
    \normalfont\Small
    \list{}{\labelwidth\z@
      \leftmargin3pc \rightmargin\leftmargin
      \listparindent\normalparindent \itemindent\z@
      \parsep\z@ \@plus\p@
      \let\fullwidthdisplay\relax
    }%
    \item[\hskip\labelsep\scshape\abstractname.]%
}{%
  \endlist\egroup
  \ifx\@setabstract\relax \@setabstracta \fi
}

大部分代码我都看不懂,最吸引我的是:这段代码怎么\verb在抽象中允许存在?(为了搭建自己的abstract环境,我尝试过将内容存入宏中,但宏不允许\verb;最后只好将内容存入文件,稍后再输入,这对我来说无疑是一种笨拙的方法)

答案1

AMS 要求abstract环境位于前面,\maketitle因为他们希望它成为标题栏的一部分。这样就可以以取决于最终将使用的内部文档类的方式来处理它。

在这种情况下,它使用 TeX 功能将排版材料存储在垂直框中\vtop(因此参考点将位于材料中的第一个基线)。

语法是

\setbox<box number>=\vtop{...}

其中{}不需要是显式括号,但也可以是\bgroup\egroup(隐式括号)。因此,可以在环境的一部分\vtop中开始 ,在部分中结束。\begin\end

如果在出现错误\begin{abstract}后发现。在任何情况下,都会启动,并带有存储箱。使用适当的设置启动 A。在令牌处将完成排版并将排版材料存储在箱子中。\maketitle\vtop\abstractboxlist\end{abstract}\endlist\egroup

分配是\global因为周围环境形成了一个群体。

缺点是材料无法重新处理(当然,某种形式的重新处理是可能的),但这并不重要,因为材料已经按照所需的格式排版了。

随后\maketitle即可\box\abstractbox投放当前垂直列表中的素材。

相关内容