texlive[54939] Master/texmf-dist: expkv-cs (29apr20)

commits+karl at tug.org commits+karl at tug.org
Wed Apr 29 23:28:44 CEST 2020


Revision: 54939
          http://tug.org/svn/texlive?view=revision&revision=54939
Author:   karl
Date:     2020-04-29 23:28:43 +0200 (Wed, 29 Apr 2020)
Log Message:
-----------
expkv-cs (29apr20)

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-04-29 21:27:54 UTC (rev 54938)
+++ trunk/Master/texmf-dist/doc/latex/expkv-cs/README.md	2020-04-29 21:28:43 UTC (rev 54939)
@@ -1,7 +1,7 @@
 -------------------------------------------------------------------------------
 # expkv-cs -- define expandable key=val macros using expkv
 
-Version 2020-04-05 v0.2
+Version 2020-04-29 v0.3
 
 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-04-29 21:27:54 UTC (rev 54938)
+++ trunk/Master/texmf-dist/source/latex/expkv-cs/expkv-cs.dtx	2020-04-29 21:28:43 UTC (rev 54939)
@@ -766,8 +766,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.2}
-\def\ekvcDate{2020-04-05}
+\def\ekvcVersion{0.3}
+\def\ekvcDate{2020-04-29}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -804,6 +804,34 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}[internal]
+%   {
+%     \ekvc at ekvset@per at expander,
+%     \ekvc at ekvset@per at expander@a,
+%     \ekvc at ekvset@per at expander@b
+%   }
+%   This macro expands |\ekvset| twice so that the first two steps of expansion
+%   don't have to be made every time the \expkvc\ macros are used. We have to do
+%   a little magic trick to get the macro parameter |#1| for the macro
+%   definition this is used in, even though we're calling |\unexpanded|. We do
+%   that by splitting the expanded |\ekvset| at some marks and place |##1| in
+%   between.
+%    \begin{macrocode}
+\def\ekvc at ekvset@pre at expander#1%
+  {%
+    \expandafter\ekvc at ekvset@pre at expander@a\ekvset{#1}\ekvc at stop\ekvc at stop
+  }
+\def\ekvc at ekvset@pre at expander@a
+  {%
+    \expandafter\ekvc at ekvset@pre at expander@b
+  }
+\def\ekvc at ekvset@pre at expander@b#1\ekvc at stop#2\ekvc at stop
+  {%
+    \unexpanded{#1}##1\unexpanded{#2}%
+  }
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\ekvcSplitAndForward}
 %   The first user macro we want to set up can be reused for
 %   \cs[no-index]{ekvcSplit}. We'll split this one up so that the test whether
@@ -831,7 +859,7 @@
     \ekvc at SetupSplitKeys{#3}%
     \ekvc at any@long\edef#1##1%
       {%
-        \unexpanded{\ekvset}{\ekvc at set}{##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}%
@@ -1047,7 +1075,7 @@
     \ekvc at SetupHashKeys{#3}%
     \ekvc at any@long\edef#1##1%
       {%
-        \unexpanded{\ekvset}{\ekvc at set}{##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}%
       }%
@@ -1386,7 +1414,11 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[internal]{\ekvc at t@meta, \ekvc at t@nmeta, \ekvc at type@meta}
+% \begin{macro}[internal]
+%   {
+%     \ekvc at t@meta, \ekvc at t@nmeta,
+%     \ekvc at type@meta, \ekvc at type@meta at a, \ekvc at type@meta at b
+%   }
 %   The |meta| and |nmeta| key types use a nested |\ekvset| to set other keys in
 %   the same macro's \set.
 %    \begin{macrocode}
@@ -1403,9 +1435,17 @@
   }
 \protected\long\def\ekvc at type@meta#1#2#3#4#5#6%
   {%
-    #2\def\ekvc at tmp#3{\ekvset{#1}{#6}}%
+    \expandafter\ekvc at type@meta at a\expandafter{\ekvset{#1}{#6}}{#2}{#3}%
     #4\ekvc at set{#5}\ekvc at tmp
   }
+\protected\def\ekvc at type@meta at a
+  {%
+    \expandafter\ekvc at type@meta at b\expandafter
+  }
+\protected\long\def\ekvc at type@meta at b#1#2#3%
+  {%
+    #2\def\ekvc at tmp#3{#1}%
+  }
 %    \end{macrocode}
 % \end{macro}
 %

Modified: trunk/Master/texmf-dist/tex/generic/expkv-cs/expkv-cs.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/expkv-cs/expkv-cs.tex	2020-04-29 21:27:54 UTC (rev 54938)
+++ trunk/Master/texmf-dist/tex/generic/expkv-cs/expkv-cs.tex	2020-04-29 21:28:43 UTC (rev 54939)
@@ -35,8 +35,8 @@
 \else
   \expandafter\endinput
 \fi
-\def\ekvcVersion{0.2}
-\def\ekvcDate{2020-04-05}
+\def\ekvcVersion{0.3}
+\def\ekvcDate{2020-04-29}
 \csname ekvc at tmp\endcsname
 \expandafter\chardef\csname ekvc at tmp\endcsname=\catcode`\@
 \catcode`\@=11
@@ -43,6 +43,18 @@
 \newcount\ekvc at keycount
 \def\ekvc at long{}
 \def\ekvc at any@long{}
+\def\ekvc at ekvset@pre at expander#1%
+  {%
+    \expandafter\ekvc at ekvset@pre at expander@a\ekvset{#1}\ekvc at stop\ekvc at stop
+  }
+\def\ekvc at ekvset@pre at expander@a
+  {%
+    \expandafter\ekvc at ekvset@pre at expander@b
+  }
+\def\ekvc at ekvset@pre at expander@b#1\ekvc at stop#2\ekvc at stop
+  {%
+    \unexpanded{#1}##1\unexpanded{#2}%
+  }
 \protected\long\def\ekvcSplitAndForward#1#2#3%
   {%
     \ekv at ifdefined{\expandafter\@gobble\string#1}%
@@ -55,7 +67,7 @@
     \ekvc at SetupSplitKeys{#3}%
     \ekvc at any@long\edef#1##1%
       {%
-        \unexpanded{\ekvset}{\ekvc at set}{##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}%
@@ -190,7 +202,7 @@
     \ekvc at SetupHashKeys{#3}%
     \ekvc at any@long\edef#1##1%
       {%
-        \unexpanded{\ekvset}{\ekvc at set}{##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}%
       }%
@@ -417,9 +429,17 @@
   }
 \protected\long\def\ekvc at type@meta#1#2#3#4#5#6%
   {%
-    #2\def\ekvc at tmp#3{\ekvset{#1}{#6}}%
+    \expandafter\ekvc at type@meta at a\expandafter{\ekvset{#1}{#6}}{#2}{#3}%
     #4\ekvc at set{#5}\ekvc at tmp
   }
+\protected\def\ekvc at type@meta at a
+  {%
+    \expandafter\ekvc at type@meta at b\expandafter
+  }
+\protected\long\def\ekvc at type@meta at b#1#2#3%
+  {%
+    #2\def\ekvc at tmp#3{#1}%
+  }
 \protected\def\ekvc at t@alias#1#2%
   {%
     \ekvc at assert@not at long{alias #1}%



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