texlive[57246] Master/texmf-dist: expkv-def (28dec20)

commits+karl at tug.org commits+karl at tug.org
Mon Dec 28 23:32:26 CET 2020


Revision: 57246
          http://tug.org/svn/texlive?view=revision&revision=57246
Author:   karl
Date:     2020-12-28 23:32:26 +0100 (Mon, 28 Dec 2020)
Log Message:
-----------
expkv-def (28dec20)

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

Modified: trunk/Master/texmf-dist/doc/latex/expkv-def/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/expkv-def/README.md	2020-12-28 22:32:07 UTC (rev 57245)
+++ trunk/Master/texmf-dist/doc/latex/expkv-def/README.md	2020-12-28 22:32:26 UTC (rev 57246)
@@ -1,7 +1,7 @@
 -------------------------------------------------------------------------------
 # expkv-def -- a key-defining frontend for expkv
 
-Version 2020-10-12 v0.6
+Version 2020-12-28 v0.7
 
 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-def/expkv-def.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/expkv-def/expkv-def.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/expkv-def/expkv-def.dtx	2020-12-28 22:32:07 UTC (rev 57245)
+++ trunk/Master/texmf-dist/source/latex/expkv-def/expkv-def.dtx	2020-12-28 22:32:26 UTC (rev 57246)
@@ -171,6 +171,7 @@
 \DoNotIndex{\@,\unexpanded,\string,\expanded,\dimexpr,\global,\glueexpr,\hbox}
 \DoNotIndex{\numexpr,\RequirePackage,\setbox,\the,\unless,\xdef,\@firstofone}
 \DoNotIndex{\@firstoftwo,\@gobble,\@secondoftwo,\meaning,\detokenize}
+\DoNotIndex{\romannumeral,\^}
 \DoNotIndex{\ifcsname}
 \DoNotIndex{\ifx}
 \DoNotIndex{\ifdefined}
@@ -362,7 +363,7 @@
 %   |\edef|.
 % \end{function}
 %
-% \begin{function}{default,qdefault,edefault}
+% \begin{function}{default,qdefault,odefault,fdefault,edefault}
 %   \begin{syntax}
 %     default \key\ = \marg{definition} \prefixes3223
 %   \end{syntax}
@@ -370,11 +371,18 @@
 %   \key\ can be of any argument-grabbing kind, and when used without a \val\
 %   it will be passed \meta{definition} instead. The |qdefault| variant will
 %   expand the \key's code once, so will be slightly quicker, but not change if
-%   you redefine \key. The |edefault| on the other hand fully expands the
-%   \key-code with \meta{definition} as its argument inside of an |\edef|.
+%   you redefine \key. |odefault| is just another name for |qdefault|. The
+%   |fdefault| version will expand the key code until a non-expandable token or
+%   a space is found, a space would be gobbled.\footnotemark{} The |edefault| on the other hand fully expands
+%   the \key-code with \meta{definition} as its argument inside of an |\edef|.
 % \end{function}
+% \footnotetext
+%   {^^A
+%     For those familiar with \TeX-coding: This uses a
+%     \cs[no-index]{romannumeral}-expansion.
+%   }
 %
-% \begin{function}{initial,oinitial,einitial}
+% \begin{function}{initial,oinitial,finitial,einitial}
 %   \begin{syntax}
 %     initial \key\ = \{\val\} \prefixes3333
 %   \end{syntax}
@@ -382,8 +390,11 @@
 %   taking \key. It'll just call the key-macro of \key\ and pass it \val. The
 %   |einitial| variant will expand \val\ using an |\edef| expansion prior to
 %   passing it to the key-macro and the |oinitial| variant will expand the first
-%   token in \val\ once.
+%   token in \val\ once. |finitial| will expand \val\ until a non-expandable
+%   token or a space is found, a space would be
+%   gobbled.\footnotemark
 % \end{function}
+% \footnotetext{Again using \cs[no-index]{romannumeral}.}
 %
 % \begin{function}{bool,gbool,boolTF,gboolTF}
 %   \begin{syntax}
@@ -755,8 +766,8 @@
 % \begin{macro}{\ekvdVersion,\ekvdDate}
 % We're on our first input, so lets store the version and date in a macro.
 %    \begin{macrocode}
-\def\ekvdVersion{0.6}
-\def\ekvdDate{2020-10-12}
+\def\ekvdVersion{0.7}
+\def\ekvdDate{2020-12-28}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -904,15 +915,11 @@
           {%
             \ekvd at ifalso
               {%
-                \ekv at expB@unbraceA{\ekv at expB@unbraceA{\ekvd at add@noval{#1}}}%
+                \ekv at expargtwice{\ekvd at add@noval{#1}}%
                   {\ekvchangeset{#2}}%
                   \ekvd at assert@not at protected@also
               }%
-              {%
-                \ekv at expB@unbraceA
-                  {\ekv at expB@unbraceA{\ekvdefNoVal\ekvd at set{#1}}}%
-                  {\ekvchangeset{#2}}%
-              }%
+              {\ekv at expargtwice{\ekvdefNoVal\ekvd at set{#1}}{\ekvchangeset{#2}}}%
           }%
       }%
   }
@@ -942,7 +949,7 @@
             \ekvd at assert@not at long
             \ekvd at prot#1\ekvd at tmp{#3}%
             \ekvd at ifalso
-              {\ekv at expB@unbraceA{\ekvd at add@noval{#2}}\ekvd at tmp{}}%
+              {\ekv at exparg{\ekvd at add@noval{#2}}\ekvd at tmp{}}%
               {\ekvletNoVal\ekvd at set{#2}\ekvd at tmp}%
           }%
       }%
@@ -964,7 +971,7 @@
           {%
             \ekvd at prot\ekvd at long#1\ekvd at tmp##1{#3}%
             \ekvd at ifalso
-              {\ekv at expB@unbraceA{\ekvd at add@val{#2}}{\ekvd at tmp{##1}}{}}%
+              {\ekv at exparg{\ekvd at add@val{#2}}{\ekvd at tmp{##1}}{}}%
               {\ekvlet\ekvd at set{#2}\ekvd at tmp}%
           }%
       }%
@@ -974,7 +981,11 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[internal]{\ekvd at type@default,\ekvd at t@default,\ekvd at t@qdefault}
+% \begin{macro}[internal]
+%   {
+%     \ekvd at type@default,\ekvd at t@default,\ekvd at t@qdefault,\ekvd at t@odefault,
+%     \ekvd at t@fdefault
+%   }
 % |\ekvd at type@default| asserts there was an argument, also the key for which one
 % wants to set a default has to be already defined (this is not so important for
 % |default|, but |qdefault| requires is). If everything is good, |\edef| a
@@ -981,11 +992,11 @@
 % temporary macro that expands |\ekvd at set| and the |\csname| for the key, and in
 % the case of |qdefault| does the first expansion step of the key-macro.
 %    \begin{macrocode}
-\protected\long\def\ekvd at type@default#1#2#3%
+\protected\long\def\ekvd at type@default#1#2#3#4%
   {%
     \ekvd at assert@arg
       {%
-        \ekvifdefined\ekvd at set{#2}%
+        \ekvifdefined\ekvd at set{#3}%
           {%
             \ekvd at assert@not at new
             \ekvd at assert@not at long
@@ -992,17 +1003,19 @@
             \ekvd at prot\edef\ekvd at tmp
               {%
                 \unexpanded\expandafter#1%
-                  {\csname\ekv at name\ekvd at set{#2}\endcsname{#3}}%
+                  {#2\csname\ekv at name\ekvd at set{#3}\endcsname{#4}}%
               }%
             \ekvd at ifalso
-              {\ekv at expB@unbraceA{\ekvd at add@noval{#2}}\ekvd at tmp{}}%
-              {\ekvletNoVal\ekvd at set{#2}\ekvd at tmp}%
+              {\ekv at exparg{\ekvd at add@noval{#3}}\ekvd at tmp{}}%
+              {\ekvletNoVal\ekvd at set{#3}\ekvd at tmp}%
           }%
-          {\ekvd at err@undefined at key{#2}}%
+          {\ekvd at err@undefined at key{#3}}%
       }%
   }
-\protected\def\ekvd at t@default{\ekvd at type@default{}}
-\protected\def\ekvd at t@qdefault{\ekvd at type@default{\expandafter\expandafter}}
+\protected\def\ekvd at t@default{\ekvd at type@default{}{}}
+\protected\def\ekvd at t@qdefault{\ekvd at type@default{\expandafter\expandafter}{}}
+\let\ekvd at t@odefault\ekvd at t@qdefault
+\protected\def\ekvd at t@fdefault{\ekvd at type@default{}{\romannumeral`\^^@}}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1021,7 +1034,7 @@
             \ekvd at prot\edef\ekvd at tmp
               {\csname\ekv at name\ekvd at set{#1}\endcsname{#2}}%
             \ekvd at ifalso
-              {\ekv at expB@unbraceA{\ekvd at add@noval{#1}}\ekvd at tmp{}}%
+              {\ekv at exparg{\ekvd at add@noval{#1}}\ekvd at tmp{}}%
               {\ekvletNoVal\ekvd at set{#1}\ekvd at tmp}%
           }%
           {\ekvd at err@undefined at key{#1}}%
@@ -1030,28 +1043,31 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[internal]{\ekvd at t@initial,\ekvd at t@oinitial,\ekvd at t@einitial}
+% \begin{macro}[internal]
+%   {\ekvd at t@initial,\ekvd at t@oinitial,\ekvd at t@finitial,\ekvd at t@einitial}
 %    \begin{macrocode}
-\long\def\ekvd at type@initial#1#2#3%
+\long\def\ekvd at type@initial#1#2#3#4%
   {%
     \ekvd at assert@arg
       {%
-        \ekvifdefined\ekvd at set{#2}%
+        \ekvifdefined\ekvd at set{#3}%
           {%
             \ekvd at assert@not at new
             \ekvd at assert@not at also
             \ekvd at assert@not at long
             \ekvd at assert@not at protected
-            #1{#3}%
-            \csname\ekv at name\ekvd at set{#2}\expandafter\endcsname\expandafter
+            #1{#2#4}%
+            \csname\ekv at name\ekvd at set{#3}\expandafter\endcsname\expandafter
               {\ekvd at tmp}%
           }%
-          {\ekvd at err@undefined at key{#2}}%
+          {\ekvd at err@undefined at key{#3}}%
       }%
   }
-\def\ekvd at t@initial{\ekvd at type@initial{\def\ekvd at tmp}}
-\def\ekvd at t@oinitial{\ekvd at type@initial{\ekv at expB@unbraceA{\def\ekvd at tmp}}}
-\def\ekvd at t@einitial{\ekvd at type@initial{\edef\ekvd at tmp}}
+\def\ekvd at t@initial{\ekvd at type@initial{\def\ekvd at tmp}{}}
+\def\ekvd at t@oinitial{\ekvd at type@initial{\ekv at exparg{\def\ekvd at tmp}}{}}
+\def\ekvd at t@einitial{\ekvd at type@initial{\edef\ekvd at tmp}{}}
+\def\ekvd at t@finitial
+  {\ekvd at type@initial{\ekv at exparg{\def\ekvd at tmp}}{\romannumeral`\^^@}}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1346,7 +1362,7 @@
             \edef\ekvd at tmp{\ekvd at set}%
             \expandafter\ekvd at type@meta at a\expandafter{\ekvd at tmp}{#7}{#2}%
             \ekvd at ifalso
-              {\ekv at expB@unbraceA{#3{#6}}{\ekvd at tmp#4}{#5}}%
+              {\ekv at exparg{#3{#6}}{\ekvd at tmp#4}{#5}}%
               {\csname ekvlet#1\endcsname\ekvd at set{#6}\ekvd at tmp}%
           }%
       }%
@@ -1386,7 +1402,7 @@
           {%
             \ekvd at type@meta at a#7{#2}%
             \ekvd at ifalso
-              {\ekv at expB@unbraceA{#3{#6}}{\ekvd at tmp#4}{#5}}%
+              {\ekv at exparg{#3{#6}}{\ekvd at tmp#4}{#5}}%
               {\csname ekvlet#1\endcsname\ekvd at set{#6}\ekvd at tmp}%
           }%
       }%
@@ -1424,7 +1440,7 @@
           {%
             \ekvd at if@not at already@choice{#1}%
               {%
-                \ekv at expB@unbraceA
+                \ekv at exparg
                   {%
                     \expandafter\ekvd at add@aux
                       \csname\ekv at name\ekvd at set{#1}\endcsname{{##1}}{#1}%

Modified: trunk/Master/texmf-dist/tex/generic/expkv-def/expkv-def.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/expkv-def/expkv-def.tex	2020-12-28 22:32:07 UTC (rev 57245)
+++ trunk/Master/texmf-dist/tex/generic/expkv-def/expkv-def.tex	2020-12-28 22:32:26 UTC (rev 57246)
@@ -35,8 +35,8 @@
 \else
   \expandafter\endinput
 \fi
-\def\ekvdVersion{0.6}
-\def\ekvdDate{2020-10-12}
+\def\ekvdVersion{0.7}
+\def\ekvdDate{2020-12-28}
 \csname ekvd at tmp\endcsname
 \expandafter\chardef\csname ekvd at tmp\endcsname=\catcode`\@
 \catcode`\@=11
@@ -105,15 +105,11 @@
           {%
             \ekvd at ifalso
               {%
-                \ekv at expB@unbraceA{\ekv at expB@unbraceA{\ekvd at add@noval{#1}}}%
+                \ekv at expargtwice{\ekvd at add@noval{#1}}%
                   {\ekvchangeset{#2}}%
                   \ekvd at assert@not at protected@also
               }%
-              {%
-                \ekv at expB@unbraceA
-                  {\ekv at expB@unbraceA{\ekvdefNoVal\ekvd at set{#1}}}%
-                  {\ekvchangeset{#2}}%
-              }%
+              {\ekv at expargtwice{\ekvdefNoVal\ekvd at set{#1}}{\ekvchangeset{#2}}}%
           }%
       }%
   }
@@ -132,7 +128,7 @@
             \ekvd at assert@not at long
             \ekvd at prot#1\ekvd at tmp{#3}%
             \ekvd at ifalso
-              {\ekv at expB@unbraceA{\ekvd at add@noval{#2}}\ekvd at tmp{}}%
+              {\ekv at exparg{\ekvd at add@noval{#2}}\ekvd at tmp{}}%
               {\ekvletNoVal\ekvd at set{#2}\ekvd at tmp}%
           }%
       }%
@@ -147,7 +143,7 @@
           {%
             \ekvd at prot\ekvd at long#1\ekvd at tmp##1{#3}%
             \ekvd at ifalso
-              {\ekv at expB@unbraceA{\ekvd at add@val{#2}}{\ekvd at tmp{##1}}{}}%
+              {\ekv at exparg{\ekvd at add@val{#2}}{\ekvd at tmp{##1}}{}}%
               {\ekvlet\ekvd at set{#2}\ekvd at tmp}%
           }%
       }%
@@ -154,11 +150,11 @@
   }
 \protected\def\ekvd at t@code{\ekvd at type@code\def}
 \protected\def\ekvd at t@ecode{\ekvd at type@code\edef}
-\protected\long\def\ekvd at type@default#1#2#3%
+\protected\long\def\ekvd at type@default#1#2#3#4%
   {%
     \ekvd at assert@arg
       {%
-        \ekvifdefined\ekvd at set{#2}%
+        \ekvifdefined\ekvd at set{#3}%
           {%
             \ekvd at assert@not at new
             \ekvd at assert@not at long
@@ -165,17 +161,19 @@
             \ekvd at prot\edef\ekvd at tmp
               {%
                 \unexpanded\expandafter#1%
-                  {\csname\ekv at name\ekvd at set{#2}\endcsname{#3}}%
+                  {#2\csname\ekv at name\ekvd at set{#3}\endcsname{#4}}%
               }%
             \ekvd at ifalso
-              {\ekv at expB@unbraceA{\ekvd at add@noval{#2}}\ekvd at tmp{}}%
-              {\ekvletNoVal\ekvd at set{#2}\ekvd at tmp}%
+              {\ekv at exparg{\ekvd at add@noval{#3}}\ekvd at tmp{}}%
+              {\ekvletNoVal\ekvd at set{#3}\ekvd at tmp}%
           }%
-          {\ekvd at err@undefined at key{#2}}%
+          {\ekvd at err@undefined at key{#3}}%
       }%
   }
-\protected\def\ekvd at t@default{\ekvd at type@default{}}
-\protected\def\ekvd at t@qdefault{\ekvd at type@default{\expandafter\expandafter}}
+\protected\def\ekvd at t@default{\ekvd at type@default{}{}}
+\protected\def\ekvd at t@qdefault{\ekvd at type@default{\expandafter\expandafter}{}}
+\let\ekvd at t@odefault\ekvd at t@qdefault
+\protected\def\ekvd at t@fdefault{\ekvd at type@default{}{\romannumeral`\^^@}}
 \protected\long\def\ekvd at t@edefault#1#2%
   {%
     \ekvd at assert@arg
@@ -187,32 +185,34 @@
             \ekvd at prot\edef\ekvd at tmp
               {\csname\ekv at name\ekvd at set{#1}\endcsname{#2}}%
             \ekvd at ifalso
-              {\ekv at expB@unbraceA{\ekvd at add@noval{#1}}\ekvd at tmp{}}%
+              {\ekv at exparg{\ekvd at add@noval{#1}}\ekvd at tmp{}}%
               {\ekvletNoVal\ekvd at set{#1}\ekvd at tmp}%
           }%
           {\ekvd at err@undefined at key{#1}}%
       }%
   }
-\long\def\ekvd at type@initial#1#2#3%
+\long\def\ekvd at type@initial#1#2#3#4%
   {%
     \ekvd at assert@arg
       {%
-        \ekvifdefined\ekvd at set{#2}%
+        \ekvifdefined\ekvd at set{#3}%
           {%
             \ekvd at assert@not at new
             \ekvd at assert@not at also
             \ekvd at assert@not at long
             \ekvd at assert@not at protected
-            #1{#3}%
-            \csname\ekv at name\ekvd at set{#2}\expandafter\endcsname\expandafter
+            #1{#2#4}%
+            \csname\ekv at name\ekvd at set{#3}\expandafter\endcsname\expandafter
               {\ekvd at tmp}%
           }%
-          {\ekvd at err@undefined at key{#2}}%
+          {\ekvd at err@undefined at key{#3}}%
       }%
   }
-\def\ekvd at t@initial{\ekvd at type@initial{\def\ekvd at tmp}}
-\def\ekvd at t@oinitial{\ekvd at type@initial{\ekv at expB@unbraceA{\def\ekvd at tmp}}}
-\def\ekvd at t@einitial{\ekvd at type@initial{\edef\ekvd at tmp}}
+\def\ekvd at t@initial{\ekvd at type@initial{\def\ekvd at tmp}{}}
+\def\ekvd at t@oinitial{\ekvd at type@initial{\ekv at exparg{\def\ekvd at tmp}}{}}
+\def\ekvd at t@einitial{\ekvd at type@initial{\edef\ekvd at tmp}{}}
+\def\ekvd at t@finitial
+  {\ekvd at type@initial{\ekv at exparg{\def\ekvd at tmp}}{\romannumeral`\^^@}}
 \protected\def\ekvd at type@bool#1#2#3#4#5%
   {%
     \ekvd at ifnew{}{#4}%
@@ -422,7 +422,7 @@
             \edef\ekvd at tmp{\ekvd at set}%
             \expandafter\ekvd at type@meta at a\expandafter{\ekvd at tmp}{#7}{#2}%
             \ekvd at ifalso
-              {\ekv at expB@unbraceA{#3{#6}}{\ekvd at tmp#4}{#5}}%
+              {\ekv at exparg{#3{#6}}{\ekvd at tmp#4}{#5}}%
               {\csname ekvlet#1\endcsname\ekvd at set{#6}\ekvd at tmp}%
           }%
       }%
@@ -453,7 +453,7 @@
           {%
             \ekvd at type@meta at a#7{#2}%
             \ekvd at ifalso
-              {\ekv at expB@unbraceA{#3{#6}}{\ekvd at tmp#4}{#5}}%
+              {\ekv at exparg{#3{#6}}{\ekvd at tmp#4}{#5}}%
               {\csname ekvlet#1\endcsname\ekvd at set{#6}\ekvd at tmp}%
           }%
       }%
@@ -475,7 +475,7 @@
           {%
             \ekvd at if@not at already@choice{#1}%
               {%
-                \ekv at expB@unbraceA
+                \ekv at exparg
                   {%
                     \expandafter\ekvd at add@aux
                       \csname\ekv at name\ekvd at set{#1}\endcsname{{##1}}{#1}%



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