我尝试使用 pgfkeys 包。下面是一个使用 pgfkeys 的简单命令的简短示例。我想知道为什么变量的包含内容在它是命令的强制参数的情况下和在它是选项的情况下不会以相同的方式考虑。
正如您下面所看到的,如果我使用#2
或,\prop
我不会获得相同的输出。
\documentclass[a4paper]{article}
\setlength{\parindent}{0em}
\usepackage{pgfkeys}
\usepackage{pgffor}
\pgfkeys{
/nom/.code=\def\nom{#1},
/prenom/.code=\def\prenom{#1},
/prop/.code=\def\prop{#1},
/prop/.default = {age,ville,couleur}
}
\newcommand{\qui}[2][]{
\pgfkeys{#1}
I am \prenom{} \nom{} !
\medskip
\#2 contains : #2
\medskip
prop contains : \prop
\medskip
If I use \#2 I get :\\
\foreach \item in {#2} {
\item \\
}
\medskip
If I use prop option I get :\\
\foreach \item in {\prop} {
\item \\
}
}
\begin{document}
\qui[prenom = toto, nom = titi, prop = {29,perpignan,bleu}]{29,perpignan,bleu}
\end{document}
答案1
大多数循环宏都有类似的情况。如果你去
\foreach \item in {a,b,c}
然后循环将旋转三次,第一次\item
设置为开启。a
如果你走的话
\def\prop{a,b,c}
\foreach \item in {\prop}
循环只会旋转一次,并被\item
定义为\prop
仅在之后a,b,c
使用该物品时扩展。