我将最常用的包、宏和环境变成了一个包(并为其中一些定义了选项)。有一件事我不明白。假设我的自定义 .sty 文件中有这个环境定义:
\newenvironment{myenvironment}
{\par\addvspace{3ex}%
\nopagebreak\noindent\hspace{0.5in}}
{\par\addvspace{3ex}%
\ignorespacesafterend}
现在,当我加载包时,我希望能够自定义这个环境的选项,比如:
\usepackage[myenvironment hspace=1in]{mydefaultpreamble}
我怎么做?
答案1
这是该包的一个示例kvoptions
。
\RequirePackage{kvoptions}
\SetupKeyvalOptions {}
\ProvidesPackage{mydefaultpreamble}
\DeclareStringOption[0.5in]{myenvironmenthspace}
\newenvironment{myenvironment}
{\par\addvspace{3ex}%
\nopagebreak\noindent\hspace{\mydefaultpreamble@myenvironmenthspace}}
{\par\addvspace{3ex}%
\ignorespacesafterend}
\ProcessKeyvalOptions{mydefaultpreamble}
并使用它
\documentclass{article}
\usepackage[myenvironment hspace=5cm]{mydefaultpreamble}
\begin{document}
\begin{myenvironment}
Some text
\end{myenvironment}
\setkeys{mydefaultpreamble}{myenvironmenthspace=2cm}
\begin{myenvironment}
Another text
\end{myenvironment}
\end{document}
如您所见,定义键时必须不带空格,但可以使用空格,尽管我不建议这样做。但是,\setkeys
必须使用不带空格的键。