summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-05-01 22:42:47 +0000
committerKarl Berry <karl@freefriends.org>2014-05-01 22:42:47 +0000
commitc0c24a908aa4305f2c1b9ddd33fcb1b4d01da90b (patch)
tree3fb4ed4596077aa1545005e1133ec2c6e2c0bea1
parentd70f477753c9fe3b147dcc8ec32676a2206aa277 (diff)
xkeyval (1may14)
git-svn-id: svn://tug.org/texlive/trunk@33780 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/xkeyval/README2
-rw-r--r--Master/texmf-dist/doc/latex/xkeyval/xkeyval.bib84
-rw-r--r--Master/texmf-dist/doc/latex/xkeyval/xkeyval.pdfbin486297 -> 490861 bytes
-rw-r--r--Master/texmf-dist/doc/latex/xkeyval/xkvpream.ble137
-rw-r--r--Master/texmf-dist/source/latex/xkeyval/xkeyval.dtx62
-rw-r--r--Master/texmf-dist/tex/generic/xkeyval/keyval.tex18
-rw-r--r--Master/texmf-dist/tex/generic/xkeyval/pst-xkey.tex2
-rw-r--r--Master/texmf-dist/tex/generic/xkeyval/xkeyval.tex35
-rw-r--r--Master/texmf-dist/tex/generic/xkeyval/xkvex1.tex153
-rw-r--r--Master/texmf-dist/tex/generic/xkeyval/xkvex2.tex356
-rw-r--r--Master/texmf-dist/tex/generic/xkeyval/xkvex3.tex93
-rw-r--r--Master/texmf-dist/tex/generic/xkeyval/xkvex4.tex106
-rw-r--r--Master/texmf-dist/tex/generic/xkeyval/xkvtxhdr.tex2
-rw-r--r--Master/texmf-dist/tex/latex/xkeyval/pst-xkey.sty2
-rw-r--r--Master/texmf-dist/tex/latex/xkeyval/xkeyval.sty4
-rw-r--r--Master/texmf-dist/tex/latex/xkeyval/xkveca.cls54
-rw-r--r--Master/texmf-dist/tex/latex/xkeyval/xkvecb.cls45
-rw-r--r--Master/texmf-dist/tex/latex/xkeyval/xkvesa.sty54
-rw-r--r--Master/texmf-dist/tex/latex/xkeyval/xkvesb.sty52
-rw-r--r--Master/texmf-dist/tex/latex/xkeyval/xkvesc.sty47
-rw-r--r--Master/texmf-dist/tex/latex/xkeyval/xkvltxp.sty2
-rw-r--r--Master/texmf-dist/tex/latex/xkeyval/xkvview.sty2
22 files changed, 1249 insertions, 63 deletions
diff --git a/Master/texmf-dist/doc/latex/xkeyval/README b/Master/texmf-dist/doc/latex/xkeyval/README
index 059f728ca05..146b1d68afa 100644
--- a/Master/texmf-dist/doc/latex/xkeyval/README
+++ b/Master/texmf-dist/doc/latex/xkeyval/README
@@ -1,4 +1,4 @@
-xkeyval v2.6b
+xkeyval v2.6c
-------------
This package is an extension of the keyval package by David Carlisle
diff --git a/Master/texmf-dist/doc/latex/xkeyval/xkeyval.bib b/Master/texmf-dist/doc/latex/xkeyval/xkeyval.bib
new file mode 100644
index 00000000000..0d51b05cb13
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/xkeyval/xkeyval.bib
@@ -0,0 +1,84 @@
+%%
+%% This is file `xkeyval.bib',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xkeyval.dtx (with options: `bib')
+%%
+%% ---------------------------------------
+%% Copyright (C) 2004-2014 Hendri Adriaens
+%% ---------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Hendri Adriaens.
+%%
+%% This work consists of the file xkeyval.dtx and derived files
+%% keyval.tex, xkvtxhdr.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, pst-xkey.tex, pst-xkey.sty, xkveca.cls, xkvecb.cls,
+%% xkvesa.sty, xkvesb.sty, xkvesc.sty, xkvex1.tex, xkvex2.tex,
+%% xkvex3.tex and xkvex4.tex.
+%%
+%% The following files constitute the xkeyval bundle and must be
+%% distributed as a whole: readme, xkeyval.pdf, keyval.tex,
+%% pst-xkey.sty, pst-xkey.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, xkvtxhdr.tex, pst-xkey.dtx and xkeyval.dtx.
+%%
+@MISC{LaTeXbase,
+ author = {Johannes Braams and David Carlisle and Alan Jeffrey and Leslie Lamport
+ and Frank Mittelbach and Chris Rowley and Rainer Sch\"opf},
+ title = {The {\LaTeXe} Sources},
+ howpublished = {\url{CTAN:/macros/latex/base}},
+ year = 2003
+}
+
+@book{companion,
+ author = {Frank Mittelbach and Michel Goossens},
+ title = {The {\LaTeX} Companion},
+ edition = 2,
+ note = {With Johannes Braams, David Carlisle, and Chris Rowley},
+ series = {Tools and Techniques for Computer Typesetting},
+ publisher = {Addison-Wesley},
+ address = {Boston, Massachusetts},
+ year = 2004,
+ pagenums = {1120},
+ bibliography = {yes},
+ index = {yes},
+ isbn = {0-201-36299-6}
+}
+
+@MISC{keyval,
+ author = {David Carlisle},
+ title = {\pf{keyval} package, v1.13, 1999/03/16},
+ howpublished = {\url{CTAN:/macros/latex/required/graphics}}
+}
+
+@MISC{extract,
+ author = {Hendri Adriaens},
+ title = {\pf{extract} package},
+ howpublished = {\url{CTAN:/macros/latex/contrib/extract}}
+}
+
+@MISC{PSTricks,
+ author = {{Timothy Van} {Zandt et al.}},
+ title = {\pf{PSTricks} package, v1.04, 2004/06/22},
+ howpublished = {\url{CTAN:/graphics/pstricks}}
+}
+
+@MISC{PSTricksWeb,
+ author = {Herbert Vo\ss},
+ title = {\pf{PSTricks} website},
+ howpublished = {\url{http://www.pstricks.de}}
+}
+\endinput
+%%
+%% End of file `xkeyval.bib'.
diff --git a/Master/texmf-dist/doc/latex/xkeyval/xkeyval.pdf b/Master/texmf-dist/doc/latex/xkeyval/xkeyval.pdf
index 0f66d13c2c6..daedd994211 100644
--- a/Master/texmf-dist/doc/latex/xkeyval/xkeyval.pdf
+++ b/Master/texmf-dist/doc/latex/xkeyval/xkeyval.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/xkeyval/xkvpream.ble b/Master/texmf-dist/doc/latex/xkeyval/xkvpream.ble
new file mode 100644
index 00000000000..b0f3e915a40
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/xkeyval/xkvpream.ble
@@ -0,0 +1,137 @@
+%%
+%% This is file `xkvpream.ble',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xkeyval.dtx (with options: `preamble')
+%%
+%% ---------------------------------------
+%% Copyright (C) 2004-2014 Hendri Adriaens
+%% ---------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Hendri Adriaens.
+%%
+%% This work consists of the file xkeyval.dtx and derived files
+%% keyval.tex, xkvtxhdr.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, pst-xkey.tex, pst-xkey.sty, xkveca.cls, xkvecb.cls,
+%% xkvesa.sty, xkvesb.sty, xkvesc.sty, xkvex1.tex, xkvex2.tex,
+%% xkvex3.tex and xkvex4.tex.
+%%
+%% The following files constitute the xkeyval bundle and must be
+%% distributed as a whole: readme, xkeyval.pdf, keyval.tex,
+%% pst-xkey.sty, pst-xkey.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, xkvtxhdr.tex, pst-xkey.dtx and xkeyval.dtx.
+%%
+\usepackage{url}
+\usepackage{xkeyval}
+\usepackage{fourier}
+\usepackage{xcolor}
+\usepackage[multiple]{footmisc}
+\usepackage{pst-text}
+\usepackage{listings}
+\lstnewenvironment{command}{%
+ \lstset{columns=flexible,frame=single,backgroundcolor=\color{blue!20},%
+ xleftmargin=\fboxsep,xrightmargin=\fboxsep,escapeinside=`',gobble=1}}{}
+\lstnewenvironment{example}{%
+ \lstset{basicstyle=\footnotesize\ttfamily,columns=flexible,frame=single,%
+ backgroundcolor=\color{yellow!20},xleftmargin=\fboxsep,%
+ xrightmargin=\fboxsep,gobble=1}}{}
+\def\mktitledecor{%
+ \rput[tl]{90}(-6.5,-23.56){%
+ \psline[linewidth=1pt](0,1.5)(\paperheight,1.5)%
+ \rput[lB](.075\paperheight,.5){\pscharpath[linecolor=blue!50,%
+ fillcolor=yellow!20,fillstyle=solid,linewidth=.5pt]%
+ {\Huge\bfseries\sffamily xkeyval}%
+ }%
+ \rput[rB](.925\paperheight,.5){\pscharpath[linecolor=blue!50,%
+ fillcolor=yellow!20,fillstyle=solid,linewidth=.5pt]%
+ {\Huge\bfseries Documentation}%
+ }%
+ \psline[linewidth=1pt](0,0)(\paperheight,0)%
+ }%
+}
+\makeatletter
+\def\tableofcontents{\@starttoc{toc}}
+\def\changes@#1#2#3{\ch@nges #1\@nil{#2}{#3}}
+\def\ch@nges v#1.#2#3\@nil#4#5{%
+ \ifnum#1#2<20\else % Controls displaying changes; 0 displays all.
+ \protected@edef\@tempa{%
+ \noexpand\glossary{\textbf{v#1.#2#3}\hfill\emph{(#4)}%
+ \levelchar
+ \ifx\saved@macroname\@empty
+ \space\actualchar\generalname
+ \else
+ \expandafter\@gobble\saved@macroname
+ \actualchar\string\verb\quotechar*%
+ \verbatimchar\saved@macroname\verbatimchar
+ \fi
+ :\levelchar #5}}%
+ \@tempa
+ \fi\endgroup\@esphack
+}
+\renewenvironment{theglossary}{%
+ \section*{Version history}%
+ This version history displays recent changes only.\par\bigskip
+ \GlossaryParms \let\item\@idxitem \ignorespaces
+}{}%
+\def\eTeX{$\m@th\varepsilon$-\TeX}
+\def\DescribeMacros{\leavevmode\@bsphack
+ \begingroup\MakePrivateLetters\Describe@Macros}
+\def\Describe@Macros#1{\endgroup\strut
+ \marginpar{\raggedleft
+ \def\@tempa{#1}\count@\z@
+ \XKV@for@o\@tempa\@tempa{%
+ \ifnum\count@>\z@\\\fi\advance\count@\@ne
+ \MacroFont\expandafter\string\@tempa
+ \expandafter\SpecialUsageIndex\expandafter{\@tempa}%
+ }}%
+ \@esphack\ignorespaces
+}
+\def\DescribeOption#1{\leavevmode\@bsphack
+ \marginpar{\raggedleft\PrintDescribeOption{#1}}%
+ \SpecialOptionIndex{#1}\@esphack\ignorespaces}
+\def\PrintDescribeOption#1{\strut\emph{option}\\\MacroFont #1\ }
+\def\SpecialOptionIndex#1{\@bsphack
+ \index{#1\actualchar{\protect\ttfamily#1}
+ (option)\encapchar usage}%
+ \index{options:\levelchar#1\actualchar{\protect\ttfamily#1}\encapchar
+ usage}\@esphack}
+\def\DescribeOptions#1{\leavevmode\@bsphack
+ \marginpar{\raggedleft\strut\emph{options}%
+ \@for\@tempa:=#1\do{%
+ \\\strut\MacroFont\@tempa\SpecialOptionIndex\@tempa
+ }}\@esphack\ignorespaces}
+\makeatother
+\def\PrintChangesX{%
+ \begingroup
+ \let\efill\relax
+ \PrintChanges
+ \endgroup
+}
+\def\PrintIndexX{%
+ \begingroup
+ \setcounter{IndexColumns}{2}
+ \setlength{\columnsep}{18pt}%
+ \setlength{\columnseprule}{.4pt}%
+ \PrintIndex
+ \endgroup
+}
+\def\larg#1{{\ttfamily\char`\<}\meta{#1}{\ttfamily\char`\>}}
+\def\pf#1{\textsf{#1}}
+\EnableCrossrefs
+\RecordChanges
+\CodelineIndex
+\endinput
+%%
+%% End of file `xkvpream.ble'.
diff --git a/Master/texmf-dist/source/latex/xkeyval/xkeyval.dtx b/Master/texmf-dist/source/latex/xkeyval/xkeyval.dtx
index ed264cf0a4a..ee715703549 100644
--- a/Master/texmf-dist/source/latex/xkeyval/xkeyval.dtx
+++ b/Master/texmf-dist/source/latex/xkeyval/xkeyval.dtx
@@ -25,7 +25,7 @@
% pst-xkey.sty
%
%% ---------------------------------------
-%% Copyright (C) 2004-2012 Hendri Adriaens
+%% Copyright (C) 2004-2014 Hendri Adriaens
%% ---------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -97,8 +97,9 @@ The author is grateful to Carsten Heinz, Morten H\o gholm,
Josselin Noirel, Heiko Oberdiek, Will Robertson, Till Tantau,
Herbert Vo\ss and Joseph Wright for help and suggestions.
Thanks go to Donald Arseneau for contributing the robust
-|\@ifnextcharacter| macro and to Morten H\o gholm for
-contributing a fast for-loop macro. Special thanks go to Uwe
+|\@ifnextcharacter| macro, to Morten H\o gholm for
+contributing a fast for-loop macro and to David Carlisle for
+modifications to support |\par|. Special thanks go to Uwe
Kern for his ideas for improving the functionality of this
package, a lot of useful comments on the package and the
documentation and for contributing the |\@selective@sanitize|
@@ -178,10 +179,12 @@ macro. \PrintChangesX\PrintIndexX
% \changes{v2.5g}{2006/12/19}{Altered policy for handling \cs{XKV@rm}
% in nested \cs{setkeys*} commands: all unknown keys will be recorded,
% not only the once from the outermost \cs{setkeys*}}
+% \changes{v2.6c}{2014/04/27}{Added support for \cs{par} to support similar
+% changes in \pf{keyval}}
%
% \GetFileInfo{xkeyval.sty}
%
-% \CheckSum{3001}
+% \CheckSum{3031}
%
%\DoNotIndex{\:,\@,\@@,\@backslashchar,\@ehc,\@empty,\@expandtwoargs,
%\@for,\@forloop,\@fornoop,\@fortmp,\@gobble,\@gobbletwo,\@if,\@ifnch,
@@ -2054,10 +2057,10 @@ macro. \PrintChangesX\PrintIndexX
% Load \LaTeX\ primitives if necessary and provide information.
% \begin{macrocode}
\ifx\ProvidesFile\@undefined
- \message{2012/10/14 v2.6b key=value parser (HA)}
+ \message{2014/04/27 v2.6c key=value parser (HA)}
\input xkvtxhdr
\else
- \ProvidesFile{xkeyval.tex}[2012/10/14 v2.6b key=value parser (HA)]
+ \ProvidesFile{xkeyval.tex}[2014/04/27 v2.6c key=value parser (HA)]
\@addtofilelist{xkeyval.tex}
\fi
% \end{macrocode}
@@ -2293,7 +2296,7 @@ macro. \PrintChangesX\PrintIndexX
% \meta{macro}\marg{content}\\
% Adds \meta{content} to \meta{macro} without expanding it.
% \begin{macrocode}
-\def\XKV@addtomacro@n#1#2{%
+\long\def\XKV@addtomacro@n#1#2{%
\XKV@tempa@toks\expandafter{#1#2}%
\edef#1{\the\XKV@tempa@toks}%
}
@@ -2462,7 +2465,7 @@ macro. \PrintChangesX\PrintIndexX
% contains the characters |=| or |,| with wrong catcodes. If so, it sanitizes
% them before saving \meta{content} to \meta{cmd}.
% \begin{macrocode}
-\def\XKV@checksanitizea#1#2{%
+\long\def\XKV@checksanitizea#1#2{%
\XKV@ch@cksanitize{#1}#2=%
\ifin@\else\XKV@ch@cksanitize{#1}#2,\fi
\ifin@\@selective@sanitize[0]{,=}#2\fi
@@ -2496,7 +2499,7 @@ macro. \PrintChangesX\PrintIndexX
% as a temporary macro and will contain \meta{character string} at the
% end of the macro.
% \begin{macrocode}
-\def\XKV@ch@cksanitize#1#2#3{%
+\long\def\XKV@ch@cksanitize#1#2#3{%
\XKV@tempa@toks{#1}\edef#2{\the\XKV@tempa@toks}%
\@onelevel@sanitize#2%
% \end{macrocode}
@@ -2510,7 +2513,7 @@ macro. \PrintChangesX\PrintIndexX
% actually occurs, because the input was read by \TeX\
% before (and for instance stored in a macro or token register).
% \begin{macrocode}
- \def#2##1#3##2\@nil{%
+ \long\def#2##1#3##2\@nil{%
\XKV@tempa@toks{##2}\edef#2{\the\XKV@tempa@toks}%
\ifx#2\@empty\else\in@false\fi
}%
@@ -2864,7 +2867,7 @@ macro. \PrintChangesX\PrintIndexX
% Use |\XKV@ifcmd| several times to check the syntax of \meta{value}.
% Save \meta{key} to \meta{bin}.
% \begin{macrocode}
-\def\XKV@g@tkeyname#1=#2\@nil#3{%
+\long\def\XKV@g@tkeyname#1=#2\@nil#3{%
\XKV@ifcmd{#1}\savevalue#3{\XKV@rkvtrue\XKV@sgfalse}{%
\XKV@ifcmd{#1}\gsavevalue#3%
{\XKV@rkvtrue\XKV@sgtrue}{\XKV@rkvfalse\XKV@sgfalse}%
@@ -2910,7 +2913,7 @@ macro. \PrintChangesX\PrintIndexX
% \begin{macrocode}
\def\XKV@define@key#1{%
\@ifnextchar[{\XKV@d@fine@k@y{#1}}{%
- \expandafter\def\csname\XKV@header#1\endcsname####1%
+ \long\expandafter\def\csname\XKV@header#1\endcsname####1%
}%
}
% \end{macrocode}
@@ -3615,7 +3618,7 @@ macro. \PrintChangesX\PrintIndexX
% \changes{v2.5g}{2006/12/19}{Avoid reset of \cs{XKV@rm} in nested \cs{setkeys} commands}
% Workhorse for |\setkeys|.
% \begin{macrocode}
-\def\XKV@setkeys[#1]#2{%
+\long\def\XKV@setkeys[#1]#2{%
\XKV@checksanitizea{#2}\XKV@resb
\let\XKV@naa\@empty
% \end{macrocode}
@@ -3666,7 +3669,7 @@ macro. \PrintChangesX\PrintIndexX
% This macro starts the loop over the |key=value| list. Do not set
% keys in the list \meta{na}.
% \begin{macrocode}
-\def\XKV@s@tkeys#1#2{%
+\long\def\XKV@s@tkeys#1#2{%
% \end{macrocode}
% Define the list of key names which should be ignored.
% \begin{macrocode}
@@ -3693,7 +3696,7 @@ macro. \PrintChangesX\PrintIndexX
% Split key name and value (if present). If |#3| non-empty, there was
% no |=|\meta{value}.
% \begin{macrocode}
-\def\XKV@s@tk@ys#1=#2=#3\@nil{%
+\long\def\XKV@s@tk@ys#1=#2=#3\@nil{%
% \end{macrocode}
% Check for |\savevalue| and |\gsavevalue| and remove spaces from around the key name.
% \begin{macrocode}
@@ -3878,18 +3881,18 @@ macro. \PrintChangesX\PrintIndexX
% found anymore. We keep a list of pointers replaced already for this
% key in |\XKV@resa| so we can check whether we are running in circles.
% \begin{macrocode}
-\def\XKV@replacepointers#1{%
+\long\def\XKV@replacepointers#1{%
\let\XKV@tempa\@empty
\let\XKV@resa\@empty
- \XKV@r@placepointers#1\usevalue\@nil
+ \XKV@r@placepointers\@empty#1\usevalue\@nil
}
-\def\XKV@r@placepointers#1\usevalue#2{%
- \XKV@addtomacro@n\XKV@tempa{#1}%
+\long\def\XKV@r@placepointers#1\usevalue#2{%
+ \expandafter\XKV@addtomacro@n\expandafter\XKV@tempa\expandafter{#1}%
\def\XKV@tempb{#2}%
\ifx\XKV@tempb\@nnil\else\XKV@afterfi
\XKV@ifundefined{XKV@\XKV@header#2@value}{%
\XKV@err{no value recorded for key `#2'; ignored}%
- \XKV@r@placepointers
+ \XKV@r@placepointers\@empty
}{%
\@expandtwoargs\in@{,#2,}{,\XKV@resa,}%
\ifin@\XKV@afterelsefi
@@ -3897,6 +3900,7 @@ macro. \PrintChangesX\PrintIndexX
\else\XKV@afterfi
\XKV@addtolist@x\XKV@resa{#2}%
\expandafter\expandafter\expandafter\XKV@r@placepointers
+ \expandafter\expandafter\expandafter\@empty
\csname XKV@\XKV@header#2@value\endcsname
\fi
}%
@@ -4026,7 +4030,7 @@ macro. \PrintChangesX\PrintIndexX
%<*xkvlatex>
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{xkeyval}
- [2012/10/14 v2.6b package option processing (HA)]
+ [2014/04/27 v2.6c package option processing (HA)]
% \end{macrocode}
% Initializations. Load |xkeyval.tex|, adjust some catcodes to define
% internal macros and initialize the |\DeclareOptionX*| working macro.
@@ -4315,23 +4319,23 @@ macro. \PrintChangesX\PrintIndexX
%% Based on keyval.sty.
%%
\def\XKV@tempa#1{%
-\def\KV@@sp@def##1##2{%
+\long\def\KV@@sp@def##1##2{%
\futurelet\XKV@resa\KV@@sp@d##2\@nil\@nil#1\@nil\relax##1}%
-\def\KV@@sp@d{%
+\long\def\KV@@sp@d{%
\ifx\XKV@resa\@sptoken
\expandafter\KV@@sp@b
\else
\expandafter\KV@@sp@b\expandafter#1%
\fi}%
-\def\KV@@sp@b#1##1 \@nil{\KV@@sp@c##1}%
+\long\def\KV@@sp@b#1##1 \@nil{\KV@@sp@c\@empty##1}%
}
\XKV@tempa{ }
-\def\KV@@sp@c#1\@nil#2\relax#3{\XKV@toks{#1}\edef#3{\the\XKV@toks}}
-\def\KV@do#1,{%
+\long\def\KV@@sp@c#1\@nil#2\relax#3{\XKV@toks\expandafter{#1}\edef#3{\the\XKV@toks}}
+\long\def\KV@do#1,{%
\ifx\relax#1\@empty\else
\KV@split#1==\relax
\expandafter\KV@do\fi}
-\def\KV@split#1=#2=#3\relax{%
+\long\def\KV@split#1=#2=#3\relax{%
\KV@@sp@def\XKV@tempa{#1}%
\ifx\XKV@tempa\@empty\else
\expandafter\let\expandafter\XKV@tempc
@@ -4356,9 +4360,9 @@ macro. \PrintChangesX\PrintIndexX
\XKV@tempb\relax
\fi}
\def\KV@def#1#2[#3]{%
- \@namedef{KV@#1@#2@default\expandafter}\expandafter
+ \long\@namedef{KV@#1@#2@default\expandafter}\expandafter
{\csname KV@#1@#2\endcsname{#3}}%
- \@namedef{KV@#1@#2}##1}
+ \long\@namedef{KV@#1@#2}##1}
%</xkvkeyval>
% \end{macrocode}
% \subsection{\texttt{xkvtxhdr.tex}}
diff --git a/Master/texmf-dist/tex/generic/xkeyval/keyval.tex b/Master/texmf-dist/tex/generic/xkeyval/keyval.tex
index fbabde0c57c..20b64a84a47 100644
--- a/Master/texmf-dist/tex/generic/xkeyval/keyval.tex
+++ b/Master/texmf-dist/tex/generic/xkeyval/keyval.tex
@@ -7,7 +7,7 @@
%% xkeyval.dtx (with options: `xkvkeyval')
%%
%% ---------------------------------------
-%% Copyright (C) 2004-2012 Hendri Adriaens
+%% Copyright (C) 2004-2014 Hendri Adriaens
%% ---------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -37,23 +37,23 @@
%% Based on keyval.sty.
%%
\def\XKV@tempa#1{%
-\def\KV@@sp@def##1##2{%
+\long\def\KV@@sp@def##1##2{%
\futurelet\XKV@resa\KV@@sp@d##2\@nil\@nil#1\@nil\relax##1}%
-\def\KV@@sp@d{%
+\long\def\KV@@sp@d{%
\ifx\XKV@resa\@sptoken
\expandafter\KV@@sp@b
\else
\expandafter\KV@@sp@b\expandafter#1%
\fi}%
-\def\KV@@sp@b#1##1 \@nil{\KV@@sp@c##1}%
+\long\def\KV@@sp@b#1##1 \@nil{\KV@@sp@c\@empty##1}%
}
\XKV@tempa{ }
-\def\KV@@sp@c#1\@nil#2\relax#3{\XKV@toks{#1}\edef#3{\the\XKV@toks}}
-\def\KV@do#1,{%
+\long\def\KV@@sp@c#1\@nil#2\relax#3{\XKV@toks\expandafter{#1}\edef#3{\the\XKV@toks}}
+\long\def\KV@do#1,{%
\ifx\relax#1\@empty\else
\KV@split#1==\relax
\expandafter\KV@do\fi}
-\def\KV@split#1=#2=#3\relax{%
+\long\def\KV@split#1=#2=#3\relax{%
\KV@@sp@def\XKV@tempa{#1}%
\ifx\XKV@tempa\@empty\else
\expandafter\let\expandafter\XKV@tempc
@@ -78,9 +78,9 @@
\XKV@tempb\relax
\fi}
\def\KV@def#1#2[#3]{%
- \@namedef{KV@#1@#2@default\expandafter}\expandafter
+ \long\@namedef{KV@#1@#2@default\expandafter}\expandafter
{\csname KV@#1@#2\endcsname{#3}}%
- \@namedef{KV@#1@#2}##1}
+ \long\@namedef{KV@#1@#2}##1}
\endinput
%%
%% End of file `keyval.tex'.
diff --git a/Master/texmf-dist/tex/generic/xkeyval/pst-xkey.tex b/Master/texmf-dist/tex/generic/xkeyval/pst-xkey.tex
index e6bbd7f8972..3fa4f9e7e37 100644
--- a/Master/texmf-dist/tex/generic/xkeyval/pst-xkey.tex
+++ b/Master/texmf-dist/tex/generic/xkeyval/pst-xkey.tex
@@ -7,7 +7,7 @@
%% xkeyval.dtx (with options: `pxktex')
%%
%% ---------------------------------------
-%% Copyright (C) 2004-2012 Hendri Adriaens
+%% Copyright (C) 2004-2014 Hendri Adriaens
%% ---------------------------------------
%%
%% This work may be distributed and/or modified under the
diff --git a/Master/texmf-dist/tex/generic/xkeyval/xkeyval.tex b/Master/texmf-dist/tex/generic/xkeyval/xkeyval.tex
index 1aaf4c68e54..838aa208869 100644
--- a/Master/texmf-dist/tex/generic/xkeyval/xkeyval.tex
+++ b/Master/texmf-dist/tex/generic/xkeyval/xkeyval.tex
@@ -7,7 +7,7 @@
%% xkeyval.dtx (with options: `xkvtex')
%%
%% ---------------------------------------
-%% Copyright (C) 2004-2012 Hendri Adriaens
+%% Copyright (C) 2004-2014 Hendri Adriaens
%% ---------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -58,10 +58,10 @@
\newif\ifXKV@preset
\let\XKV@rm\@empty
\ifx\ProvidesFile\@undefined
- \message{2012/10/14 v2.6b key=value parser (HA)}
+ \message{2014/04/27 v2.6c key=value parser (HA)}
\input xkvtxhdr
\else
- \ProvidesFile{xkeyval.tex}[2012/10/14 v2.6b key=value parser (HA)]
+ \ProvidesFile{xkeyval.tex}[2014/04/27 v2.6c key=value parser (HA)]
\@addtofilelist{xkeyval.tex}
\fi
\long\def\@firstoftwo#1#2{#1}
@@ -144,7 +144,7 @@
#2\@@#3#4\fi{#5}{#1}%
}
\long\def\XKV@wh@l@st#1\@@#2#3\fi#4#5{}
-\def\XKV@addtomacro@n#1#2{%
+\long\def\XKV@addtomacro@n#1#2{%
\XKV@tempa@toks\expandafter{#1#2}%
\edef#1{\the\XKV@tempa@toks}%
}
@@ -223,7 +223,7 @@
}%
\let#1\@empty\@i#3\@s@l@ctive@sanitize
}
-\def\XKV@checksanitizea#1#2{%
+\long\def\XKV@checksanitizea#1#2{%
\XKV@ch@cksanitize{#1}#2=%
\ifin@\else\XKV@ch@cksanitize{#1}#2,\fi
\ifin@\@selective@sanitize[0]{,=}#2\fi
@@ -232,12 +232,12 @@
\XKV@ch@cksanitize{#1}#2,%
\ifin@\@selective@sanitize[0],#2\fi
}
-\def\XKV@ch@cksanitize#1#2#3{%
+\long\def\XKV@ch@cksanitize#1#2#3{%
\XKV@tempa@toks{#1}\edef#2{\the\XKV@tempa@toks}%
\@onelevel@sanitize#2%
\@expandtwoargs\in@#3{#2}%
\ifin@
- \def#2##1#3##2\@nil{%
+ \long\def#2##1#3##2\@nil{%
\XKV@tempa@toks{##2}\edef#2{\the\XKV@tempa@toks}%
\ifx#2\@empty\else\in@false\fi
}%
@@ -359,7 +359,7 @@
\XKV@@ifcmd#1#2{\@nil}\@nil#3%
}
\def\XKV@getkeyname#1#2{\expandafter\XKV@g@tkeyname#1=\@nil#2}
-\def\XKV@g@tkeyname#1=#2\@nil#3{%
+\long\def\XKV@g@tkeyname#1=#2\@nil#3{%
\XKV@ifcmd{#1}\savevalue#3{\XKV@rkvtrue\XKV@sgfalse}{%
\XKV@ifcmd{#1}\gsavevalue#3%
{\XKV@rkvtrue\XKV@sgtrue}{\XKV@rkvfalse\XKV@sgfalse}%
@@ -375,7 +375,7 @@
\def\define@key{\XKV@testoptb\XKV@define@key}
\def\XKV@define@key#1{%
\@ifnextchar[{\XKV@d@fine@k@y{#1}}{%
- \expandafter\def\csname\XKV@header#1\endcsname####1%
+ \long\expandafter\def\csname\XKV@header#1\endcsname####1%
}%
}
\def\XKV@d@fine@k@y#1[#2]{%
@@ -658,7 +658,7 @@
}%
}
\def\setkeys{\XKV@testopta{\XKV@testoptc\XKV@setkeys}}
-\def\XKV@setkeys[#1]#2{%
+\long\def\XKV@setkeys[#1]#2{%
\XKV@checksanitizea{#2}\XKV@resb
\let\XKV@naa\@empty
\XKV@for@o\XKV@resb\XKV@tempa{%
@@ -684,13 +684,13 @@
}%
\XKV@presetfalse
}
-\def\XKV@s@tkeys#1#2{%
+\long\def\XKV@s@tkeys#1#2{%
\XKV@sp@deflist\XKV@na{#2}%
\XKV@for@n{#1}\CurrentOption{%
\expandafter\XKV@s@tk@ys\CurrentOption==\@nil
}%
}
-\def\XKV@s@tk@ys#1=#2=#3\@nil{%
+\long\def\XKV@s@tk@ys#1=#2=#3\@nil{%
\XKV@g@tkeyname#1=\@nil\XKV@tkey
\expandafter\KV@@sp@def\expandafter\XKV@tkey\expandafter{\XKV@tkey}%
\ifx\XKV@tkey\@empty
@@ -780,18 +780,18 @@
}%
\fi
}
-\def\XKV@replacepointers#1{%
+\long\def\XKV@replacepointers#1{%
\let\XKV@tempa\@empty
\let\XKV@resa\@empty
- \XKV@r@placepointers#1\usevalue\@nil
+ \XKV@r@placepointers\@empty#1\usevalue\@nil
}
-\def\XKV@r@placepointers#1\usevalue#2{%
- \XKV@addtomacro@n\XKV@tempa{#1}%
+\long\def\XKV@r@placepointers#1\usevalue#2{%
+ \expandafter\XKV@addtomacro@n\expandafter\XKV@tempa\expandafter{#1}%
\def\XKV@tempb{#2}%
\ifx\XKV@tempb\@nnil\else\XKV@afterfi
\XKV@ifundefined{XKV@\XKV@header#2@value}{%
\XKV@err{no value recorded for key `#2'; ignored}%
- \XKV@r@placepointers
+ \XKV@r@placepointers\@empty
}{%
\@expandtwoargs\in@{,#2,}{,\XKV@resa,}%
\ifin@\XKV@afterelsefi
@@ -799,6 +799,7 @@
\else\XKV@afterfi
\XKV@addtolist@x\XKV@resa{#2}%
\expandafter\expandafter\expandafter\XKV@r@placepointers
+ \expandafter\expandafter\expandafter\@empty
\csname XKV@\XKV@header#2@value\endcsname
\fi
}%
diff --git a/Master/texmf-dist/tex/generic/xkeyval/xkvex1.tex b/Master/texmf-dist/tex/generic/xkeyval/xkvex1.tex
new file mode 100644
index 00000000000..a6c24b244a0
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/xkeyval/xkvex1.tex
@@ -0,0 +1,153 @@
+%%
+%% This is file `xkvex1.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xkeyval.dtx (with options: `xkvex1')
+%%
+%% ---------------------------------------
+%% Copyright (C) 2004-2014 Hendri Adriaens
+%% ---------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Hendri Adriaens.
+%%
+%% This work consists of the file xkeyval.dtx and derived files
+%% keyval.tex, xkvtxhdr.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, pst-xkey.tex, pst-xkey.sty, xkveca.cls, xkvecb.cls,
+%% xkvesa.sty, xkvesb.sty, xkvesc.sty, xkvex1.tex, xkvex2.tex,
+%% xkvex3.tex and xkvex4.tex.
+%%
+%% The following files constitute the xkeyval bundle and must be
+%% distributed as a whole: readme, xkeyval.pdf, keyval.tex,
+%% pst-xkey.sty, pst-xkey.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, xkvtxhdr.tex, pst-xkey.dtx and xkeyval.dtx.
+%%
+\input xkeyval
+
+\catcode`\@=11
+
+%% xkeyval package: TeX example
+%% Hendri Adriaens
+
+\noindent Example 1. This example demonstrates the use of the new
+macros for setting keys of the `xkeyval' package. Have a look at the
+source for information about this example and to understand the output.
+
+%% Define keys.
+\define@key{fami}{keyi}{key 1: #1 }
+\define@key{famii}{keyii}{key 2: #1 }
+\define@key{famiii}{keyiii}[test 2]{key 3: #1 }
+\define@key{famiv}{keyi}{key 4: #1 }
+
+%% Set keys from multiple families.
+\setkeys{fami,famii,famiii}{keyi=test 1,keyiii}
+
+%% Multiplely defined keys will be taken from the first family on the
+%% list that defines the key. When + is used, all families
+%% defining the key will set it.
+\setkeys{fami,famiv}{keyi=test 3}\par
+\setkeys{famiv,fami}{keyi=test 4}\par
+\setkeys+{fami,famiv}{keyi=test 5}\par
+
+%% Starred form sets keys that it can find in the families specified.
+%% Keys that cannot be located will be put onto a list for later use
+%% by \setrmkeys.
+\setkeys*{famiv}{keyi=test 9,keyii=http://www.test10.com,
+ keyiii=test 11}\par
+
+%% Try to set the remaining keys from the previous step. The starred
+%% version defines a new list in case there are still keys that cannot
+%% be located in the given families. The command below does not do
+%% anything since the `keyi' key has already been taken from family
+%% `famiv' above.
+\setrmkeys*{fami}\par
+
+%% The normal version will complain (as \setkeys) when it cannot locate
+%% a key which was previously submitted to \xsetkeys and hasn't been
+%% set yet by previous commands. `xkeyval' commands can also be used to
+%% set `keyval' options.
+\setrmkeys{famii,famiii}\par
+
+%% Set keys, excluding some keys.
+\setkeys{fami,famii,famiii}[keyi,keyiii]{keyi=test 6,keyii=test
+7,keyiii=test 8}\par
+
+%% Test whether a key is defined in a family from the list.
+\key@ifundefined{fami,famii}{keyiii}
+{keyiii is not defined in family `fami' or `famii'}
+{keyiii is defined in family `fami' or `famii'}
+
+%% Define some keys and macros.
+\define@cmdkey[my]{fama}[my@]{keya}[none]{}
+\define@choicekey[my]{fama}{keyb}{a,b,c}[b]{correct input: #1}
+\define@boolkey[my]{famb}{keyc}[true]{}
+\def\testa{\setkeys[my]{fama}}
+\def\testb{\setkeys[my]{famb}}
+\def\testset{\setkeys[my]{fama,famb}}
+
+%% Now \testa can only set keya, \testb can only
+%% set keyb and \testset can set both.
+\testa{keya}
+ \my@keya\
+\testa{keyb}
+\testb{keyc}
+ \ifmy@famb@keyc true \else false \fi
+\testset{keya=test 11,keyb=c,keyc=false}
+ \my@keya\space
+ \ifmy@famb@keyc true \else false \fi
+
+%% Pointer system
+
+%% First we (re)define some keys.
+\define@key{fam}{keyi}{key 1: #1 }
+\define@key{fam}{keyii}{key 2: #1 }
+\define@key{fam}{keyiii}[test 2]{key 3: #1 }
+
+%% Pointers can be used to copy the value of other keys in the same
+%% family. This can be done in two ways. The first example shows `on
+%% the spot' value saving.
+\setkeys{fam}{\savevalue{keyi}=test 12,\savevalue{keyii}=\usevalue{keyi}}
+\setkeys{fam}{keyiii=\usevalue{keyii}}
+
+%% However, you can also predefine the keys to be saved for the entire
+%% document with a single command.
+\savekeys{fam}{keyi,keyii}
+\setkeys{fam}{keyi=test 13,keyii=\usevalue{keyi}}
+\setkeys{fam}{keyiii=\usevalue{keyii}}
+
+%% Pointers can be used in default values as well. Remember that the
+%% previous example used \savekeys for keyi and keyii.
+\define@key{fam}{keyi}{keyi: #1 }
+\define@key{fam}{keyii}[\usevalue{keyi}]{keyii: #1 }
+\define@key{fam}{keyiii}[\usevalue{keyii}]{keyiii: #1 }
+\setkeys{fam}{keyi=test 14}
+\setkeys{fam}{keyii}
+\setkeys{fam}{keyiii}
+
+%% Presetting keys
+
+%% Simple example of the preset system.
+\define@key{fam}{keyi}{keyi: #1 }
+\define@key{fam}{keyii}{keyii: #1 }
+\presetkeys{fam}{keyi=blue}{keyii=\usevalue{keyi}}
+\setkeys{fam}{}\par
+\setkeys{fam}{keyi=red}\par
+\setkeys{fam}{keyii=red}
+\presetkeys{fam}{keyi=red}{}\par
+\setkeys{fam}{keyii=\usevalue{keyi}}
+
+\bye
+\endinput
+%%
+%% End of file `xkvex1.tex'.
diff --git a/Master/texmf-dist/tex/generic/xkeyval/xkvex2.tex b/Master/texmf-dist/tex/generic/xkeyval/xkvex2.tex
new file mode 100644
index 00000000000..8616eb81f63
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/xkeyval/xkvex2.tex
@@ -0,0 +1,356 @@
+%%
+%% This is file `xkvex2.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xkeyval.dtx (with options: `xkvex2')
+%%
+%% ---------------------------------------
+%% Copyright (C) 2004-2014 Hendri Adriaens
+%% ---------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Hendri Adriaens.
+%%
+%% This work consists of the file xkeyval.dtx and derived files
+%% keyval.tex, xkvtxhdr.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, pst-xkey.tex, pst-xkey.sty, xkveca.cls, xkvecb.cls,
+%% xkvesa.sty, xkvesb.sty, xkvesc.sty, xkvex1.tex, xkvex2.tex,
+%% xkvex3.tex and xkvex4.tex.
+%%
+%% The following files constitute the xkeyval bundle and must be
+%% distributed as a whole: readme, xkeyval.pdf, keyval.tex,
+%% pst-xkey.sty, pst-xkey.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, xkvtxhdr.tex, pst-xkey.dtx and xkeyval.dtx.
+%%
+\documentclass{article}
+\usepackage{xkeyval}
+\usepackage{xcolor,calc}
+
+%% Example of setting keyval options using xkeyval
+\usepackage{hyperref}
+\usepackage{helvet}
+\setkeys{Hyp,Hel}{colorlinks,urlcolor=green,scaled=.85}
+
+\title{\textsf{xkeyval} package\\\normalsize\emph{Example 2}}
+\author{Hendri Adriaens}
+\setlength{\parindent}{0cm}
+
+\makeatletter
+
+\begin{document}
+\maketitle
+
+This example demonstrates the use of the new macros for setting
+keys of the \textsf{xkeyval} package. Below each piece of verbatim
+code, you can find its output.
+
+\section{Simple operations}
+
+Define keys.
+\begin{verbatim}
+\define@key{fami}{keyi}{key 1: #1\space}
+\define@key{famii}{keyii}{key 2: #1\space}
+\define@key{famiii}{keyiii}[test 2]{key 3: #1\space}
+\define@key{famiv}{keyi}{key 4: #1\space}
+\end{verbatim}
+\define@key{fami}{keyi}{key 1: #1\space}
+\define@key{famii}{keyii}{key 2: #1\space}
+\define@key{famiii}{keyiii}[test 2]{key 3: #1\space}
+\define@key{famiv}{keyi}{key 4: #1\space}
+
+Set keys from multiple families.
+\begin{verbatim}
+\setkeys{fami,famii,famiii}{keyi=test 1,keyiii}
+\end{verbatim}
+\begin{itemize}
+\item[$\Rightarrow$]
+\setkeys{fami,famii,famiii}{keyi=test 1,keyiii}
+\end{itemize}
+
+Multiplely defined keys will be taken from the first family on the
+list that defines the key. When \verb|+| is used, all families
+defining the key will set it.
+\begin{verbatim}
+\setkeys{fami,famiv}{keyi=test 3}
+\setkeys{famiv,fami}{keyi=test 4}
+\setkeys+{fami,famiv}{keyi=test 5}
+\end{verbatim}
+\begin{itemize}
+\item[$\Rightarrow$]
+\setkeys{fami,famiv}{keyi=test 3}\par
+\setkeys{famiv,fami}{keyi=test 4}\par
+\setkeys+{fami,famiv}{keyi=test 5}
+\end{itemize}
+
+Starred form sets keys that it can find in the families specified.
+Keys that cannot be located will be put onto a list for later use
+by \verb+\setrmkeys+.
+\begin{verbatim}
+\setkeys*{famiv}{keyi=test 9,keyii=\url{http://www.test10.com},
+ keyiii=this key has been set on page \thepage}
+\end{verbatim}
+\begin{itemize}
+\item[$\Rightarrow$]
+\setkeys*{famiv}{keyi=test 9,keyii=\url{http://www.test10.com},
+ keyiii=this key has been set on page \thepage}
+\end{itemize}
+
+Try to set the remaining keys from the previous step. The starred
+version defines a new list in case there are still keys that
+cannot be located in the given families. The command below does
+not do anything since the \verb+keyi+ key has already been taken
+from family \verb+famiv+ above.
+\begin{verbatim}
+\setrmkeys*{fami}
+\end{verbatim}
+\setrmkeys*{fami}\par
+
+The normal version will complain (as \verb+\setkeys+) when it
+cannot locate a key which was previously submitted to
+\verb+\setkeys+ and hasn't been set yet by previous commands.
+\textsf{xkeyval} commands can also be used to set \textsf{keyval}
+options as is done to the color of the url created with the
+\textsf{hyperref} package and the scaling of the font used for
+`\textsf{xkeyval}' with the \textsf{helvet} package. (See the
+preamble of the example for the code).
+\begin{verbatim}
+\setrmkeys{famii,famiii}
+\end{verbatim}
+\begin{itemize}
+\item[$\Rightarrow$]
+\setrmkeys{famii,famiii}
+\end{itemize}
+
+Set keys, excluding some keys.
+\begin{verbatim}
+\setkeys{fami,famii,famiii}[keyi,keyiii]{keyi=test 6,keyii=test 7,keyiii=test 8}
+\end{verbatim}
+\begin{itemize}
+\item[$\Rightarrow$]
+\setkeys{fami,famii,famiii}[keyi,keyiii]{keyi=test 6,keyii=test 7,keyiii=test 8}
+\end{itemize}
+
+Test whether a key is defined in a family from the list.
+\begin{verbatim}
+\key@ifundefined{fami,famii}{keyiii}
+{keyiii is not defined in family `fami' or `famii'}
+{keyiii is defined in family `fami' or `famii'}
+\end{verbatim}
+\begin{itemize}
+\item[$\Rightarrow$]
+\key@ifundefined{fami,famii}{keyiii}
+{keyiii is not defined in family `fami' or `famii'}
+{keyiii is defined in family `fami' or `famii'}
+\end{itemize}
+
+Define some keys and macros.
+\begin{verbatim}
+\define@cmdkey[my]{fama}[my@]{keya}[none]{}
+\define@choicekey[my]{fama}{keyb}{a,b,c}[b]{correct input: #1}
+\define@boolkey[my]{famb}{keyc}[true]{}
+\def\testa{\setkeys[my]{fama}}
+\def\testb{\setkeys[my]{famb}}
+\def\testset{\setkeys[my]{fama,famb}}
+\end{verbatim}
+\define@cmdkey[my]{fama}[my@]{keya}[none]{}
+\define@choicekey[my]{fama}{keyb}{a,b,c}[b]{correct input: #1}
+\define@boolkey[my]{famb}{keyc}[true]{}
+\def\testa{\setkeys[my]{fama}}
+\def\testb{\setkeys[my]{famb}}
+\def\testset{\setkeys[my]{fama,famb}}
+Now \verb+\testa+ can only set \verb+keya+, \verb+\testb+ can only
+set \verb+keyb+ and \verb+\testset+ can set both.
+\begin{verbatim}
+\testa{keya}
+ \my@keya\
+\testa{keyb}
+\testb{keyc}
+ \ifmy@famb@keyc true \else false \fi
+\testset{keya=test 11,keyb=c,keyc=false}
+ \my@keya\space
+ \ifmy@famb@keyc true \else false \fi
+\end{verbatim}
+\begin{itemize}
+\item[$\Rightarrow$]
+\testa{keya}
+ \my@keya\
+\testa{keyb}
+\testb{keyc}
+ \ifmy@famb@keyc true \else false \fi
+\testset{keya=test 11,keyb=c,keyc=false}
+ \my@keya\space
+ \ifmy@famb@keyc true \else false \fi
+\end{itemize}
+
+\section{Pointers and values}
+
+First we (re)define some keys.
+\begin{verbatim}
+\define@key{fam}{keyi}{key 1: #1 }
+\define@key{fam}{keyii}{key 2: #1 }
+\define@key{fam}{keyiii}[test 2]{key 3: #1 }
+\end{verbatim}
+\define@key{fam}{keyi}{key 1: #1 }
+\define@key{fam}{keyii}{key 2: #1 }
+\define@key{fam}{keyiii}[test 2]{key 3: #1 }
+
+Pointers can be used to copy the value of other keys in the same
+family. This can be done in two ways. The first example shows `on
+the spot' value saving.
+\begin{verbatim}
+\setkeys{fam}{\savevalue{keyi}=test 12,\savevalue{keyii}=\usevalue{keyi}}
+\setkeys{fam}{keyiii=\usevalue{keyii}}
+\end{verbatim}
+\begin{itemize}
+\item[$\Rightarrow$]
+\setkeys{fam}{\savevalue{keyi}=test 12,\savevalue{keyii}=\usevalue{keyi}}
+\setkeys{fam}{keyiii=\usevalue{keyii}}
+\end{itemize}
+
+However, you can also predefine the keys to be saved for the entire
+document with a single command. Note that we force keys to be saved
+globally. This is necessary here since the commands in the source of
+this document appear in an environment.
+\begin{verbatim}
+\savekeys{fam}{\global{keyi},\global{keyii}}
+\setkeys{fam}{keyi=test 13,keyii=\usevalue{keyi}}
+\setkeys{fam}{keyiii=\usevalue{keyii}}
+\end{verbatim}
+\begin{itemize}
+\item[$\Rightarrow$]
+\savekeys{fam}{\global{keyi},\global{keyii}}
+\setkeys{fam}{keyi=test 13,keyii=\usevalue{keyi}}
+\setkeys{fam}{keyiii=\usevalue{keyii}}
+\end{itemize}
+
+Pointers can be used in default values as well. Remember that the
+previous example used \verb+\savekeys+ for \verb+keyi+ and \verb+keyii+.
+\begin{verbatim}
+\define@key{fam}{keyi}{keyi: #1 }
+\define@key{fam}{keyii}[\usevalue{keyi}]{keyii: #1 }
+\define@key{fam}{keyiii}[\usevalue{keyii}]{keyiii: #1 }
+\setkeys{fam}{keyi=test 14}
+\setkeys{fam}{keyii}
+\setkeys{fam}{keyiii}
+\end{verbatim}
+\begin{itemize}
+\item[$\Rightarrow$]
+\define@key{fam}{keyi}{keyi: #1 }
+\define@key{fam}{keyii}[\usevalue{keyi}]{keyii: #1 }
+\define@key{fam}{keyiii}[\usevalue{keyii}]{keyiii: #1 }
+\setkeys{fam}{keyi=test 14}
+\setkeys{fam}{keyii}
+\setkeys{fam}{keyiii}
+\end{itemize}
+
+\section{Presetting keys}
+
+Simple example of the preset system.
+\begin{verbatim}
+\define@key{fam}{keyi}{keyi: #1 }
+\define@key{fam}{keyii}{keyii: #1 }
+\presetkeys{fam}{keyi=blue}{keyii=\usevalue{keyi}}
+\setkeys{fam}{}\par
+\setkeys{fam}{keyi=red}\par
+\setkeys{fam}{keyii=red}
+\presetkeys{fam}{keyi=red}{}
+\setkeys{fam}{keyii=\usevalue{keyi}}
+\end{verbatim}
+\begin{itemize}
+\item[$\Rightarrow$]
+\define@key{fam}{keyi}{keyi: #1 }
+\define@key{fam}{keyii}{keyii: #1 }
+\presetkeys{fam}{keyi=blue}{keyii=\usevalue{keyi}}
+\setkeys{fam}{}\par
+\setkeys{fam}{keyi=red}\par
+\setkeys{fam}{keyii=red}
+\presetkeys{fam}{keyi=red}{}\par
+\setkeys{fam}{keyii=\usevalue{keyi}}
+\end{itemize}
+
+\section{Application of pointers, values and presets}
+
+\setkeys{Hyp}{urlcolor=black}
+More complicated example of the preset
+system and pointer system. See for more information about this
+example the
+\textsf{xkeyval} article on\par
+\url{http://www.tug.org/TUGboat/tb25-2/tb81adriaens.pdf}.
+\begin{verbatim}
+\newdimen\shadowsize
+\define@boolkey{Fbox}{frame}[true]{}
+\define@boolkey{Fbox}{shadow}[true]{}
+\define@key{Fbox}{framecolor}{\def\Fboxframecolor{#1}}
+\define@key{Fbox}{shadowcolor}{\def\Fboxshadowcolor{#1}}
+\define@key{Fbox}{framesize}{\setlength\fboxrule{#1}}
+\define@key{Fbox}{shadowsize}{\setlength\shadowsize{#1}}
+\presetkeys{Fbox}{frame,framecolor=red,framesize=0.5pt}%
+ {shadow=\usevalue{frame},shadowcolor=\usevalue{framecolor}!40,%
+ shadowsize=\usevalue{framesize}*4}
+\savekeys{Fbox}{frame,framecolor,framesize}
+\newcommand*\Fbox[2][]{%
+ \setkeys{Fbox}{#1}%
+ {\ifKV@Fbox@frame\else\fboxrule0pt\fi
+ \ifKV@Fbox@shadow\else\shadowsize0pt\fi
+ \sbox0{\fcolorbox{\Fboxframecolor}{white}{#2}}%
+ \hskip\shadowsize
+ \color{\Fboxshadowcolor}%
+ \rule[-\dp0]{\wd0}{\ht0+\dp0}%
+ \llap{\raisebox{\shadowsize}%
+ {\box0\hskip\shadowsize}}}%
+}
+\Fbox{demo1}
+\Fbox[framecolor=blue]{demo2}
+\Fbox[shadow=false]{demo3}
+\Fbox[framesize=1pt]{demo4}
+\Fbox[frame=false,shadow]{demo5}
+\end{verbatim}
+\newdimen\shadowsize
+\define@boolkey{Fbox}{frame}[true]{}
+\define@boolkey{Fbox}{shadow}[true]{}
+\define@key{Fbox}{framecolor}%
+ {\def\Fboxframecolor{#1}}
+\define@key{Fbox}{shadowcolor}%
+ {\def\Fboxshadowcolor{#1}}
+\define@key{Fbox}{framesize}%
+ {\setlength\fboxrule{#1}}
+\define@key{Fbox}{shadowsize}%
+ {\setlength\shadowsize{#1}}
+\presetkeys{Fbox}%
+ {frame,framecolor=red,framesize=0.5pt}%
+ {shadow=\usevalue{frame},
+ shadowcolor=\usevalue{framecolor}!40,
+ shadowsize=\usevalue{framesize}*4}
+\savekeys{Fbox}{frame,framecolor,framesize}
+\newcommand*\Fbox[2][]{%
+ \setkeys{Fbox}{#1}%
+ {\ifKV@Fbox@frame\else\fboxrule0pt\fi
+ \ifKV@Fbox@shadow\else\shadowsize0pt\fi
+ \sbox0{\fcolorbox{\Fboxframecolor}{white}{#2}}%
+ \hskip\shadowsize
+ \color{\Fboxshadowcolor}%
+ \rule[-\dp0]{\wd0}{\ht0+\dp0}%
+ \llap{\raisebox{\shadowsize}%
+ {\box0\hskip\shadowsize}}}%
+}
+\Fbox{demo1}
+\Fbox[framecolor=blue]{demo2}
+\Fbox[shadow=false]{demo3}
+\Fbox[framesize=1pt]{demo4}
+\Fbox[frame=false,shadow]{demo5}
+
+\end{document}
+\endinput
+%%
+%% End of file `xkvex2.tex'.
diff --git a/Master/texmf-dist/tex/generic/xkeyval/xkvex3.tex b/Master/texmf-dist/tex/generic/xkeyval/xkvex3.tex
new file mode 100644
index 00000000000..a21a493e9aa
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/xkeyval/xkvex3.tex
@@ -0,0 +1,93 @@
+%%
+%% This is file `xkvex3.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xkeyval.dtx (with options: `xkvex3')
+%%
+%% ---------------------------------------
+%% Copyright (C) 2004-2014 Hendri Adriaens
+%% ---------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Hendri Adriaens.
+%%
+%% This work consists of the file xkeyval.dtx and derived files
+%% keyval.tex, xkvtxhdr.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, pst-xkey.tex, pst-xkey.sty, xkveca.cls, xkvecb.cls,
+%% xkvesa.sty, xkvesb.sty, xkvesc.sty, xkvex1.tex, xkvex2.tex,
+%% xkvex3.tex and xkvex4.tex.
+%%
+%% The following files constitute the xkeyval bundle and must be
+%% distributed as a whole: readme, xkeyval.pdf, keyval.tex,
+%% pst-xkey.sty, pst-xkey.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, xkvtxhdr.tex, pst-xkey.dtx and xkeyval.dtx.
+%%
+%% keyi will set \keyi in xkveca.cls
+%% keyvi will set \keyvi in xkveca.cls and xkvesc.sty will pick
+%% it up from \documentclass and redefine it
+%% IgnoredGlobal and another=key will be considered as global
+%% options to be passed on to packages. Not used anymore.
+\documentclass[keyi=test1,keyvi,another=key,IgnoredGlobal,10pt]{xkveca}
+
+%% keyii will set \keyii in xkvesa.sty
+%% keyiv will be passed to xkvesb.sty as unknown option
+%% the other input will be passed on to xkvesb as well.
+\usepackage[keyii=test2,keyiv=test4,test5]{xkvesa}
+
+%% keyvii will set \keyvii in xkvesc.sty
+\usepackage[keyvii]{xkvesc}
+
+\title{\textsf{xkeyval} package\\\normalsize\emph{Example 3}}
+\author{Hendri Adriaens}
+\setlength{\parindent}{0cm}
+
+\makeatletter
+\let\@tempa\@classoptionslist
+\let\@tempb\@unusedoptionlist
+
+\begin{document}
+\maketitle
+
+This example demonstrates the use of the new macros for declaring
+class and package options of the \textsf{xkeyval} package. Please
+study the files \verb+xkvex2.tex+, \verb+xkveca.cls+,
+\verb+xkvecb.cls+, \verb+xkvesa.sty+, \verb+xkvesb.sty+ and
+\verb+xkvesc.sty+ carefully to understand the output below.\\
+
+Set by \verb+xkveca.cls+: \keyi\par
+Set by \verb+xkvesa.sty+, copied from \verb+\documentclass+: \keyia\par
+Set by \verb+xkvesa.sty+: \keyii\par
+Set by \verb+xkvesb.sty+, passed on from \verb+xkvesa.sty+: \keyiii\par
+Set by \verb+xkvesb.sty+, passed on as unknown key from \verb+xkvesa.sty+: \keyiv\par
+Set by \verb+xkvesb.sty+, passed on as unknown from \verb+xkvesa.sty+: \keyv\par
+Set by the class, copied by \verb+xkvesc.sty+: \keyvi\par
+Set by \verb+xkvesc.sty+: \keyvii\par
+Set by \verb+xkvecb.cls+, passed on from \verb+xkveca.cls+: \keyviii\\
+
+The document class is: \XKV@documentclass\par
+Unused global options: \@tempb\\
+
+Notice the content of the following macros.\par
+\verb+\@classoptionslist+: \@tempa\par
+\verb+\XKV@classoptionslist+: \XKV@classoptionslist\\
+
+This shows that \verb+key=value+ pairs have been deleted from the
+class options list so that subsequent packages which are not using
+\textsf{xkeyval} and are scanning this list will not run into
+problems.\\
+
+\end{document}
+\endinput
+%%
+%% End of file `xkvex3.tex'.
diff --git a/Master/texmf-dist/tex/generic/xkeyval/xkvex4.tex b/Master/texmf-dist/tex/generic/xkeyval/xkvex4.tex
new file mode 100644
index 00000000000..a7cdfc45a6d
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/xkeyval/xkvex4.tex
@@ -0,0 +1,106 @@
+%%
+%% This is file `xkvex4.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xkeyval.dtx (with options: `xkvex4')
+%%
+%% ---------------------------------------
+%% Copyright (C) 2004-2014 Hendri Adriaens
+%% ---------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Hendri Adriaens.
+%%
+%% This work consists of the file xkeyval.dtx and derived files
+%% keyval.tex, xkvtxhdr.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, pst-xkey.tex, pst-xkey.sty, xkveca.cls, xkvecb.cls,
+%% xkvesa.sty, xkvesb.sty, xkvesc.sty, xkvex1.tex, xkvex2.tex,
+%% xkvex3.tex and xkvex4.tex.
+%%
+%% The following files constitute the xkeyval bundle and must be
+%% distributed as a whole: readme, xkeyval.pdf, keyval.tex,
+%% pst-xkey.sty, pst-xkey.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, xkvtxhdr.tex, pst-xkey.dtx and xkeyval.dtx.
+%%
+%% Load LaTeX kernel macros patch
+\RequirePackage{xkvltxp}
+
+%% keyi will set \keyi in xkveca.cls
+%% keyvi will set \keyvi in xkveca.cls and xkvesc.sty will pick
+%% it up from \documentclass and redefine it
+%% IgnoredGlobal and another=key will be considered as global
+%% options to be passed on to packages. Not used anymore.
+\documentclass[keyi=test1 on page \thepage,keyvi,another=key,IgnoredGlobal,10pt]{xkveca}
+
+%% keyii will set \keyii in xkvesa.sty
+%% keyiv will be passed to xkvesb.sty as unknown option
+%% the other input will be passed on to xkvesb as well.
+\usepackage[keyii=test2 on page \thepage,keyiv=test4 on page \thepage,test5]{xkvesa}
+
+%% keyvii will set \keyvii in xkvesc.sty
+\usepackage[keyvii]{xkvesc}
+
+\title{\textsf{xkeyval} package\\\normalsize\emph{Example 4}}
+\author{Hendri Adriaens}
+\setlength{\parindent}{0cm}
+
+\makeatletter
+\let\@tempa\@classoptionslist
+\let\@tempb\@unusedoptionlist
+\let\@tempc\XKV@classoptionslist
+\@onelevel@sanitize\@tempc
+
+\begin{document}
+\maketitle
+
+This example demonstrates the use of the new macros for declaring
+class and package options of the \textsf{xkeyval} package. Please
+study the files \verb+xkvex2.tex+, \verb+xkveca.cls+,
+\verb+xkvecb.cls+, \verb+xkvesa.sty+, \verb+xkvesb.sty+ and
+\verb+xkvesc.sty+ carefully to understand the output below.\\
+
+Set by \verb+xkveca.cls+: \keyi\par
+Set by \verb+xkvesa.sty+, copied from \verb+\documentclass+: \keyia\par
+Set by \verb+xkvesa.sty+: \keyii\par
+Set by \verb+xkvesb.sty+, passed on from \verb+xkvesa.sty+: \keyiii\par
+Set by \verb+xkvesb.sty+, passed on as unknown from \verb+xkvesa.sty+: \keyiv\par
+Set by \verb+xkvesb.sty+, passed on as unknown from \verb+xkvesa.sty+: \keyv\par
+Set by the class, copied by \verb+xkvesc.sty+: \keyvi\par
+Set by \verb+xkvesc.sty+: \keyvii\par
+Set by \verb+xkvecb.cls+, passed on from \verb+xkveca.cls+: \keyviii\\
+
+The document class is: \XKV@documentclass\par
+Unused global options: \texttt{\@tempb}\\
+
+Notice the content of the following macros.\par
+\verb+\@classoptionslist+: \texttt{\@tempa}\par
+\verb+\XKV@classoptionslist+:\par\texttt{\@tempc}\\
+
+This shows that \verb+key=value+ pairs have been deleted from the
+class options list so that subsequent packages which are not using
+\textsf{xkeyval} and are scanning this list will not run into
+problems.\\
+
+\newpage
+This page shows that key values are only expanded when they are
+actually used. They are not expanded during option processing.\\
+
+\keyi\par
+\keyii\par
+\keyiv
+
+\end{document}
+\endinput
+%%
+%% End of file `xkvex4.tex'.
diff --git a/Master/texmf-dist/tex/generic/xkeyval/xkvtxhdr.tex b/Master/texmf-dist/tex/generic/xkeyval/xkvtxhdr.tex
index e535d8bf345..f6933df422b 100644
--- a/Master/texmf-dist/tex/generic/xkeyval/xkvtxhdr.tex
+++ b/Master/texmf-dist/tex/generic/xkeyval/xkvtxhdr.tex
@@ -7,7 +7,7 @@
%% xkeyval.dtx (with options: `xkvheader')
%%
%% ---------------------------------------
-%% Copyright (C) 2004-2012 Hendri Adriaens
+%% Copyright (C) 2004-2014 Hendri Adriaens
%% ---------------------------------------
%%
%% This work may be distributed and/or modified under the
diff --git a/Master/texmf-dist/tex/latex/xkeyval/pst-xkey.sty b/Master/texmf-dist/tex/latex/xkeyval/pst-xkey.sty
index ea39f3e8adf..4f0fb97c510 100644
--- a/Master/texmf-dist/tex/latex/xkeyval/pst-xkey.sty
+++ b/Master/texmf-dist/tex/latex/xkeyval/pst-xkey.sty
@@ -7,7 +7,7 @@
%% xkeyval.dtx (with options: `pxklatex')
%%
%% ---------------------------------------
-%% Copyright (C) 2004-2012 Hendri Adriaens
+%% Copyright (C) 2004-2014 Hendri Adriaens
%% ---------------------------------------
%%
%% This work may be distributed and/or modified under the
diff --git a/Master/texmf-dist/tex/latex/xkeyval/xkeyval.sty b/Master/texmf-dist/tex/latex/xkeyval/xkeyval.sty
index 019ef906101..9456ddbd67f 100644
--- a/Master/texmf-dist/tex/latex/xkeyval/xkeyval.sty
+++ b/Master/texmf-dist/tex/latex/xkeyval/xkeyval.sty
@@ -7,7 +7,7 @@
%% xkeyval.dtx (with options: `xkvlatex')
%%
%% ---------------------------------------
-%% Copyright (C) 2004-2012 Hendri Adriaens
+%% Copyright (C) 2004-2014 Hendri Adriaens
%% ---------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -35,7 +35,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{xkeyval}
- [2012/10/14 v2.6b package option processing (HA)]
+ [2014/04/27 v2.6c package option processing (HA)]
\ifx\XKeyValLoaded\endinput\else\input xkeyval \fi
\edef\XKVcatcodes{%
\catcode`\noexpand\=\the\catcode`\=\relax
diff --git a/Master/texmf-dist/tex/latex/xkeyval/xkveca.cls b/Master/texmf-dist/tex/latex/xkeyval/xkveca.cls
new file mode 100644
index 00000000000..b4f1dc94405
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/xkeyval/xkveca.cls
@@ -0,0 +1,54 @@
+%%
+%% This is file `xkveca.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xkeyval.dtx (with options: `xkveca')
+%%
+%% ---------------------------------------
+%% Copyright (C) 2004-2014 Hendri Adriaens
+%% ---------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Hendri Adriaens.
+%%
+%% This work consists of the file xkeyval.dtx and derived files
+%% keyval.tex, xkvtxhdr.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, pst-xkey.tex, pst-xkey.sty, xkveca.cls, xkvecb.cls,
+%% xkvesa.sty, xkvesb.sty, xkvesc.sty, xkvex1.tex, xkvex2.tex,
+%% xkvex3.tex and xkvex4.tex.
+%%
+%% The following files constitute the xkeyval bundle and must be
+%% distributed as a whole: readme, xkeyval.pdf, keyval.tex,
+%% pst-xkey.sty, pst-xkey.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, xkvtxhdr.tex, pst-xkey.dtx and xkeyval.dtx.
+%%
+\ProvidesClass{xkveca}
+\usepackage{xkeyval}
+\let\keyi\@empty
+\let\keyvi\@empty
+\DeclareOptionX{keyi}{\def\keyi{#1}}
+%% this key has a default value
+\DeclareOptionX{keyvi}[{test 6}]{\def\keyvi{#1}}
+%% pass option to class xkvesb.cls
+\PassOptionsToClass{notitlepage}{xkvecb}
+\PassOptionsToClass{keyviii={test 8}}{xkvecb}
+%% pass unknown options to article
+\DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{article}}
+%% process options
+\ProcessOptionsX
+%% load another class
+\LoadClass{xkvecb}
+\endinput
+%%
+%% End of file `xkveca.cls'.
diff --git a/Master/texmf-dist/tex/latex/xkeyval/xkvecb.cls b/Master/texmf-dist/tex/latex/xkeyval/xkvecb.cls
new file mode 100644
index 00000000000..595a171ad77
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/xkeyval/xkvecb.cls
@@ -0,0 +1,45 @@
+%%
+%% This is file `xkvecb.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xkeyval.dtx (with options: `xkvecb')
+%%
+%% ---------------------------------------
+%% Copyright (C) 2004-2014 Hendri Adriaens
+%% ---------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Hendri Adriaens.
+%%
+%% This work consists of the file xkeyval.dtx and derived files
+%% keyval.tex, xkvtxhdr.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, pst-xkey.tex, pst-xkey.sty, xkveca.cls, xkvecb.cls,
+%% xkvesa.sty, xkvesb.sty, xkvesc.sty, xkvex1.tex, xkvex2.tex,
+%% xkvex3.tex and xkvex4.tex.
+%%
+%% The following files constitute the xkeyval bundle and must be
+%% distributed as a whole: readme, xkeyval.pdf, keyval.tex,
+%% pst-xkey.sty, pst-xkey.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, xkvtxhdr.tex, pst-xkey.dtx and xkeyval.dtx.
+%%
+\ProvidesClass{xkvecb}
+%% pass any unknown option to article
+\DeclareOptionX{keyviii}{\def\keyviii{#1}}
+\DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptionsX*
+%% load article
+\LoadClass{article}
+\endinput
+%%
+%% End of file `xkvecb.cls'.
diff --git a/Master/texmf-dist/tex/latex/xkeyval/xkvesa.sty b/Master/texmf-dist/tex/latex/xkeyval/xkvesa.sty
new file mode 100644
index 00000000000..a4545d865d8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/xkeyval/xkvesa.sty
@@ -0,0 +1,54 @@
+%%
+%% This is file `xkvesa.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xkeyval.dtx (with options: `xkvesa')
+%%
+%% ---------------------------------------
+%% Copyright (C) 2004-2014 Hendri Adriaens
+%% ---------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Hendri Adriaens.
+%%
+%% This work consists of the file xkeyval.dtx and derived files
+%% keyval.tex, xkvtxhdr.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, pst-xkey.tex, pst-xkey.sty, xkveca.cls, xkvecb.cls,
+%% xkvesa.sty, xkvesb.sty, xkvesc.sty, xkvex1.tex, xkvex2.tex,
+%% xkvex3.tex and xkvex4.tex.
+%%
+%% The following files constitute the xkeyval bundle and must be
+%% distributed as a whole: readme, xkeyval.pdf, keyval.tex,
+%% pst-xkey.sty, pst-xkey.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, xkvtxhdr.tex, pst-xkey.dtx and xkeyval.dtx.
+%%
+\ProvidesPackage{xkvesa}
+\let\keyia\@empty
+\let\keyii\@empty
+%% keyi has been used in \documentclass
+%% this key uses that information to set another macro
+%% to do this, \ProcessOptionsX* is necessary.
+%% the value from the \documentclass is copied.
+\DeclareOptionX{keyi}{\def\keyia{#1}}
+\DeclareOptionX{keyii}{\def\keyii{#1}}
+%% pass any unknown keys to xkvesb.sty
+\DeclareOptionX*{\PassOptionsToPackage{\CurrentOption}{xkvesb}}
+%% pass a specific key=value to xkvesb.sty
+\PassOptionsToPackage{keyiii={test 3}}{xkvesb}
+%% process options. use the * to pick up options from \documentclass
+\ProcessOptionsX*
+\RequirePackage{xkvesb}
+\endinput
+%%
+%% End of file `xkvesa.sty'.
diff --git a/Master/texmf-dist/tex/latex/xkeyval/xkvesb.sty b/Master/texmf-dist/tex/latex/xkeyval/xkvesb.sty
new file mode 100644
index 00000000000..305959bf4dc
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/xkeyval/xkvesb.sty
@@ -0,0 +1,52 @@
+%%
+%% This is file `xkvesb.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xkeyval.dtx (with options: `xkvesb')
+%%
+%% ---------------------------------------
+%% Copyright (C) 2004-2014 Hendri Adriaens
+%% ---------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Hendri Adriaens.
+%%
+%% This work consists of the file xkeyval.dtx and derived files
+%% keyval.tex, xkvtxhdr.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, pst-xkey.tex, pst-xkey.sty, xkveca.cls, xkvecb.cls,
+%% xkvesa.sty, xkvesb.sty, xkvesc.sty, xkvex1.tex, xkvex2.tex,
+%% xkvex3.tex and xkvex4.tex.
+%%
+%% The following files constitute the xkeyval bundle and must be
+%% distributed as a whole: readme, xkeyval.pdf, keyval.tex,
+%% pst-xkey.sty, pst-xkey.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, xkvtxhdr.tex, pst-xkey.dtx and xkeyval.dtx.
+%%
+\ProvidesPackage{xkvesb}
+\let\keyiii\@empty
+\let\keyiv\@empty
+\let\keyv\@empty
+%% use multiple families to define options
+\DeclareOptionX[xkvesb]<famiii>{keyiii}{\def\keyiii{#1}}
+\DeclareOptionX[xkvesb]<famiv>{keyiv}{\def\keyiv{#1}}
+%% define \keyv as \CurrentOption
+\DeclareOptionX*{\let\keyv\CurrentOption}
+%% execute options in multiple families
+\ExecuteOptionsX[xkvesb]<famiii>{keyiii={test 3}}
+%% process options in multiple families
+%% do not set keyiii
+\ProcessOptionsX[xkvesb]<famiii,famiv>[keyiii]
+\endinput
+%%
+%% End of file `xkvesb.sty'.
diff --git a/Master/texmf-dist/tex/latex/xkeyval/xkvesc.sty b/Master/texmf-dist/tex/latex/xkeyval/xkvesc.sty
new file mode 100644
index 00000000000..0747aa82178
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/xkeyval/xkvesc.sty
@@ -0,0 +1,47 @@
+%%
+%% This is file `xkvesc.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xkeyval.dtx (with options: `xkvesc')
+%%
+%% ---------------------------------------
+%% Copyright (C) 2004-2014 Hendri Adriaens
+%% ---------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Hendri Adriaens.
+%%
+%% This work consists of the file xkeyval.dtx and derived files
+%% keyval.tex, xkvtxhdr.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, pst-xkey.tex, pst-xkey.sty, xkveca.cls, xkvecb.cls,
+%% xkvesa.sty, xkvesb.sty, xkvesc.sty, xkvex1.tex, xkvex2.tex,
+%% xkvex3.tex and xkvex4.tex.
+%%
+%% The following files constitute the xkeyval bundle and must be
+%% distributed as a whole: readme, xkeyval.pdf, keyval.tex,
+%% pst-xkey.sty, pst-xkey.tex, xkeyval.sty, xkeyval.tex, xkvview.sty,
+%% xkvltxp.sty, xkvtxhdr.tex, pst-xkey.dtx and xkeyval.dtx.
+%%
+\ProvidesPackage{xkvesc}
+%% redefine \keyvi when keyvi option is specified in \documentclass
+\DeclareOption{keyvi}{\def\keyvi{test 6a}}
+%% keyvii is a package specific key
+\DeclareOption{keyvii}{\def\keyvii{test 7}}
+%% note that this package uses original LaTeX macros for options.
+%% this is possible since xkeyval filters key=value pairs from
+%% the \documentclass options list.
+\ProcessOptions
+\endinput
+%%
+%% End of file `xkvesc.sty'.
diff --git a/Master/texmf-dist/tex/latex/xkeyval/xkvltxp.sty b/Master/texmf-dist/tex/latex/xkeyval/xkvltxp.sty
index 76e586fd136..0480a11ce2b 100644
--- a/Master/texmf-dist/tex/latex/xkeyval/xkvltxp.sty
+++ b/Master/texmf-dist/tex/latex/xkeyval/xkvltxp.sty
@@ -7,7 +7,7 @@
%% xkeyval.dtx (with options: `xkvltxpatch')
%%
%% ---------------------------------------
-%% Copyright (C) 2004-2012 Hendri Adriaens
+%% Copyright (C) 2004-2014 Hendri Adriaens
%% ---------------------------------------
%%
%% This work may be distributed and/or modified under the
diff --git a/Master/texmf-dist/tex/latex/xkeyval/xkvview.sty b/Master/texmf-dist/tex/latex/xkeyval/xkvview.sty
index a6ba2a42761..379b48aa3bb 100644
--- a/Master/texmf-dist/tex/latex/xkeyval/xkvview.sty
+++ b/Master/texmf-dist/tex/latex/xkeyval/xkvview.sty
@@ -7,7 +7,7 @@
%% xkeyval.dtx (with options: `xkvview')
%%
%% ---------------------------------------
-%% Copyright (C) 2004-2012 Hendri Adriaens
+%% Copyright (C) 2004-2014 Hendri Adriaens
%% ---------------------------------------
%%
%% This work may be distributed and/or modified under the