You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
152 lines
4.8 KiB
152 lines
4.8 KiB
%%
|
|
%% This is file `xkeyval.sty',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% xkeyval.dtx (with options: `xkvlatex')
|
|
%%
|
|
%% ---------------------------------------
|
|
%% 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, xkvutils.tex, 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, xkvutils.tex, pst-xkey.dtx and xkeyval.dtx.
|
|
%%
|
|
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
|
\ProvidesPackage{xkeyval}
|
|
[2014/12/03 v2.7a package option processing (HA)]
|
|
\ifx\XKeyValLoaded\endinput\else\input xkeyval \fi
|
|
\edef\XKVcatcodes{%
|
|
\catcode`\noexpand\=\the\catcode`\=\relax
|
|
\catcode`\noexpand\,\the\catcode`\,\relax
|
|
\let\noexpand\XKVcatcodes\relax
|
|
}
|
|
\catcode`\=12\relax
|
|
\catcode`\,12\relax
|
|
\let\XKV@doxs\relax
|
|
\def\XKV@warn#1{\PackageWarning{xkeyval}{#1}}
|
|
\def\XKV@err#1{\PackageError{xkeyval}{#1}\@ehc}
|
|
\XKV@whilist\@filelist\XKV@tempa\ifx\XKV@documentclass\@undefined\fi{%
|
|
\filename@parse\XKV@tempa
|
|
\ifx\filename@ext\@clsextension
|
|
\XKV@ifundefined{opt@\filename@area\filename@base.\filename@ext
|
|
}{}{%
|
|
\edef\XKV@documentclass{%
|
|
\filename@area\filename@base.\filename@ext
|
|
}%
|
|
}%
|
|
\fi
|
|
}
|
|
\ifx\XKV@documentclass\@undefined
|
|
\XKV@err{xkeyval loaded before \protect\documentclass}%
|
|
\let\XKV@documentclass\@empty
|
|
\let\XKV@classoptionslist\@empty
|
|
\else
|
|
\let\XKV@classoptionslist\@classoptionslist
|
|
\def\XKV@tempa#1{%
|
|
\let\@classoptionslist\@empty
|
|
\XKV@for@n{#1}\XKV@tempa{%
|
|
\expandafter\in@\expandafter=\expandafter{\XKV@tempa}%
|
|
\ifin@\else\XKV@addtolist@o\@classoptionslist\XKV@tempa\fi
|
|
}%
|
|
}
|
|
\expandafter\XKV@tempa\expandafter{\@classoptionslist}
|
|
\fi
|
|
\def\XKV@testopte#1{%
|
|
\XKV@ifstar{\XKV@sttrue\XKV@t@stopte#1}{\XKV@stfalse\XKV@t@stopte#1}%
|
|
}
|
|
\def\XKV@t@stopte#1{\@testopt{\XKV@t@st@pte#1}{KV}}
|
|
\def\XKV@t@st@pte#1[#2]{%
|
|
\XKV@makepf{#2}%
|
|
\@ifnextchar<{\XKV@@t@st@pte#1}%
|
|
{\XKV@@t@st@pte#1<\@currname.\@currext>}%
|
|
}
|
|
\def\XKV@@t@st@pte#1<#2>{%
|
|
\XKV@sp@deflist\XKV@fams{#2}%
|
|
\@testopt#1{}%
|
|
}
|
|
\def\DeclareOptionX{%
|
|
\let\@fileswith@pti@ns\@badrequireerror
|
|
\XKV@ifstar\XKV@dox\XKV@d@x
|
|
}
|
|
\long\def\XKV@dox#1{\XKV@toks{#1}\edef\XKV@doxs{\the\XKV@toks}}
|
|
\def\XKV@d@x{\@testopt\XKV@@d@x{KV}}
|
|
\def\XKV@@d@x[#1]{%
|
|
\@ifnextchar<{\XKV@@@d@x[#1]}{\XKV@@@d@x[#1]<\@currname.\@currext>}%
|
|
}
|
|
\def\XKV@@@d@x[#1]<#2>#3{\@testopt{\define@key[#1]{#2}{#3}}{}}
|
|
\def\ExecuteOptionsX{\XKV@stfalse\XKV@plfalse\XKV@t@stopte\XKV@setkeys}
|
|
\def\ProcessOptionsX{\XKV@plfalse\XKV@testopte\XKV@pox}
|
|
\def\XKV@pox[#1]{%
|
|
\let\XKV@tempa\@empty
|
|
\XKV@inpoxtrue
|
|
\let\@fileswith@pti@ns\@badrequireerror
|
|
\edef\XKV@testclass{\@currname.\@currext}%
|
|
\ifx\XKV@testclass\XKV@documentclass
|
|
\let\@unusedoptionlist\XKV@classoptionslist
|
|
\XKV@ifundefined{ver@xkvltxp.sty}{}{%
|
|
\@onelevel@sanitize\@unusedoptionlist
|
|
}%
|
|
\else
|
|
\ifXKV@st
|
|
\def\XKV@tempb##1,{%
|
|
\def\CurrentOption{##1}%
|
|
\ifx\CurrentOption\@nnil\else
|
|
\XKV@g@tkeyname##1=\@nil\CurrentOption
|
|
\XKV@key@if@ndefined{\CurrentOption}{}{%
|
|
\XKV@useoption{##1}%
|
|
\XKV@addtolist@n\XKV@tempa{##1}%
|
|
}%
|
|
\expandafter\XKV@tempb
|
|
\fi
|
|
}%
|
|
\expandafter\XKV@tempb\XKV@classoptionslist,\@nil,%
|
|
\fi
|
|
\fi
|
|
\expandafter\XKV@addtolist@o\expandafter
|
|
\XKV@tempa\csname opt@\@currname.\@currext\endcsname
|
|
\def\XKV@tempb{\XKV@setkeys[#1]}%
|
|
\expandafter\XKV@tempb\expandafter{\XKV@tempa}%
|
|
\let\XKV@doxs\relax
|
|
\let\XKV@rm\@empty
|
|
\XKV@inpoxfalse
|
|
\let\@fileswith@pti@ns\@@fileswith@pti@ns
|
|
\AtEndOfPackage{\let\@unprocessedoptions\relax}%
|
|
}
|
|
\def\XKV@useoption#1{%
|
|
\def\XKV@resa{#1}%
|
|
\XKV@ifundefined{ver@xkvltxp.sty}{}{%
|
|
\@onelevel@sanitize\XKV@resa
|
|
}%
|
|
\@expandtwoargs\@removeelement{\XKV@resa}%
|
|
{\@unusedoptionlist}\@unusedoptionlist
|
|
}
|
|
\DeclareOptionX*{%
|
|
\PackageWarning{xkeyval}{Unknown option `\CurrentOption'}%
|
|
}
|
|
\ProcessOptionsX
|
|
\XKVcatcodes
|
|
\endinput
|
|
%%
|
|
%% End of file `xkeyval.sty'.
|
|
|