如果这个问题在其他地方已经得到解答,我深感抱歉;我见过几个标题类似的问题,但我似乎无法确定这些答案是否适用于我的情况。
我想要做的是定义一个基类,它设置一些默认选项,例如横向。然后,我想定义一个派生类,它加载基类,但将默认值改回纵向。我似乎无法弄清楚如何做到这一点。在下面的 MWE 中,当我加载时base-class
,默认为所需的横向。当我base-class
使用该letterpaper
选项加载时,方向会按预期变为纵向。但是,当我加载时derived-class
,方向仍然是横向而不是letterpaper
。我该怎么做?这些类之间还有其他差异(尽管有很多共同之处),这让我不想只使用base-class
该letterpaper
选项加载。(当然,我可以letterpaper
在加载时手动指定该选项derived-class
,但为了避免这种情况,我只想设置默认值。)我猜问题是因为在derived-class
加载时base-class
,base-class
会执行该landscape
选项并覆盖该letterpaper
选项。但我不知道如何解决这个问题。
梅威瑟:
\begin{filecontents}{base-class.cls}
\NeedsTeXFormat{LaTeX2e} \ProvidesClass{base-class}
\DeclareOption{landscape}{\PassOptionsToClass{\CurrentOption}{article}}
\ExecuteOptions{landscape}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
\LoadClass{article}
% Insert much additional material here
\end{filecontents}
\begin{filecontents}{derived-class.cls}
\NeedsTeXFormat{LaTeX2e} \ProvidesClass{derived-class}
\DeclareOption{letterpaper}{\PassOptionsToClass{\CurrentOption}{base-class}}
\ExecuteOptions{letterpaper}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{base-class}}
\ProcessOptions\relax
\LoadClass{base-class}
% Additional style differences
\end{filecontents}
%\documentclass{base-class} % Landscape
%\documentclass[letterpaper]{base-class} % Portrait
\documentclass{derived-class} % Landscape (portrait desired)
%\documentclass[letterpaper]{derived-class} % Portrait
\usepackage{geometry}
\usepackage{lipsum}
\begin{document}
\lipsum
\end{document}