diff options
author | Karl Berry <karl@freefriends.org> | 2007-04-13 00:22:43 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2007-04-13 00:22:43 +0000 |
commit | 4cdf0fc4a6eb6600fbae1ed88ad729a99a2c9c6a (patch) | |
tree | c0bb4ea4725e75c5140df84a47609d19ecf9eddf /Master/texmf-dist/tex/generic/xkeyval | |
parent | 9f9c13f3e8d249b1d4c7b782cee4eee8ef847a9a (diff) |
special case for xkeyval, needs both tex and generic files isntalled (reported by Mojca, 30 Mar 2007 14:55:13)
git-svn-id: svn://tug.org/texlive/trunk@4159 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/xkeyval')
-rw-r--r-- | Master/texmf-dist/tex/generic/xkeyval/keyval.tex | 82 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xkeyval/pst-xkey.tex | 70 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xkeyval/xkeyval.tex | 844 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xkeyval/xkvtxhdr.tex | 91 |
4 files changed, 1087 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/xkeyval/keyval.tex b/Master/texmf-dist/tex/generic/xkeyval/keyval.tex new file mode 100644 index 00000000000..38a505abeee --- /dev/null +++ b/Master/texmf-dist/tex/generic/xkeyval/keyval.tex @@ -0,0 +1,82 @@ +%% +%% This is file `keyval.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xkeyval.dtx (with options: `xkvkeyval') +%% +%% --------------------------------------- +%% Copyright (C) 2004-2006 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. +%% +%% +%% Based on keyval.sty. +%% +\def\XKV@tempa#1{% +\def\KV@@sp@def##1##2{% + \futurelet\XKV@resa\KV@@sp@d##2\@nil\@nil#1\@nil\relax##1}% +\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}% + } +\XKV@tempa{ } +\def\KV@@sp@c#1\@nil#2\relax#3{\XKV@toks{#1}\edef#3{\the\XKV@toks}} +\def\KV@do#1,{% + \ifx\relax#1\@empty\else + \KV@split#1==\relax + \expandafter\KV@do\fi} +\def\KV@split#1=#2=#3\relax{% + \KV@@sp@def\XKV@tempa{#1}% + \ifx\XKV@tempa\@empty\else + \expandafter\let\expandafter\XKV@tempc + \csname\KV@prefix\XKV@tempa\endcsname + \ifx\XKV@tempc\relax + \XKV@err{`\XKV@tempa' undefined}% + \else + \ifx\@empty#3\@empty + \KV@default + \else + \KV@@sp@def\XKV@tempb{#2}% + \expandafter\XKV@tempc\expandafter{\XKV@tempb}\relax + \fi + \fi + \fi} +\def\KV@default{% + \expandafter\let\expandafter\XKV@tempb + \csname\KV@prefix\XKV@tempa @default\endcsname + \ifx\XKV@tempb\relax + \XKV@err{No value specified for key `\XKV@tempa'}% + \else + \XKV@tempb\relax + \fi} +\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 new file mode 100644 index 00000000000..e2067f99909 --- /dev/null +++ b/Master/texmf-dist/tex/generic/xkeyval/pst-xkey.tex @@ -0,0 +1,70 @@ +%% +%% This is file `pst-xkey.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xkeyval.dtx (with options: `pxktex') +%% +%% --------------------------------------- +%% Copyright (C) 2004-2006 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. +%% +\csname PSTXKeyLoaded\endcsname +\let\PSTXKeyLoaded\endinput +\edef\PSTXKeyCatcodes{% + \catcode`\noexpand\@\the\catcode`\@\relax + \let\noexpand\PSTXKeyCatcodes\relax +} +\catcode`\@=11\relax +\ifx\ProvidesFile\@undefined + \message{2005/11/25 v1.6 PSTricks specialization of xkeyval (HA)} + \ifx\XKeyValLoaded\endinput\else\input xkeyval \fi +\else + \ProvidesFile{pst-xkey.tex} + [2005/11/25 v1.6 PSTricks specialization of xkeyval (HA)] + \@addtofilelist{pst-xkey.tex} + \RequirePackage{xkeyval} +\fi +\def\pst@famlist{} +\def\pst@addfams#1{% + \XKV@for@n{#1}\XKV@tempa{% + \@expandtwoargs\in@{,\XKV@tempa,}{,\pst@famlist,}% + \ifin@\else\edef\pst@famlist{\pst@famlist,\XKV@tempa}\fi + }% +} +\def\psset{% + \expandafter\@testopt\expandafter\pss@t\expandafter{\pst@famlist}% +} +\def\pss@t[#1]#2{\setkeys+[psset]{#1}{#2}\ignorespaces} +\def\@psset#1,\@nil{% + \edef\XKV@tempa{\noexpand\setkeys+[psset]{\pst@famlist}}% + \XKV@tempa{#1}% +} +\PSTXKeyCatcodes +\endinput +%% +%% End of file `pst-xkey.tex'. diff --git a/Master/texmf-dist/tex/generic/xkeyval/xkeyval.tex b/Master/texmf-dist/tex/generic/xkeyval/xkeyval.tex new file mode 100644 index 00000000000..ed42476ca6f --- /dev/null +++ b/Master/texmf-dist/tex/generic/xkeyval/xkeyval.tex @@ -0,0 +1,844 @@ +%% +%% This is file `xkeyval.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xkeyval.dtx (with options: `xkvtex') +%% +%% --------------------------------------- +%% Copyright (C) 2004-2006 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. +%% +\csname XKeyValLoaded\endcsname +\let\XKeyValLoaded\endinput +\edef\XKVcatcodes{% + \catcode`\noexpand\@\the\catcode`\@\relax + \catcode`\noexpand\=\the\catcode`\=\relax + \catcode`\noexpand\,\the\catcode`\,\relax + \catcode`\noexpand\:\the\catcode`\:\relax + \let\noexpand\XKVcatcodes\relax +} +\catcode`\@11\relax +\catcode`\=12\relax +\catcode`\,12\relax +\catcode`\:12\relax +\newtoks\XKV@toks +\newcount\XKV@depth +\newif\ifXKV@st +\newif\ifXKV@sg +\newif\ifXKV@pl +\newif\ifXKV@knf +\newif\ifXKV@rkv +\newif\ifXKV@inpox +\newif\ifXKV@preset +\let\XKV@rm\@empty +\ifx\ProvidesFile\@undefined + \message{2006/11/18 v2.5f key=value parser (HA)} + \input xkvtxhdr +\else + \ProvidesFile{xkeyval.tex}[2006/11/18 v2.5f key=value parser (HA)] + \@addtofilelist{xkeyval.tex} +\fi +\long\def\@firstoftwo#1#2{#1} +\long\def\@secondoftwo#1#2{#2} +\long\def\XKV@afterfi#1\fi{\fi#1} +\long\def\XKV@afterelsefi#1\else#2\fi{\fi#1} +\ifx\ifcsname\@undefined\XKV@afterelsefi + \def\XKV@ifundefined#1{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname#1\endcsname\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + } +\else + \def\XKV@ifundefined#1{% + \ifcsname#1\endcsname + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi + } +\fi +\XKV@ifundefined{ver@keyval.sty}{ + \input keyval + \expandafter\def\csname ver@keyval.sty\endcsname{1999/03/16} +}{} +\long\def\@ifnextcharacter#1#2#3{% + \@ifnextchar\bgroup + {\@ifnextchar{#1}{#2}{#3}}% + {\@ifncharacter{#1}{#2}{#3}}% +} +\long\def\@ifncharacter#1#2#3#4{% + \if\string#1\string#4% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {#2}{#3}#4% +} +\long\def\XKV@for@n#1#2#3{% + \def#2{#1}% + \ifx#2\@empty + \XKV@for@break + \else + \expandafter\XKV@f@r + \fi + #2{#3}#1,\@nil,% +} +\long\def\XKV@f@r#1#2#3,{% + \def#1{#3}% + \ifx#1\@nnil + \expandafter\@gobbletwo + \else + #2\expandafter\XKV@f@r + \fi + #1{#2}% +} +\long\def\XKV@for@break #1\@nil,{\fi} +\long\def\XKV@for@o#1{\expandafter\XKV@for@n\expandafter{#1}} +\long\def\XKV@for@en#1#2#3{\XKV@f@r#2{#3}#1,\@nil,} +\long\def\XKV@for@eo#1#2#3{% + \def#2{\XKV@f@r#2{#3}}\expandafter#2#1,\@nil,% +} +\long\def\XKV@whilist#1#2#3\fi#4{% + #3\expandafter\XKV@wh@list#1,\@nil,\@nil\@@#2#3\fi{#4}{}\fi +} +\long\def\XKV@wh@list#1,#2\@@#3#4\fi#5#6{% + \def#3{#1}% + \ifx#3\@nnil + \def#3{#6}\expandafter\XKV@wh@l@st + \else + #4% + #5\expandafter\expandafter\expandafter\XKV@wh@list + \else + \def#3{#6}\expandafter\expandafter\expandafter\XKV@wh@l@st + \fi + \fi + #2\@@#3#4\fi{#5}{#1}% +} +\long\def\XKV@wh@l@st#1\@@#2#3\fi#4#5{} +\def\XKV@addtomacro@n#1#2{% + \expandafter\def\expandafter#1\expandafter{#1#2}% +} +\def\XKV@addtomacro@o#1#2{% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter#1\expandafter + \expandafter\expandafter{\expandafter#1#2}% +} +\def\XKV@addtolist@n#1#2{% + \ifx#1\@empty + \XKV@addtomacro@n#1{#2}% + \else + \XKV@addtomacro@n#1{,#2}% + \fi +} +\def\XKV@addtolist@o#1#2{% + \ifx#1\@empty + \XKV@addtomacro@o#1#2% + \else + \XKV@addtomacro@o#1{\expandafter,#2}% + \fi +} +\def\XKV@addtolist@x#1#2{\edef#1{#1\ifx#1\@empty\else,\fi#2}} +\def\@selective@sanitize{\@testopt\@s@lective@sanitize\@M} +\def\@s@lective@sanitize[#1]#2#3{% + \begingroup + \count@#1\relax\advance\count@\@ne + \XKV@toks\expandafter{#3}% + \def#3{#2}\@onelevel@sanitize#3% + \edef#3{{#3}{\the\XKV@toks}}% + \expandafter\@s@l@ctive@sanitize\expandafter#3#3% + \expandafter\endgroup\expandafter\def\expandafter#3\expandafter{#3}% +} +\def\@s@l@ctive@sanitize#1#2#3{% + \def\@i{\futurelet\@@tok\@ii}% + \def\@ii{% + \expandafter\@iii\meaning\@@tok\relax + \ifx\@@tok\@s@l@ctive@sanitize + \let\@@cmd\@gobble + \else + \ifx\@@tok\@sptoken + \XKV@toks\expandafter{#1}\edef#1{\the\XKV@toks\space}% + \def\@@cmd{\afterassignment\@i\let\@@tok= }% + \else + \let\@@cmd\@iv + \fi + \fi + \@@cmd + }% + \def\@iii##1##2\relax{\if##1\@backslashchar\let\@@tok\relax\fi}% + \def\@iv##1{% + \toks@\expandafter{#1}\XKV@toks{##1}% + \ifx\@@tok\bgroup + \advance\count@\m@ne + \ifnum\count@>\z@ + \begingroup + \def#1{\expandafter\@s@l@ctive@sanitize + \csname\string#1\endcsname{#2}}% + \expandafter#1\expandafter{\the\XKV@toks}% + \XKV@toks\expandafter\expandafter\expandafter + {\csname\string#1\endcsname}% + \edef#1{\noexpand\XKV@toks{\the\XKV@toks}}% + \expandafter\endgroup#1% + \fi + \edef#1{\the\toks@{\the\XKV@toks}}% + \advance\count@\@ne + \let\@@cmd\@i + \else + \edef#1{\expandafter\string\the\XKV@toks}% + \expandafter\in@\expandafter{#1}{#2}% + \edef#1{\the\toks@\ifin@#1\else + \ifx\@@tok\@sptoken\space\else\the\XKV@toks\fi\fi}% + \edef\@@cmd{\noexpand\@i\ifx\@@tok\@sptoken\the\XKV@toks\fi}% + \fi + \@@cmd + }% + \let#1\@empty\@i#3\@s@l@ctive@sanitize +} +\def\XKV@checksanitizea#1#2{% + \XKV@ch@cksanitize{#1}#2=% + \ifin@\else\XKV@ch@cksanitize{#1}#2,\fi + \ifin@\@selective@sanitize[0]{,=}#2\fi +} +\def\XKV@checksanitizeb#1#2{% + \XKV@ch@cksanitize{#1}#2,% + \ifin@\@selective@sanitize[0],#2\fi +} +\def\XKV@ch@cksanitize#1#2#3{% + \def#2{#1}% + \@onelevel@sanitize#2% + \@expandtwoargs\in@#3{#2}% + \ifin@ + \def#2##1#3##2\@nil{% + \def#2{##2}% + \ifx#2\@empty\else\in@false\fi + }% + #2#1#3\@nil + \fi + \def#2{#1}% +} +\def\XKV@sp@deflist#1#2{% + \let#1\@empty + \XKV@for@n{#2}\XKV@resa{% + \expandafter\KV@@sp@def\expandafter\XKV@resa\expandafter{\XKV@resa}% + \XKV@addtomacro@o#1{\expandafter,\XKV@resa}% + }% + \ifx#1\@empty\else + \def\XKV@resa,##1\@nil{\def#1{##1}}% + \expandafter\XKV@resa#1\@nil + \fi +} +\def\XKV@merge#1#2#3{% + \XKV@checksanitizea{#2}\XKV@tempa + \XKV@for@o\XKV@tempa\XKV@tempa{% + \XKV@pltrue + #3\XKV@tempa\XKV@tempb + \let\XKV@tempc#1% + \let#1\@empty + \XKV@for@o\XKV@tempc\XKV@tempc{% + #3\XKV@tempc\XKV@tempd + \ifx\XKV@tempb\XKV@tempd + \XKV@plfalse + \XKV@addtolist@o#1\XKV@tempa + \else + \XKV@addtolist@o#1\XKV@tempc + \fi + }% + \ifXKV@pl\XKV@addtolist@o#1\XKV@tempa\fi + }% + \ifXKV@st\global\let#1#1\fi +} +\def\XKV@delete#1#2#3{% + \XKV@checksanitizeb{#2}\XKV@tempa + \let\XKV@tempb#1% + \let#1\@empty + \XKV@for@o\XKV@tempb\XKV@tempb{% + #3\XKV@tempb\XKV@tempc + \@expandtwoargs\in@{,\XKV@tempc,}{,\XKV@tempa,}% + \ifin@\else\XKV@addtolist@o#1\XKV@tempb\fi + }% + \ifXKV@st\global\let#1#1\fi +} +\def\XKV@warn#1{\message{xkeyval warning: #1}} +\def\XKV@err#1{\errmessage{xkeyval error: #1}} +\def\KV@errx{\XKV@err} +\let\KV@err\KV@errx +\def\XKV@ifstar#1{\@ifnextcharacter*{\@firstoftwo{#1}}} +\def\XKV@ifplus#1{\@ifnextcharacter+{\@firstoftwo{#1}}} +\def\XKV@makepf#1{% + \KV@@sp@def\XKV@prefix{#1}% + \def\XKV@resa{XKV}% + \ifx\XKV@prefix\XKV@resa + \XKV@err{`XKV' prefix is not allowed}% + \let\XKV@prefix\@empty + \else + \edef\XKV@prefix{\ifx\XKV@prefix\@empty\else\XKV@prefix @\fi}% + \fi +} +\def\XKV@makehd#1{% + \expandafter\KV@@sp@def\expandafter\XKV@header\expandafter{#1}% + \edef\XKV@header{% + \XKV@prefix\ifx\XKV@header\@empty\else\XKV@header @\fi + }% +} +\def\XKV@srstate#1#2{% + \ifx\@empty#2\@empty\advance\XKV@depth\@ne\fi + \XKV@for@n{XKV@prefix,XKV@fams,XKV@tkey,XKV@na,% + XKV@rm,ifXKV@st,ifXKV@pl,ifXKV@knf}\XKV@resa{% + \expandafter\let\csname\XKV@resa#1\expandafter + \endcsname\csname\XKV@resa#2\endcsname + }% + \ifx\@empty#1\@empty\advance\XKV@depth\m@ne\fi +} +\def\XKV@testopta#1{% + \XKV@ifstar{\XKV@sttrue\XKV@t@stopta{#1}}% + {\XKV@stfalse\XKV@t@stopta{#1}}% +} +\def\XKV@t@stopta#1{\XKV@ifplus{\XKV@pltrue#1}{\XKV@plfalse#1}} +\def\XKV@testoptb#1{\@testopt{\XKV@t@stoptb#1}{KV}} +\def\XKV@t@stoptb#1[#2]#3{% + \XKV@makepf{#2}% + \XKV@makehd{#3}% + \KV@@sp@def\XKV@tfam{#3}% + #1% +} +\def\XKV@testoptc#1{\@testopt{\XKV@t@stoptc#1}{KV}} +\def\XKV@t@stoptc#1[#2]#3{% + \XKV@makepf{#2}% + \XKV@checksanitizeb{#3}\XKV@fams + \expandafter\XKV@sp@deflist\expandafter + \XKV@fams\expandafter{\XKV@fams}% + \@testopt#1{}% +} +\def\XKV@testoptd#1#2{% + \XKV@testoptb{% + \edef\XKV@tempa{#2\XKV@header}% + \def\XKV@tempb{\@testopt{\XKV@t@stoptd#1}}% + \expandafter\XKV@tempb\expandafter{\XKV@tempa}% + }% +} +\def\XKV@t@stoptd#1[#2]#3{% + \@ifnextchar[{\XKV@sttrue#1{#2}{#3}}{\XKV@stfalse#1{#2}{#3}[]}% +} +\def\XKV@ifcmd#1#2#3{% + \def\XKV@@ifcmd##1#2##2##3\@nil##4{% + \def##4{##2}\ifx##4\@nnil + \def##4{##1}\expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi + }% + \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{% + \XKV@ifcmd{#1}\savevalue#3{\XKV@rkvtrue\XKV@sgfalse}{% + \XKV@ifcmd{#1}\gsavevalue#3% + {\XKV@rkvtrue\XKV@sgtrue}{\XKV@rkvfalse\XKV@sgfalse}% + }% +} +\def\XKV@getsg#1#2{% + \expandafter\XKV@ifcmd\expandafter{#1}\global#2\XKV@sgtrue\XKV@sgfalse +} +\def\XKV@define@default#1#2{% + \expandafter\def\csname\XKV@header#1@default\expandafter + \endcsname\expandafter{\csname\XKV@header#1\endcsname{#2}}% +} +\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% + }% +} +\def\XKV@d@fine@k@y#1[#2]{% + \XKV@define@default{#1}{#2}% + \expandafter\def\csname\XKV@header#1\endcsname##1% +} +\def\define@cmdkey{\XKV@testoptd\XKV@define@cmdkey{cmd}} +\def\XKV@define@cmdkey#1#2[#3]#4{% + \ifXKV@st\XKV@define@default{#2}{#3}\fi + \def\XKV@tempa{\expandafter\def\csname\XKV@header#2\endcsname####1}% + \begingroup\expandafter\endgroup\expandafter\XKV@tempa\expandafter + {\expandafter\def\csname#1#2\endcsname{##1}#4}% +} +\def\define@cmdkeys{\XKV@testoptd\XKV@define@cmdkeys{cmd}} +\def\XKV@define@cmdkeys#1#2[#3]{% + \XKV@sp@deflist\XKV@tempa{#2}% + \XKV@for@o\XKV@tempa\XKV@tempa{% + \edef\XKV@tempa{\noexpand\XKV@define@cmdkey{#1}{\XKV@tempa}}% + \XKV@tempa[#3]{}% + }% +} +\def\define@choicekey{\XKV@testopta{\XKV@testoptb\XKV@define@choicekey}} +\def\XKV@define@choicekey#1{\@testopt{\XKV@d@fine@choicekey{#1}}{}} +\def\XKV@d@fine@choicekey#1[#2]#3{% + \toks@{#2}% + \XKV@sp@deflist\XKV@tempa{#3}\XKV@toks\expandafter{\XKV@tempa}% + \@ifnextchar[{\XKV@d@fine@ch@icekey{#1}}{\XKV@d@fine@ch@ic@key{#1}}% +} +\def\XKV@d@fine@ch@icekey#1[#2]{% + \XKV@define@default{#1}{#2}% + \XKV@d@fine@ch@ic@key{#1}% +} +\def\XKV@d@fine@ch@ic@key#1{% + \ifXKV@pl\XKV@afterelsefi + \expandafter\XKV@d@f@ne@ch@ic@k@y + \else\XKV@afterfi + \expandafter\XKV@d@f@ne@ch@ic@key + \fi + \csname\XKV@header#1\endcsname +} +\def\XKV@d@f@ne@ch@ic@key#1#2{\XKV@d@f@n@@ch@ic@k@y#1{{#2}}} +\def\XKV@d@f@ne@ch@ic@k@y#1#2#3{\XKV@d@f@n@@ch@ic@k@y#1{{#2}{#3}}} +\def\XKV@d@f@n@@ch@ic@k@y#1#2{% + \edef#1##1{% + \ifXKV@st\noexpand\XKV@sttrue\else\noexpand\XKV@stfalse\fi + \ifXKV@pl\noexpand\XKV@pltrue\else\noexpand\XKV@plfalse\fi + \noexpand\XKV@checkchoice[\the\toks@]{##1}{\the\XKV@toks}% + }% + \def\XKV@tempa{\def#1####1}% + \expandafter\XKV@tempa\expandafter{#1{##1}#2}% +} +\def\define@boolkey{\XKV@t@stopta{\XKV@testoptd\XKV@define@boolkey{}}} +\def\XKV@define@boolkey#1#2[#3]{% + \ifXKV@pl\XKV@afterelsefi + \expandafter\XKV@d@f@ne@boolkey + \else\XKV@afterfi + \expandafter\XKV@d@fine@boolkey + \fi + \csname\XKV@header#2\endcsname{#2}{#1#2}{#3}% +} +\def\XKV@d@fine@boolkey#1#2#3#4#5{% + \XKV@d@f@ne@b@olkey#1{#2}{#3}{#4}% + {{\csname#3\XKV@resa\endcsname#5}}% +} +\def\XKV@d@f@ne@boolkey#1#2#3#4#5#6{% + \XKV@d@f@ne@b@olkey#1{#2}{#3}{#4}% + {{\csname#3\XKV@resa\endcsname#5}{#6}}% +} +\def\XKV@d@f@ne@b@olkey#1#2#3#4#5{% + \expandafter\newif\csname if#3\endcsname + \ifXKV@st\XKV@define@default{#2}{#4}\fi + \ifXKV@pl + \def#1##1{\XKV@pltrue\XKV@sttrue + \XKV@checkchoice[\XKV@resa]{##1}{true,false}#5% + }% + \else + \def#1##1{\XKV@plfalse\XKV@sttrue + \XKV@checkchoice[\XKV@resa]{##1}{true,false}#5% + }% + \fi +} +\def\define@boolkeys{\XKV@plfalse\XKV@testoptd\XKV@define@boolkeys{}} +\def\XKV@define@boolkeys#1#2[#3]{% + \XKV@sp@deflist\XKV@tempa{#2}% + \XKV@for@o\XKV@tempa\XKV@tempa{% + \expandafter\XKV@d@fine@boolkeys\expandafter{\XKV@tempa}{#1}{#3}% + }% +} +\def\XKV@d@fine@boolkeys#1#2#3{% + \expandafter\XKV@d@f@ne@b@olkey\csname\XKV@header#1\endcsname + {#1}{#2#1}{#3}{{\csname#2#1\XKV@resa\endcsname}}% +} +\def\XKV@cc{\XKV@testopta{\@testopt\XKV@checkchoice{}}} +\def\XKV@checkchoice[#1]#2#3{% + \def\XKV@tempa{#1}% + \ifXKV@st\lowercase{\fi + \ifx\XKV@tempa\@empty + \def\XKV@tempa{\XKV@ch@ckch@ice\@nil{#2}{#3}}% + \else + \def\XKV@tempa{\XKV@ch@ckchoice#1\@nil{#2}{#3}}% + \fi + \ifXKV@st}\fi\XKV@tempa +} +\def\XKV@ch@ckchoice#1#2\@nil#3#4{% + \def\XKV@tempa{#2}% + \ifx\XKV@tempa\@empty\XKV@afterelsefi + \XKV@ch@ckch@ice#1{#3}{#4}% + \else\XKV@afterfi + \XKV@@ch@ckchoice#1#2{#3}{#4}% + \fi +} +\def\XKV@ch@ckch@ice#1#2#3{% + \def\XKV@tempa{#1}% + \ifx\XKV@tempa\@nnil\let\XKV@tempa\@empty\else + \def\XKV@tempa{\def#1{#2}}% + \fi + \in@{,#2,}{,#3,}% + \ifin@ + \ifXKV@pl + \XKV@addtomacro@n\XKV@tempa\@firstoftwo + \else + \XKV@addtomacro@n\XKV@tempa\@firstofone + \fi + \else + \ifXKV@pl + \XKV@addtomacro@n\XKV@tempa\@secondoftwo + \else + \XKV@toks{#2}% + \XKV@err{value `\the\XKV@toks' is not allowed}% + \XKV@addtomacro@n\XKV@tempa\@gobble + \fi + \fi + \XKV@tempa +} +\def\XKV@@ch@ckchoice#1#2#3#4{% + \edef\XKV@tempa{\the\count@}\count@\z@ + \def\XKV@tempb{#3}% + \def\XKV@tempc##1,{% + \def#1{##1}% + \ifx#1\@nnil + \def#1{#3}\def#2{-1}\count@\XKV@tempa + \ifXKV@pl + \let\XKV@tempd\@secondoftwo + \else + \XKV@toks{#3}% + \XKV@err{value `\the\XKV@toks' is not allowed}% + \let\XKV@tempd\@gobble + \fi + \else + \ifx#1\XKV@tempb + \edef#2{\the\count@}\count@\XKV@tempa + \ifXKV@pl + \let\XKV@tempd\XKV@@ch@ckch@ice + \else + \let\XKV@tempd\XKV@@ch@ckch@ic@ + \fi + \else + \advance\count@\@ne + \let\XKV@tempd\XKV@tempc + \fi + \fi + \XKV@tempd + }% + \XKV@tempc#4,\@nil,% +} +\def\XKV@@ch@ckch@ice#1\@nil,{\@firstoftwo} +\def\XKV@@ch@ckch@ic@#1\@nil,{\@firstofone} +\def\key@ifundefined{\@testopt\XKV@key@ifundefined{KV}} +\def\XKV@key@ifundefined[#1]#2{% + \XKV@makepf{#1}% + \XKV@checksanitizeb{#2}\XKV@fams + \expandafter\XKV@sp@deflist\expandafter + \XKV@fams\expandafter{\XKV@fams}% + \XKV@key@if@ndefined +} +\def\XKV@key@if@ndefined#1{% + \XKV@knftrue + \KV@@sp@def\XKV@tkey{#1}% + \XKV@whilist\XKV@fams\XKV@tfam\ifXKV@knf\fi{% + \XKV@makehd\XKV@tfam + \XKV@ifundefined{\XKV@header\XKV@tkey}{}{\XKV@knffalse}% + }% + \ifXKV@knf + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\def\disable@keys{\XKV@testoptb\XKV@disable@keys} +\def\XKV@disable@keys#1{% + \XKV@checksanitizeb{#1}\XKV@tempa + \XKV@for@o\XKV@tempa\XKV@tempa{% + \XKV@ifundefined{\XKV@header\XKV@tempa}{% + \XKV@err{key `\XKV@tempa' undefined}% + }{% + \edef\XKV@tempb{% + \noexpand\XKV@warn{key `\XKV@tempa' has been disabled}% + }% + \XKV@ifundefined{\XKV@header\XKV@tempa @default}{% + \edef\XKV@tempc{\noexpand\XKV@define@key{\XKV@tempa}}% + }{% + \edef\XKV@tempc{\noexpand\XKV@define@key{\XKV@tempa}[]}% + }% + \expandafter\XKV@tempc\expandafter{\XKV@tempb}% + }% + }% +} +\def\presetkeys{\XKV@stfalse\XKV@testoptb\XKV@presetkeys} +\def\gpresetkeys{\XKV@sttrue\XKV@testoptb\XKV@presetkeys} +\def\XKV@presetkeys#1#2{% + \XKV@pr@setkeys{#1}{preseth}% + \XKV@pr@setkeys{#2}{presett}% +} +\def\XKV@pr@setkeys#1#2{% + \XKV@ifundefined{XKV@\XKV@header#2}{% + \XKV@checksanitizea{#1}\XKV@tempa + \ifXKV@st\expandafter\global\fi\expandafter\def\csname + XKV@\XKV@header#2\expandafter\endcsname\expandafter{\XKV@tempa}% + }{% + \expandafter\XKV@merge\csname XKV@\XKV@header + #2\endcsname{#1}\XKV@getkeyname + }% +} +\def\delpresetkeys{\XKV@stfalse\XKV@testoptb\XKV@delpresetkeys} +\def\gdelpresetkeys{\XKV@sttrue\XKV@testoptb\XKV@delpresetkeys} +\def\XKV@delpresetkeys#1#2{% + \XKV@d@lpresetkeys{#1}{preseth}% + \XKV@d@lpresetkeys{#2}{presett}% +} +\def\XKV@d@lpresetkeys#1#2{% + \XKV@ifundefined{XKV@\XKV@header#2}{% + \XKV@err{no presets defined for `\XKV@header'}% + }{% + \expandafter\XKV@delete\csname XKV@\XKV@header + #2\endcsname{#1}\XKV@getkeyname + }% +} +\def\unpresetkeys{\XKV@stfalse\XKV@testoptb\XKV@unpresetkeys} +\def\gunpresetkeys{\XKV@sttrue\XKV@testoptb\XKV@unpresetkeys} +\def\XKV@unpresetkeys{% + \XKV@ifundefined{XKV@\XKV@header preseth}{% + \XKV@err{no presets defined for `\XKV@header'}% + }{% + \ifXKV@st\expandafter\global\fi\expandafter\let + \csname XKV@\XKV@header preseth\endcsname\@undefined + \ifXKV@st\expandafter\global\fi\expandafter\let + \csname XKV@\XKV@header presett\endcsname\@undefined + }% +} +\def\savekeys{\XKV@stfalse\XKV@testoptb\XKV@savekeys} +\def\gsavekeys{\XKV@sttrue\XKV@testoptb\XKV@savekeys} +\def\XKV@savekeys#1{% + \XKV@ifundefined{XKV@\XKV@header save}{% + \XKV@checksanitizeb{#1}\XKV@tempa + \ifXKV@st\expandafter\global\fi\expandafter\def\csname XKV@% + \XKV@header save\expandafter\endcsname\expandafter{\XKV@tempa}% + }{% + \expandafter\XKV@merge\csname XKV@\XKV@header + save\endcsname{#1}\XKV@getsg + }% +} +\def\delsavekeys{\XKV@stfalse\XKV@testoptb\XKV@delsavekeys} +\def\gdelsavekeys{\XKV@sttrue\XKV@testoptb\XKV@delsavekeys} +\def\XKV@delsavekeys#1{% + \XKV@ifundefined{XKV@\XKV@header save}{% + \XKV@err{no save keys defined for `\XKV@header'}% + }{% + \expandafter\XKV@delete\csname XKV@\XKV@header + save\endcsname{#1}\XKV@getsg + }% +} +\def\unsavekeys{\XKV@stfalse\XKV@testoptb\XKV@unsavekeys} +\def\gunsavekeys{\XKV@sttrue\XKV@testoptb\XKV@unsavekeys} +\def\XKV@unsavekeys{% + \XKV@ifundefined{XKV@\XKV@header save}{% + \XKV@err{no save keys defined for `\XKV@header'}% + }{% + \ifXKV@st\expandafter\global\fi\expandafter\let + \csname XKV@\XKV@header save\endcsname\@undefined + }% +} +\def\setkeys{\XKV@testopta{\XKV@testoptc\XKV@setkeys}} +\def\XKV@setkeys[#1]#2{% + \XKV@checksanitizea{#2}\XKV@resb + \let\XKV@naa\@empty + \XKV@for@o\XKV@resb\XKV@tempa{% + \expandafter\XKV@g@tkeyname\XKV@tempa=\@nil\XKV@tempa + \XKV@addtolist@x\XKV@naa\XKV@tempa + }% + \let\XKV@rm\@empty + \XKV@usepresetkeys{#1}{preseth}% + \expandafter\XKV@s@tkeys\expandafter{\XKV@resb}{#1}% + \XKV@usepresetkeys{#1}{presett}% + \let\CurrentOption\@empty +} +\def\XKV@usepresetkeys#1#2{% + \XKV@presettrue + \XKV@for@eo\XKV@fams\XKV@tfam{% + \XKV@makehd\XKV@tfam + \XKV@ifundefined{XKV@\XKV@header#2}{}{% + \XKV@toks\expandafter\expandafter\expandafter + {\csname XKV@\XKV@header#2\endcsname}% + \@expandtwoargs\XKV@s@tkeys{\the\XKV@toks}% + {\XKV@naa\ifx\XKV@naa\@empty\else,\fi#1}% + }% + }% + \XKV@presetfalse +} +\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{% + \XKV@g@tkeyname#1=\@nil\XKV@tkey + \expandafter\KV@@sp@def\expandafter\XKV@tkey\expandafter{\XKV@tkey}% + \ifx\XKV@tkey\@empty + \XKV@toks{#2}% + \ifcat$\the\XKV@toks$\else + \XKV@err{no key specified for value `\the\XKV@toks'}% + \fi + \else + \@expandtwoargs\in@{,\XKV@tkey,}{,\XKV@na,}% + \ifin@\else + \XKV@knftrue + \KV@@sp@def\XKV@tempa{#2}% + \ifXKV@preset\XKV@s@tk@ys@{#3}\else + \ifXKV@pl + \XKV@for@eo\XKV@fams\XKV@tfam{% + \XKV@makehd\XKV@tfam + \XKV@s@tk@ys@{#3}% + }% + \else + \XKV@whilist\XKV@fams\XKV@tfam\ifXKV@knf\fi{% + \XKV@makehd\XKV@tfam + \XKV@s@tk@ys@{#3}% + }% + \fi + \fi + \ifXKV@knf + \ifXKV@inpox + \ifx\XKV@doxs\relax + \ifx\@currext\@clsextension\else + \let\CurrentOption\XKV@tkey\@unknownoptionerror + \fi + \else\XKV@doxs\fi + \else + \ifXKV@st + \global\XKV@addtolist@o\XKV@rm\CurrentOption + \else + \XKV@err{`\XKV@tkey' undefined in families `\XKV@fams'}% + \fi + \fi + \else + \ifXKV@inpox\ifx\XKV@testclass\XKV@documentclass + \expandafter\XKV@useoption\expandafter{\CurrentOption}% + \fi\fi + \fi + \fi + \fi +} +\def\XKV@s@tk@ys@#1{% + \XKV@ifundefined{\XKV@header\XKV@tkey}{}{% + \XKV@knffalse + \XKV@ifundefined{XKV@\XKV@header save}{}{% + \expandafter\XKV@testsavekey\csname XKV@\XKV@header + save\endcsname\XKV@tkey + }% + \ifXKV@rkv + \ifXKV@sg\expandafter\global\fi\expandafter\let + \csname XKV@\XKV@header\XKV@tkey @value\endcsname\XKV@tempa + \fi + \expandafter\XKV@replacepointers\expandafter{\XKV@tempa}% + \ifx\@empty#1\@empty\XKV@afterelsefi + \XKV@ifundefined{\XKV@header\XKV@tkey @default}{% + \XKV@err{no value specified for key `\XKV@tkey'}% + }{% + \expandafter\expandafter\expandafter\XKV@default + \csname\XKV@header\XKV@tkey @default\endcsname\@nil + }% + \else\XKV@afterfi + \XKV@srstate{@\romannumeral\XKV@depth}{}% + \csname\XKV@header\XKV@tkey\expandafter + \endcsname\expandafter{\XKV@tempa}\relax + \XKV@srstate{}{@\romannumeral\XKV@depth}% + \fi + }% +} +\def\XKV@testsavekey#1#2{% + \ifXKV@rkv\else + \XKV@for@o#1\XKV@resa{% + \expandafter\XKV@ifcmd\expandafter{\XKV@resa}\global\XKV@resa{% + \ifx#2\XKV@resa + \XKV@rkvtrue\XKV@sgtrue + \fi + }{% + \ifx#2\XKV@resa + \XKV@rkvtrue\XKV@sgfalse + \fi + }% + }% + \fi +} +\def\XKV@replacepointers#1{% + \let\XKV@tempa\@empty + \let\XKV@resa\@empty + \XKV@r@placepointers#1\usevalue\@nil +} +\def\XKV@r@placepointers#1\usevalue#2{% + \XKV@addtomacro@n\XKV@tempa{#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 + }{% + \@expandtwoargs\in@{,#2,}{,\XKV@resa,}% + \ifin@\XKV@afterelsefi + \XKV@err{back linking pointers; pointer replacement canceled}% + \else\XKV@afterfi + \XKV@addtolist@x\XKV@resa{#2}% + \expandafter\expandafter\expandafter\XKV@r@placepointers + \csname XKV@\XKV@header#2@value\endcsname + \fi + }% + \fi +} +\def\XKV@default#1#2\@nil{% + \expandafter\edef\expandafter\XKV@tempa + \expandafter{\expandafter\@gobble\string#1}% + \edef\XKV@tempb{\XKV@header\XKV@tkey}% + \@onelevel@sanitize\XKV@tempb + \ifx\XKV@tempa\XKV@tempb + \begingroup + \expandafter\def\csname\XKV@header\XKV@tkey\endcsname##1{% + \gdef\XKV@tempa{##1}% + }% + \csname\XKV@header\XKV@tkey @default\endcsname + \endgroup + \XKV@ifundefined{XKV@\XKV@header save}{}{% + \expandafter\XKV@testsavekey\csname XKV@\XKV@header + save\endcsname\XKV@tkey + }% + \ifXKV@rkv + \ifXKV@sg\expandafter\global\fi\expandafter\let + \csname XKV@\XKV@header\XKV@tkey @value\endcsname\XKV@tempa + \fi + \expandafter\XKV@replacepointers\expandafter + {\XKV@tempa}\XKV@afterelsefi + \XKV@srstate{@\romannumeral\XKV@depth}{}% + \expandafter#1\expandafter{\XKV@tempa}\relax + \XKV@srstate{}{@\romannumeral\XKV@depth}% + \else\XKV@afterfi + \XKV@srstate{@\romannumeral\XKV@depth}{}% + \csname\XKV@header\XKV@tkey @default\endcsname\relax + \XKV@srstate{}{@\romannumeral\XKV@depth}% + \fi +} +\def\setrmkeys{\XKV@testopta{\XKV@testoptc\XKV@setrmkeys}} +\def\XKV@setrmkeys[#1]{% + \def\XKV@tempa{\XKV@setkeys[#1]}% + \expandafter\XKV@tempa\expandafter{\XKV@rm}% +} +\XKVcatcodes +\endinput +%% +%% End of file `xkeyval.tex'. diff --git a/Master/texmf-dist/tex/generic/xkeyval/xkvtxhdr.tex b/Master/texmf-dist/tex/generic/xkeyval/xkvtxhdr.tex new file mode 100644 index 00000000000..5beb03c3bd2 --- /dev/null +++ b/Master/texmf-dist/tex/generic/xkeyval/xkvtxhdr.tex @@ -0,0 +1,91 @@ +%% +%% This is file `xkvtxhdr.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xkeyval.dtx (with options: `xkvheader') +%% +%% --------------------------------------- +%% Copyright (C) 2004-2006 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. +%% +%% +%% Taken from latex.ltx. +%% +\message{2005/02/22 v1.1 xkeyval TeX header (HA)} +\def\@nnil{\@nil} +\def\@empty{} +\def\newif#1{% + \count@\escapechar \escapechar\m@ne + \let#1\iffalse + \@if#1\iftrue + \@if#1\iffalse + \escapechar\count@} +\def\@if#1#2{% + \expandafter\def\csname\expandafter\@gobbletwo\string#1% + \expandafter\@gobbletwo\string#2\endcsname + {\let#1#2}} +\long\def\@ifnextchar#1#2#3{% + \let\reserved@d=#1% + \def\reserved@a{#2}% + \def\reserved@b{#3}% + \futurelet\@let@token\@ifnch} +\def\@ifnch{% + \ifx\@let@token\@sptoken + \let\reserved@c\@xifnch + \else + \ifx\@let@token\reserved@d + \let\reserved@c\reserved@a + \else + \let\reserved@c\reserved@b + \fi + \fi + \reserved@c} +\def\:{\let\@sptoken= } \: % this makes \@sptoken a space token +\def\:{\@xifnch} \expandafter\def\: {\futurelet\@let@token\@ifnch} +\let\kernel@ifnextchar\@ifnextchar +\long\def\@testopt#1#2{% + \kernel@ifnextchar[{#1}{#1[{#2}]}} +\long\def\@firstofone#1{#1} +\long\def \@gobble #1{} +\long\def \@gobbletwo #1#2{} +\def\@expandtwoargs#1#2#3{% +\edef\reserved@a{\noexpand#1{#2}{#3}}\reserved@a} +\edef\@backslashchar{\expandafter\@gobble\string\\} +\newif\ifin@ +\def\in@#1#2{% + \def\in@@##1#1##2##3\in@@{% + \ifx\in@##2\in@false\else\in@true\fi}% + \in@@#2#1\in@\in@@} +\def\strip@prefix#1>{} +\def \@onelevel@sanitize #1{% + \edef #1{\expandafter\strip@prefix + \meaning #1}% +} +\endinput +%% +%% End of file `xkvtxhdr.tex'. |