summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/xwatermark/keyreader.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/xwatermark/keyreader.sty')
-rw-r--r--Master/texmf-dist/tex/latex/xwatermark/keyreader.sty113
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&#3#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