Re: Opzioni di pacchetto con xkeyval

#48337
robitex
Amministratore del forum
    Up
    0
    Down
    ::


    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!

    Go to top