diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/xwatermark/keyreader.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/xwatermark/keyreader.sty | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/xwatermark/keyreader.sty b/Master/texmf-dist/tex/latex/xwatermark/keyreader.sty new file mode 100644 index 00000000000..1de651a1221 --- /dev/null +++ b/Master/texmf-dist/tex/latex/xwatermark/keyreader.sty @@ -0,0 +1,113 @@ +%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% +% This is file 'keyreader.sty', version 0.1. % +% % +% This package reads multiple keys to be defined by xkeyval.sty. % +% % +% 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 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) 2009 Ahmed Musa (a.musa@rocketmail.com). % +%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% +\begingroup +\catcode064=11% @ +\catcode123=01% { +\catcode125=02% } +\def\x{\endgroup + \edef\kr@restorecodeatend{% + \catcode035=\the\catcode035\relax + \catcode064=\the\catcode064\relax + \catcode123=\the\catcode123\relax + \catcode125=\the\catcode125\relax + }% +} +\x +\catcode035=06% # +\catcode064=11% @ +\catcode123=01% { +\catcode125=02% } +\def\kr@ensurecode#1#2{% + \edef\kr@restorecodeatend{% + \kr@restorecodeatend + \catcode#1=\the\catcode#1\relax + }% + \catcode#1=#2\relax +} +\AtEndOfPackage{\kr@restorecodeatend} +\kr@ensurecode{044}{12}% , +\kr@ensurecode{059}{12}% ; +\kr@ensurecode{038}{03}% & +\ProvidesPackage{keyreader}% + [2009/12/15 v0.1 Read keys for the xkeyval package (AM)] +\NeedsTeXFormat{LaTeX2e}[1996/12/01] +\RequirePackage{xkeyval}[2008/08/13] +\newcommand\kr@warn[1]{\PackageWarningNoLine{keyreader}{#1}} +\newcommand\kr@err[1]{\PackageError{keyreader}{#1}{\@ehc}} +\define@cmdkey[KV]{keyreader}[kr@]{parser}[;]{} +\define@cmdkey[KV]{keyreader}[kr@]{keyprefix}[KV]{} +\define@cmdkey[KV]{keyreader}[kr@]{keyfamily}[fam]{} +\define@cmdkey[KV]{keyreader}[kr@]{macroprefix}[mp@]{} +\DeclareOptionX*{\kr@warn{Unknown option '\CurrentOption' ignored}} +\ExecuteOptionsX[KV]<keyreader>{parser,keyprefix,keyfamily,macroprefix} +\ProcessOptionsX*[KV]<keyreader>\relax +\@ifdefinable\krsetup{% + \def\krsetup#1{\setkeys[KV]{keyreader}{#1}}% +} +\long\def\ifblank#1{\kr@ifblank#1&&\@secondoftwo\@firstoftwo:} +\long\def\kr@ifblank#1#2#4#5:{#4} +\@ifdefinable\stopread{% + \long\def\stopread#1&{\long\def\kr@remainder{#1}}% +} +\def\kr@allist{} +\gdef\kr@define@key#1,#2,#3,#4&{% + \edef\kr@keytype{#1}% + \edef\kr@key{#2}% + \edef\kr@default{#3}% + \def\kr@func{#4}% + \ifcase\number\kr@keytype\relax + \or + \edef\x{\noexpand\define@key[\kr@keyprefix]{\kr@keyfamily}% + {\kr@key}[\kr@default]{\expandafter\noexpand\kr@func}% + }\x + \or + \edef\x{\noexpand\define@cmdkey[\kr@keyprefix]{\kr@keyfamily}% + [\kr@macroprefix]{\kr@key}[\kr@default]{\expandafter\noexpand\kr@func}% + }\x + \or + \edef\x{\noexpand\define@boolkey[\kr@keyprefix]{\kr@keyfamily}% + [\kr@macroprefix]{\kr@key}[\kr@default]{\expandafter\noexpand\kr@func}% + }\x + \or + \ifx\kr@allist\@empty + \kr@err{'\string\kr@allist' is empty: choicekey can't be defined. + \MessageBreak You need to first define '\string\kr@allist' + \MessageBreak as a nonempty set}% + \fi + \edef\x{\noexpand\define@choicekey*[\kr@keyprefix]{\kr@keyfamily}{\kr@key}% + [\noexpand\kr@val\noexpand\kr@nr]{\kr@allist}[\kr@default]% + {\expandafter\noexpand\kr@func}% + }\x + \else + \kr@err{Unknown key type/identifier '\kr@keytype'}% + \fi +} +\newcount\kr@cnta +\newcommand\define@keylist[1]{% + \kr@cnta=\z@\relax\romannumeral-`\q\expandafter\kr@readlist#1;&} +\expandafter\def\expandafter\kr@readlist\expandafter#\expandafter 1\kr@parser#2&{% + \ifblank{#1}{}{% + \ifx#1\stopread\stopread#2&\kr@cnta=1\relax\else\kr@define@key#1&\fi + }% + \ifnum\kr@cnta=\z@\ifblank{#2}{}{\kr@readlist#2&}\fi +} + +\endinput
\ No newline at end of file |