如何定义类的默认选项?

如何定义类的默认选项?

我不明白在编写子类时如何将选项传递给父类。我尝试了几种可能性,但从未得到齐平左对齐的方程式。

LoadClass我确实理解和之间的区别,LoadClassWithOptions但我认为这不是问题所在。未注释的行与我从文档 clsguide.pdf 中理解的内容相对应,但它不起作用。

\RequirePackage{filecontents}

% my class file
\begin{filecontents}{baz.cls}
\PassOptionsToClass{fleqn}{article}
\ProcessOptions\relax
%\LoadClass[fleqn]{article}
\LoadClass{article}
%\LoadClassWithOptions{article}
\RequirePackage{amsmath}
\end{filecontents}

\documentclass{baz} 
%\documentclass[fleqn]{baz} 

\usepackage{lipsum}

\begin{document}
\lipsum[1]
\begin{equation*}
    e^{i\pi} + 1 = 0
\end{equation*}
\lipsum[2]
\end{document}

答案1

本例中的混淆来自于这样一个事实:实际上包amsmath需要知道选项fleqn。目前,您没有向传递任何选项amsmath。一个可行的设置是:

baz.sty

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
\LoadClass[fleqn]{article}
\RequirePackage[fleqn]{amsmath}

tex 文件:

\documentclass[a4paper]{baz} 

\usepackage{lipsum}

\begin{document}
\lipsum*[1]
\begin{equation*}
    e^{i\pi} + 1 = 0
\end{equation*}
\lipsum[2]
\end{document}

示例输出

在这里,您可以看到将附加选项传递给类,该类使用fleqnoption 额外加载。包也amsmath使用 option 加载fleqn。在这种情况下,包选项可能是不必要的,但这模仿了

\documentclass[fleqn]{article}
\usepackage{amsmath}

相关内容