我希望能够将两个选项传递给一个包(实际上是一个类),并使它们相同。最好的方法是什么?
也就是说,我想要:
\documentclass[norsk]{myclass}
和
\documentclass[bokmal]{myclass}
做同样的事情。
答案1
这在一定程度上取决于你如何在内部实现它们。如果这两个选项设置了某种标志,那么最简单的方法是手动编码
\newif\if@mypkg@norsk
\DeclareOption{norsk}{\@mypkg@norsktrue}
\DeclareOption{bokmal}{\@mypkg@norsktrue}
如果代码比较复杂,那么最简单的方法可能是编写一个宏来完成工作
\newcommand*\mypkg@option@norsk{
% Code here
}
\DeclareOption{norsk}{\mypkg@option@norsk}
\DeclareOption{bokmal}{\mypkg@option@norsk}
答案2
@Andrew:以下解决方案存在潜在危险:在不太复杂的情况下无休止地进行反向链接。您需要一个标志来避免这种情况。请参阅\XKV@replacepointers
xkeyval 包中的宏。
\DeclareOption{a}{%
\renewcommand{\synonymous}{Greetings Earthlings}}
\DeclareOption{b}{\ExecuteOptions{a}}
答案3
我将 TH. 对 Joseph 的回答的评论发布为答案,因为它也有效。(CW,因为它是 TH. 的答案。)
synonymous.sty
包含:
\ProvidesPackage{synonymous}
\newcommand{\synonymous}{Hello world}
\DeclareOption{a}{%
\renewcommand{\synonymous}{Greetings Earthlings}}
\DeclareOption{b}{\ExecuteOptions{a}}
\ProcessOptions
而synonmyous.tex
:
\documentclass{minimal}
\usepackage[a]{synonymous}
\begin{document}
\synonymous
\end{document}
更改a
为b
对结果没有明显的影响。