我正在编写两个简单的自定义类,一个基于article
,另一个基于book
。它们共享一些通用代码,例如字体、边距、数字。
我想重复使用常见的代码行,而不是在两个文件之间复制粘贴它们。
我如何在这两个类之间共享代码?
答案1
艾伦展示了两种在运行时共享代码的方法,然而另一种方法是共享代码开发,但提取单独的代码副本以便在运行时加载到文档中。
这用于您提到的两个类:article
和book
除了一些不同的默认值等以及对前后内容的一些额外控制之外,在所有方面\flushbottom
几乎\twoside
相同book
。
classes.dtx
这两个文件由系统从同一文档源中提取,该系统是基本 LaTeX 发行版的一部分。因此和(和)docstrip
的大部分代码仅编写一次,但分别提取到三个类中。article
book
report
因此,你可以编写一个单独的类文档源,并使用文档保护条标记特定的行,例如
%<*classa>
stuff here for classa.sty
%</classa>
您想要在每个类中指定不同的版本。
答案2
基本上有两种方法可以做到这一点。
您可以将所有代码放入一个.tex
文件中,然后在每个类中使用:
\input{common_code}
这是最简单的方法,如果代码只能在自定义类中使用,那么可能是最直接的方法。
或者,您可以将共享代码打包为一个包,然后使用:
\RequirePackage{common_code}
如果共享代码可用于自定义类之外的文档类(并且如果可以设想这种用途),则此方法可能是更好的选择。