diff options
author | Karl Berry <karl@freefriends.org> | 2013-05-16 22:30:01 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-05-16 22:30:01 +0000 |
commit | 318d628c7989d4f9ede20b1ee66471bedf447437 (patch) | |
tree | e552e9f9b6195d98f3d579088419fdce722df49c /Master/texmf-dist/doc/latex/skeyval/skeyval-testpkg.sty | |
parent | f297f05f92068bd7f54e8ee25ce7b8b8a83c2353 (diff) |
skeyval (16may13)
git-svn-id: svn://tug.org/texlive/trunk@30509 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/skeyval/skeyval-testpkg.sty')
-rw-r--r-- | Master/texmf-dist/doc/latex/skeyval/skeyval-testpkg.sty | 454 |
1 files changed, 0 insertions, 454 deletions
diff --git a/Master/texmf-dist/doc/latex/skeyval/skeyval-testpkg.sty b/Master/texmf-dist/doc/latex/skeyval/skeyval-testpkg.sty deleted file mode 100644 index d2467bc9f1d..00000000000 --- a/Master/texmf-dist/doc/latex/skeyval/skeyval-testpkg.sty +++ /dev/null @@ -1,454 +0,0 @@ -%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% -% This is file 'skeyval-testpkg.sty', version 1.2, 2013/02/10. % -% % -% This package and accompanying files may be distributed and/or % -% modified under the conditions of the LaTeX Project Public License, % -% either version 1.3 of this license or any later version. The latest % -% version of this license is in http://www.latex-project.org/lppl.txt % -% and version 1.3 or later is part of all distributions of LaTeX % -% version 2005/12/01 or later. % -% % -% The LPPL maintenance status of this software is 'author-maintained'. % -% % -% This software is provided 'as it is', without warranty of any kind, % -% either expressed or implied, including, but not limited to, the % -% implied warranties of merchantability and fitness for a particular % -% purpose. % -% % -% The following files constitute the skeyval bundle and must be % -% distributed as a whole: % -% % -% readme, skeyval.sty, skeyval-core.tex, skeyval-for.tex, % -% skeyval-view.sty, skeyval-ltxpatch.sty, skeyval-ltxcmds.tex, % -% skeyval-pstkey.sty, skeyval-pstkey.tex, skeyval-testclass.cls, % -% and skeyval-testpkg.sty. % -% % -% Copyright (c) 2010-2013 Ahmed Musa (amusa22@gmail.com). % -%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% - -\ProvidesPackage{skeyval-testpkg}[2013/02/10 v1.2 skeyval test package (AM)] -\NeedsTeXFormat{LaTeX2e} -\@ifpackageloaded{skeyval}{}{\RequirePackage{skeyval}} -\RequirePackage{graphicx} - -\skvdisabledkeysmessagetype{warning} - -%%++++++++++++++++ Passing options to packages +++++++++++++++++++%% - -\skvdeclarebooloption[SKVT]<testpkg>[skvtp@]{verbose}[true]{} - -% Declare options with default values that will be used when the options -% are called without user values. -% -\skvdeclarepassedoptionsloadpackage[SKVT]{testpkg}{% - hyperref={colorlinks,breaklinks},xcolor=svgnames -} - -%%+++++++++++++++++++ Producing arbitrary texts +++++++++++++++++%% - -% The key 'align' could have defined using \skvchoicekey, as in -% 'shadowbox' family below. -\newcommand*\justified{} -\skvordkey[SKVT]{abrtext}{align}[right]{% - \skvifcase\skvxifstrcmpTF{#1} - {left}{\def\mpfalign{flushleft}} - {right}{\def\mpfalign{flushright}} - {center}{\def\mpfalign{center}} - {justified}{\def\mpfalign{justified}} - \elsedo - \PackageError{skeyval-testpkg} - {Invalid value `#1' for align} - {You have issued an illegal value `#1' for option `align'.}% - \endif -} - -\skvzcmdkey[SKVT]{abrtext}[mpf]{text style}[\rmfamily]{} -\skvcmdkey[SKVT]{abrtext}[mpf]{author}[Karl Berry]{} -\skvzboolkey[SKVT]{abrtext}[mpf]{show author}[true]{} - -% Using pointers to expand values of keys while setting keys: -\def\alignval{right} -\def\alignvalb{\alignval} -\def\stextstyle{\sffamily} - -\skvsetkeys[SKVT]{abrtext}{ - align=.expand twice{\alignvalb}, - text style=.expand once{\stextstyle},author,show author -} - -%%+++++++++++++++++++++++++++ Citations +++++++++++++++++++++++++++%% - -% Keys defined by \skvdefinekeys are automatically initialiized when -% the option 'initialize' is true. In general, to save initialize -% key values at key definition, you need to call \skvsaveinitialvaluekeys -% before defining the keys. - -\skvsaveinitialvaluekeys[SKVT]{citation}{put frame,width,show author,author, - textcolor,fonttype,leftmargin,rightmargin,preskip,framecolor,shadecolor, - frame thickness} - -\newbox\skv@testbox -\skvdefinekeys*[SKVT]{citation}[ctt@]{% - .cmd/width/\hsize, - .zbool/show author/true, - .cmd/author//, % empty default - .zbool/put frame/true, - .cmd/framecolor/black, - .cmd/shadecolor/white, - .cmd/textcolor/black, - .zcmd/frame thickness/.4pt, - .cmd/fonttype/\normalfont, - .cmd/leftmargin/\leftmargin, - .cmd/rightmargin/\rightmargin, - .cmd/preskip/0ex, - .cmd/width/\textwidth, - .ord/dummy key/\@nil, -} -% Keys defined by \skvdefinekeys are automatically initialiized when -% the option 'initialize' is true. When \skvsaveinitialvaluekeys has been -% called for a set of keys, those keys can be initialized via -% \skvinitializekeys: -\skvinitializekeys[SKVT]{citation}[dummy key] - -\newcommand\newcitation[2][]{% - \skvsetkeys[SKVT]{citation}{#1}% - \sbox\skv@testbox{% - \ctt@fonttype - \textit{\textcolor{\ctt@textcolor}{\ctt@author}}% - }% - \list{}{% - \setlength\leftmargin{\ctt@leftmargin}% - \setlength\rightmargin{\ctt@leftmargin}% - }% - \vspace*{\ctt@preskip}% - \item\relax - \ifctt@putframe - \begingroup - \fboxrule\ctt@framethickness\relax - \fcolorbox{\ctt@framecolor}{\ctt@shadecolor}{% - \fi - \parbox{\ctt@width}{% - \ctt@fonttype\textcolor{\ctt@textcolor}{\ignorespaces#2}% - \ifctt@showauthor - \hspace*{\fill}\nolinebreak[1]% - \quad\hspace*{\fill}\finalhyphendemerits\z@\relax - \usebox\skv@testbox - \fi - }% - \ifctt@putframe}\endgroup\fi - \endlist - % Restore default values of keys: - \skvinitializekeys[SKVT]{citation}[] -} - - -%%++++++++++++++++++++++++ Shadow boxes ++++++++++++++++++++++%% - -\newdimen\shadowspread - -\skvdefinekeys*[SKVT]{shadowbox}[shb@]{% - .zbool/put frame/true, - .bool/shadow/true, - .cmd/framecolor/black, - .cmd/shadecolor/white, - .cmd/shadowcolor/gray!55, - .cmd/boxwidth/1.5cm, - .ord/framesize/.5pt/\def\currfboxrule{#1}, - .ord/shadowsize/2pt/\shadowspread=\dimexpr#1\relax, - .choice/align/center/{% - center.do=\def\curralign##1{\hfil##1\hfil}, - right.do=\def\curralign##1{\hfill##1}, - left.do=\def\curralign##1{##1\hfill}, - justified.do=\let\curralign\@iden - } -} - -\skvdefinekeys*[SKVT]{testfam}[shb@]{% - .zbool/put shadow/true,% Test zbool - .zcmd/shade color/gray!55, % Test .zcmd -} - -\skvdisablekeys[SKVT]{testfam}{put shadow, shade color} - -% Presetting and posetting keys. -% -% 1. 'Presetting keys' means set the following keys whenever -% \setkeys is called. These keys should be set BEFORE the keys -% listed in the current argument of \setkeys are set, provided -% that these keys aren't listed in the current argument of \setkeys. -% If these keys appear in the current argument of \setkeys, -% then obviously the user has new values for them or he wants -% the keys to be set with their default values. -% -% 2. 'Postsetting keys' means set the following keys whenever -% \setkeys is called. These keys should be set AFTER the keys -% listed in the current argument of \setkeys are set, provided -% that these keys aren't listed in the current argument of \setkeys. -% -% 3. The command \presetkeys of the xkeyval package expects both -% 'head' and 'tail'. The skeyval package splits \presetkeys into two, -% hopefully less confusing, commands: \skvpresetkeys and -% \skvpostsetkeys. -% -% 4. There is also command \skvpreposetkeys, which combines -% \skvpresetkeys and \skvpostsetkeys. This expects both head and -% tail and is equivalent to xkeyval's \presetkeys. - -\skvpresetkeys[SKVT]{shadowbox}{% - put frame,framecolor=black,framesize=.8pt,boxwidth=1.5cm,align=center, - shadecolor=gray!15 -} - -\skvpostsetkeys[SKVT]{shadowbox}{% - shadow=.use value{put frame},shadowcolor=.use value{framecolor}!40, - shadowsize=\dimexpr.use value{framesize}*5\relax -} - -\newcommand*\newshadowbox[2][]{% - \skvsetkeys[SKVT]{shadowbox}{#1}% - \begingroup - \ifshb@putframe - \fboxrule=\dimexpr\currfboxrule\relax - \else - \fboxrule=0pt - \fi - \ifshb@shadow\else\shadowspread=0pt \fi - \sbox\z@{\fcolorbox{\shb@framecolor}{\shb@shadecolor}{% - \hb@xt@\shb@boxwidth{\curralign{#2}}% - }}% - \hskip\shadowspread - \color{\shb@shadowcolor}% - \rule[-\dp0]{\wd0}{\dimexpr\ht0+\dp0\relax}% - \llap{\raisebox{\shadowspread}{\box0\hskip\shadowspread}}% - \endgroup -} - -%%++++++++++++++++++++++++ The \directkeys command ++++++++++++++++++++%% - -% The following are meant to demonstrate the use of the macro \directkeys: - -\ifdefined\skvtestcnt - \skvtestcnt\z@ -\else - \newcount\skvtestcnt -\fi -\def\logsetting{% - \advance\skvtestcnt\@ne - \typeout{'\skvcurrentkey' set: no. - \ifnum\skvtestcnt<10 0\fi\the\skvtestcnt, % - path: \skvcurrentprefix/\skvcurrentfamily}% -} - -\directkeys{% - % #1 will be the user-value of the handler 'some handler'. - .new handlers = { - .some handler=\def\x##1{##1*#1}, - .phantom handler=, - }, - .handler let = { - .another handler=.some handler, - .do nothing handler=.phantom handler - }, - .kill handlers={ - .another handler, - .do nothing handler - }, - .define handlers={ - .j handler=\def\x##1{##1*#1}, - .j handler=\def\y##1{##1*#1}, - }, - .define narg handlers={ - .j1 handler={2}{\def\x##1{##1*#1*#2}}, - .j2 handler={3}{\def\x##1{##1*#1*#2*#3}} - }, - .new narg handlers={ - % Error: handler j1 already exists: - % .j1 handler={2}{\def\x##1{##1*#1*#2}}, - .k handler={2}{\def\x##1{##1*#1*#2}}, - .l handler={3}{\def\x##1{##1*#1*#2*#3}} - }, - .reserve handlers={reservedx , reservedy}, - .holder prefix = mp@, - .prefix = KV, - .families = {fam1, fam2}, - .add family = {fam3}, - .add families = {fama,famb,famc}, - .ignore families = {fama,famb,famc}, - .restore families = {fama,famb}, - .restore paths = {KVA/fama,KVD/famc}, -% .ignore keys = {keyb,keyc}, - .new keys = { - .ord/keya/keya-default, - .cmd/keyb/keyb-default/\def\x##1{##1#1}, - .cmd/keyc/keyc-default, - .choice*/keyd/center - /{ right.do=\def\val@r{#1}, - left.do=\def\val@l{#1}, - center.do=\def\val@c{#1} - } - /\def\yes{value accepted} - /\def\no{value rejected}, - .bool/keye/true/ - \ifskvindef\else\logsetting\fi - \ifmp@keye\def\y##1{##1#1}\fi - , - .bool/keyf/true/, - .bool/keyg/true/ - }, - .push path, - .path = KV/fam1, - .set keys = {keyd}, - .pop path, - .ignore keys = {keyb,keyc}, - % Stop processing this list: - % .list break, - .restore keys = {keyb,keyc}, - .preset keys = {keyb,keyc}, - .postset keys = {keyb,keyc}, - % Save unknown keys in the default macro \<pref>@<fam>@rmkeys: - .save unknown keys = true, - .save unknown keys in = \macroa, - .set keys = {keya,keyb,keyc,keyd,keye}, - .set keys = {keya=keya-value,keyb=\def\y####1{####1}}, - .set keys* = {keya=keya-value,keyf}, - .set keys* = {keya=keya-value,keyf}, - .ignore keys = {keyf}, - .set rmkeys*, - % Execute arbitrary code: - .exec code=\def\x#1{#1}, - % Nesting of \directkeys is possible. Pre-entry and post-entry - % topologies are independent. At the end of the nest, - % prevailing variables of \directkeys revert to their previous - % (pre-door) values: - \directkeys{ - .paths = {KVA/fam3,KVB/fam3}, - .holder prefix = hp@, - .define keys = { - .cmd/keya/keya-default/\def\x##1{##1#1}, - .ord/keyb/keyb-default, - }, - .set keys = {keya=vala}, - }, - .exec code = \def\keycval{true}, - % Prepend slot keye to key1 and key2: - .prepend slot={key1/{keye=.expanded{\keycval}},key2/{keye=false}}, - % Multi-prepend slots: - .prepend slot={{key3,key4}/{keye=true,keyf=true},key5/{keye=false}}, - % Prepend slot keyd to key6: - .prepend slot={key6/{keyd=right}}, - % Append slots keye and keyf to key7 and key8. - % '.slots' and '.slot' are equivalent to '.append slots' - % and '.append slot'. - .append slot={key7/{keye=true},key8/{keyf=false}}, - % The next two link keyb and keyc to key9. #1 here refers to the - % current value of key9. The same effect can be achieved directly - % via the '.link' handler: - .prepend slot={key9/{keyb=#1}}, - .append slot={key9/{keyc=#1}}, - .set keys = {key9=val9}, - % Link keye and keyf to key10 and key11. The values of key10 and - % key11 are used to set keye and keyf. key10 and key11 are hence - % 'parent keys'. - .link = {key10/keye, {key11,key12}/{keyf,keyg}}, - .set keys = {key10=true}, - .ignore key = keyf, - .save unknown keys in = \macrob, - .setkeys = {keya,keyb,keyf}, - .disable keys = {keye,keyf}, -} - -%%++++++++++++++++++++++ Collecting body of environment +++++++++++++++++%% - -\skvmakekeys[ - .prefix=KV, - .family=collectbody, - .hp=mp, - .initialize, - .endlinechar=-1 -]{% - .cmd/title//, - .zcmd/title scale/1, - .zcmd/body scale/1, - .cmd/width/\textwidth, - .zcmd/title text style//, - .zcmd/body text style//, - .cmd/action// -} - -\newsavebox{\boxbody} -\newenvironment{collectbody}[1][]{% - \skvusekeys[.prefix=KV,.family=collectbody]{#1}% - \ifx\mptitle\@empty\else\skvafterfi - \begin{center}% - \scalebox{\mptitlescale}{\mptitletextstyle\mptitle}% - \end{center}% - \fi - \begin{lrbox}{\boxbody}% - \begin{minipage}{\mpwidth}% - \mpbodytextstyle\mpaction -}{% - \end{minipage}% - \end{lrbox}% - \scalebox{\mpbodyscale}{\usebox{\boxbody}}% -} - - -%%+++++++++++++++++++++ Changing the key parser ++++++++++++++++++++%% - -\setupskeyval{key parser={;}} -\skvafterdefinekeys{\setupskeyval{keyparser={,}}} -\skvdefinekeys*[SKVT]{example}[exm@]{% - .zbool/put frame/true; - .cmd/shadecolor/green; - .ord/framesize/.5pt/\def\currfboxrule{#1}; - .choice/align/center/{% - center.do=\def\curralign##1{\hfil##1\hfil}, - right.do=\def\curralign##1{\hfill##1}, - left.do=\def\curralign##1{##1\hfill}, - justified.do=\let\curralign\@iden - }; -} - -%%++++++++++++++++++++++++++ Options section ++++++++++++++++++++++%% - -\def\skvtp@unknownoptions{} - -\skvunknownoptionhandler[SKVT]<abrtext,shadowbox,citation,testpkg>{% - \edef\skvtp@unknownoptions{% - \skvtp@unknownoptions\ifx\skvtp@unknownoptions\@empty\else,\fi - #3% - }% - \AtEndDocument{% - \ifx\skvtp@unknownoptions\@empty\else - \PackageWarningNoLine{skeyval-testpkg} - {Unknown keys: \skvtp@unknownoptions}% - \fi - }% -} -\skvexecuteoptions[SKVT]<abrtext>{align=.expanded{\alignval}, - text style=.expand once{\stextstyle},author,show author -} - -\skvprocessoptions*+[SKVT]<abrtext,shadowbox,citation,testpkg>\relax -%\skvrestrictedprocessoptions*+[SKVT]<abrtext,shadowbox,citation,testpkg>\relax - -\skvcomment -Here you could also use: - -\directkeys{ - .mega process options*={ - .prefix=SKVT, - .families={abrtext,shadowbox,citation,testpkg}, - } -} - -or - -\directkeys{ - .prefix=SKVT, - .families={abrtext,shadowbox,citation,testpkg}, - .copy class options and process options in all families, -} -\endcomment - -\endinput |