Beamer 文件和 .cls 与 .sty 约定

Beamer 文件和 .cls 与 .sty 约定

很久以前,我开始定义自己的 tex 文档类,并遇到了 sty/cls 困境。我一直使用描述的答案这里我的经验法则是:

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

当我终于开始开发我的自定义 Beamer 主题时,一切都很顺利。到目前为止,我发现的最全面的指南是这个,并且看起来 beamer 有一个相当复杂的内置内/外主题模式,由 .sty 文件定义。

这显然忽略了经验法则,事实上我们有 4 个针对同一主题的 .sty 文件,这些文件只能与 beamer 一起使用(因此应该有一个 .cls 文件)

这种设计有什么好处?我能忽略投影仪惯例并坚持我错误的好习惯吗?我应该吗?

答案1

Beamer(以及同一作者的 TikZ/PGF)遵循了分区方案。您所描述的实际上仍然遵循该方案,但规模更大。

它既是一个类,又有其内部包(实际上是主题)。

  • 为什么它是文档类?

因为它会改变页面大小、页面元素、典型的标题和作者放置机制、图片和说明文字等。因此您不能将它与其他类一起使用。它从根本上取代了许多常见的 LaTeX 机制。enumitem例如,在 beamer 中,包的缺失是一个不幸的损失,因为它们通常不能很好地协同工作。因此,它必然是一个文档类。

  • 为什么有这么多.sty文件?

这是因为采用自下而上的设计,用 beamer 的术语来说,每个页面内部都包含一些选项;模板。您可以为不同的组件选择不同的模板,比如,我需要一个split带有部分点的页脚和页眉,还有那个配色方案。这是可能的,因为每个子组件都是一个伪包,您可以在封装主题中使用组合和调用它\usetheme{foo}。然后它会从这些.sty文件中获取必要的内容。但我可以制作另一个主题{foo2}并只更改颜色,这将是一行代码的问题。如果像你引用的那样。那将是一个巨大的混乱。例如,请注意,如果您只需要一个 for 循环。您只需要说\usepackage{pgffor}而不是加载整个 TikZ 套件。


我认为手册更像是一种指导方针,而不是 PEP8 类型的强制要求。因此,您无需围绕它树立宗教观念。而且作者们非常清楚跟踪软件包冲突有多困难,因此这是一种保守的方法。

相关内容