texlive[42757] Master: conv-xkv (20dec16)

commits+karl at tug.org commits+karl at tug.org
Tue Dec 20 23:56:32 CET 2016


Revision: 42757
          http://tug.org/svn/texlive?view=revision&revision=42757
Author:   karl
Date:     2016-12-20 23:56:32 +0100 (Tue, 20 Dec 2016)
Log Message:
-----------
conv-xkv (20dec16)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/conv-xkv/
    trunk/Master/texmf-dist/doc/latex/conv-xkv/README.md
    trunk/Master/texmf-dist/doc/latex/conv-xkv/doc/
    trunk/Master/texmf-dist/doc/latex/conv-xkv/doc/conv-xkv.pdf
    trunk/Master/texmf-dist/doc/latex/conv-xkv/examples/
    trunk/Master/texmf-dist/doc/latex/conv-xkv/examples/convert2xkeyval.tex
    trunk/Master/texmf-dist/source/latex/conv-xkv/
    trunk/Master/texmf-dist/source/latex/conv-xkv/conv-xkv.dtx
    trunk/Master/texmf-dist/source/latex/conv-xkv/conv-xkv.ins
    trunk/Master/texmf-dist/tex/latex/conv-xkv/
    trunk/Master/texmf-dist/tex/latex/conv-xkv/conv-xkv.sty
    trunk/Master/tlpkg/tlpsrc/conv-xkv.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/conv-xkv/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/conv-xkv/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/conv-xkv/README.md	2016-12-20 22:56:32 UTC (rev 42757)
@@ -0,0 +1,19 @@
+The conv-xkv Package
+Author: D. P. Story
+Dated: 2016/12/20
+
+This small package supports key-value syntax other than the standard latex 
+syntax of <key>=<value>. Using this package, create key-values of the form 
+<key>:<value> or <key>-><value>, for example. The package converts the new 
+notation to xkeyval notation and passes it on to xkeyval. 
+
+Please test and give feedback.
+
+Enjoy.
+
+D. P. Story
+www.acrotex.net
+dpstory at uakron.edu
+dpstory at acrotex.net
+
+

Added: trunk/Master/texmf-dist/doc/latex/conv-xkv/doc/conv-xkv.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/conv-xkv/doc/conv-xkv.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/conv-xkv/doc/conv-xkv.pdf	2016-12-20 22:55:13 UTC (rev 42756)
+++ trunk/Master/texmf-dist/doc/latex/conv-xkv/doc/conv-xkv.pdf	2016-12-20 22:56:32 UTC (rev 42757)

Property changes on: trunk/Master/texmf-dist/doc/latex/conv-xkv/doc/conv-xkv.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/conv-xkv/examples/convert2xkeyval.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/conv-xkv/examples/convert2xkeyval.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/conv-xkv/examples/convert2xkeyval.tex	2016-12-20 22:56:32 UTC (rev 42757)
@@ -0,0 +1,119 @@
+\documentclass{article}
+\usepackage{conv-xkv}
+\usepackage{fancyvrb}
+
+% Use ordinary askii characters to declare a delimiter, usually
+% the delimiter is some combination of special characters: !@#:%^&*()_+=
+\DeclareDelimiter{arrow}{->}
+% The colon delimiter is already defined, and need not be declared
+%\DeclareDelimiter{colon}{:}
+
+% formatting cmd
+\def\ameta#1{\ensuremath{\langle\textit{\texttt{#1}}\rangle}}
+
+\makeatletter
+\define at key{dps}{fname}[]{\def\fname{#1}}
+\define at key{dps}{mname}[]{\def\mname{#1}}
+\define at key{dps}{lname}[]{\def\lname{#1}}
+\define at choicekey{dps}{favorite}{AeB, AeB Pro, conv-xkv}[AeB]{\def\favoritepkg{#1}}
+\define at key{kaf}{home}[]{\def\myhome{#1}}
+\makeatother
+
+% Process keys using the arrow delimiter
+\def\setName#1{\cxkvsetkeys[arrow]{dps,kaf}{#1}}
+% we use the default delimiter, colon (:)
+\def\setOtherName#1{\cxkvsetkeys{dps}{#1}}
+% we define the dps family for xkeyval
+\def\setStandName#1{\setkeys{dps}{#1}}
+
+\let\pkg\textsf
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+\def\newtopic{\par\medskip}
+
+\parindent0pt
+
+\begin{document}
+
+In the preamble, we declare \verb~\DeclareDelimiter{arrow}{->}~.
+
+\newtopic
+The \pkg{conv-xkv} package converts key-values with alternate key-value delimiter
+to a form the \pkg{xkeyval} package expects them to be in.
+
+\setName {
+    fname-> D.,
+    mname-> P.,
+    lname-> Story,
+    favorite-> conv-xkv,
+    home-> {Niceville, FL}
+}
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\small]
+\def\setName#1{\cxkvsetkeys[arrow]{dps,kaf}{#1}}
+\setName {
+    fname-> D.,
+    mname-> P.,
+    lname-> Story,
+    favorite-> conv-xkv,
+    home-> {Niceville, FL}
+}
+\end{Verbatim}
+The script above converts the notation \texttt{\ameta{key}\usekvdelim{arrow}\ameta{value}} to
+the notation of \pkg{xkeyval}, \texttt{\ameta{key}=\ameta{value}}. It is then passed to the
+\cs{setkeys} command of \pkg{xkeyval}.
+
+\newtopic\textbf{Results:}
+My name is {\fname} {\mname} {\lname} and my favorite {\LaTeX} package is
+\textsf{\favoritepkg},  my home is \myhome.
+
+\setOtherName {
+    fname: D.,
+    mname: Paul,
+    lname: Story,
+    favorite      % use default
+}
+
+\newtopic Now we use the colon (:) delimiter:
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\small]
+\def\setOtherName#1{\cxkvsetkeys{dps}{#1}}
+\setOtherName {
+    fname: D.,
+    mname: Paul,
+    lname: Story,
+    favorite     % use default
+}
+\end{Verbatim}
+The script above converts the colon notation \texttt{\ameta{key}\usekvdelim{colon}\ameta{value}} to
+the notation of \pkg{xkeyval}, \texttt{\ameta{key}=\ameta{value}}. This enables the implementation of
+\pkg{xkeyval} in packages that want to use object-property notation. Other variations are
+possible.
+
+\newtopic\textbf{Results:}
+My name is {\fname} {\mname} {\lname} and my favorite {\LaTeX} package is
+\textsf{\favoritepkg}.
+
+\newtopic
+Now here are the same results using the \pkg{xkeyval} package with the key-value delimiter
+\texttt{\ameta{key}=\ameta{value}} to verify that nothing has been disturbed.
+
+\setStandName {
+    fname= Don,
+    mname= Paulo,
+    lname= Story,
+    favorite
+}
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\small]
+\def\setStandName#1{\setkeys{dps}{#1}}
+\setStandName {
+    fname=Don,
+    mname=Paulo,
+    lname=Story,
+    favorite
+}
+\end{Verbatim}
+\textbf{Results:}
+My name is {\fname} {\mname} {\lname} and my favorite {\LaTeX} package is
+\textsf{\favoritepkg}.
+
+
+\end{document}
+

Added: trunk/Master/texmf-dist/source/latex/conv-xkv/conv-xkv.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/conv-xkv/conv-xkv.dtx	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/conv-xkv/conv-xkv.dtx	2016-12-20 22:56:32 UTC (rev 42757)
@@ -0,0 +1,312 @@
+% \iffalse
+%<*copyright>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% conv-xkv package                                     %%
+%% Copyright (C) 2016  D. P. Story                      %%
+%%   dpstory at uakron.edu                                 %%
+%%                                                      %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License        %%
+%% Distributed from CTAN archives in directory          %%
+%% macros/latex/base/lppl.txt; either version 1 of the  %%
+%% License, or (at your option) any later version.      %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%</copyright>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{conv-xkv}
+%<package> [2016/12/20 v1.0 convert xkeyval format (dps)]
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[colorlinks,hyperindex=false]{hyperref}
+\OnlyDescription  % comment out for implementation details
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\InputIfFileExists{aebdocfmt.def}{\PackageInfo{web}{Inputting aebdocfmt.def}}
+    {\def\IndexOpt{\DescribeMacro}\def\IndexKey{\DescribeMacro}\let\setupFullwidth\relax
+     \PackageInfo{web}{aebdocfmt.def cannot be found}}
+\begin{document}
+\def\ameta#1{\ensuremath{\langle\textit{\texttt{#1}}\rangle}}
+\def\meta#1{\textsl{\texttt{#1}}}
+\def\darg#1{{\ttfamily\char123\relax#1\char125\relax}}
+\def\CMD#1{\textbackslash#1}
+\let\pkg\textsf
+\let\opt\texttt
+  \GetFileInfo{conv-xkv.sty}
+  \title{\textsf{conv-xkv}: Convert \textsf{xkeyval} format style}
+  \author{D. P. Story\\
+    Email: \texttt{dpstory at uakron.edu}}
+  \date{processed \today}
+  \maketitle
+  \tableofcontents
+  \DocInput{conv-xkv.dtx}
+\IfFileExists{\jobname.ind}{\newpage\setupFullwidth\par\PrintIndex}{\paragraph*{Index} The index goes here.\\Execute
+    \texttt{makeindex -s gind.ist -o conv-xkv.ind conv-xkv.idx} on the command line and recompile
+    \texttt{conv-xkv.dtx}.}
+\IfFileExists{\jobname.gls}{\PrintChanges}{\paragraph*{Change History} The list of changes goes here.\\Execute
+    \texttt{makeindex -s gglo.ist -o conv-xkv.gls conv-xkv.glo} on the command line and recompile
+    \texttt{conv-xkv.dtx}.}
+\end{document}
+%</driver>
+% \fi
+%
+% \MakeShortVerb{|}
+% \InputIfFileExists{aebdonotindex.def}{\PackageInfo{web}{Inputting aebdonotindex.def}}
+%    {\PackageInfo{web}{cannot find aebdonotindex.def}}
+%
+%    \begin{macrocode}
+%<*package>
+%    \end{macrocode}
+%    \section{Introduction}
+%    This is a intellectual exercise for creating \emph{alternate key-value} notation. The standard {\LaTeX}
+%    notation is \texttt{\ameta{key}=\ameta{value}}. To change to the JavaScript object style of
+%    key-values (\texttt{\ameta{key}:\ameta{value}}), use \cs{cxkvsetkeys} as you would \cs{setkeys}:
+%\begin{quote}
+%    \cs{cxkvsetkeys}\darg{\ameta{family}}\darg{\ameta{KV-pairs}}
+%\end{quote}
+%    to convert \texttt{\ameta{key}:\ameta{value}} to \texttt{\ameta{key}=\ameta{value}} and \pkg{xkeyval} processes the keys as it
+%    normally does. The comma (,) separates sets of key-value pairs and must not, therefore, be used as the delimiter
+%    that separates the \ameta{key} from the \ameta{value}.
+%
+%    The package is more general than what is described above. You can define several key-value delimiters, for whatever reason,
+%    in your document or package. Declare a \textit{named} delimiter:
+%\begin{quote}\ttfamily
+%\cs{DeclareDelimiter}\darg{\ameta{name}}\darg{\ameta{delimiter}}
+%\end{quote}
+%Use the newly declared delimited as follows:
+%\begin{quote}
+%\cs{cxkvsetkeys[\ameta{name}]}\darg{\ameta{family}}\darg{\ameta{KV-pairs}}
+%\end{quote}
+%The case of using a colon (:) for the delimiter is already defined, its name is `\texttt{colon}' and need not be declared.
+%
+%    The example file is \texttt{convert2xkeyval.tex}, use it to explore the possibilities and is found
+%    in the \texttt{examples} folder of this distribution.
+%
+%    \section{Preliminaries}
+%    We require the \pkg{xkeyval} package.
+%    \changes{v1.0}{2016/12/20}{Date of first upload to CTAN}
+%     \begin{macrocode}
+\RequirePackage{xkeyval}
+%    \end{macrocode}
+%    The code below is taken from \pkg{hyperref}, and set and restore commands are renamed. This hopefully makes
+%    a number of special characters available to act as a delimiter.
+%    \begin{macrocode}
+\begingroup
+  \@makeother\`%
+  \@makeother\=%
+  \edef\x{%
+    \edef\noexpand\x{%
+      \endgroup
+      \noexpand\toks@{%
+        \catcode 96=\noexpand\the\catcode`\noexpand\`\relax
+        \catcode 61=\noexpand\the\catcode`\noexpand\=\relax
+      }%
+    }%
+    \noexpand\x
+  }%
+\x
+\@makeother\`
+\@makeother\=
+\def\ckv at SetCatcodes{%
+  \@makeother\`%
+  \@makeother\=%
+  \@makeother\~%
+  \catcode`\$=3 %
+  \catcode`\&=4 %
+  \catcode`\^=7 %
+  \catcode`\_=8 %
+  \@makeother\|%
+  \@makeother\:%
+  \@makeother\(%
+  \@makeother\)%
+  \@makeother\[%
+  \@makeother\]%
+  \@makeother\/%
+  \@makeother\!%
+  \@makeother\<%
+  \@makeother\>%
+  \@makeother\.%
+  \@makeother\;%
+  \@makeother\+%
+  \@makeother\-%
+  \@makeother\"%
+  \@makeother\'%
+}
+\begingroup
+  \def\x#1{\catcode`\noexpand#1=\the\catcode`#1\relax}%
+  \xdef\ckv at RestoreCatcodes{%
+    \the\toks@
+    \x\~%
+    \x\$%
+    \x\&%
+    \x\^%
+    \x\_%
+    \x\|%
+    \x\:%
+    \x\(%
+    \x\)%
+    \x\[%
+    \x\]%
+    \x\/%
+    \x\!%
+    \x\<%
+    \x\>%
+    \x\.%
+    \x\;%
+    \x\+%
+    \x\-%
+    \x\"%
+    \x\'%
+  }%
+\endgroup
+\ckv at SetCatcodes
+%    \end{macrocode}
+%    \section{Core commands for this package}
+%    The default delimiter is the colon (:).
+%    \begin{macrocode}
+\def\csarg#1#2{\expandafter#1\csname#2\endcsname}
+\csarg\def{kvdelim-colon}{:}
+%    \end{macrocode}
+%    Use \DescribeMacro{\usekvdelim}\cs{usekvdelim} to display delimiter, as associated with
+%    the argument \texttt{\#1}.
+%    \begin{macrocode}
+\def\usekvdelim#1{\@nameuse{kvdelim-#1}}
+%    \end{macrocode}
+%    \begin{macro}{\DeclareDelimiter}
+%    In the preamble, we declare the delimiter to be used. The command takes on argument, which
+%    is the delimiter to be used, for example `\texttt{:}' or `\texttt{->}'. If this declaration
+%    does not appear in the preamble, the delimited is taken to be `\texttt{:}'.
+%    \begin{macrocode}
+\def\DeclareDelimiter{\ckv at SetCatcodes\DeclareDelimiter at i}
+\def\DeclareDelimiter at i#1#2{\@ifundefined{kvdelim-#1}
+    {\csarg\def{kvdelim-#1}{#2}\ckv at RestoreCatcodes\cxkvSetup{#1}}
+    {\ckv at RestoreCatcodes}%
+}
+\@onlypreamble\DeclareDelimiter
+%    \end{macrocode}
+%    \end{macro}
+%    \cs{cxkv at tmptoks} is used to hold the converted key-values, the contents of
+%    this token register is passed to \cs{setkeys} in \cs{cxkv at convertColoniiEquali}
+%    \begin{macrocode}
+\newtoks\cxkv at tmptoks \cxkv at tmptoks={}
+\def\cxkv at dummy{dummy}
+\def\cxkv at dummyc{dummy,}
+\bgroup
+    \catcode`\#=12\relax\gdef\cxkvarg{#}
+    \obeyspaces\gdef\cxkv at TAB{    }
+\egroup
+%    \end{macrocode}
+%    \begin{macro}{\cxkvsetkeys}
+%    This is the default definition, setup for using the colon (:) as the key-value
+%    delimiter. But these next two commands are redefined by the
+%    \cs{DeclareDelimiter} command in the preamble. The syntax is
+%\begin{quote}
+%\cs{cxkvsetkeys[\ameta{name}]}\darg{\ameta{family}}\darg{\ameta{KV-pairs}}
+%\end{quote}
+%where \ameta{KV-pairs} are the key-value pairs using the declared delimiter.
+%\begin{quote}\ttfamily
+%\cs{cxkvsetkeys}\darg{myfam}\{fname:\,Fred,lname:\,Flintstone\}
+%\end{quote}
+%The family \texttt{myfam} and keys \texttt{fname} and \texttt{lname} must have been defined
+%earlier: If the optional argument is not specified, then it is assumed the \ameta{name} argument
+%is \texttt{colon}, a reserved word for this package for this argument.
+%\begin{verbatim}
+%   \define at key{myfam}{\def\fname{#1}}
+%   \define at key{myfam}{\def\lname{#1}}
+%\end{verbatim}
+%    \begin{macrocode}
+\def\cxkv at colon{colon}
+\newcommand\cxkvsetkeys[1][colon]{%
+    \def\@rgi{#1}\ifx\@rgi\cxkv at colon\else
+        \InputIfFileExists{xkv-#1.cut}
+        {\PackageInfo{conv-xkv}{Inputting xkv-#1.cut}}
+        {\PackageInfo{conv-xkv}{Cannot find xkv-#1.cut}}\fi
+    \@nameuse{cxkvsetkeys-#1}}
+%    \end{macrocode}
+%    \begin{macrocode}
+\csarg\def{cxkvsetkeys-colon}#1#2{%
+    \def\thisxkvF at mily{#1}\def\cxkv at scratch{}\cxkv at tmptoks={}%
+    \@nameuse{cxkv at convertColoniiEqual-colon}#2,dummy:dummy,\@nil}
+\csarg\def{cxkv at convertColoniiEqual-colon}#1:#2,#3\@nil{%
+    \cxkv at convertColoniiEquali{colon}{#1}{#2}{#3}}
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\cxkvSetup}
+%    Write the definitions of \cs{cxkvsetkeys} and \cs{cxkv at convertColoniiEqual} to
+%    the file \texttt{conv-xkv.cut} then input this file back in.
+%    \begin{macrocode}
+\def\cxkvSetup#1{\bgroup
+\IfFileExists{xkv-#1.cut}{\PackageInfo{conv-xkv}{xkv-#1.cut
+    already exists,\MessageBreak will not create another one}}{%
+    \PackageInfo{conv-xkv}{Creating the file xkv-#1.cut
+        containing\MessageBreak required definitions}%
+    \newwrite \cxkv at write
+    \uccode`c=`\%
+    \def\w{#1}\def\x{cxkvsetkeys-#1}%
+    \def\y{cxkv at convertColoniiEqual-#1}%
+    \def\z{kvdelim-#1}%
+    \immediate\openout \cxkv at write xkv-#1.cut
+    \immediate\write\cxkv at write{\string\makeatletter}%
+    \uppercase{\immediate\write\cxkv at write{\string
+        \csarg\string\def{\y}\cxkvarg1\@nameuse{\z}%
+        \cxkvarg2,\cxkvarg3\string\@nil{c^^J\cxkv at TAB
+        \string\cxkv at convertColoniiEquali{\w}{\cxkvarg1}%
+        {\cxkvarg2}{\cxkvarg3}}}}
+    \uppercase{\immediate\write\cxkv at write{\string\csarg\string\def
+        {\x}\cxkvarg1\cxkvarg2{c^^J\cxkv at TAB
+        \string\def\string\thisxkvF at mily{\cxkvarg1}\string
+        \let\string\cxkv at scratch\string\@empty\string
+        \cxkv at tmptoks={}c^^J\cxkv at TAB
+        \string\@nameuse{\y}\cxkvarg2,%
+        \cxkv at dummy\@nameuse{\z}\cxkv at dummy,\string\@nil}}}
+    \immediate\write\cxkv at write{\string\makeatother}%
+    \immediate\closeout \cxkv at write
+}%
+\egroup}
+%    \end{macrocode}
+%    \end{macro}
+%    \cs{cxkv at convertColoniiEquali} continues \cs{cxkv at convertColoniiEqual}. It is
+%    the part that does not need to be redefined.
+%    \begin{macrocode}
+\newif\ifcxkv at keyonly \cxkv at keyonlyfalse
+\def\cxkv at comma{,}
+\def\cxkv at removecomma#1,\@nil{\def\cxkv at key{#1}}
+\def\cxkv at parsecomma#1,#2\@nil{\def\@rgi{#1}\def\@rgii{#2}%
+    \ifx\@rgii\@empty\cxkv at keyonlyfalse\else
+        \cxkv at keyonlytrue\cxkv at removecomma#2\@nil\fi}
+\def\cxkv at convertColoniiEquali#1#2#3#4{\def\cxkv at rgiii{#3}%
+    \ifx\cxkv at rgiii\cxkv at dummy
+        \cxkv at parsecomma#2,\@nil
+        \ifcxkv at keyonly
+            \edef\cxkv at tmp{\the\cxkv at tmptoks,\@rgi}%
+            \cxkv at tmptoks=\expandafter{\cxkv at tmp}%
+            \edef\cxkv at scratch{\the\cxkv at tmptoks}%
+            \edef\cxkv at next{\noexpand
+                \setkeys{\thisxkvF at mily}{\the\cxkv at tmptoks}}%
+        \else
+            \edef\cxkv at next{\noexpand
+                \setkeys{\thisxkvF at mily}{\the\cxkv at tmptoks}}%
+        \fi
+    \else
+        \cxkv at parsecomma#2,\@nil
+        \ifcxkv at keyonly
+            \edef\cxkv at tmp{\the\cxkv at tmptoks,\@rgi}%
+            \cxkv at tmptoks=\expandafter{\cxkv at tmp}%
+            \edef\cxkv at scratch{\the\cxkv at tmptoks}%
+            \edef\cxkv at next{\noexpand
+                \@nameuse{cxkv at convertColoniiEqual-#1}\cxkv at key
+                \@nameuse{kvdelim-#1}#3,#4\noexpand\@nil}
+        \else
+            \cxkv at tmptoks=\expandafter{\cxkv at scratch,#2=#3}%
+            \edef\cxkv at scratch{\the\cxkv at tmptoks}%
+            \def\cxkv at next{%
+                \@nameuse{cxkv at convertColoniiEqual-#1}#4\@nil}\fi
+    \fi\cxkv at next
+}
+\ckv at RestoreCatcodes
+%    \end{macrocode}
+%    \begin{macrocode}
+%</package>
+%    \end{macrocode}
+%  \Finale
+\endinput

Added: trunk/Master/texmf-dist/source/latex/conv-xkv/conv-xkv.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/conv-xkv/conv-xkv.ins	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/conv-xkv/conv-xkv.ins	2016-12-20 22:56:32 UTC (rev 42757)
@@ -0,0 +1,63 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright 1999-2006 D. P. Story
+%%
+%% This file is part of the `AcroTeX eDucation Bundle'.
+%% -------------------------------------------
+%%
+%% It may be distributed under the conditions of the LaTeX Project Public
+%% License, either version 1.2 of this license or (at your option) any
+%% later version.  The latest version of this license is in
+%%    http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\def\filedate{2010/08/02}
+\def\batchfile{conv-xkv.ins}
+%
+% If you can assume that the target audience for the document all have
+% Acrobat Reader 5.0 or later, then chance the following switch to true,
+% else, leave it as false.
+
+\input docstrip
+\ifx\generate\undefined
+  \Msg{**********************************************}
+  \Msg{*}
+  \Msg{* This installation requires docstrip}
+  \Msg{* version 2.4 or later.}
+  \Msg{*}
+  \Msg{* An older version of docstrip has been input}
+  \Msg{*}
+  \Msg{**********************************************}
+  \errhelp{Move or rename old docstrip.tex and get a newer one.}
+  \errmessage{Old docstrip in input path}
+  \batchmode
+  \csname @@end\endcsname\end
+\fi
+
+\keepsilent
+\askforoverwritefalse
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\preamble
+\endpreamble
+
+\generate{%
+  \file{conv-xkv.sty}{\from{conv-xkv.dtx}{copyright,package}}
+}
+
+\Msg{***************************************************************}
+\Msg{*}
+\Msg{* \space To finish the installation you have to copy the files }
+\Msg{*}
+\Msg{* \space *.sty, *.cfg and *.def into a directory searched by TeX}
+\Msg{*}
+\Msg{***************************************************************}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput

Added: trunk/Master/texmf-dist/tex/latex/conv-xkv/conv-xkv.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/conv-xkv/conv-xkv.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/conv-xkv/conv-xkv.sty	2016-12-20 22:56:32 UTC (rev 42757)
@@ -0,0 +1,187 @@
+%%
+%% This is file `conv-xkv.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% conv-xkv.dtx  (with options: `copyright,package')
+%% 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% conv-xkv package                                     %%
+%% Copyright (C) 2016  D. P. Story                      %%
+%%   dpstory at uakron.edu                                 %%
+%%                                                      %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License        %%
+%% Distributed from CTAN archives in directory          %%
+%% macros/latex/base/lppl.txt; either version 1 of the  %%
+%% License, or (at your option) any later version.      %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{conv-xkv}
+ [2016/12/20 v1.0 convert xkeyval format (dps)]
+\RequirePackage{xkeyval}
+\begingroup
+  \@makeother\`%
+  \@makeother\=%
+  \edef\x{%
+    \edef\noexpand\x{%
+      \endgroup
+      \noexpand\toks@{%
+        \catcode 96=\noexpand\the\catcode`\noexpand\`\relax
+        \catcode 61=\noexpand\the\catcode`\noexpand\=\relax
+      }%
+    }%
+    \noexpand\x
+  }%
+\x
+\@makeother\`
+\@makeother\=
+\def\ckv at SetCatcodes{%
+  \@makeother\`%
+  \@makeother\=%
+  \@makeother\~%
+  \catcode`\$=3 %
+  \catcode`\&=4 %
+  \catcode`\^=7 %
+  \catcode`\_=8 %
+  \@makeother\|%
+  \@makeother\:%
+  \@makeother\(%
+  \@makeother\)%
+  \@makeother\[%
+  \@makeother\]%
+  \@makeother\/%
+  \@makeother\!%
+  \@makeother\<%
+  \@makeother\>%
+  \@makeother\.%
+  \@makeother\;%
+  \@makeother\+%
+  \@makeother\-%
+  \@makeother\"%
+  \@makeother\'%
+}
+\begingroup
+  \def\x#1{\catcode`\noexpand#1=\the\catcode`#1\relax}%
+  \xdef\ckv at RestoreCatcodes{%
+    \the\toks@
+    \x\~%
+    \x\$%
+    \x\&%
+    \x\^%
+    \x\_%
+    \x\|%
+    \x\:%
+    \x\(%
+    \x\)%
+    \x\[%
+    \x\]%
+    \x\/%
+    \x\!%
+    \x\<%
+    \x\>%
+    \x\.%
+    \x\;%
+    \x\+%
+    \x\-%
+    \x\"%
+    \x\'%
+  }%
+\endgroup
+\ckv at SetCatcodes
+\def\csarg#1#2{\expandafter#1\csname#2\endcsname}
+\csarg\def{kvdelim-colon}{:}
+\def\usekvdelim#1{\@nameuse{kvdelim-#1}}
+\def\DeclareDelimiter{\ckv at SetCatcodes\DeclareDelimiter at i}
+\def\DeclareDelimiter at i#1#2{\@ifundefined{kvdelim-#1}
+    {\csarg\def{kvdelim-#1}{#2}\ckv at RestoreCatcodes\cxkvSetup{#1}}
+    {\ckv at RestoreCatcodes}%
+}
+\@onlypreamble\DeclareDelimiter
+\newtoks\cxkv at tmptoks \cxkv at tmptoks={}
+\def\cxkv at dummy{dummy}
+\def\cxkv at dummyc{dummy,}
+\bgroup
+    \catcode`\#=12\relax\gdef\cxkvarg{#}
+    \obeyspaces\gdef\cxkv at TAB{    }
+\egroup
+\def\cxkv at colon{colon}
+\newcommand\cxkvsetkeys[1][colon]{%
+    \def\@rgi{#1}\ifx\@rgi\cxkv at colon\else
+        \InputIfFileExists{xkv-#1.cut}
+        {\PackageInfo{conv-xkv}{Inputting xkv-#1.cut}}
+        {\PackageInfo{conv-xkv}{Cannot find xkv-#1.cut}}\fi
+    \@nameuse{cxkvsetkeys-#1}}
+\csarg\def{cxkvsetkeys-colon}#1#2{%
+    \def\thisxkvF at mily{#1}\def\cxkv at scratch{}\cxkv at tmptoks={}%
+    \@nameuse{cxkv at convertColoniiEqual-colon}#2,dummy:dummy,\@nil}
+\csarg\def{cxkv at convertColoniiEqual-colon}#1:#2,#3\@nil{%
+    \cxkv at convertColoniiEquali{colon}{#1}{#2}{#3}}
+\def\cxkvSetup#1{\bgroup
+\IfFileExists{xkv-#1.cut}{\PackageInfo{conv-xkv}{xkv-#1.cut
+    already exists,\MessageBreak will not create another one}}{%
+    \PackageInfo{conv-xkv}{Creating the file xkv-#1.cut
+        containing\MessageBreak required definitions}%
+    \newwrite \cxkv at write
+    \uccode`c=`\%
+    \def\w{#1}\def\x{cxkvsetkeys-#1}%
+    \def\y{cxkv at convertColoniiEqual-#1}%
+    \def\z{kvdelim-#1}%
+    \immediate\openout \cxkv at write xkv-#1.cut
+    \immediate\write\cxkv at write{\string\makeatletter}%
+    \uppercase{\immediate\write\cxkv at write{\string
+        \csarg\string\def{\y}\cxkvarg1\@nameuse{\z}%
+        \cxkvarg2,\cxkvarg3\string\@nil{c^^J\cxkv at TAB
+        \string\cxkv at convertColoniiEquali{\w}{\cxkvarg1}%
+        {\cxkvarg2}{\cxkvarg3}}}}
+    \uppercase{\immediate\write\cxkv at write{\string\csarg\string\def
+        {\x}\cxkvarg1\cxkvarg2{c^^J\cxkv at TAB
+        \string\def\string\thisxkvF at mily{\cxkvarg1}\string
+        \let\string\cxkv at scratch\string\@empty\string
+        \cxkv at tmptoks={}c^^J\cxkv at TAB
+        \string\@nameuse{\y}\cxkvarg2,%
+        \cxkv at dummy\@nameuse{\z}\cxkv at dummy,\string\@nil}}}
+    \immediate\write\cxkv at write{\string\makeatother}%
+    \immediate\closeout \cxkv at write
+}%
+\egroup}
+\newif\ifcxkv at keyonly \cxkv at keyonlyfalse
+\def\cxkv at comma{,}
+\def\cxkv at removecomma#1,\@nil{\def\cxkv at key{#1}}
+\def\cxkv at parsecomma#1,#2\@nil{\def\@rgi{#1}\def\@rgii{#2}%
+    \ifx\@rgii\@empty\cxkv at keyonlyfalse\else
+        \cxkv at keyonlytrue\cxkv at removecomma#2\@nil\fi}
+\def\cxkv at convertColoniiEquali#1#2#3#4{\def\cxkv at rgiii{#3}%
+    \ifx\cxkv at rgiii\cxkv at dummy
+        \cxkv at parsecomma#2,\@nil
+        \ifcxkv at keyonly
+            \edef\cxkv at tmp{\the\cxkv at tmptoks,\@rgi}%
+            \cxkv at tmptoks=\expandafter{\cxkv at tmp}%
+            \edef\cxkv at scratch{\the\cxkv at tmptoks}%
+            \edef\cxkv at next{\noexpand
+                \setkeys{\thisxkvF at mily}{\the\cxkv at tmptoks}}%
+        \else
+            \edef\cxkv at next{\noexpand
+                \setkeys{\thisxkvF at mily}{\the\cxkv at tmptoks}}%
+        \fi
+    \else
+        \cxkv at parsecomma#2,\@nil
+        \ifcxkv at keyonly
+            \edef\cxkv at tmp{\the\cxkv at tmptoks,\@rgi}%
+            \cxkv at tmptoks=\expandafter{\cxkv at tmp}%
+            \edef\cxkv at scratch{\the\cxkv at tmptoks}%
+            \edef\cxkv at next{\noexpand
+                \@nameuse{cxkv at convertColoniiEqual-#1}\cxkv at key
+                \@nameuse{kvdelim-#1}#3,#4\noexpand\@nil}
+        \else
+            \cxkv at tmptoks=\expandafter{\cxkv at scratch,#2=#3}%
+            \edef\cxkv at scratch{\the\cxkv at tmptoks}%
+            \def\cxkv at next{%
+                \@nameuse{cxkv at convertColoniiEqual-#1}#4\@nil}\fi
+    \fi\cxkv at next
+}
+\ckv at RestoreCatcodes
+\endinput
+%%
+%% End of file `conv-xkv.sty'.

Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2016-12-20 22:55:13 UTC (rev 42756)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2016-12-20 22:56:32 UTC (rev 42757)
@@ -169,7 +169,7 @@
     context-simplefonts context-simpleslides context-title
     context-transliterator context-typearea context-typescripts context-vim
     context-visualcounter
-    continue contour contracard convbkmk
+    continue contour contracard conv-xkv convbkmk
     cooking cooking-units cookingsymbols
     cool coollist coolstr coolthms cooltooltips
     coordsys copyedit copyrightbox cormorantgaramond coseoul

Modified: trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc	2016-12-20 22:55:13 UTC (rev 42756)
+++ trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc	2016-12-20 22:56:32 UTC (rev 42757)
@@ -180,6 +180,7 @@
 depend continue
 depend contour
 depend contracard
+depend conv-xkv
 depend cooking
 depend cooking-units
 depend cool

Added: trunk/Master/tlpkg/tlpsrc/conv-xkv.tlpsrc
===================================================================


More information about the tex-live-commits mailing list