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.