在两个类之间共享代码

在两个类之间共享代码

我正在编写两个简单的自定义类,一个基于article,另一个基于book。它们共享一些通用代码,例如字体、边距、数字。

我想重复使用常见的代码行,而不是在两个文件之间复制粘贴它们。

我如何在这两个类之间共享代码?

答案1

艾伦展示了两种在运行时共享代码的方法,然而另一种方法是共享代码开发,但提取单独的代码副本以便在运行时加载到文档中。

这用于您提到的两个类:articlebook除了一些不同的默认值等以及对前后内容的一些额外控制之外,在所有方面\flushbottom几乎\twoside相同book

classes.dtx这两个文件由系统从同一文档源中提取,该系统是基本 LaTeX 发行版的一部分。因此和(和)docstrip 的大部分代码仅编写一次,但分别提取到三个类中。articlebookreport

因此,你可以编写一个单独的类文档源,并使用文档保护条标记特定的行,例如

%<*classa>
 stuff here for classa.sty
%</classa>

您想要在每个类中指定不同的版本。

答案2

基本上有两种方法可以做到这一点。

您可以将所有代码放入一个.tex文件中,然后在每个类中使用:

\input{common_code}

这是最简单的方法,如果代码只能在自定义类中使用,那么可能是最直接的方法。

或者,您可以将共享代码打包为一个包,然后使用:

\RequirePackage{common_code}

如果共享代码可用于自定义类之外的文档类(并且如果可以设想这种用途),则此方法可能是更好的选择。

相关内容