summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/skeyval/skeyval-pokayoke1.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-11-06 22:35:59 +0000
committerKarl Berry <karl@freefriends.org>2012-11-06 22:35:59 +0000
commit6cab410e49d491c2884a037e0a134eeb2c2acda9 (patch)
tree5b7b72852382a70ac7f27f43b913d1da8f66ed12 /Master/texmf-dist/doc/latex/skeyval/skeyval-pokayoke1.tex
parent705b4d8f092a56d9ae900940d265fb6f55b3033d (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.tex131
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
}%