1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
% keyval2e.sty examples, version 0.0.2, August 2011
\documentclass{article}
\usepackage{keyval2e,color}
\makeatletter
\kve@definekeys[KV]{fam}[mp@]{%
keyone/+/\ifstrcmpTF{#1}{+}{\def\userinput{#1}}{\def\userinput{not `+'}},
keytwo/+,
keythree/+,
keyfour/+,
keyfive/true/\ifmp@keyfive\def\x{keyfive is 'true'}\else
\def\x{keyfive is 'false'}\fi,
keysix/true
}
% \show\ifmp@keyfive
% The starred variant of \kve@definekeys gives error for the
% already defined key 'keyone':
% \kve@definekeys*[KV]{fam}[mp@]{keyone/+}
% Changing the family and macro-prefix makes 'keyone' definable again:
\kve@definekeys*[KV]{famx}[mpx@]{keyone/+}
\def\fourplus{+,+,+,+}
\newcommand*\putmany[2][*]{%
\begingroup
\toks@{}\@tempcnta\z@
\loop
\advance\@tempcnta\@ne
\toks@\expandafter{\the\toks@#1}%
\ifnum\@tempcnta<#2\relax
\repeat
\expandafter\endgroup\the\toks@
}
\newcommand{\testa}[2]{%
\kve@setafterdefaults[KV]{fam}{#2}%
\edef\tempa{\mp@keyone,\mp@keytwo,\mp@keythree,\mp@keyfour}%
\noindent
\vbox{%
\hsize\dimexpr1.1\hsize\relax\leftskip=-1.5cm
\def\redstar{\textcolor{red}{*}}\ttfamily
Test #1: \redstar\space\texttt{\tempa}\space\redstar\space
\ifxTF\tempa\fourplus
{All values are defaults\putmany[\space]{2}}%
{At least one value is set}%
\@spaces\textcolor{red}{||} keyone's value: \userinput
}%
}
\newcommand{\testb}[2][]{\testa{#2}{#1}}
\begin{document}
\title{The \texttt{\color{blue}keyval2e} Package \\Examples}
\maketitle
\testa{Aa}{}\\
\testa{Ba}{keyone=+, keythree=+}\\
\testa{Ca}{keytwo=+, keythree=a}\\
\testa{Da}{keyone=b, keythree=a,keyfour=+}\\
\testb{Ab}\\
\testb[keyone=+, keythree=+]{Bb}\\
\testb[keytwo=+, keythree=a]{Cb}\\
\testb[keyone=b, keytwo=+,keythree=a]{Db}\\
\end{document}
|