为一组文档类定义包装器类

为一组文档类定义包装器类

到目前为止,我一直在个人样式文件中收集“常用包”、自定义宏和配置。但是,其中一些配置依赖于其中一个类的使用KOMA-Script,因此(根据我自己的回答类和包 —— 有什么区别?) 良好的做​​法规定我将我的个人文件重写为包装类。

根据LaTeX 伴侣myclass.cls,构建article.cls并传递用户指定的类选项到基类的包装类文件将如下所示,例如,

\ProvidesClass{myclass}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
\LoadClass{article}
\RequirePackage{<package list>}

或者更简单一点,

\ProvidesClass{myclass}
\LoadClassWithOptions{article}
\RequirePackage{<package list>}

但是,我的基类实际上可能是几个文档类之一,即scrartclscrreprtscrbook。我想定义一些包装器类选项(名为article/ report/ book),通过指定其中一个选项,加载相应的KOMA-Script类。(如果我不指定其中任何一个,scrbook则默认加载。)我该如何处理这个问题?

答案1

这个方案似乎有效:

\ProvidesClass{lockstep}
\DeclareOption{scrartcl}{\def\lock@class{scrartcl}}
\DeclareOption{scrreprt}{\def\lock@class{scrreprt}}
\DeclareOption{scrbook}{\def\lock@class{scrbook}}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\lock@class}}
\ExecuteOptions{scrbook}
\ProcessOptions\relax
\LoadClass{\lock@class}

默认类是记事本,但选项scrartclscrreprt将改变它。

在我的测试中我尝试了以下abstract选项:

\documentclass[abstract]{lockstep}

给出Unused global option(s): [abstract],而

\documentclass[scrartcl,abstract]{lockstep}

不显示消息。

答案2

以下对我有用。我喜欢键提供的灵活性,但你必须\RequirePackage{kvoptions-patch}创建自己的格式来包含它。

\begin{filecontents*}{myclass.cls}
  \ProvidesClass{myclass}
  \RequirePackage{pgfopts}
  \pgfkeys{%
    /MyClassKeys/class/.store in = \MyClass,
    /MyClassKeys/class = scrbook}%
  \ProcessPgfOptions{/MyClassKeys}
  \LoadClassWithOptions{\MyClass}
\end{filecontents*}

\RequirePackage{kvoptions-patch}
\documentclass[class = extarticle,14pt]{myclass}

\begin{document}

This is my class using the \MyClass{} class

\end{document}

请注意,实际上不是包装器,而是类本身。如果发现它更容易维护(但这.dtx也是维护不同文件(包括一些包装器)的好方法)。

相关内容