diff options
author | Karl Berry <karl@freefriends.org> | 2012-11-06 22:35:59 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-11-06 22:35:59 +0000 |
commit | 6cab410e49d491c2884a037e0a134eeb2c2acda9 (patch) | |
tree | 5b7b72852382a70ac7f27f43b913d1da8f66ed12 /Master/texmf-dist/doc/latex/skeyval/skeyval-pokayoke1.tex | |
parent | 705b4d8f092a56d9ae900940d265fb6f55b3033d (diff) |
skeyval (6nov12)
git-svn-id: svn://tug.org/texlive/trunk@28197 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/skeyval/skeyval-pokayoke1.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/skeyval/skeyval-pokayoke1.tex | 131 |
1 files changed, 93 insertions, 38 deletions
diff --git a/Master/texmf-dist/doc/latex/skeyval/skeyval-pokayoke1.tex b/Master/texmf-dist/doc/latex/skeyval/skeyval-pokayoke1.tex index 2617d621840..2be16f1aa95 100644 --- a/Master/texmf-dist/doc/latex/skeyval/skeyval-pokayoke1.tex +++ b/Master/texmf-dist/doc/latex/skeyval/skeyval-pokayoke1.tex @@ -1,4 +1,4 @@ - +\makeatletter \RequirePackage{skeyval-ltxpatch} % With 'skeyval-ltxpatch' loaded, class options will not be zapped and @@ -12,6 +12,8 @@ watermarkcolor=brown!80!yellow ]{skeyval-testclass} +%\show\@unusedoptionlist + \skvifpackageloaded{xcolor}{}{\usepackage[dvipsname]{xcolor}} \usepackage{lipsum} @@ -27,8 +29,6 @@ unknown-option, ]{skeyval-testpkg} -\makeatletter - % Keys whose names are zapped internally: \skvzcmdkeys[KV]{fam}[mp@]{provide value,give value}[true]{} \skvzboolkeys[KV]{fam}[mp@]{provide value,give value}[true]{} @@ -39,7 +39,7 @@ \skvpntkey[KV]{fam}{evaluate (?) as (?) using (?)}[\x\y{\numexpr\x*2}]{% \def\argone{#1}\def\argtwo{#2}\def\argthree{#3}% % '\detokenize{\pgfmath}' won't work here! - \skvxifin{\relax\string\pgfmath}{\relax\detokenize{#3}}{% + \skvxifinTF{\relax\string\pgfmath}{\relax\detokenize{#3}}{% #3% }{% \edef#2{#3}% @@ -62,7 +62,7 @@ % comma (,), it should be enclosed in braces. \directkeys*{ - .exec=\skvsratchcnt\z@, + .exec=\skvtestcnt\z@, .prefix = KV1, .family = fam1, .holder prefix = mp@, @@ -73,8 +73,7 @@ .initialize keys after define=false, .new keys = { .ord/keya/{dfta,dftb}/ - \def\cmda##1{#1*##1*#2} - \logsetting + \def\cmda##1{#1*##1*#2}\logsetting , .arg/keya/{#1,#2}, .cmd/keyb/{1cm,2cm}/ @@ -84,7 +83,7 @@ .bool/keyd/true, .cmd/keye/dfte/\def\cmde##1{##1#1}, .cmd/keyf/dftf/\def\cmdf##1{##1#1}, - .ord/.value required{keyg}/dftg, + .ord/.need value{keyg}/dftg, .ord/.forbid value{keyh}/dfth, }, .args={ @@ -101,7 +100,9 @@ keyd,keye,keyf,keyg }, .restore keys = keye, - .choice=keye/{ + .link={keye2/keye}, + % Choices for keye can be declared directly: + .estate pattern={keye,keye2}/{ center.do=\def\curralign##1{\hfil##1\hfil}, right.do=\def\curralign##1{\hfill##1}, left.do=\def\curralign##1{##1\hfill}, @@ -143,19 +144,17 @@ .add families={fam3,fam4}, .try=14, .upper goal=12, - .success list=\mysuccesslist - }{ - keya={val1,val2},keyb={1cm,2cm} + .success list=\mysuccesslist, + .kv={keya={val1,val2},keyb={1cm,2cm}} }, % .exec code={\show\mysuccesslist}, \directkeys*{ - .exec=\skvsratchcnt\z@\def\mysuccesslist{}, + .exec=\skvtestcnt\z@\def\mysuccesslist{}, .paths={KUA/fam1,KUB/fam2}, .define keys={ - .ords/{keya,keyb,keyc}/.na/ + .ord/{keya,keyb,keyc}/.na/ \def\y##1{#1*##1} - \typeout{***} - \logsetting + \typeout{***}\logsetting , } }, @@ -167,9 +166,59 @@ .upper goal=4, .lower goal=2, .ignore keys={keyb,keyc}, - .success list=\mysuccesslist - }{ - keya=vala,keyb=valb,keyc=valc + .success list=\mysuccesslist, + .kv={keya=vala,keyb=valb,keyc=valc} + }, +% .exec code={\show\mysuccesslist}, +} + +\dirkeys*{ + .exec=\skvtestcnt\z@\def\mysuccesslist{}, + .paths={KUA/fam1,KUB/fam2}, + .hp=mp@, + .ignore keys={keyd}, + .define keys={ + .initialize keys after define=true, + .save initial values of keys, + .exec code/\skvtestcnt\z@, + % keya has no default but has a complex callback: + .ord/keya/.na/{ + \skvtestcnt\z@\def\mysuccesslistb{} + \dirkeys{ + .path={KVX/famx}, + .sa set keys={% + .prefixes={KUA,KUB}, + .families={fam1,fam2}, + .try=8, + .upper goal=4, + .lower goal=1, + .success list=\mysuccesslistb, + .kv={keyb=valb} + }, +% .exec code=\show\mysuccesslistb, + } + } + , + % No default: + .ord/{keyb,keyc,keyd}/.na/\def\x##1{#1*##1}\logsetting, + .exec code=\def\cmda#1{\if0#1\fi}, + % No callback: + .choice/keye/center/{center,left,right}, + .choice/keye2/center/{ + center.do=\def\giv@c{#1}, + left.do=\def\giv@l{#1}, + right.do=\def\giv@r{#1} + }/.na/\@@warning{Invalid value '\detokenize{#1}' for keye2}, + }, + .try set keys={% + .prefixes={KUA,KUB}, + .families={fam1,fam2,fam3,fam4}, + .try=1, + .upper goal=1, + .lower goal=1, + .ignore keys={keyc,keyd}, + .success list=\mysuccesslist, + .kv={keya=vala,keyc=valc,keyd=vald} }, % .exec code={\show\mysuccesslist}, } @@ -179,7 +228,7 @@ \begin{document} \title{The \texttt{\textcolor{blue}{skeyval}} Package\\[1ex] - Version 1.1\\[1ex] + Version 1.1a\\[1ex] \textsf{Test document 1}} \author{Ahmed Musa} \maketitle @@ -194,7 +243,7 @@ encouraged to create it on a computer file and submit it on magnetic tape. \par\bigskip \begin{\mpfalign} -\skvxifstrcmp\mpfalign{justified}{\noindent}{} +\skvxifstrcmpTF\mpfalign{justified}{\noindent}{} \mpftextstyle The printer should refuse to employ wandering men, foreigners who, after having committed some grievous error, can easily disappear and @@ -224,6 +273,7 @@ on their deeds. \begin{center} \hrule \par\bigskip + \newshadowbox{test 1} \newshadowbox[framecolor=magenta,shadecolor=cyan,shadowsize=8pt, align=left]{test 2} @@ -313,15 +363,15 @@ on their deeds. %%+++++++++++++++++++++ Examples of \skvmakekeys +++++++++++++++++++%% \skvmakekeys[ - prefix=KVA, - families={fam1,fam2}, - hp=thp@, - all new, - define in all families, - initialize=true + .prefix=KVA, + .families={fam1,fam2}, + .hp=thp@, + .all new, + .define in all families, + .initialize=true ]{% - .ords/{keya,keyb}/{default-a}, - .cmds/{keyc,keyd}/, + .ord/{keya,keyb}/default-a, + .cmd/{keyc,keyd}/.na/\def\y##1{#1**##1}, .choice/keyf/center/{center.do=\def\x##1{#1*##1},left,right}, .zbool/show center/true/\edef\cmd{\ifthp@showcenter Yes\else No\fi}, } @@ -380,10 +430,15 @@ on their deeds. \skvsaveinitialvaluekeys[KV]{fam}{keya,keyb,keyc} %\skvshowcs{KV/fam/.@needini} \skvmakekeys[ - prefix=KV, family=fam, hp=thp@, all new,initialize,save initial values + .prefix=KV, + .family=fam, + .hp=thp@, + .all new, + .initialize, + .save initial values ]{% .ord/keya/defa-a/\def\keyay##1{##1*#1*##1}, - .cmds/{keyb,keyc}/defa-b/\def\keyby##1{##1*#1*##1}, + .cmd/{keyb,keyc}/defa-b/\def\keyby##1{##1*#1*##1}, .cmd/keyd, } %\skvshowcs{KV/fam/.@inikv} @@ -394,9 +449,9 @@ on their deeds. %++++++++++++++++++ Evaluating boolean expressions +++++++++++++++++++% -\skvifexpr{% - not ( expr { \skvifdef\xa } and expr { \skvifempty\xa } ) - or ( expr { \skvifdef\xb } or expr { \skvifx\xa\xb } ) +\skvifexprTF{% + not ( expr { \skvifdefTF\xa } and expr { \skvifemptyTF\xa } ) + or ( expr { \skvifdefTF\xb } or expr { \skvifxTF\xa\xb } ) }{% \def\x{T}% }{% @@ -406,20 +461,20 @@ on their deeds. %++++++++++++++++++++++++++++ \cicadaloop +++++++++++++++++++++++++++% \makeatletter -\@tempcnta\z@ +\skvtestcnt\z@ \def\blist{{X};\fi;{Y};Z} \def\stack{} \let\romn\romannumeral \cicadaloop{{a},\if,{b},c}\if01\fi{% - \advance\@tempcnta by\@ne + \advance\skvtestcnt by\@ne \@tempcntb\z@\@tempswafalse \cicadaloop*[;]\blist\if@tempswa\fi{% \advance\@tempcntb by\@ne - \typeout{Doing \romn\@tempcnta, \romn\@tempcntb: + \typeout{Doing \romn\skvtestcnt, \romn\@tempcntb: \detokenize{#1, ##1}}% \edef\stack{% \unexpanded\expandafter{\stack}\noexpand\do - {\romn\@tempcnta,\romn\@tempcntb}{\unexpanded{#1;##1}}% + {\romn\skvtestcnt,\romn\@tempcntb}{\unexpanded{#1;##1}}% }% \ifnum\@tempcntb>\tw@\@tempswatrue\fi }% |