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.