summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-10-05 19:50:33 +0000
committerKarl Berry <karl@freefriends.org>2022-10-05 19:50:33 +0000
commit978f744e9a68bd430a6c43c184552255799c67af (patch)
treefadc47a97b32b957b20bcec9d18686393b3450b2
parentedb5076f5c6a2e1f34ff234e941689a985546eca (diff)
kvsetkeys (5oct22)
git-svn-id: svn://tug.org/texlive/trunk@64626 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/kvsetkeys/README.md12
-rw-r--r--Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys-example.tex93
-rw-r--r--Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys.pdfbin374946 -> 401856 bytes
-rw-r--r--Master/texmf-dist/source/latex/kvsetkeys/kvsetkeys.dtx45
-rw-r--r--Master/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty573
5 files changed, 24 insertions, 699 deletions
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
--- a/Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys.pdf
+++ b/Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys.pdf
Binary files 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'.