使用`\abstract`和`abstract`环境之间有什么区别?

使用`\abstract`和`abstract`环境之间有什么区别?

因此我看到有一个\abstract{...}命令(通过 TeXlipse 的建议),但是我在网上找到的大多数示例都使用如下环境结构:

\begin{abstract}
something like \lipsum or \blindtext
\end{abstract}

由于我假设\abstract{...}函数类似\section{...},这让我感到疑惑。这两个选项之间有什么区别吗?特别是,使用其中一个相对于另一个有什么优点或缺点吗?

答案1

简化\begin{foo}有以下四个作用:

  1. 检查环境foo(更确切地说是宏\foo)是否存在;
  2. 开一个群(\begingroup);
  3. 将当前环境的名称 ( \@currenvir) 设置为foo
  4. 执行\foo(实际上\csname foo\endcsname)。

\end{foo}同样地,

  1. 执行\endfoo(更准确地说\csname endfoo\endcsname);
  2. 检查关闭的环境是否与之前打开的环境相同(通过foo与之前保存的环境进行比较\@currenvir);
  3. 关闭群组(\endgroup)。

标准类、KoMa类和memoir都定义abstract环境。在这种情况下,只需调用\abstract{...}(我只用 进行了测试article)不会出错,但结果会令人费解:使用 类时,article字体大小和边距会减小,而没有\end{abstract}这个会扩展到以下文本。发生这种情况是因为跳过了步骤 1 到 3,特别是\begingroup;并且由于没有 ,\end{abstract}组(从未打开过)将不会关闭,并且无论字体和/或边距和/或任何更改\abstract都不会局限于摘要。

有一些类(我猜主要是日志;我可以提到webofc.clsPoS.cls,因为我必须使用它们)定义\abstract为接受一个参数的宏。写作

\begin{abstract}
Some text.
\end{abstract}

通常也不会产生错误,但结果不会是预期的输出:只有字母S会被作为参数\abstract(无论它做什么),其余的(“ ome text.”)将以某种方式排版,并且\end{abstract}可能会引发错误,因为即使\endabstract尚未定义,构造\csname...\endcsname也会扩展为\relax

回到你的问题:

具体来说,使用其中一种相对于另一种有什么优点或缺点吗?

底线是:它与优点或缺点无关:\begin{abstract}...\end{abstract}如果类将抽象定义为环境,则必须使用,\abstract{...}如果类将抽象定义为宏,则必须使用。

相关内容