如何检测 \pgfkeys 定义的键的某个参数是否已被赋值

如何检测 \pgfkeys 定义的键的某个参数是否已被赋值

我通过from定义了一个test具有两个参数的键。请参阅下面的代码。/.code n args\pgfkeys

现在,我想检测是否#2已赋值,但导致错误。

所以,我的问题是:

(1)如何检测 \pgfkeys 定义的键的某个参数是否已赋值?

(2)如何为key的参数分配默认值?

例子:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\pgfkeys{test/.code args={#1[#2]}{\ifx#2\empty \parbox{#1}{blank}\else\parbox{#1}{#2}\fi}}

\pgfkeys{test=1in} % My intension is: if #2 is not given, its default value is "blank".

\end{document}

答案1

您应该使用两个键,但您可以通过稍后处理值来实现。

\documentclass{article}
\usepackage{tikz}

\pgfkeys{test/.code={\myparbox{#1}}}

\newcommand{\myparbox}[1]{\myparboxauxa#1[]\myparboxauxa}
\def\myparboxauxa#1[#2]#3\myparboxauxa{%
  \if\relax\detokenize{#2}\relax
    \parbox{#1}{blank}%
  \else
    \parbox{#1}{#2}%
  \fi
}

\begin{document}

X\pgfkeys{test=1in}X

X\pgfkeys{test=1in[something]}X

\end{document}

在此处输入图片描述

相关内容