From 978f744e9a68bd430a6c43c184552255799c67af Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 5 Oct 2022 19:50:33 +0000 Subject: kvsetkeys (5oct22) git-svn-id: svn://tug.org/texlive/trunk@64626 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/kvsetkeys/README.md | 12 +- .../doc/latex/kvsetkeys/kvsetkeys-example.tex | 93 ---- .../texmf-dist/doc/latex/kvsetkeys/kvsetkeys.pdf | Bin 374946 -> 401856 bytes .../source/latex/kvsetkeys/kvsetkeys.dtx | 45 +- .../texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty | 573 --------------------- 5 files changed, 24 insertions(+), 699 deletions(-) delete mode 100644 Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys-example.tex delete mode 100644 Master/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty diff --git a/Master/texmf-dist/doc/latex/kvsetkeys/README.md b/Master/texmf-dist/doc/latex/kvsetkeys/README.md index a7e822fa0fa..430c1aa264b 100644 --- a/Master/texmf-dist/doc/latex/kvsetkeys/README.md +++ b/Master/texmf-dist/doc/latex/kvsetkeys/README.md @@ -1,6 +1,6 @@ -# kvsetkeys +# kvsetkeys -kvsetkeys package for LaTeX +Version: 2022-10-05 v1.19 Package kvsetkeys provides kvsetkeys, a variant @@ -9,3 +9,11 @@ a handler that deals with unknown options. Active commas and equal signs may be used (e.g. see babel's shorthands) and only one level of curly braces is removed from the values. +% Copyright (C) +% 2006, 2007, 2009-2012 Heiko Oberdiek +% 2016-2022 Oberdiek Package Support Group +% https://github.com/ho-tex/kvsetkeys/issues + + +## License +LATEX Project Public License, version 1.3c or later. diff --git a/Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys-example.tex b/Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys-example.tex deleted file mode 100644 index ad6033d04bd..00000000000 --- a/Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys-example.tex +++ /dev/null @@ -1,93 +0,0 @@ -%% -%% This is file `kvsetkeys-example.tex', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% kvsetkeys.dtx (with options: `example') -%% -%% This is a generated file. -%% -%% Project: kvsetkeys -%% Version: 2019/12/15 v1.18 -%% -%% Copyright (C) -%% 2006, 2007, 2009-2012 Heiko Oberdiek -%% 2016-2019 Oberdiek Package Support Group -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. This version of this license is in -%% https://www.latex-project.org/lppl/lppl-1-3c.txt -%% and the latest version of this license is in -%% https://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. -%% -%% This work has the LPPL maintenance status "maintained". -%% -%% The Current Maintainers of this work are -%% Heiko Oberdiek and the Oberdiek Package Support Group -%% https://github.com/ho-tex/kvsetkeys/issues -%% -%% -%% The Base Interpreter refers to any `TeX-Format', -%% because some files are installed in TDS:tex/generic//. -%% -%% This work consists of the main source file kvsetkeys.dtx -%% and the derived files -%% kvsetkeys.sty, kvsetkeys.pdf, kvsetkeys.ins, kvsetkeys.drv, -%% kvsetkeys-example.tex, kvsetkeys-test1.tex, -%% kvsetkeys-test2.tex, kvsetkeys-test3.tex, -%% kvsetkeys-test4.tex. -%% -\documentclass{article} -\usepackage[T1]{fontenc} -\usepackage{kvsetkeys} -\usepackage{keyval} - -\makeatletter -\newcommand*{\tag}[2][]{% - % #1: attributes - % #2: tag name - \begingroup - \toks@={}% - \let\@endslash\@empty - \kvsetkeys{tag}{#1}% - \texttt{% - \textless #2\the\toks@\@endslash\textgreater - }% - \endgroup -} -\kv@set@family@handler{tag}{% - % #1: key - % #2: value - \toks@\expandafter{% - \the\toks@ - \space - #1=\string"#2\string"% - }% -} -\define@key{tag}{/}[]{% - \def\@endslash{/}% -} -\makeatother - -\begin{document} -\begin{tabbing} - \mbox{}\qquad\=\qquad\=\kill - \tag{html}\\ - \>\dots\\ - \>\tag[border=1]{table}\\ - \>\>\tag[width=200, span=3, /]{colgroup}\\ - \>\>\dots\\ - \>\tag{/table}\\ - \>\dots\\ - \tag{/html}\\ -\end{tabbing} -\end{document} -%% \section{Installation} -\endinput -%% -%% End of file `kvsetkeys-example.tex'. diff --git a/Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys.pdf b/Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys.pdf index 7d4a72c04ff..5820d8e0c45 100644 Binary files a/Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys.pdf and b/Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys.pdf differ diff --git a/Master/texmf-dist/source/latex/kvsetkeys/kvsetkeys.dtx b/Master/texmf-dist/source/latex/kvsetkeys/kvsetkeys.dtx index c04507c2973..e785f451653 100644 --- a/Master/texmf-dist/source/latex/kvsetkeys/kvsetkeys.dtx +++ b/Master/texmf-dist/source/latex/kvsetkeys/kvsetkeys.dtx @@ -1,12 +1,12 @@ % \iffalse meta-comment % % File: kvsetkeys.dtx -% Version: 2019/12/15 v1.18 +% Version: 2022-10-05 v1.19 % Info: Key value parser % % Copyright (C) % 2006, 2007, 2009-2012 Heiko Oberdiek -% 2016-2019 Oberdiek Package Support Group +% 2016-2022 Oberdiek Package Support Group % https://github.com/ho-tex/kvsetkeys/issues % % This work may be distributed and/or modified under the @@ -86,7 +86,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO)} +\Msg{* Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO)} \Msg{************************************************************************} \keepsilent @@ -98,11 +98,11 @@ This is a generated file. Project: kvsetkeys -Version: 2019/12/15 v1.18 +Version: 2022-10-05 v1.19 Copyright (C) 2006, 2007, 2009-2012 Heiko Oberdiek - 2016-2019 Oberdiek Package Support Group + 2016-2022 Oberdiek Package Support Group This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either @@ -167,7 +167,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{kvsetkeys.drv}% - [2019/12/15 v1.18 Key value parser (HO)]% + [2022-10-05 v1.19 Key value parser (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2011/11/22] \begin{document} @@ -181,7 +181,7 @@ and the derived files % \GetFileInfo{kvsetkeys.drv} % % \title{The \xpackage{kvsetkeys} package} -% \date{2019/12/15 v1.18} +% \date{2022-10-05 v1.19} % \author{Heiko Oberdiek\thanks % {Please report any issues at \url{https://github.com/ho-tex/kvsetkeys/issues}}} % @@ -361,7 +361,7 @@ and the derived files % Since 2011/10/18 v1.15 the family handler can reject the % successful handling of a key by calling \cs{kv@handled@false}. % -% Since 2019/12/15 v1.18 \cs{kv@processor@default} also defines +% Since 2012/04/25 v1.16 \cs{kv@processor@default} also defines % macro \cs{kv@fam} with meaning \meta{family} for convenience. % % \subsubsection{Processing similar to \cs{setkeys*} of package \xpackage{xkeyval}} @@ -397,7 +397,7 @@ and the derived files % fi % \end{quote} % -% Since 2019/12/15 v1.18 \cs{kv@processor@known} also defines +% Since 2012/04/25 v1.16 \cs{kv@processor@known} also defines % macro \cs{kv@fam} with meaning \meta{family} for convenience. % % \subsection{Default family handler} @@ -637,7 +637,7 @@ and the derived files \fi \expandafter\x\csname ver@kvsetkeys.sty\endcsname \ProvidesPackage{kvsetkeys}% - [2019/12/15 v1.18 Key value parser (HO)]% + [2022-10-05 v1.19 Key value parser (HO)]% % \end{macrocode} % % \begin{macrocode} @@ -1222,7 +1222,7 @@ $ \expandafter\ifx\csname KV@#1@#3@default\endcsname\relax & \edef#1{% & \ifx#1\KVS@empty & \else -& \unexpanded{#1},% +& \unexpanded\expandafter{#1},% & \fi & \unexpanded{{#2}={#3}}% & }% @@ -1399,26 +1399,6 @@ $ \x % \end{description} % % -% \paragraph{Bundle.} All the packages of the bundle `kvsetkeys' -% are also available in a TDS compliant ZIP archive. There -% the packages are already unpacked and the documentation files -% are generated. The files and directories obey the TDS standard. -% \begin{description} -% \item[\CTANinstall{install/macros/latex/contrib/kvsetkeys.tds.zip}] -% \end{description} -% \emph{TDS} refers to the standard ``A Directory Structure -% for \TeX\ Files'' (\CTANpkg{tds}). Directories -% with \xfile{texmf} in their name are usually organized this way. -% -% \subsection{Bundle installation} -% -% \paragraph{Unpacking.} Unpack the \xfile{kvsetkeys.tds.zip} in the -% TDS tree (also known as \xfile{texmf} tree) of your choice. -% Example (linux): -% \begin{quote} -% |unzip kvsetkeys.tds.zip -d ~/texmf| -% \end{quote} -% % \subsection{Package installation} % % \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting @@ -1668,6 +1648,9 @@ $ \x % \item % Avoid \xpackage{etexcmds} and \xpackage{infwarwerr} in \LaTeX. % \end{Version} +% \begin{Version}{2022-10-05 v1.19} +% \item Corrected storing of unknown keys, issue \#1 +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty b/Master/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty deleted file mode 100644 index 2d9ac6197bf..00000000000 --- a/Master/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +++ /dev/null @@ -1,573 +0,0 @@ -%% -%% This is file `kvsetkeys.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% kvsetkeys.dtx (with options: `package') -%% -%% This is a generated file. -%% -%% Project: kvsetkeys -%% Version: 2019/12/15 v1.18 -%% -%% Copyright (C) -%% 2006, 2007, 2009-2012 Heiko Oberdiek -%% 2016-2019 Oberdiek Package Support Group -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. This version of this license is in -%% https://www.latex-project.org/lppl/lppl-1-3c.txt -%% and the latest version of this license is in -%% https://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. -%% -%% This work has the LPPL maintenance status "maintained". -%% -%% The Current Maintainers of this work are -%% Heiko Oberdiek and the Oberdiek Package Support Group -%% https://github.com/ho-tex/kvsetkeys/issues -%% -%% -%% The Base Interpreter refers to any `TeX-Format', -%% because some files are installed in TDS:tex/generic//. -%% -%% This work consists of the main source file kvsetkeys.dtx -%% and the derived files -%% kvsetkeys.sty, kvsetkeys.pdf, kvsetkeys.ins, kvsetkeys.drv, -%% kvsetkeys-example.tex, kvsetkeys-test1.tex, -%% kvsetkeys-test2.tex, kvsetkeys-test3.tex, -%% kvsetkeys-test4.tex. -%% -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode58=12 % : - \catcode64=11 % @ - \catcode123=1 % { - \catcode125=2 % } - \expandafter\let\expandafter\x\csname ver@kvsetkeys.sty\endcsname - \ifx\x\relax % plain-TeX, first loading - \else - \def\empty{}% - \ifx\x\empty % LaTeX, first loading, - % variable is initialized, but \ProvidesPackage not yet seen - \else - \expandafter\ifx\csname PackageInfo\endcsname\relax - \def\x#1#2{% - \immediate\write-1{Package #1 Info: #2.}% - }% - \else - \def\x#1#2{\PackageInfo{#1}{#2, stopped}}% - \fi - \x{kvsetkeys}{The package is already loaded}% - \aftergroup\endinput - \fi - \fi -\endgroup% -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode40=12 % ( - \catcode41=12 % ) - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode47=12 % / - \catcode58=12 % : - \catcode64=11 % @ - \catcode91=12 % [ - \catcode93=12 % ] - \catcode123=1 % { - \catcode125=2 % } - \expandafter\ifx\csname ProvidesPackage\endcsname\relax - \def\x#1#2#3[#4]{\endgroup - \immediate\write-1{Package: #3 #4}% - \xdef#1{#4}% - }% - \else - \def\x#1#2[#3]{\endgroup - #2[{#3}]% - \ifx#1\@undefined - \xdef#1{#3}% - \fi - \ifx#1\relax - \xdef#1{#3}% - \fi - }% - \fi -\expandafter\x\csname ver@kvsetkeys.sty\endcsname -\ProvidesPackage{kvsetkeys}% - [2019/12/15 v1.18 Key value parser (HO)]% -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode123=1 % { - \catcode125=2 % } - \catcode64=11 % @ - \def\x{\endgroup - \expandafter\edef\csname KVS@AtEnd\endcsname{% - \endlinechar=\the\endlinechar\relax - \catcode13=\the\catcode13\relax - \catcode32=\the\catcode32\relax - \catcode35=\the\catcode35\relax - \catcode61=\the\catcode61\relax - \catcode64=\the\catcode64\relax - \catcode123=\the\catcode123\relax - \catcode125=\the\catcode125\relax - }% - }% -\x\catcode61\catcode48\catcode32=10\relax% -\catcode13=5 % ^^M -\endlinechar=13 % -\catcode35=6 % # -\catcode64=11 % @ -\catcode123=1 % { -\catcode125=2 % } -\def\TMP@EnsureCode#1#2{% - \edef\KVS@AtEnd{% - \KVS@AtEnd - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\TMP@EnsureCode{36}{3}% $ -\TMP@EnsureCode{38}{4}% & -\TMP@EnsureCode{39}{12}% ' -\TMP@EnsureCode{43}{12}% + -\TMP@EnsureCode{44}{12}% , -\TMP@EnsureCode{45}{12}% - -\TMP@EnsureCode{46}{12}% . -\TMP@EnsureCode{47}{12}% / -\TMP@EnsureCode{91}{12}% [ -\TMP@EnsureCode{93}{12}% ] -\TMP@EnsureCode{94}{7}% ^ (superscript) -\TMP@EnsureCode{96}{12}% ` -\TMP@EnsureCode{126}{13}% ~ (active) -\edef\KVS@AtEnd{\KVS@AtEnd\noexpand\endinput} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \def\TMP@RequirePackage#1[#2]{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname ver@#1.sty\endcsname\relax - \input #1.sty\relax - \fi - }% - \TMP@RequirePackage{infwarerr}[2007/09/09]% - \let\PackageError\@PackageError -\else -\fi -\expandafter\ifx\csname toks@\endcsname\relax - \toksdef\toks@=0 % -\fi -\ifx\numexpr\@undefined - \catcode`\$=9 % ignore - \catcode`\&=14 % comment -\else % e-TeX - \catcode`\$=14 % comment - \catcode`\&=9 % ignore -\fi -\def\KVS@Empty{} -\long\def\KVS@FirstOfTwo#1#2{#1} -\long\def\KVS@SecondOfTwo#1#2{#2} -\long\def\KVS@IfEmpty#1{% -& \edef\KVS@Temp{\unexpanded{#1}}% -$ \begingroup -$ \toks@{#1}% -$ \edef\KVS@Temp{\the\toks@}% -$ \expandafter\endgroup - \ifx\KVS@Temp\KVS@Empty - \expandafter\KVS@FirstOfTwo - \else - \expandafter\KVS@SecondOfTwo - \fi -} -\long\def\kv@normalize#1{% - \begingroup - \toks@{,#1,}% - \KVS@Comma - \KVS@SpaceComma - \KVS@CommaSpace - \KVS@CommaComma - \KVS@Equals - \KVS@SpaceEquals - \KVS@EqualsSpace - \xdef\KVS@Global{\the\toks@}% - \endgroup - \let\kv@list\KVS@Global -} -\def\comma@normalize#1{% - \begingroup - \toks@{,#1,}% - \KVS@Comma - \KVS@SpaceComma - \KVS@CommaSpace - \KVS@CommaComma - \xdef\KVS@Global{\the\toks@}% - \endgroup - \let\comma@list\KVS@Global -} -\begingroup - \lccode`\,=`\,% - \lccode`\~=`\,% -\lowercase{\endgroup - \def\KVS@Comma{% - \toks@\expandafter{\expandafter}\expandafter - \KVS@@Comma\the\toks@~\KVS@Nil - }% - \long\def\KVS@@Comma#1~#2\KVS@Nil{% - \toks@\expandafter{\the\toks@#1}% - \KVS@IfEmpty{#2}{% - }{% - \KVS@@Comma,#2\KVS@Nil - }% - }% -} -\def\KVS@SpaceComma#1{% - \def\KVS@SpaceComma{% - \expandafter\KVS@@SpaceComma\the\toks@#1,\KVS@Nil - }% -} -\KVS@SpaceComma{ } -\long\def\KVS@@SpaceComma#1 ,#2\KVS@Nil{% - \KVS@IfEmpty{#2}{% - \toks@{#1}% - }{% - \KVS@@SpaceComma#1,#2\KVS@Nil - }% -} -\def\KVS@CommaSpace{% - \expandafter\KVS@@CommaSpace\the\toks@, \KVS@Nil -} -\long\def\KVS@@CommaSpace#1, #2\KVS@Nil{% - \KVS@IfEmpty{#2}{% - \toks@{#1}% - }{% - \KVS@@CommaSpace#1,#2\KVS@Nil - }% -} -\def\KVS@CommaComma{% - \expandafter\KVS@@CommaComma\the\toks@,\KVS@Nil -} -\long\def\KVS@@CommaComma#1,,#2\KVS@Nil{% - \KVS@IfEmpty{#2}{% - \toks@{#1,}% (!) - }{% - \KVS@@CommaComma#1,#2\KVS@Nil - }% -} -\begingroup - \lccode`\==`\=% - \lccode`\~=`\=% -\lowercase{\endgroup - \def\KVS@Equals{% - \toks@\expandafter{\expandafter}\expandafter - \KVS@@Equals\the\toks@~\KVS@Nil - }% - \long\def\KVS@@Equals#1~#2\KVS@Nil{% - \edef\KVS@Temp{\the\toks@}% - \ifx\KVS@Temp\KVS@Empty - \expandafter\KVS@FirstOfTwo - \else - \expandafter\KVS@SecondOfTwo - \fi - {% - \toks@{#1}% - }{% - \toks@\expandafter{\the\toks@=#1}% - }% - \KVS@IfEmpty{#2}{% - }{% - \KVS@@Equals#2\KVS@Nil - }% - }% -} -\def\KVS@SpaceEquals#1{% - \def\KVS@SpaceEquals{% - \expandafter\KVS@@SpaceEquals\the\toks@#1=\KVS@Nil - }% -} -\KVS@SpaceEquals{ } -\long\def\KVS@@SpaceEquals#1 =#2\KVS@Nil{% - \KVS@IfEmpty{#2}{% - \toks@{#1}% - }{% - \KVS@@SpaceEquals#1=#2\KVS@Nil - }% -} -\def\KVS@EqualsSpace{% - \expandafter\KVS@@EqualsSpace\the\toks@= \KVS@Nil -} -\long\def\KVS@@EqualsSpace#1= #2\KVS@Nil{% - \KVS@IfEmpty{#2}{% - \toks@{#1}% - }{% - \KVS@@EqualsSpace#1=#2\KVS@Nil - }% -} -\long\def\kv@parse#1{% - \kv@normalize{#1}% - \expandafter\kv@parse@normalized\expandafter{\kv@list}% -} -\long\def\kv@parse@normalized#1#2{% - \KVS@Parse#1,\KVS@Nil{#2}% -} -\long\def\KVS@Parse#1,#2\KVS@Nil#3{% - \KVS@IfEmpty{#1}{% - }{% - \KVS@Process#1=\KVS@Nil{#3}% - }% - \KVS@MaybeBreak - \KVS@IfEmpty{#2}{% - }{% - \KVS@Parse#2\KVS@Nil{#3}% - }% -} -\long\def\KVS@Process#1=#2\KVS@Nil#3{% - \let\KVS@MaybeBreak\relax - \def\kv@key{#1}% - \KVS@IfEmpty{#2}{% - \let\kv@value\relax - #3{#1}{}% - }{% - \KVS@@Process{#1}#2\KVS@Nil{#3}% - }% -} -\long\def\KVS@@Process#1#2=\KVS@Nil#3{% -& \edef\kv@value{\unexpanded{#2}}% -$ \begingroup -$ \toks@{#2}% -$ \xdef\KVS@Global{\the\toks@}% -$ \endgroup -$ \let\kv@value\KVS@Global - #3{#1}{#2}% -} -\let\KVS@MaybeBreak\relax -\def\KVS@break#1#2#3#4{% - \let\KVS@MaybeBreak\relax -} -\def\kv@break{% - \let\KVS@MaybeBreak\KVS@break -} -\def\comma@parse#1{% - \comma@normalize{#1}% - \expandafter\comma@parse@normalized\expandafter{\comma@list}% -} -\def\comma@parse@normalized#1#2{% - \KVS@CommaParse#1,\KVS@Nil{#2}% -} -\def\KVS@CommaParse#1,#2\KVS@Nil#3{% - \KVS@IfEmpty{#1}{% - }{% - \def\comma@entry{#1}% - #3{#1}% - }% - \KVS@MaybeBreak - \KVS@IfEmpty{#2}{% - }{% - \KVS@CommaParse#2\KVS@Nil{#3}% - }% -} -\def\comma@break{% - \let\KVS@MaybeBreak\KVS@break -} -\def\kv@handled@false{% - \let\ifkv@handled@\iffalse -} -\def\kv@handled@true{% - \let\ifkv@handled@\iftrue -} -\kv@handled@true -\def\kv@processor@default#1#2{% - \begingroup - \csname @safe@activestrue\endcsname - \let\ifincsname\iftrue - \edef\KVS@temp{\endgroup - \noexpand\KVS@ProcessorDefault{#1}{#2}% - }% - \KVS@temp -} -\long\def\KVS@ProcessorDefault#1#2#3{% - \def\kv@fam{#1}% -& \unless\ifcsname KV@#1@#2\endcsname -$ \begingroup\expandafter\expandafter\expandafter\endgroup -$ \expandafter\ifx\csname KV@#1@#2\endcsname\relax -& \unless\ifcsname KVS@#1@handler\endcsname -$ \begingroup\expandafter\expandafter\expandafter\endgroup -$ \expandafter\ifx\csname KVS@#1@handler\endcsname\relax - \kv@error@unknownkey{#1}{#2}% - \else - \kv@handled@true - \csname KVS@#1@handler\endcsname{#2}{#3}% - \relax - \ifkv@handled@ - \else - \kv@error@unknownkey{#1}{#2}% - \fi - \fi - \else - \ifx\kv@value\relax -& \unless\ifcsname KV@#1@#2@default\endcsname -$ \begingroup\expandafter\expandafter\expandafter\endgroup -$ \expandafter\ifx\csname KV@#1@#2@default\endcsname\relax - \kv@error@novalue{#1}{#2}% - \else - \csname KV@#1@#2@default\endcsname - \relax - \fi - \else - \csname KV@#1@#2\endcsname{#3}% - \fi - \fi -} -\def\kv@processor@known#1#2#3{% - \begingroup - \csname @safe@activestrue\endcsname - \let\ifincsname\iftrue - \edef\KVS@temp{\endgroup - \noexpand\KVS@ProcessorKnown{#1}\noexpand#2{#3}% - }% - \KVS@temp -} -\long\def\KVS@ProcessorKnown#1#2#3#4{% - \def\kv@fam{#1}% -& \unless\ifcsname KV@#1@#3\endcsname -$ \begingroup\expandafter\expandafter\expandafter\endgroup -$ \expandafter\ifx\csname KV@#1@#3\endcsname\relax -& \unless\ifcsname KVS@#1@handler\endcsname -$ \begingroup\expandafter\expandafter\expandafter\endgroup -$ \expandafter\ifx\csname KVS@#1@handler\endcsname\relax - \KVS@AddUnhandled#2{#3}{#4}% - \else - \kv@handled@true - \csname KVS@#1@handler\endcsname{#3}{#4}% - \relax - \ifkv@handled@ - \else - \KVS@AddUnhandled#2{#3}{#4}% - \fi - \fi - \else - \ifx\kv@value\relax -& \unless\ifcsname KV@#1@#2@default\endcsname -$ \begingroup\expandafter\expandafter\expandafter\endgroup -$ \expandafter\ifx\csname KV@#1@#3@default\endcsname\relax - \kv@error@novalue{#1}{#3}% - \else - \csname KV@#1@#3@default\endcsname - \relax - \fi - \else - \csname KV@#1@#3\endcsname{#4}% - \fi - \fi -} -\long\def\KVS@AddUnhandled#1#2#3{% -& \edef#1{% -& \ifx#1\KVS@empty -& \else -& \unexpanded{#1},% -& \fi -& \unexpanded{{#2}={#3}}% -& }% -$ \begingroup -$ \ifx#1\KVS@empty -$ \toks@{{#2}={#3}}% -$ \else -$ \toks@\expandafter{#1,{#2}={#3}}% -$ \fi -$ \xdef\KVS@Global{\the\toks@}% -$ \endgroup -$ \let#1\KVS@Global -} -\long\def\kv@set@family@handler#1#2{% - \begingroup - \csname @safe@activestrue\endcsname - \let\ifincsname\iftrue - \expandafter\endgroup - \expandafter\def\csname KVS@#1@handler\endcsname##1##2{#2}% -} -\long\def\kv@unset@family@handler#1#2{% - \begingroup - \csname @safe@activestrue\endcsname - \let\ifincsname\iftrue - \expandafter\endgroup - \expandafter\let\csname KVS@#1@handler\endcsname\@UnDeFiNeD -} -\def\kv@error@novalue{% - \kv@error@generic{No value specified for}% -} -\def\kv@error@unknownkey{% - \kv@error@generic{Undefined}% -} -\def\kv@error@generic#1#2#3{% - \PackageError{kvsetkeys}{% - #1 key `#3'% - }{% - The keyval family of the key `#3' is `#2'.\MessageBreak - The setting of the key is ignored because of the error.\MessageBreak - \MessageBreak - \@ehc - }% -} -\long\def\kvsetkeys#1#2{% - \kv@parse{#2}{\kv@processor@default{#1}}% -} -\def\kvsetkeys@expandafter#1#2{% - \expandafter\kv@parse\expandafter{#2}{% - \kv@processor@default{#1}% - }% -} -\def\KVS@cmd{0}% -\def\KVS@cmd@inc{% -& \edef\KVS@cmd{\the\numexpr\KVS@cmd+1}% -$ \begingroup -$ \count255=\KVS@cmd\relax -$ \advance\count255 by 1\relax -$ \edef\x{\endgroup -$ \noexpand\def\noexpand\KVS@cmd{\number\count255}% -$ }% -$ \x -} -\def\KVS@cmd@dec{% -& \edef\KVS@cmd{\the\numexpr\KVS@cmd-1}% -$ \begingroup -$ \count255=\KVS@cmd\relax -$ \advance\count255 by -1\relax -$ \edef\x{\endgroup -$ \noexpand\def\noexpand\KVS@cmd{\number\count255}% -$ }% -$ \x -} -\def\KVS@empty{} -\def\kvsetknownkeys{% - \expandafter - \KVS@setknownkeys\csname KVS@cmd\KVS@cmd\endcsname{}% -} -\long\def\KVS@setknownkeys#1#2#3#4#5{% - \let#1\KVS@empty - \KVS@cmd@inc - #2\kv@parse#2{#5}{\kv@processor@known{#3}#1}% - \KVS@cmd@dec - \let#4=#1% -} -\def\kvsetknownkeys@expandafter{% - \expandafter - \KVS@setknownkeys - \csname KVS@cmd\KVS@cmd\endcsname\expandafter -} -\KVS@AtEnd% -%% \section{Installation} -\endinput -%% -%% End of file `kvsetkeys.sty'. -- cgit v1.2.3