texlive[56632] Master/texmf-dist: expkv-cs (11oct20)

commits+karl at tug.org commits+karl at tug.org
Sun Oct 11 22:48:59 CEST 2020


Revision: 56632
          http://tug.org/svn/texlive?view=revision&revision=56632
Author:   karl
Date:     2020-10-11 22:48:59 +0200 (Sun, 11 Oct 2020)
Log Message:
-----------
expkv-cs (11oct20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/expkv-cs/README.md
    trunk/Master/texmf-dist/doc/latex/expkv-cs/expkv-cs.pdf
    trunk/Master/texmf-dist/source/latex/expkv-cs/expkv-cs.dtx
    trunk/Master/texmf-dist/tex/generic/expkv-cs/expkv-cs.tex

Modified: trunk/Master/texmf-dist/doc/latex/expkv-cs/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/expkv-cs/README.md	2020-10-11 20:44:09 UTC (rev 56631)
+++ trunk/Master/texmf-dist/doc/latex/expkv-cs/README.md	2020-10-11 20:48:59 UTC (rev 56632)
@@ -1,7 +1,7 @@
 -------------------------------------------------------------------------------
 # expkv-cs -- define expandable key=val macros using expkv
 
-Version 2020-08-08 v0.4
+Version 2020-10-11 v0.5
 
 Released under the LaTeX Project Public License v1.3c or later
 See http://www.latex-project.org/lppl.txt

Modified: trunk/Master/texmf-dist/doc/latex/expkv-cs/expkv-cs.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/expkv-cs/expkv-cs.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/expkv-cs/expkv-cs.dtx	2020-10-11 20:44:09 UTC (rev 56631)
+++ trunk/Master/texmf-dist/source/latex/expkv-cs/expkv-cs.dtx	2020-10-11 20:48:59 UTC (rev 56632)
@@ -81,8 +81,8 @@
     ,basicstyle=\fontfamily{jkp}\itshape
     ,morekeywords=^^A
       {^^A
-        \ekvcSplit,\ekvcSplitAndForward,
-        \ekvcHash,\ekvcHashAndForward,
+        \ekvcSplit,\ekvcSplitAndForward,\ekvcSplitAndUse
+        \ekvcHash,\ekvcHashAndForward,\ekvcHashAndUse
         \ekvcValue,\ekvcValueFast,
         \ekvcSecondaryKeys
       }
@@ -800,8 +800,8 @@
 % \begin{macro}{\ekvcVersion,\ekvcDate}
 % We're on our first input, so lets store the version and date in a macro.
 %    \begin{macrocode}
-\def\ekvcVersion{0.4}
-\def\ekvcDate{2020-08-08}
+\def\ekvcVersion{0.5}
+\def\ekvcDate{2020-10-11}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -874,6 +874,7 @@
 %    \begin{macrocode}
 \protected\long\def\ekvcSplitAndUse#1#2%
   {%
+    \let\ekvc at helpers@needed\@firstoftwo
     \ekv at ifdefined{\expandafter\@gobble\string#1}%
       {\ekvc at err@already at defined#1}%
       {\ekvcSplitAndUse@#1{}{#2}}%
@@ -892,13 +893,24 @@
   {%
     \edef\ekvc at set{\string#1}%
     \ekvc at SetupSplitKeys{#3}%
-    \ekvc at any@long\edef#1##1%
+    \ekvc at helpers@needed
       {%
-        \expandafter\ekvc at ekvset@pre at expander\expandafter{\ekvc at set}%
-        \unexpanded\expandafter
-          {\csname ekvc at split@\the\ekvc at keycount\endcsname}%
-        \unexpanded\expandafter{\ekvc at initials{}#2}%
+        \ekvc at any@long\edef#1##1%
+          {%
+            \expandafter\ekvc at ekvset@pre at expander\expandafter{\ekvc at set}%
+            \unexpanded\expandafter
+              {\csname ekvc at split@\the\ekvc at keycount\endcsname}%
+            \unexpanded\expandafter{\ekvc at initials{}#2}%
+          }%
       }%
+      {%
+        \ekvc at any@long\edef#1##1%
+          {%
+            \expandafter\ekvc at ekvset@pre at expander\expandafter{\ekvc at set}%
+            \unexpanded{#2}%
+            \unexpanded\expandafter{\ekvc at initials}%
+          }%
+      }%
   }
 %    \end{macrocode}
 % \end{macro}
@@ -910,6 +922,7 @@
 %    \begin{macrocode}
 \protected\long\def\ekvcSplitAndForward#1#2#3%
   {%
+    \let\ekvc at helpers@needed\@firstoftwo
     \ekv at ifdefined{\expandafter\@gobble\string#1}%
       {\ekvc at err@already at defined#1}%
       {\ekvcSplitAndUse@#1{{#2}}{#3}}%
@@ -924,30 +937,52 @@
 %    \begin{macrocode}
 \protected\long\def\ekvcSplit#1#2#3%
   {%
+    \let\ekvc at helpers@needed\@secondoftwo
     \ekv at ifdefined{\expandafter\@gobble\string#1}%
       {\ekvc at err@already at defined#1}%
       {%
         \expandafter
         \ekvcSplitAndUse@\expandafter#1\csname ekvc@\string#1\endcsname{#2}%
-        \ifnum\ekvc at keycount=0
-          \def\ekvc at tmp##1##{}%
+        \ifnum\ekvc at keycount<1
+          \ekvc at any@long\expandafter\def\csname ekvc@\string#1\endcsname{#3}%
         \else
           \ifnum\ekvc at keycount>9
             \ekvc at err@toomany{#1}%
-            \ekvc at defarggobbler9%
+            \let#1\ekvc at undefined
           \else
-            \expandafter\ekvc at defarggobbler\the\ekvc at keycount
+            \ekvcSplit at build@argspec
+            \ekvc at any@long\expandafter
+            \def\csname ekvc@\string#1\expandafter\endcsname\ekvc at tmp{#3}%
           \fi
         \fi
-        \ekvc at any@long\expandafter
-        \def\csname ekvc@\string#1\expandafter\endcsname
-            \ekvc at tmp##1##2##3##4##5##6##7##8##9%
-          {#3}%
       }%
   }
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}[internal]{\ekvcSplit at build@argspec,\ekvcSplit at build@argspec@}
+%    \begin{macrocode}
+\protected\def\ekvcSplit at build@argspec
+  {%
+    \begingroup
+      \edef\ekvc at tmp
+        {\endgroup\def\unexpanded{\ekvc at tmp}{\ekvcSplit at build@argspec@{1}}}%
+    \ekvc at tmp
+  }
+\def\ekvcSplit at build@argspec@#1%
+  {%
+    \ifnum#1>\ekvc at keycount
+      \ekv at fi@gobble
+    \fi
+    \@firstofone
+      {%
+        \unexpanded\expandafter{\csname ekvc at splitmark@#1\endcsname####}#1%
+        \expandafter\ekvcSplit at build@argspec@\expandafter{\the\numexpr#1+1}%
+      }%
+  }
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}[internal]
 %   {
 %     \ekvc at SetupSplitKeys, \ekvc at SetupSplitKeys@a, \ekvc at SetupSplitKeys@b,
@@ -1033,7 +1068,9 @@
       }%
     \ekvc at tmp
     \ekvlet\ekvc at set{#1}\ekvc at tmp
-    \expandafter\ekvc at setup@splitmacro\expandafter{\the\ekvc at keycount}%
+    \ekvc at helpers@needed
+      {\expandafter\ekvc at setup@splitmacro\expandafter{\the\ekvc at keycount}}%
+      {}%
   }
 %    \end{macrocode}
 % \end{macro}
@@ -1059,12 +1096,18 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[internal]{\ekvc at setup@splitmacro, \ekvc at split@1}
-%   Since the first split macro is different from the others we manually set
-%   that one up now. All the others will be defined as needed (always globally).
-%   The split macros just read up until the correct split mark, move that
-%   argument into a list and reinsert the rest, calling the next split macro
-%   afterwards.
+% \begin{macro}[internal]
+%   {
+%     \ekvc at setup@splitmacro,
+%     \ekvc at split@1, \ekvc at split@2, \ekvc at split@3,
+%     \ekvc at split@4, \ekvc at split@5, \ekvc at split@6,
+%     \ekvc at split@7
+%   }
+%   Since the first few split macros are different from the others we manually
+%   set those up now. All the others will be defined as needed (always
+%   globally).  The split macros just read up until the correct split mark, move
+%   that argument into a list and reinsert the rest, calling the next split
+%   macro afterwards.
 %    \begin{macrocode}
 \begingroup
 \edef\ekvc at tmp
@@ -1073,6 +1116,51 @@
         \unexpanded\expandafter{\csname ekvc at splitmark@1\endcsname}%
         ##1##2##3%
       {##3{##1}##2}%
+    \long\gdef\unexpanded\expandafter{\csname ekvc at split@2\endcsname}%
+        \unexpanded\expandafter{\csname ekvc at splitmark@1\endcsname}##1%
+        \unexpanded\expandafter{\csname ekvc at splitmark@2\endcsname}##2%
+        ##3##4%
+      {##4{##1}{##2}##3}%
+    \long\gdef\unexpanded\expandafter{\csname ekvc at split@3\endcsname}%
+        \unexpanded\expandafter{\csname ekvc at splitmark@1\endcsname}##1%
+        \unexpanded\expandafter{\csname ekvc at splitmark@2\endcsname}##2%
+        \unexpanded\expandafter{\csname ekvc at splitmark@3\endcsname}##3%
+        ##4##5%
+      {##5{##1}{##2}{##3}##4}%
+    \long\gdef\unexpanded\expandafter{\csname ekvc at split@4\endcsname}%
+        \unexpanded\expandafter{\csname ekvc at splitmark@1\endcsname}##1%
+        \unexpanded\expandafter{\csname ekvc at splitmark@2\endcsname}##2%
+        \unexpanded\expandafter{\csname ekvc at splitmark@3\endcsname}##3%
+        \unexpanded\expandafter{\csname ekvc at splitmark@4\endcsname}##4%
+        ##5##6%
+      {##6{##1}{##2}{##3}{##4}##5}%
+    \long\gdef\unexpanded\expandafter{\csname ekvc at split@5\endcsname}%
+        \unexpanded\expandafter{\csname ekvc at splitmark@1\endcsname}##1%
+        \unexpanded\expandafter{\csname ekvc at splitmark@2\endcsname}##2%
+        \unexpanded\expandafter{\csname ekvc at splitmark@3\endcsname}##3%
+        \unexpanded\expandafter{\csname ekvc at splitmark@4\endcsname}##4%
+        \unexpanded\expandafter{\csname ekvc at splitmark@5\endcsname}##5%
+        ##6##7%
+      {##7{##1}{##2}{##3}{##4}{##5}##6}%
+    \long\gdef\unexpanded\expandafter{\csname ekvc at split@6\endcsname}%
+        \unexpanded\expandafter{\csname ekvc at splitmark@1\endcsname}##1%
+        \unexpanded\expandafter{\csname ekvc at splitmark@2\endcsname}##2%
+        \unexpanded\expandafter{\csname ekvc at splitmark@3\endcsname}##3%
+        \unexpanded\expandafter{\csname ekvc at splitmark@4\endcsname}##4%
+        \unexpanded\expandafter{\csname ekvc at splitmark@5\endcsname}##5%
+        \unexpanded\expandafter{\csname ekvc at splitmark@6\endcsname}##6%
+        ##7##8%
+      {##8{##1}{##2}{##3}{##4}{##5}{##6}##7}%
+    \long\gdef\unexpanded\expandafter{\csname ekvc at split@7\endcsname}%
+        \unexpanded\expandafter{\csname ekvc at splitmark@1\endcsname}##1%
+        \unexpanded\expandafter{\csname ekvc at splitmark@2\endcsname}##2%
+        \unexpanded\expandafter{\csname ekvc at splitmark@3\endcsname}##3%
+        \unexpanded\expandafter{\csname ekvc at splitmark@4\endcsname}##4%
+        \unexpanded\expandafter{\csname ekvc at splitmark@5\endcsname}##5%
+        \unexpanded\expandafter{\csname ekvc at splitmark@6\endcsname}##6%
+        \unexpanded\expandafter{\csname ekvc at splitmark@7\endcsname}##7%
+        ##8##9%
+      {##9{##1}{##2}{##3}{##4}{##5}{##6}{##7}##8}%
   }
 \ekvc at tmp
 \endgroup
@@ -1106,6 +1194,7 @@
 %    \begin{macrocode}
 \protected\long\def\ekvcHashAndUse#1#2%
   {%
+    \let\ekvc at helpers@needed\@firstoftwo
     \ekv at ifdefined{\expandafter\@gobble\string#1}%
       {\ekvc at err@already at defined#1}%
       {\ekvcHashAndUse@#1{}{#2}}%
@@ -1113,7 +1202,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[internal]{\ekvcHashAndForward@}
+% \begin{macro}[internal]{\ekvcHashAndUse@}
 %   This is more or less the same as |\ekvcSplitAndUse@|. Instead of an empty
 %   group we place a marker after the initials, we don't use the sorting macros
 %   of |split|, but instead pack all the values in one argument.
@@ -1122,12 +1211,23 @@
   {%
     \edef\ekvc at set{\string#1}%
     \ekvc at SetupHashKeys{#3}%
-    \ekvc at any@long\edef#1##1%
+    \ekvc at helpers@needed
       {%
-        \expandafter\ekvc at ekvset@pre at expander\expandafter{\ekvc at set}%
-        \unexpanded{\ekvc at hash@pack at argument}%
-        \unexpanded\expandafter{\ekvc at initials\ekvc at stop#2}%
+        \ekvc at any@long\edef#1##1%
+          {%
+            \expandafter\ekvc at ekvset@pre at expander\expandafter{\ekvc at set}%
+            \unexpanded{\ekvc at hash@pack at argument}%
+            \unexpanded\expandafter{\ekvc at initials\ekvc at stop#2}%
+          }%
       }%
+      {%
+        \ekvc at any@long\edef#1##1%
+          {%
+            \expandafter\ekvc at ekvset@pre at expander\expandafter{\ekvc at set}%
+            \unexpanded{#2}%
+            \unexpanded\expandafter{\ekvc at initials\ekvc at stop}%
+          }%
+      }%
   }
 %    \end{macrocode}
 % \end{macro}
@@ -1137,6 +1237,7 @@
 %    \begin{macrocode}
 \protected\long\def\ekvcHashAndForward#1#2#3%
   {%
+    \let\ekvc at helpers@needed\@firstoftwo
     \ekv at ifdefined{\expandafter\@gobble\string#1}%
       {\ekvc at err@already at defined#1}%
       {\ekvcHashAndUse@#1{{#2}}{#3}}%
@@ -1151,12 +1252,15 @@
 %    \begin{macrocode}
 \protected\long\def\ekvcHash#1#2#3%
   {%
+    \let\ekvc at helpers@needed\@secondoftwo
     \ekv at ifdefined{\expandafter\@gobble\string#1}%
       {\ekvc at err@already at defined#1}%
       {%
         \expandafter
         \ekvcHashAndUse@\expandafter#1\csname ekvc@\string#1\endcsname{#2}%
-        \ekvc at any@long\expandafter\def\csname ekvc@\string#1\endcsname##1{#3}%
+        \ekvc at any@long\expandafter\def\csname ekvc@\string#1\endcsname
+            ##1\ekvc at stop
+          {#3}%
       }%
   }
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/tex/generic/expkv-cs/expkv-cs.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/expkv-cs/expkv-cs.tex	2020-10-11 20:44:09 UTC (rev 56631)
+++ trunk/Master/texmf-dist/tex/generic/expkv-cs/expkv-cs.tex	2020-10-11 20:48:59 UTC (rev 56632)
@@ -35,8 +35,8 @@
 \else
   \expandafter\endinput
 \fi
-\def\ekvcVersion{0.4}
-\def\ekvcDate{2020-08-08}
+\def\ekvcVersion{0.5}
+\def\ekvcDate{2020-10-11}
 \csname ekvc at tmp\endcsname
 \expandafter\chardef\csname ekvc at tmp\endcsname=\catcode`\@
 \catcode`\@=11
@@ -57,6 +57,7 @@
   }
 \protected\long\def\ekvcSplitAndUse#1#2%
   {%
+    \let\ekvc at helpers@needed\@firstoftwo
     \ekv at ifdefined{\expandafter\@gobble\string#1}%
       {\ekvc at err@already at defined#1}%
       {\ekvcSplitAndUse@#1{}{#2}}%
@@ -65,16 +66,28 @@
   {%
     \edef\ekvc at set{\string#1}%
     \ekvc at SetupSplitKeys{#3}%
-    \ekvc at any@long\edef#1##1%
+    \ekvc at helpers@needed
       {%
-        \expandafter\ekvc at ekvset@pre at expander\expandafter{\ekvc at set}%
-        \unexpanded\expandafter
-          {\csname ekvc at split@\the\ekvc at keycount\endcsname}%
-        \unexpanded\expandafter{\ekvc at initials{}#2}%
+        \ekvc at any@long\edef#1##1%
+          {%
+            \expandafter\ekvc at ekvset@pre at expander\expandafter{\ekvc at set}%
+            \unexpanded\expandafter
+              {\csname ekvc at split@\the\ekvc at keycount\endcsname}%
+            \unexpanded\expandafter{\ekvc at initials{}#2}%
+          }%
       }%
+      {%
+        \ekvc at any@long\edef#1##1%
+          {%
+            \expandafter\ekvc at ekvset@pre at expander\expandafter{\ekvc at set}%
+            \unexpanded{#2}%
+            \unexpanded\expandafter{\ekvc at initials}%
+          }%
+      }%
   }
 \protected\long\def\ekvcSplitAndForward#1#2#3%
   {%
+    \let\ekvc at helpers@needed\@firstoftwo
     \ekv at ifdefined{\expandafter\@gobble\string#1}%
       {\ekvc at err@already at defined#1}%
       {\ekvcSplitAndUse@#1{{#2}}{#3}}%
@@ -81,27 +94,44 @@
   }
 \protected\long\def\ekvcSplit#1#2#3%
   {%
+    \let\ekvc at helpers@needed\@secondoftwo
     \ekv at ifdefined{\expandafter\@gobble\string#1}%
       {\ekvc at err@already at defined#1}%
       {%
         \expandafter
         \ekvcSplitAndUse@\expandafter#1\csname ekvc@\string#1\endcsname{#2}%
-        \ifnum\ekvc at keycount=0
-          \def\ekvc at tmp##1##{}%
+        \ifnum\ekvc at keycount<1
+          \ekvc at any@long\expandafter\def\csname ekvc@\string#1\endcsname{#3}%
         \else
           \ifnum\ekvc at keycount>9
             \ekvc at err@toomany{#1}%
-            \ekvc at defarggobbler9%
+            \let#1\ekvc at undefined
           \else
-            \expandafter\ekvc at defarggobbler\the\ekvc at keycount
+            \ekvcSplit at build@argspec
+            \ekvc at any@long\expandafter
+            \def\csname ekvc@\string#1\expandafter\endcsname\ekvc at tmp{#3}%
           \fi
         \fi
-        \ekvc at any@long\expandafter
-        \def\csname ekvc@\string#1\expandafter\endcsname
-            \ekvc at tmp##1##2##3##4##5##6##7##8##9%
-          {#3}%
       }%
   }
+\protected\def\ekvcSplit at build@argspec
+  {%
+    \begingroup
+      \edef\ekvc at tmp
+        {\endgroup\def\unexpanded{\ekvc at tmp}{\ekvcSplit at build@argspec@{1}}}%
+    \ekvc at tmp
+  }
+\def\ekvcSplit at build@argspec@#1%
+  {%
+    \ifnum#1>\ekvc at keycount
+      \ekv at fi@gobble
+    \fi
+    \@firstofone
+      {%
+        \unexpanded\expandafter{\csname ekvc at splitmark@#1\endcsname####}#1%
+        \expandafter\ekvcSplit at build@argspec@\expandafter{\the\numexpr#1+1}%
+      }%
+  }
 \protected\long\def\ekvc at SetupSplitKeys
   {%
     \ekvc at keycount=0
@@ -155,7 +185,9 @@
       }%
     \ekvc at tmp
     \ekvlet\ekvc at set{#1}\ekvc at tmp
-    \expandafter\ekvc at setup@splitmacro\expandafter{\the\ekvc at keycount}%
+    \ekvc at helpers@needed
+      {\expandafter\ekvc at setup@splitmacro\expandafter{\the\ekvc at keycount}}%
+      {}%
   }
 \protected\def\ekvc at split@p at long
   {%
@@ -171,6 +203,51 @@
         \unexpanded\expandafter{\csname ekvc at splitmark@1\endcsname}%
         ##1##2##3%
       {##3{##1}##2}%
+    \long\gdef\unexpanded\expandafter{\csname ekvc at split@2\endcsname}%
+        \unexpanded\expandafter{\csname ekvc at splitmark@1\endcsname}##1%
+        \unexpanded\expandafter{\csname ekvc at splitmark@2\endcsname}##2%
+        ##3##4%
+      {##4{##1}{##2}##3}%
+    \long\gdef\unexpanded\expandafter{\csname ekvc at split@3\endcsname}%
+        \unexpanded\expandafter{\csname ekvc at splitmark@1\endcsname}##1%
+        \unexpanded\expandafter{\csname ekvc at splitmark@2\endcsname}##2%
+        \unexpanded\expandafter{\csname ekvc at splitmark@3\endcsname}##3%
+        ##4##5%
+      {##5{##1}{##2}{##3}##4}%
+    \long\gdef\unexpanded\expandafter{\csname ekvc at split@4\endcsname}%
+        \unexpanded\expandafter{\csname ekvc at splitmark@1\endcsname}##1%
+        \unexpanded\expandafter{\csname ekvc at splitmark@2\endcsname}##2%
+        \unexpanded\expandafter{\csname ekvc at splitmark@3\endcsname}##3%
+        \unexpanded\expandafter{\csname ekvc at splitmark@4\endcsname}##4%
+        ##5##6%
+      {##6{##1}{##2}{##3}{##4}##5}%
+    \long\gdef\unexpanded\expandafter{\csname ekvc at split@5\endcsname}%
+        \unexpanded\expandafter{\csname ekvc at splitmark@1\endcsname}##1%
+        \unexpanded\expandafter{\csname ekvc at splitmark@2\endcsname}##2%
+        \unexpanded\expandafter{\csname ekvc at splitmark@3\endcsname}##3%
+        \unexpanded\expandafter{\csname ekvc at splitmark@4\endcsname}##4%
+        \unexpanded\expandafter{\csname ekvc at splitmark@5\endcsname}##5%
+        ##6##7%
+      {##7{##1}{##2}{##3}{##4}{##5}##6}%
+    \long\gdef\unexpanded\expandafter{\csname ekvc at split@6\endcsname}%
+        \unexpanded\expandafter{\csname ekvc at splitmark@1\endcsname}##1%
+        \unexpanded\expandafter{\csname ekvc at splitmark@2\endcsname}##2%
+        \unexpanded\expandafter{\csname ekvc at splitmark@3\endcsname}##3%
+        \unexpanded\expandafter{\csname ekvc at splitmark@4\endcsname}##4%
+        \unexpanded\expandafter{\csname ekvc at splitmark@5\endcsname}##5%
+        \unexpanded\expandafter{\csname ekvc at splitmark@6\endcsname}##6%
+        ##7##8%
+      {##8{##1}{##2}{##3}{##4}{##5}{##6}##7}%
+    \long\gdef\unexpanded\expandafter{\csname ekvc at split@7\endcsname}%
+        \unexpanded\expandafter{\csname ekvc at splitmark@1\endcsname}##1%
+        \unexpanded\expandafter{\csname ekvc at splitmark@2\endcsname}##2%
+        \unexpanded\expandafter{\csname ekvc at splitmark@3\endcsname}##3%
+        \unexpanded\expandafter{\csname ekvc at splitmark@4\endcsname}##4%
+        \unexpanded\expandafter{\csname ekvc at splitmark@5\endcsname}##5%
+        \unexpanded\expandafter{\csname ekvc at splitmark@6\endcsname}##6%
+        \unexpanded\expandafter{\csname ekvc at splitmark@7\endcsname}##7%
+        ##8##9%
+      {##9{##1}{##2}{##3}{##4}{##5}{##6}{##7}##8}%
   }
 \ekvc at tmp
 \endgroup
@@ -198,6 +275,7 @@
   }
 \protected\long\def\ekvcHashAndUse#1#2%
   {%
+    \let\ekvc at helpers@needed\@firstoftwo
     \ekv at ifdefined{\expandafter\@gobble\string#1}%
       {\ekvc at err@already at defined#1}%
       {\ekvcHashAndUse@#1{}{#2}}%
@@ -206,15 +284,27 @@
   {%
     \edef\ekvc at set{\string#1}%
     \ekvc at SetupHashKeys{#3}%
-    \ekvc at any@long\edef#1##1%
+    \ekvc at helpers@needed
       {%
-        \expandafter\ekvc at ekvset@pre at expander\expandafter{\ekvc at set}%
-        \unexpanded{\ekvc at hash@pack at argument}%
-        \unexpanded\expandafter{\ekvc at initials\ekvc at stop#2}%
+        \ekvc at any@long\edef#1##1%
+          {%
+            \expandafter\ekvc at ekvset@pre at expander\expandafter{\ekvc at set}%
+            \unexpanded{\ekvc at hash@pack at argument}%
+            \unexpanded\expandafter{\ekvc at initials\ekvc at stop#2}%
+          }%
       }%
+      {%
+        \ekvc at any@long\edef#1##1%
+          {%
+            \expandafter\ekvc at ekvset@pre at expander\expandafter{\ekvc at set}%
+            \unexpanded{#2}%
+            \unexpanded\expandafter{\ekvc at initials\ekvc at stop}%
+          }%
+      }%
   }
 \protected\long\def\ekvcHashAndForward#1#2#3%
   {%
+    \let\ekvc at helpers@needed\@firstoftwo
     \ekv at ifdefined{\expandafter\@gobble\string#1}%
       {\ekvc at err@already at defined#1}%
       {\ekvcHashAndUse@#1{{#2}}{#3}}%
@@ -221,12 +311,15 @@
   }
 \protected\long\def\ekvcHash#1#2#3%
   {%
+    \let\ekvc at helpers@needed\@secondoftwo
     \ekv at ifdefined{\expandafter\@gobble\string#1}%
       {\ekvc at err@already at defined#1}%
       {%
         \expandafter
         \ekvcHashAndUse@\expandafter#1\csname ekvc@\string#1\endcsname{#2}%
-        \ekvc at any@long\expandafter\def\csname ekvc@\string#1\endcsname##1{#3}%
+        \ekvc at any@long\expandafter\def\csname ekvc@\string#1\endcsname
+            ##1\ekvc at stop
+          {#3}%
       }%
   }
 \long\def\ekvc at hash@pack at argument#1\ekvc at stop#2{#2{#1}}



More information about the tex-live-commits mailing list.