类和包 —— 有什么区别?

类和包 —— 有什么区别?

有人能解释一下类和包之间的区别吗?我们称其为prosper类和amsmath包。我找不到它们的区别。

答案1

请参阅适用于课程和软件包编写者的 LaTeX2e,“它是一个类还是一个包?” 它陈述了以下“经验法则”:

如果 [new] 命令可以与任何文档类一起使用,则将它们作为一个包;如果不能,则将它们作为一个类。

下面这段引言可能更有启发性:

[A] 公司可能有一个本地 ownlet类,用于使用自己的带头便笺纸打印信件。此类类将建立在现有类之上,letter但不能与任何其他文档类一起使用,因此我们有ownlet.cls而不是ownlet.sty

相比之下,该graphics包提供了将图像包含到 LaTeX 文档中的命令。由于这些命令可以用于任何文档类,因此我们有graphics.sty而不是graphics.cls

答案2

首先:一个文档只能有一个类,但可以有多个包。

一个类设置整体文档格式,如可用的章节结构(例如,由和\chapter提供但不由提供),并且还定义一些基本的字体相关的宏。bookreportarticle

一般来说,包只是一些带有接口的打包的 LaTeX 代码。它可以添加和修改文档的样式,也可以添加更多功能。例如,tikz一个包允许您绘制图表,但根本不会修改文档样式(为什么要这样做?)。

答案3

我发现这个常见问题解答(什么是 LaTeX 类和包?) 可能有助于理解这个问题。

我在此仅将全文引述如下:

什么是 LaTeX 类和包?

LaTeX 的目标是成为通用文档处理器。通过选择一些指令,用户可以使用 TeX 基元,可以实现这一目标,但这种程序被认为过于死板(对于普通用户来说可能过于艰巨)。因此,LaTeX 的设计者创建了一个模型,该模型提供了文档设计的抽象。显然,并非所有文档看起来都一样(即使用抽象的眼光来看也是如此),因此该模型使用文档类。基本 LaTeX 提供五种文档类:书籍、报告、文章和信件。对于每个类,LaTeX 都提供了一个类文件;用户可以通过文档顶部的 \documentclass 命令安排使用它。因此,一个以 开头的文档

\documentclass{article}
可以被称为“文章文档”。

这是一个不错的方案,但它有一个明显的缺陷:LaTeX 类文件提供的实际排版设计并不受欢迎。解决这个问题的方法是改进类。为了改进类,程序员可以编写一个加载现有类的新类文件,然后对文档设计进行自己的处理。

如果用户找到了这样一个精炼的类,那么一切都很好,但如果没有,常见的方法是加载一个(或几个)包。

LaTeX 发行版本身提供的软件包文件很少,但在档案中可以找到很多由各种作者编写的软件包文件。有几个软件包专门用于调整文档的设计 — 使用此类软件包可以实现程序员通过改进类所实现的功能。

其他软件包提供了新的功能:例如,图形包(实际上作为任何 LaTeX 分发版的一部分提供)允许用户将外部提供的图形加载到文档中,而 hyperref 包允许用户在文档中构建超级引用。

在光盘上,类文件和包文件仅在其名称“扩展名”上有所不同——类文件称为 *.cls,而包文件称为 *.sty。因此,我们发现 LaTeX 标准文章类在光盘上由一个名为 article.cls 的文件表示,而 hyperref 包在光盘上由一个名为 hyperref.sty 的文件表示。

在 LaTeX 2.09 中,类与包的区别并不明显 — 所有东西都被称为样式(“文档样式”或“文档样式选项”)。命名法的改变其实并不重要:重要的是要理解其他人在谈论什么。

本答案最后编辑于:2013-10-21

网络上有这个问题:https://texfaq.org/FAQ-clsvpkg

相关内容