到目前为止,我一直在个人样式文件中收集“常用包”、自定义宏和配置。但是,其中一些配置依赖于其中一个类的使用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>}
但是,我的基类实际上可能是几个文档类之一,即scrartcl
、scrreprt
或scrbook
。我想定义一些包装器类选项(名为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}
默认类是记事本,但选项scrartcl
或scrreprt
将改变它。
在我的测试中我尝试了以下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
也是维护不同文件(包括一些包装器)的好方法)。