Secondo voi, si potrebbero definire più variabili nello stesso comando \dim, magari in termini di variabili solo precedentemente definiti?
Ebbene si!!! basta elaborare la lista \XKV@rm (con l’ausilio del pacchetto etextools):
`\documentclass{report}
\usepackage{etextools}
\usepackage{xkeyval}
\makeatletter
\DeclareCmdListParser{\parser@csv}{,}
\def\dim#1{%
\setkeys*{dimfam}{#1}
\ifx\XKV@rm\empty
\setrmkeys{dimfam}%
\else
\parser@csv[\definesingle@key]{\XKV@rm}
\setrmkeys{dimfam}%
\fi
}
%
\def\definesingle@key#1{\make@newkey#1\@nil}
\def\make@newkey#1=#2\@nil{%
% creo la nuova dimensione
\expandafter\newdimen\csname #1\endcsname
%
% creo la chiave ad essa associata
\define@key{dimfam}{#1}{%
\csname #1\endcsname=\dimexpr##1\relax
}
}
\makeatother
\begin{document}
\dim{a=10mm,b=30mm}a=\the\a;b=\the\b.
\dim{a=10mm,b=\a/2,c=\b/2}a=\the\a;b=\the\b;c=\the\c.
\end{document}`
Alla prossima!