texlive[64632] Master: kvsetkeys[.sty]
commits+karl at tug.org
commits+karl at tug.org
Thu Oct 6 16:40:31 CEST 2022
Revision: 64632
http://tug.org/svn/texlive?view=revision&revision=64632
Author: karl
Date: 2022-10-06 16:40:30 +0200 (Thu, 06 Oct 2022)
Log Message:
-----------
kvsetkeys[.sty]
Modified Paths:
--------------
trunk/Master/tlpkg/libexec/ctan2tds
Added Paths:
-----------
trunk/Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys-example.tex
trunk/Master/texmf-dist/tex/latex/kvsetkeys/
trunk/Master/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
Added: trunk/Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys-example.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys-example.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys-example.tex 2022-10-06 14:40:30 UTC (rev 64632)
@@ -0,0 +1,92 @@
+%%
+%% 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: 2022-10-05 v1.19
+%%
+%% Copyright (C)
+%% 2006, 2007, 2009-2012 Heiko Oberdiek
+%% 2016-2022 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 at set@family at handler{tag}{%
+ % #1: key
+ % #2: value
+ \toks@\expandafter{%
+ \the\toks@
+ \space
+ #1=\string"#2\string"%
+ }%
+}
+\define at 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'.
Property changes on: trunk/Master/texmf-dist/doc/latex/kvsetkeys/kvsetkeys-example.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty 2022-10-06 14:40:30 UTC (rev 64632)
@@ -0,0 +1,572 @@
+%%
+%% 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: 2022-10-05 v1.19
+%%
+%% Copyright (C)
+%% 2006, 2007, 2009-2012 Heiko Oberdiek
+%% 2016-2022 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 at 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 at kvsetkeys.sty\endcsname
+\ProvidesPackage{kvsetkeys}%
+ [2022-10-05 v1.19 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 at 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 at EnsureCode#1#2{%
+ \edef\KVS at AtEnd{%
+ \KVS at AtEnd
+ \catcode#1=\the\catcode#1\relax
+ }%
+ \catcode#1=#2\relax
+}
+\TMP at EnsureCode{36}{3}% $
+\TMP at EnsureCode{38}{4}% &
+\TMP at EnsureCode{39}{12}% '
+\TMP at EnsureCode{43}{12}% +
+\TMP at EnsureCode{44}{12}% ,
+\TMP at EnsureCode{45}{12}% -
+\TMP at EnsureCode{46}{12}% .
+\TMP at EnsureCode{47}{12}% /
+\TMP at EnsureCode{91}{12}% [
+\TMP at EnsureCode{93}{12}% ]
+\TMP at EnsureCode{94}{7}% ^ (superscript)
+\TMP at EnsureCode{96}{12}% `
+\TMP at EnsureCode{126}{13}% ~ (active)
+\edef\KVS at AtEnd{\KVS at AtEnd\noexpand\endinput}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname RequirePackage\endcsname\relax
+ \def\TMP at RequirePackage#1[#2]{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname ver@#1.sty\endcsname\relax
+ \input #1.sty\relax
+ \fi
+ }%
+ \TMP at 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 at Empty{}
+\long\def\KVS at FirstOfTwo#1#2{#1}
+\long\def\KVS at SecondOfTwo#1#2{#2}
+\long\def\KVS at IfEmpty#1{%
+& \edef\KVS at Temp{\unexpanded{#1}}%
+$ \begingroup
+$ \toks@{#1}%
+$ \edef\KVS at Temp{\the\toks@}%
+$ \expandafter\endgroup
+ \ifx\KVS at Temp\KVS at Empty
+ \expandafter\KVS at FirstOfTwo
+ \else
+ \expandafter\KVS at SecondOfTwo
+ \fi
+}
+\long\def\kv at normalize#1{%
+ \begingroup
+ \toks@{,#1,}%
+ \KVS at Comma
+ \KVS at SpaceComma
+ \KVS at CommaSpace
+ \KVS at CommaComma
+ \KVS at Equals
+ \KVS at SpaceEquals
+ \KVS at EqualsSpace
+ \xdef\KVS at Global{\the\toks@}%
+ \endgroup
+ \let\kv at list\KVS at Global
+}
+\def\comma at normalize#1{%
+ \begingroup
+ \toks@{,#1,}%
+ \KVS at Comma
+ \KVS at SpaceComma
+ \KVS at CommaSpace
+ \KVS at CommaComma
+ \xdef\KVS at Global{\the\toks@}%
+ \endgroup
+ \let\comma at list\KVS at Global
+}
+\begingroup
+ \lccode`\,=`\,%
+ \lccode`\~=`\,%
+\lowercase{\endgroup
+ \def\KVS at Comma{%
+ \toks@\expandafter{\expandafter}\expandafter
+ \KVS@@Comma\the\toks@~\KVS at Nil
+ }%
+ \long\def\KVS@@Comma#1~#2\KVS at Nil{%
+ \toks@\expandafter{\the\toks@#1}%
+ \KVS at IfEmpty{#2}{%
+ }{%
+ \KVS@@Comma,#2\KVS at Nil
+ }%
+ }%
+}
+\def\KVS at SpaceComma#1{%
+ \def\KVS at SpaceComma{%
+ \expandafter\KVS@@SpaceComma\the\toks@#1,\KVS at Nil
+ }%
+}
+\KVS at SpaceComma{ }
+\long\def\KVS@@SpaceComma#1 ,#2\KVS at Nil{%
+ \KVS at IfEmpty{#2}{%
+ \toks@{#1}%
+ }{%
+ \KVS@@SpaceComma#1,#2\KVS at Nil
+ }%
+}
+\def\KVS at CommaSpace{%
+ \expandafter\KVS@@CommaSpace\the\toks@, \KVS at Nil
+}
+\long\def\KVS@@CommaSpace#1, #2\KVS at Nil{%
+ \KVS at IfEmpty{#2}{%
+ \toks@{#1}%
+ }{%
+ \KVS@@CommaSpace#1,#2\KVS at Nil
+ }%
+}
+\def\KVS at CommaComma{%
+ \expandafter\KVS@@CommaComma\the\toks@,\KVS at Nil
+}
+\long\def\KVS@@CommaComma#1,,#2\KVS at Nil{%
+ \KVS at IfEmpty{#2}{%
+ \toks@{#1,}% (!)
+ }{%
+ \KVS@@CommaComma#1,#2\KVS at Nil
+ }%
+}
+\begingroup
+ \lccode`\==`\=%
+ \lccode`\~=`\=%
+\lowercase{\endgroup
+ \def\KVS at Equals{%
+ \toks@\expandafter{\expandafter}\expandafter
+ \KVS@@Equals\the\toks@~\KVS at Nil
+ }%
+ \long\def\KVS@@Equals#1~#2\KVS at Nil{%
+ \edef\KVS at Temp{\the\toks@}%
+ \ifx\KVS at Temp\KVS at Empty
+ \expandafter\KVS at FirstOfTwo
+ \else
+ \expandafter\KVS at SecondOfTwo
+ \fi
+ {%
+ \toks@{#1}%
+ }{%
+ \toks@\expandafter{\the\toks@=#1}%
+ }%
+ \KVS at IfEmpty{#2}{%
+ }{%
+ \KVS@@Equals#2\KVS at Nil
+ }%
+ }%
+}
+\def\KVS at SpaceEquals#1{%
+ \def\KVS at SpaceEquals{%
+ \expandafter\KVS@@SpaceEquals\the\toks@#1=\KVS at Nil
+ }%
+}
+\KVS at SpaceEquals{ }
+\long\def\KVS@@SpaceEquals#1 =#2\KVS at Nil{%
+ \KVS at IfEmpty{#2}{%
+ \toks@{#1}%
+ }{%
+ \KVS@@SpaceEquals#1=#2\KVS at Nil
+ }%
+}
+\def\KVS at EqualsSpace{%
+ \expandafter\KVS@@EqualsSpace\the\toks@= \KVS at Nil
+}
+\long\def\KVS@@EqualsSpace#1= #2\KVS at Nil{%
+ \KVS at IfEmpty{#2}{%
+ \toks@{#1}%
+ }{%
+ \KVS@@EqualsSpace#1=#2\KVS at Nil
+ }%
+}
+\long\def\kv at parse#1{%
+ \kv at normalize{#1}%
+ \expandafter\kv at parse@normalized\expandafter{\kv at list}%
+}
+\long\def\kv at parse@normalized#1#2{%
+ \KVS at Parse#1,\KVS at Nil{#2}%
+}
+\long\def\KVS at Parse#1,#2\KVS at Nil#3{%
+ \KVS at IfEmpty{#1}{%
+ }{%
+ \KVS at Process#1=\KVS at Nil{#3}%
+ }%
+ \KVS at MaybeBreak
+ \KVS at IfEmpty{#2}{%
+ }{%
+ \KVS at Parse#2\KVS at Nil{#3}%
+ }%
+}
+\long\def\KVS at Process#1=#2\KVS at Nil#3{%
+ \let\KVS at MaybeBreak\relax
+ \def\kv at key{#1}%
+ \KVS at IfEmpty{#2}{%
+ \let\kv at value\relax
+ #3{#1}{}%
+ }{%
+ \KVS@@Process{#1}#2\KVS at Nil{#3}%
+ }%
+}
+\long\def\KVS@@Process#1#2=\KVS at Nil#3{%
+& \edef\kv at value{\unexpanded{#2}}%
+$ \begingroup
+$ \toks@{#2}%
+$ \xdef\KVS at Global{\the\toks@}%
+$ \endgroup
+$ \let\kv at value\KVS at Global
+ #3{#1}{#2}%
+}
+\let\KVS at MaybeBreak\relax
+\def\KVS at break#1#2#3#4{%
+ \let\KVS at MaybeBreak\relax
+}
+\def\kv at break{%
+ \let\KVS at MaybeBreak\KVS at break
+}
+\def\comma at parse#1{%
+ \comma at normalize{#1}%
+ \expandafter\comma at parse@normalized\expandafter{\comma at list}%
+}
+\def\comma at parse@normalized#1#2{%
+ \KVS at CommaParse#1,\KVS at Nil{#2}%
+}
+\def\KVS at CommaParse#1,#2\KVS at Nil#3{%
+ \KVS at IfEmpty{#1}{%
+ }{%
+ \def\comma at entry{#1}%
+ #3{#1}%
+ }%
+ \KVS at MaybeBreak
+ \KVS at IfEmpty{#2}{%
+ }{%
+ \KVS at CommaParse#2\KVS at Nil{#3}%
+ }%
+}
+\def\comma at break{%
+ \let\KVS at MaybeBreak\KVS at break
+}
+\def\kv at handled@false{%
+ \let\ifkv at handled@\iffalse
+}
+\def\kv at handled@true{%
+ \let\ifkv at handled@\iftrue
+}
+\kv at handled@true
+\def\kv at processor@default#1#2{%
+ \begingroup
+ \csname @safe at activestrue\endcsname
+ \let\ifincsname\iftrue
+ \edef\KVS at temp{\endgroup
+ \noexpand\KVS at ProcessorDefault{#1}{#2}%
+ }%
+ \KVS at temp
+}
+\long\def\KVS at ProcessorDefault#1#2#3{%
+ \def\kv at 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 at handler\endcsname
+$ \begingroup\expandafter\expandafter\expandafter\endgroup
+$ \expandafter\ifx\csname KVS@#1 at handler\endcsname\relax
+ \kv at error@unknownkey{#1}{#2}%
+ \else
+ \kv at handled@true
+ \csname KVS@#1 at handler\endcsname{#2}{#3}%
+ \relax
+ \ifkv at handled@
+ \else
+ \kv at error@unknownkey{#1}{#2}%
+ \fi
+ \fi
+ \else
+ \ifx\kv at value\relax
+& \unless\ifcsname KV@#1@#2 at default\endcsname
+$ \begingroup\expandafter\expandafter\expandafter\endgroup
+$ \expandafter\ifx\csname KV@#1@#2 at default\endcsname\relax
+ \kv at error@novalue{#1}{#2}%
+ \else
+ \csname KV@#1@#2 at default\endcsname
+ \relax
+ \fi
+ \else
+ \csname KV@#1@#2\endcsname{#3}%
+ \fi
+ \fi
+}
+\def\kv at processor@known#1#2#3{%
+ \begingroup
+ \csname @safe at activestrue\endcsname
+ \let\ifincsname\iftrue
+ \edef\KVS at temp{\endgroup
+ \noexpand\KVS at ProcessorKnown{#1}\noexpand#2{#3}%
+ }%
+ \KVS at temp
+}
+\long\def\KVS at ProcessorKnown#1#2#3#4{%
+ \def\kv at 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 at handler\endcsname
+$ \begingroup\expandafter\expandafter\expandafter\endgroup
+$ \expandafter\ifx\csname KVS@#1 at handler\endcsname\relax
+ \KVS at AddUnhandled#2{#3}{#4}%
+ \else
+ \kv at handled@true
+ \csname KVS@#1 at handler\endcsname{#3}{#4}%
+ \relax
+ \ifkv at handled@
+ \else
+ \KVS at AddUnhandled#2{#3}{#4}%
+ \fi
+ \fi
+ \else
+ \ifx\kv at value\relax
+& \unless\ifcsname KV@#1@#2 at default\endcsname
+$ \begingroup\expandafter\expandafter\expandafter\endgroup
+$ \expandafter\ifx\csname KV@#1@#3 at default\endcsname\relax
+ \kv at error@novalue{#1}{#3}%
+ \else
+ \csname KV@#1@#3 at default\endcsname
+ \relax
+ \fi
+ \else
+ \csname KV@#1@#3\endcsname{#4}%
+ \fi
+ \fi
+}
+\long\def\KVS at AddUnhandled#1#2#3{%
+& \edef#1{%
+& \ifx#1\KVS at empty
+& \else
+& \unexpanded\expandafter{#1},%
+& \fi
+& \unexpanded{{#2}={#3}}%
+& }%
+$ \begingroup
+$ \ifx#1\KVS at empty
+$ \toks@{{#2}={#3}}%
+$ \else
+$ \toks@\expandafter{#1,{#2}={#3}}%
+$ \fi
+$ \xdef\KVS at Global{\the\toks@}%
+$ \endgroup
+$ \let#1\KVS at Global
+}
+\long\def\kv at set@family at handler#1#2{%
+ \begingroup
+ \csname @safe at activestrue\endcsname
+ \let\ifincsname\iftrue
+ \expandafter\endgroup
+ \expandafter\def\csname KVS@#1 at handler\endcsname##1##2{#2}%
+}
+\long\def\kv at unset@family at handler#1#2{%
+ \begingroup
+ \csname @safe at activestrue\endcsname
+ \let\ifincsname\iftrue
+ \expandafter\endgroup
+ \expandafter\let\csname KVS@#1 at handler\endcsname\@UnDeFiNeD
+}
+\def\kv at error@novalue{%
+ \kv at error@generic{No value specified for}%
+}
+\def\kv at error@unknownkey{%
+ \kv at error@generic{Undefined}%
+}
+\def\kv at 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 at parse{#2}{\kv at processor@default{#1}}%
+}
+\def\kvsetkeys at expandafter#1#2{%
+ \expandafter\kv at parse\expandafter{#2}{%
+ \kv at processor@default{#1}%
+ }%
+}
+\def\KVS at cmd{0}%
+\def\KVS at cmd@inc{%
+& \edef\KVS at cmd{\the\numexpr\KVS at cmd+1}%
+$ \begingroup
+$ \count255=\KVS at cmd\relax
+$ \advance\count255 by 1\relax
+$ \edef\x{\endgroup
+$ \noexpand\def\noexpand\KVS at cmd{\number\count255}%
+$ }%
+$ \x
+}
+\def\KVS at cmd@dec{%
+& \edef\KVS at cmd{\the\numexpr\KVS at cmd-1}%
+$ \begingroup
+$ \count255=\KVS at cmd\relax
+$ \advance\count255 by -1\relax
+$ \edef\x{\endgroup
+$ \noexpand\def\noexpand\KVS at cmd{\number\count255}%
+$ }%
+$ \x
+}
+\def\KVS at empty{}
+\def\kvsetknownkeys{%
+ \expandafter
+ \KVS at setknownkeys\csname KVS at cmd\KVS at cmd\endcsname{}%
+}
+\long\def\KVS at setknownkeys#1#2#3#4#5{%
+ \let#1\KVS at empty
+ \KVS at cmd@inc
+ #2\kv at parse#2{#5}{\kv at processor@known{#3}#1}%
+ \KVS at cmd@dec
+ \let#4=#1%
+}
+\def\kvsetknownkeys at expandafter{%
+ \expandafter
+ \KVS at setknownkeys
+ \csname KVS at cmd\KVS at cmd\endcsname\expandafter
+}
+\KVS at AtEnd%
+%% \section{Installation}
+\endinput
+%%
+%% End of file `kvsetkeys.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds 2022-10-05 23:49:36 UTC (rev 64631)
+++ trunk/Master/tlpkg/libexec/ctan2tds 2022-10-06 14:40:30 UTC (rev 64632)
@@ -3126,6 +3126,7 @@
'kdgdocs' => 'latex', # requires interaction
'komacv' => 'latex', # requires interaction
'kvoptions' => 'etex',
+ 'kvsetkeys' => 'etex',
'labelcas' => 'latex', # requires interaction
'lastpage' => 'tex',
'latex-veryshortguide' => 'latex', # requires interaction
More information about the tex-live-commits
mailing list.