![如何设置我的自定义类以根据传递的类选项加载不同的类?](https://linux22.com/image/289180/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%E6%88%91%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E7%B1%BB%E4%BB%A5%E6%A0%B9%E6%8D%AE%E4%BC%A0%E9%80%92%E7%9A%84%E7%B1%BB%E9%80%89%E9%A1%B9%E5%8A%A0%E8%BD%BD%E4%B8%8D%E5%90%8C%E7%9A%84%E7%B1%BB%EF%BC%9F.png)
我以前写过类文件。其中一个甚至在 CTAN 上。但那是很久以前的事了,现在我已经生疏了。
我正在尝试为我的大学推出一个新的类文件。我有点雄心勃勃,想将同一个类文件用于大学信件、表格、报告等(并使用类选项选择每种类型)。原因是这是一个抵制 LaTeX 的地方,能够提供一个文件将有助于向他们推销 LaTeX 的强大功能。此外,其中还涉及一个很酷的因素,我希望探索一下。
从逻辑上讲,每个文档都对应于从标准 LaTeX 类继承,然后添加本地定制。
新的类文件是否可以实现依赖于选项的继承 ( \LoadClass
)?或者这根本就不可能?
答案1
我使用这样的东西:
\ProvidesClass{superclass}
\RequirePackage{xkeyval}% better option processing - there are many other possibilities as you probably know so just adapt as needed
\def\myclasstype{article}% make sure a default is defined
\DeclareOptionX{article}{%
\gdef\myclasstype{article}}
\DeclareOptionX{report}{%
\gdef\myclasstype{report}}
\DeclareOptionX{book}{%
\gdef\myclasstype{book}}
%:pass unrecognised options off to \myclasstype
\DeclareOptionX*{%
\PassOptionsToClass{\CurrentOption}{\myclasstype}}
%:process options
\ProcessOptionsX
%:load \myclasstype
\LoadClass{\myclasstype}% add options if desired
还有其他方法可以做到这一点,如果从头开始,我不一定会这样做,因为我认为我可以使用 的功能来整理事情xkeyval
。但是,这应该足以为您提供基本的想法,您可以根据决定使用的任何选项处理方法进行调整和简化。