Один из способов сделать то, что вы хотите, это:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgf}
\pgfkeys{
/keys/.is family,
/keys,
test 1/.store in=\testone,
test 1/.initial=unset,
test 2/.store in=\testtwo,
test 2/.initial=unset,
}
\newcommand\setkeys[1]{\pgfkeys{/keys,#1}}
\begin{document}
\setkeys{test 1=ONE,test 2=TWO}
t1 : \testone,
t2 : \testtwo.
\end{document}
Примечания:
- используйте обработчик
.initial
для установки начального значения ключа
- вам не нужен обработчик
.cd
для семьи
- Я определил макрос
\setkeys
для установки ключей из списка через запятую
- если вы хотите установить ключи с помощью макроса, который определен как
\def\mykey{test 1=ONE,test 2=TWO}
, вы столкнетесь с некоторыми слегка болезненными проблемами расширения. Одним из способов решения этой проблемы является использование \edef\Addkey{\noexpand\pgfkeys{/keys, \mykey}}\Addkey
- вместо использования
.store in
вы можете позволить \pgfkeys
хранить значения ключей и использовать \pgfkeysvalueof{/keys/test 1}
и т. Д. Для печати их значений. Для этого я обычно определяю макрос типа \newcommand\Keys{\pgfkeysvalueof{/keys/#1}}
, который вы бы использовали как \Keys{test 1}
.
Кстати, вам лучше публиковать вопросы TeX на tex.stackexchange.com.