pgfkeys 选项和强制参数之间的差异

pgfkeys 选项和强制参数之间的差异

我尝试使用 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使用该物品时扩展。

相关内容