使用宏构建键值参数。

使用宏构建键值参数。

我尝试为使用 keyval 和宏的包创建参数,但这不起作用:

以下是演示代码:

\documentclass{minimal}
\usepackage{listings}
\lstset{language=Pascal}
\def\flags{language=Pascal}
\lstset{\flags}
\begin{document}
\end{document}

第一个\lstset成功了。第二个失败了,

! Package keyval Error: language=Pascal undefined.

关于如何做到这一点,您有什么想法吗?

答案1

这些keyval方法都避免扩展输入,因此在您的\lstset{\flags}示例中,代码看到的是\flags宏的内容,而不是宏的内容。这里的错误消息有点无用,因为它是由 TeX 扩展的,所以它看起来和你期望的一样!你需要在应用 keyval 宏之前扩展输入

\documentclass{minimal}
\usepackage{listings}
\lstset{language=Pascal}
\def\flags{language=Pascal}
\expandafter\lstset\expandafter{\flags}
\begin{document}
\end{document}

(我认为真正的问题已经包含在宏或类似程序中,您可以在其中进行适当的扩展。)

相关内容