[texhax] Recording options with pgfkeys

José Romildo Malaquias j.romildo at gmail.com
Wed May 5 14:16:49 CEST 2010

I want to define some options with pgfkeys in LaTeX. Some keys should be
stored in its own macro as well as in a collective macro that could be
used later to reuse those options when calling another macro.

For instance, consider the hypothetic command below whose options are
dealt with pgfkeys:

\mycmd[fontfamily=\ttfamily,fontsize=\small]{...}

This would define macros in the body of \mycmd that would look like this

\def\my at fontfamily{\ttfamily}
\def\my at fontsize{\small}
\def\my at collected@options{fontfamily=\ttfamily,fontsize=\small}

and in the definion of \mycmd, I would use all of them:

\newcommand\mycmd[2][]{%
\pgfkeys{#1}%
% ... do something with the individual option commands
\my at fontfamily\my at fontsize
% ... and also make all of the options available to another
% ... command without having to pass them individually
\expandafter\my at other@cmd\expandafter[\expandafter{\my at collected@options}]{#2}%
}

The option values should not be expanded in the definition of
\def\my at collected@options. This means that the call to \my at other@cmd
will see the options

fontfamily=\ttfamily

and

fontsize=\small

without expanding \ttfamily and \small. That would be done by the call
to \pgfkeys in its body.

How can I implement this? Any help?

Romildo