\PassOptionsToClass 不起作用

\PassOptionsToClass 不起作用

我正在尝试创建自己的类,继承自extarticle

我希望仍然能够使用此类的选项,因此我在阅读的大多数文档中找到了一种方法:

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{extarticle}}
\ProcessOptions\relax

不幸的是,这不起作用。我不明白,因为很多文档都建议这样做。

即使我尝试对命令进行硬编码,也不会发生任何事情:

\PassOptionsToClass{14pt}{extarticle}

读取选项的唯一方法extarticle似乎是在 loadclass 命令期间对它们进行硬编码(这不是我想要的):

\LoadClass[14pt,english]{extarticle}

我的课程到目前为止什么都没做,只是做了最低限度的事情:

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{base}[2017/12/19 base class]

\LoadClass{extarticle}

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{extarticle}}
\ProcessOptions\relax

答案1

此处语句\LoadClass写得太早:派生类必须先处理选项,然后用 指示将未知的选项(即派生类未定义的选项)交给基类\DeclareOption*,然后再加载基类。

类代码——稍作修改,以便轻松更改基类

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{extbase}[2017/12/19 base class]

\def\extbase@baseclass{extarticle}

\DeclareOption{myoption}{\typeout{This is a nice option}}

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\extbase@baseclass}}
\ProcessOptions\relax

\LoadClass{\extbase@baseclass}

请注意,\LoadClassWithOptions{extarticle}而不是\LoadClass{extarticle}在这里是没用的,因为它不会识别在派生类中定义的选项,因此 LaTeX 会抱怨未知选项。

一些测试代码

\documentclass[14pt,myoption]{extbase}

\usepackage{blindtext}

\begin{document}

\blindtext
\end{document}

错误示例\LoadClassWithOptions——以下输出显示 LaTeX 警告有关myoption未知的内容extarticle

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{extbasewrong}[2017/12/19 base class]

\def\extbase@baseclass{extarticle}

\DeclareOption{myoption}{\typeout{This is a nice option}}

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\extbase@baseclass}}
\ProcessOptions\relax

\LoadClassWithOptions{\extbase@baseclass}

输出:

这是 pdfTeX,版本 3.14159265-2.6-1.40.18(TeX Live 2017)

(预加载格式=pdflatex)\write18 已启用。进入扩展模式

(./clsloaderwrong.tex LaTeX2e <2017-04-15> Babel <3.15> 和

已加载 84 种语言的连字模式。(./extbasewrong.cls

文档类别:extbasewrong 2017/12/19 基类 这是一个很好的

选项 )

(/usr/local/texlive/2017/texmf-dist/tex/latex/extsizes/extarticle.cls

文档类别:extarticle 1996/10/08 v1.0 非标准 LaTeX 文档类别

(/usr/local/texlive/2017/texmf-dist/tex/latex/extsizes/size14.clo)

(/usr/local/texlive/2017/texmf-dist/tex/latex/base/exscale.sty)

(/usr/local/texlive/2017/texmf-dist/tex/latex/blindtext/blindtext.sty

(/usr/local/texlive/2017/texmf-dist/tex/latex/tools/xspace.sty)

LaTeX 警告:未使用的全局选项:

[myoption].

(./clsloaderwrong.aux)

[1{/usr/local/texlive/2017/texmf-var/fonts/map/pdftex/up

dmap/pdftex.map}](./clsloaderwrong.aux)

) 输出写在

clsloaderwrong.pdf(1 页,14840 字节)。抄录于

clsloaderwrong.log。

相关内容