我尝试为使用 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}
(我认为真正的问题已经包含在宏或类似程序中,您可以在其中进行适当的扩展。)