From 234872ca368f7e9b20b71cb472263e21e9daaee5 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 6 Mar 2010 01:06:09 +0000 Subject: rm keyreader, withdrawn by author git-svn-id: svn://tug.org/texlive/trunk@17334 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/keyreader/keyreader.sty | 568 --------------------- 1 file changed, 568 deletions(-) delete mode 100644 Master/texmf-dist/tex/latex/keyreader/keyreader.sty (limited to 'Master/texmf-dist/tex/latex/keyreader') diff --git a/Master/texmf-dist/tex/latex/keyreader/keyreader.sty b/Master/texmf-dist/tex/latex/keyreader/keyreader.sty deleted file mode 100644 index da826d47d9b..00000000000 --- a/Master/texmf-dist/tex/latex/keyreader/keyreader.sty +++ /dev/null @@ -1,568 +0,0 @@ -%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% -% % -% This is file 'keyreader.sty', version 0.3. % -% % -% This package reads multiple keys to be defined by xkeyval.sty. % -% % -% This package and accompanying files may be distributed and/or modified under % -% the conditions of the LaTeX Project Public License, either version 1.3 of % -% this license or 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 2005/12/01 or later. % -% % -% The LPPL maintenance status of this software is 'author-maintained'. % -% % -% This software is provided 'as it is', without warranty of any kind, either % -% expressed or implied, including, but not limited to, the implied warranties of % -% merchantability and fitness for a particular purpose. % -% % -% Copyright (c) 2010 Ahmed Musa (a.musa@rocketmail.com). % -% % -%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% - -\begingroup -\catcode064 11% @ -\catcode123 01% { -\catcode125 02% } -\def\KR@tempa{\endgroup - \edef\KR@restorecodes{% - \catcode035 \the\catcode035% # - \catcode064 \the\catcode064% @ - \catcode123 \the\catcode123% { - \catcode125 \the\catcode125% } - \catcode061 \the\catcode061% = - }% -} -\KR@tempa -\@makeother{\=}% -\catcode035=06% # -\catcode064=11% @ -\catcode123=01% { -\catcode125=02% } -\def\KR@ensurecode#1#2{% - \edef\KR@restorecodes{% - \KR@restorecodes - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\AtEndOfPackage{\KR@restorecodes} -\KR@ensurecode{044}{12}% , -\KR@ensurecode{058}{12}% : -\KR@ensurecode{059}{12}% ; -\ProvidesPackage{keyreader}% - [2010/01/24 v0.3 Extensions for the xkeyval parser (AM)] -\NeedsTeXFormat{LaTeX2e}[1996/12/01] -\@ifpackageloaded{xkeyval}{}{\RequirePackage{xkeyval}[2008/08/13]} -\def\KR@nil{\noexpand\KR@nil} -\protected\long\def\KR@info#1{\PackageInfo{keyreader}{#1\@gobble}} -\protected\long\def\KR@warn#1{\PackageWarningNoLine{keyreader}{#1}} -\protected\long\def\KR@err#1#2{\PackageError{keyreader}{#1}{#2}} -\protected\long\def\KR@afterfi#1\fi{\fi#1} -\protected\long\def\KR@afterelsefi#1\else#2\fi{\fi#1} -\def\KR@commandlistparser#1{% - \long\def\KR@define@keylist##1##2{% - \mathchardef\KR@tempcntb=\z@ - ##1\KR@readlist##2#1\KR@nil - }% - \long\def\KR@readlist##1#1##2\KR@nil{% - \KR@ifblank{##1}{}% - {% - \KR@ifstrequal{##1}{\stopread}{% - \mathchardef\KR@tempcntb=\@ne - \stopread##2\KR@nil - }{% - \KR@define@multiple@keys##1\KR@nil - }% - }% - \ifnum\KR@tempcntb=\z@ - \KR@ifblank{##2}{}{\KR@readlist##2\KR@nil}% - \fi - }% -} -\def\KR@expandargs#1#2#3#4{% - \begingroup - \protected@edef\KR@tempa{\endgroup - \ifcase#1\relax - \noexpand#2{#3}% - \or - \unexpanded{#2#3}{#4}% - \or - \noexpand#2{#3}{#4}% - \or - {#2}{#3}{#4}% - \else - \KR@err{Erroneous expansion type '#1'}{\noexpand\@ehc} - \fi - }% - \KR@tempa -} -\long\def\KR@inputerr#1#2{% - \KR@err{Erroneous value '#1' for key '#2'}{% - Please use the correct value for key '#2'.}% -} -\protected\long\def\KR@ifblank#1{% - \KR@ifbl@nk#1\KR@nil\KR@nil\@secondoftwo\@firstoftwo:} -\long\def\KR@ifbl@nk#1#2\KR@nil#3#4#5:{#4} -\protected\def\KR@xifblank#1{\KR@expandargs{0}\KR@ifblank{#1}} -\def\KR@findescape#1{% - \begingroup - \escapechar=92\relax - \edef\KR@tempa{\expandafter\@car\string#1\@nil}% - \ifx\KR@tempa\@backslashchar - \aftergroup\@secondoftwo - \else - \aftergroup\@firstoftwo - \fi - \endgroup -} -\protected\long\def\KR@ifstrequal#1#2{% - \begingroup - \KR@expandargs{1}\KV@@sp@def\KR@tempa{\detokenize{#1}}% - \KR@expandargs{1}\KV@@sp@def\KR@tempb{\detokenize{#2}}% - \ifx\KR@tempa\KR@tempb - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup -} -\protected\long\def\KR@xifstrequal#1#2{% - \KR@expandargs{2}\KR@ifstrequal{#1}{#2}% -} -\def\KR@listparser@err{% - \KR@err{List parser '\KR@parser' not allowed}% - {Use semicolon (preferable) or colon.}% -} -\define@cmdkey[KV]{keyreader}[KR@]{parser}[;]{% - \@onelevel@sanitize\KR@parser - \KR@xifblank{\KR@parser}{\KR@listparser@err}{}% - \KR@expandargs{1}\KV@@sp@def\KR@parser\KR@parser% - \def\KR@tempa{,}% - \ifx\KR@parser\KR@tempa\KR@listparser@err\fi - \KR@expandargs{0}\KR@commandlistparser\KR@parser% -} -\def\KR@keyprefix@err{% - \KR@err{Key prefix '\KR@keyprefix' is not allowed}% - {Use another prefix.}% -} -\define@cmdkey[KV]{keyreader}[KR@]{keyprefix}[KV]{% - \KR@xifblank{\KR@keyprefix}{\KR@keyprefix@err}{}% - \KR@expandargs{1}\KV@@sp@def\KR@keyprefix\KR@keyprefix% - \XKV@for@n{KR,mp,fam,XKV}\KR@tempa{% - \ifx\KR@keyprefix\KR@tempa\KR@keyprefix@err\fi - }% -} -\def\KR@keyfamily@err{% - \KR@err{Key family '\KR@keyfamily' is not allowed}% - {Use another family name.}% -} -\define@cmdkey[KV]{keyreader}[KR@]{keyfamily}[fam]{% - \KR@xifblank{\KR@keyfamily}{\KR@keyfamily@err}{}% - \KR@expandargs{1}\KV@@sp@def\KR@keyfamily\KR@keyfamily% - \XKV@for@n{KR,mp,keyreader,KV,XKV}\KR@tempa{% - \ifx\KR@keyfamily\KR@tempa\KR@keyfamily@err\fi - }% -} -\def\KR@macroprefix@err{% - \KR@err{Macro prefix '\KR@macroprefix' is not allowed}% - {Use another prefix.}% -} -\define@cmdkey[KV]{keyreader}[KR@]{macroprefix}[mp@]{% - \KR@xifblank{\KR@macroprefix}{\KR@macroprefix@err}{}% - \KR@expandargs{1}\KV@@sp@def\KR@macroprefix\KR@macroprefix% - \XKV@for@n{KR,keyreader,fam,KV,XKV}\KR@tempa{% - \ifx\KR@macroprefix\KR@tempa\KR@macroprefix@err\fi - }% -} -\define@boolkey+[KV]{keyreader}[KR@]{xchoicelist}[true]{}{% - \KR@inputerr{#1}{xchoicelist}% -} -\DeclareOptionX*{\KR@warn{Unknown option '\CurrentOption' ignored}} -\ExecuteOptionsX[KV]{parser,keyprefix,keyfamily,macroprefix} -\ProcessOptionsX*[KV]\relax -\newcommand\krsetup[1]{\setkeys[KV]{keyreader}{#1}} -\def\KR@named@f#1#2{% - \ifcsname#2\endcsname - \expandafter\ifx\csname#2\endcsname\relax\else - \def\reserved@a{#2}% - \expandafter\expandafter\expandafter\@notdefinable - \fi - \else - \expandafter#1\csname#2\expandafter\endcsname - \fi -} -\def\KR@namedef#1{\KR@named@f\def{#1}} -\def\KR@n@medef#1#2{\expandafter\def\csname#1\endcsname{#2}} -\def\KR@nameedef#1{\KR@named@f\edef{#1}} -\def\KR@n@meedef#1#2{\expandafter\edef\csname#1\endcsname{#2}} -\def\KR@nameuse#1{\ifcsname#1\endcsname\csname#1\expandafter\endcsname\fi} -\def\KR@ifnamedef#1{% - \ifcsname#1\endcsname - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi -} -\def\KR@ifnameundef#1{% - \ifcsname#1\endcsname - \expandafter\ifx\csname#1\endcsname\relax - \expandafter\expandafter\expandafter\@firstoftwo - \else - \expandafter\expandafter\expandafter\@secondoftwo - \fi - \else - \expandafter\@firstoftwo - \fi -} -\long\def\KR@ifnextchar#1#2#3{% \new@ifnextchar - \let\tmp@d=#1\def\tmp@a{#2}\def\tmp@b{#3}% - \futurelet\@let@token\KR@ifnch -} -\long\def\KR@ifnch{\ifx\@let@token\tmp@d\let\tmp@b\tmp@a\fi\tmp@b} -\long\def\KR@testopt#1#2{\KR@ifnextchar[{#1}{#1[{#2}]}} -\long\def\KR@ifstar#1#2{\KR@ifnextchar*{\def\tmp@a*{#1}\tmp@a}{#2}} -\long\def\KR@expandonce#1{\unexpanded\expandafter{#1}} -\long\def\KR@csexpandonce#1{\expandafter\KR@expandonce\csname#1\endcsname} -\newcommand*\nameletcs[2]{\expandafter\let\csname#1\endcsname#2} -\newcommand*\csletname[2]{\expandafter\let\expandafter#1\csname#2\endcsname} -\newcommand*\nameletname[2]{% - \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname -} -\def\define@comp@boolkeys{\KR@testopt{\KR@comp@opta}{KV}} -\def\KR@comp@opta[#1]#2{\KR@testopt{\KR@define@comp@boolkeys[#1]{#2}}{mp@}} -\def\KR@define@comp@boolkeys[#1]#2[#3]#4[#5]#6#7#8{% - \KR@namedef{comp@#2@#4}{\KR@nameuse{if#3#4}\KR@nameuse{#3#6false}\fi}% - \KR@namedef{comp@#2@#6}{\KR@nameuse{if#3#6}\KR@nameuse{#3#4false}\fi}% - \KR@namedef{func@#2@#4}{#7}% - \KR@namedef{func@#2@#6}{#8}% - \begingroup\protected@edef\KR@tempa{\endgroup - \unexpanded{\define@boolkey+[#1]{#2}[#3]{#4}[#5]{% - \KR@nameuse{comp@#2@#4}\KR@nameuse{func@#2@#4}}% - {\KR@inputerr{##1}{#4}}% - }% - \unexpanded{\define@boolkey+[#1]{#2}[#3]{#6}[#5]{% - \KR@nameuse{comp@#2@#6}\KR@nameuse{func@#2@#6}}% - {\KR@inputerr{##1}{#6}}% - }% - }% - \KR@tempa -} -\newcommand*\KR@star@or@none{} -\newcommand*\KR@star@or@long[1]{% - \KR@ifstar {% - \let\l@ngrel@x\relax - \def\KR@star@or@none{*}#1% - }{% - \let\l@ngrel@x\long - \def\KR@star@or@none{}#1% - }% -} -\protected\long\def\requirecmd{\KR@star@or@long\KR@require@cmd} -\newcommand\KR@require@cmd[1]{% - \ifdefined#1% - \KR@afterelsefi - \expandafter\CheckCommand\KR@star@or@none - \else - \KR@afterfi - \expandafter\newcommand\KR@star@or@none - \fi - {#1}% -} -\def\@check@eq#1#2{% - \unless\ifx#1#2% - \KR@warn{% - Previous definition of \string#1\MessageBreak - doesn't match your new definition.\MessageBreak - *** I haven't redefined \string#1\space *** - }% - \fi -} -\protected\def\KR@undeftoggle@err#1{% - \KR@err{Toggle '#1' undefined}% - {You need to first define '#1' before use.}% -} -\protected\def\deftog#1{% - \KR@ifnamedef{KR@toggle@#1}{% - \KR@warn{Toggle '#1' redefined\on@line}% - }{}% - \nameletcs{KR@toggle@#1}\@secondoftwo -} -\protected\def\newtog#1{% - \KR@ifnamedef{KR@toggle@#1}{% - \KR@err{Toggle '#1' already defined}% - {Please provide a new toggle or redefine '#1'.}% - }{% - \nameletcs{KR@toggle@#1}\@secondoftwo - }% -} -\protected\def\providetog#1{% - \KR@ifnamedef{KR@toggle@#1}{% - \KR@info{Toggle '#1' already defined.\MessageBreak - Not redefined\on@line}% - }{% - \nameletcs{KR@toggle@#1}\@secondoftwo - }% -} -\protected\def\requiretog#1{% - \expandafter\requirecmd\csname KR@toggle@#1\endcsname[2]{##2}% -} -\protected\def\settog#1#2{% - \KR@ifnamedef{KR@toggle@#1}{% - \KR@ifnamedef{KR@t@ggle#2}{% - \nameletname{KR@toggle@#1}{KR@t@ggle#2}% - }{% - \KR@err{% - Inadmissible value '#2' for toggle '#1' - }{% - Valid values for toggles are 'true' and 'false'. - }% - }% - }{% - \KR@undeftoggle@err{#1}% - }% -} -\protected\def\togtrue#1{% - \KR@ifnamedef{KR@toggle@#1}{% - \nameletcs{KR@toggle@#1}\KR@t@ggletrue - }{% - \KR@undeftoggle@err{#1}% - }% -} -\protected\def\togfalse#1{% - \KR@ifnamedef{KR@toggle@#1}{% - \nameletcs{KR@toggle@#1}\KR@t@gglefalse - }{% - \KR@undeftoggle@err{#1}% - }% -} -\global\let\KR@t@ggletrue\@firstoftwo -\global\let\KR@t@gglefalse\@secondoftwo -\protected\def\iftog#1{% - \KR@ifnamedef{KR@toggle@#1}{% - \csname KR@toggle@#1\endcsname - }{% - \KR@undeftoggle@err{#1}% - }% -} -\protected\def\ifnottog#1{% - \KR@ifnamedef{KR@toggle@#1}{% - \csname KR@toggle@#1\endcsname\@secondoftwo\@firstoftwo - }{% - \KR@undeftoggle@err{#1}\@gobbletwo - }% -} -\def\define@togkey{\XKV@t@stopta{\XKV@testoptd\KR@define@togkey{}}} -\def\KR@define@togkey#1#2[#3]{% - \ifXKV@pl\KR@afterelsefi - \expandafter\KR@d@f@ne@togkey - \else\KR@afterfi - \expandafter\KR@d@fine@togkey - \fi - \csname\XKV@header#2\endcsname{#2}{#1#2}{#3}% -} -\def\KR@d@fine@togkey#1#2#3#4#5{% - \KR@d@f@ne@t@gkey#1{#2}{#3}{#4}% - {{\settog{#3}{\XKV@resa}#5}}% -} -\def\KR@d@f@ne@togkey#1#2#3#4#5#6{% - \KR@d@f@ne@t@gkey#1{#2}{#3}{#4}% - {{\settog{#3}{\XKV@resa}#5}{#6}}% -} -\def\KR@d@f@ne@t@gkey#1#2#3#4#5{% - \newtog{#3}% - \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@togkeys{\XKV@plfalse\XKV@testoptd\KR@define@togkeys{}} -\def\KR@define@togkeys#1#2[#3]{% - \XKV@sp@deflist\KR@tempa{#2}% - \XKV@for@o\KR@tempa\KR@tempa{% - \expandafter\KR@d@fine@togkeys\expandafter{\KR@tempa}{#1}{#3}% - }% -} -\def\KR@d@fine@togkeys#1#2#3{% - \expandafter\KR@d@f@ne@t@gkey\csname\XKV@header#1\endcsname - {#1}{#2#1}{#3}{{\settog{#2#1}{\XKV@resa}}}% -} -\@ifdefinable\stopread{% - \long\def\stopread#1\KR@nil{% - {\toks@{#1}\long\xdef\KR@remainder{\the\toks@}} - }% -} -\mathchardef\KR@tempcnta=\z@\mathchardef\KR@tempcntb=\z@ -\mathchardef\KR@tempcntc=\z@ -\protected\long\def\define@keylist{% - \KR@ifstar{\KR@define@keylist\expandafter}% - {\KR@define@keylist\@firstofone}% -} -\newcommand\ChoiceKeyValues[2]{% - \ifKR@xchoicelist - \KR@n@meedef{\KR@keyfamily @#1@altlist}{#2}% - \else - \KR@ifnameundef{\KR@keyfamily @#1@altlist}{% - \KR@nameedef{\KR@keyfamily @#1@altlist}{#2}% - }{% - \KR@err{% - You have attempted to set two \MessageBreak - \string\ChoiceKeyValues\space for the choice\MessageBreak - key '#1' in the same family '\KR@keyfamily' - }{% - You can only do that if you set 'xchoicelist'=true. - }% - }% - \fi -} -\@ifdefinable\CKVS{\global\let\CKVS\ChoiceKeyValues} -\def\KR@define@multiple@keys#1,#2,#3,#4\KR@nil{% - \edef\KR@tempa{\string\if\KR@macroprefix#2}% - \@onelevel@sanitize\KR@tempa - \KR@expandargs{2}\in@{\KR@tempa}{\detokenize{#4}}% - \ifin@ - \KR@afterfi - \KR@err{% - You can't use \string\if\space and \string\fi\space in key macro - }{% - Use \string\fif\space and \string\ffi\space instead. - }% - \fi - \KR@expandargs{2}\in@{\detokenize{\fif}}{\detokenize{#4}}% - \ifin@ - \KR@afterelsefi - \KR@namedef{\KR@keyfamily @#2@func}{#4}% - \else - \KR@afterfi - \KR@nameedef{\KR@keyfamily @#2@func}{\KR@expandonce{#4}}% - \fi - \begingroup - \protected@edef\KR@tempa{\endgroup - \ifcase#1\relax - \mathchardef\KR@tempcntc=\@ne - \or - \noexpand\define@key[\KR@keyprefix]{\KR@keyfamily}% - {#2}[#3]{% - \KR@namedef{\KR@keyfamily @#2@value}{\unexpanded{##1}}% - \noexpand\KR@nameuse{\KR@keyfamily @#2@func}% - }% - \or - \noexpand\define@cmdkey[\KR@keyprefix]{\KR@keyfamily}% - [\KR@macroprefix]{#2}[#3]{% - \KR@namedef{\KR@keyfamily @#2@value}{\unexpanded{##1}}% - \noexpand\KR@nameuse{\KR@keyfamily @#2@func}% - }% - \or - \noexpand\define@boolkey+[\KR@keyprefix]{\KR@keyfamily}% - [\KR@macroprefix]{#2}[#3]{% - \KR@namedef{\KR@keyfamily @#2@value}{\unexpanded{##1}}% - \noexpand\KR@nameuse{\KR@keyfamily @#2@func}% - }{% - \unexpanded{\KR@inputerr{##1}{#2}}% - }% - \or - \noexpand\define@togkey+[\KR@keyprefix]{\KR@keyfamily}% - [\KR@macroprefix]{#2}[#3]{% - \KR@namedef{\KR@keyfamily @#2@value}{\unexpanded{##1}}% - \noexpand\KR@nameuse{\KR@keyfamily @#2@func}% - }{% - \unexpanded{\KR@inputerr{##1}{#2}}% - }% - \or - \KR@ifnameundef{\KR@keyfamily @#2@altlist}{% - \mathchardef\KR@tempcnta=\@ne}{}% - \noexpand\define@choicekey*+[\KR@keyprefix]{\KR@keyfamily}{#2}% - [\unexpanded{\val\nr}]{% - \KR@nameuse{\KR@keyfamily @#2@altlist}% - }[#3]{% - \KR@namedef{\KR@keyfamily @#2@value}{\unexpanded{##1}}% - \noexpand\KR@nameuse{\KR@keyfamily @#2@func}% - }{% - \unexpanded{\KR@inputerr{##1}{#2}}% - }% - \else - \mathchardef\KR@tempcntc=\@ne - \fi - }% - \KR@tempa - \ifnum\KR@tempcnta=\@ne - \KR@afterfi - \KR@err{% - Choice key '#2' can't be defined.\MessageBreak - Alternate key values list for '#2' is empty - }{% - You need to first define admissible\MessageBreak - key values through '\string\ChoiceKeyValues'\MessageBreak - for choice key '#2' - }% - \fi - \ifnum\KR@tempcntc=\@ne - \KR@afterfi - \KR@err{% - Unknown key type/identifier '#1' - }{% - You can only use key types 1 to 5. - }% - \fi -} -\def\krsetkeys{% - \def\fif##1{% - \KR@findescape{##1}{}{% - \KR@err{Bad argument '\string##1'}% - {Backslash in '\string##1' not allowed.}% - }% - \csname if##1\endcsname - }% - \let\ffi\fi - \XKV@testopta{\XKV@testoptc\XKV@setkeys}% -} -\protected\def\KR@disabledkey@err{% - \KR@err{% - Key '\KR@disabledkey' has been disabled - }{% - You can't set or reset '\KR@disabledkey' at this\MessageBreak - late stage. You should have set it \MessageBreak - earlier in \string\documentclass\space or \string\usepackage - }% -} -\def\krdisable@keys{\XKV@testoptb\KR@dis@ble@keys} -\long\def\KR@dis@ble@keys#1{% - \XKV@checksanitizeb{#1}\KR@tempa - \XKV@for@o\KR@tempa\KR@tempa{% - \XKV@ifundefined{\XKV@header\KR@tempa}{% - \KR@warn{Key '\KR@tempa' undefined: can't be disabled\on@line}% - }{% - \global\let\KR@disabledkey\KR@tempa - }% - \XKV@ifundefined{\XKV@header\KR@tempa @default}{% - \edef\KR@tempb{\noexpand\XKV@define@key{\KR@tempa}}% - }{% - \edef\KR@tempb{\noexpand\XKV@define@key{\KR@tempa}[]}% - }% - \expandafter\KR@tempb\expandafter{\KR@disabledkey@err}% - }% -} -\protected\def\KR@cs#1#2{% - \begingroup\toks@{#1}% - \edef\@i{\the\toks@}\@onelevel@sanitize\@i - \KR@expandargs{1}\KV@@sp@def\@i{\@i}% - \tt\textup{\textcolor{#2}{\KR@expandonce{\@i}}}% - \endgroup\xspace -} -\protected\def\KR@cx#1#2{% - \begingroup\toks@{#1}% - \edef\@i{\expandafter\expandafter\expandafter\zap@space% - \expandafter\detokenize\expandafter{\the\toks@} \@empty}% - \tt\textup{\textcolor{#2}{\KR@expandonce{\@i}}}% - \endgroup\xspace -} - -\endinput - -%%% End of file keyreader.sty %%% \ No newline at end of file -- cgit v1.2.3