包中的类似变量的选项

包中的类似变量的选项

我将最常用的包、宏和环境变成了一个包(并为其中一些定义了选项)。有一件事我不明白。假设我的自定义 .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必须使用不带空格的键。

相关内容