我正在尝试使用该包options
来定义一个新的命令类型选项,当没有提供参数时,该选项将调用默认参数。我尝试了以下 MWE,它定义了新的选项类型myopttype
。它适用于案例 I 中的示例,但不适用于案例 II 中的示例,其中 xxx 应该以斜体排版。
我不太熟悉该软件包的内部工作原理options
。有人能帮我吗?
\documentclass{article}
\usepackage{options}
\makeatletter
\options{
/handlers/new myopttype/.new handler = [\itshape]\optionsalso{%
#1/.new cmd = \option@set{#1}{##1}\optionvalue,
#1/.type = mypottype,
#1/.initial = {#2},
},
}
\options{
/mycommand/.new family,
/mycommand/myoption/.new myopttype
}
\newcommand{\mycommand}[1][]{%
\options{/mycommand,#1}%
}
\makeatother
\begin{document}
{\bfseries Testing the option:}
\vspace{1.5mm}
{\bfseries Case I:} Using \texttt{\textbackslash mycommand[myoption=\textbackslash bfseries]}
aaa {\mycommand[myoption=\bfseries] xxx}.
\vspace{1.5mm}
{\bfseries Case II:} Using \texttt{\textbackslash mycommand}
aaa {\mycommand xxx}.
\end{document}
答案1
我对该包一无所知options
,但看起来您必须为键设置一个值才能声明默认值。定义
\newcommand{\mycommand}[1][myoption=\itshape]{%
\options{/mycommand,#1}%
}
似乎解决了这个问题,但整个事情似乎相当复杂。如果你在最初的部分添加一些东西,你可以简化定义。使用
\options{
/handlers/new myopttype/.new handler = [\itshape]\optionsalso{%
#1/.new cmd = \option@set{#1}{##1}\optionvalue,
#1/.type = mypottype,
#1/.initial = {#2},
#1/.default = \itshape,
},
}
定义可以更简单
\newcommand{\mycommand}[1][myoption]{%
\options{/mycommand,#1}%
}
这要好得多,因为它避免了代码重复。