%% %% This is file `makematch.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% makematch.dtx (with options: `package,etex') %% %% IMPORTANT NOTICE: %% %% For the copyright see the source file. %% %% Any modified versions of this file must be renamed %% with new filenames distinct from makematch.sty. %% %% For distribution of the original source see the terms %% for copying and modification in the file makematch.dtx. %% %% This generated file may be distributed as long as the %% original source files, as listed above, are part of the %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% %% Copyright (C) 2006, 2007 QuinScape GmbH %% http://www.quinscape.de \NeedsTeXFormat{LaTeX2e} \def\next$#1: #2.dtx #3 #4-#5-#6 #7${% \ProvidesPackage{#2}[#4/#5/#6 1.#3 Pattern matching with wildcards] } \next $Id: makematch.dtx 7925 2007-02-23 14:22:19Z dkastrup $ \newcommand\MakeMatcher[3][\relax]{% \edef#2{\detokenize{#3}}% \def\qst@mmtmp##1##2#1{\qst@parseonecase{##1}{##2}}% \let\qst@comma= #1\relax \edef#2##1{\noexpand\qst@setup##1% \expandafter\qst@parsestart\expandafter\@firstoftwo #2#1{#1\m@ne}\noexpand\qst@finish}} \long\def\qst@matchalways#1#2#3{#2} \long\def\qst@matchnever#1#2#3{#3} \def\qst@setup{\let\MatchedTarget\@undefined \let\qst@finish\@secondoftwo \futurelet\qst@matchlist\qst@setupii} \def\qst@setupii{\ifcase \ifcat\noexpand\qst@matchlist\bgroup\@ne\fi \ifx\qst@matchlist[\tw@\fi %] \m@ne \or \expandafter\MakeMatchTarget\expandafter\qst@matchlist \or \expandafter\qst@setupiii \else \expandafter\@gobble \fi} \def\qst@setupiii[#1]{\MakeMatchTarget[{#1}]\qst@matchlist} \def\qst@parsestart#1#2{% \ifcase \ifx\qst@comma#2\@ne\fi \ifx\qst@comma\relax \else\ifx!#2#1\tw@\@ne\fi \fi \thr@@ \or \expandafter\qst@parsestart \expandafter\@firstoftwo \or \expandafter\qst@parsestart \expandafter\@secondoftwo \or \expandafter\qst@mmtmp \expandafter#1% \expandafter#2% \fi } \def\qst@afterfi#1#2\fi{\fi#1} \def\qst@parseonecase#1#2{% \noexpand\qst@checkname {\qst@parsewild#2*\,23456789*}% \noexpand#1\qst@parsestart\@firstoftwo} \def\qst@parsewild#1*#2\,#3#4*{% #1% \ifx\,#2\,% \else #####3% \qst@afterfi{\qst@skipwild#2\,#4*}% \fi} \def\qst@skipwild#1*#2\,{% #1% \ifcase \ifx *#1*\ifx\,#2\,\else \@ne \fi \fi \tw@ \or \expandafter\qst@skipwild \or \expandafter\qst@parsewild\expandafter*% \fi#2\,} \def\qst@checkname#1{% \def\qst@mmtmp##1\,#1\,{#1\,\@nil}% \expandafter\expandafter\expandafter\qst@checknameii \expandafter\qst@mmtmp \expandafter\,\qst@matchlist\,#1\,\@nil} \def\qst@checknameii#1\,#2\@nil#3{% \ifcase \ifx\@nil#3\@ne\fi \ifx\@nil#2\@nil \tw@\fi \m@ne \or \expandafter\qst@checknamenomatch \or \expandafter\qst@checknamematch \fi \expandafter\qst@checknameii\qst@mmtmp#1\,#2#3} \def\qst@checknamenomatch#1\@nil#2{} \def\qst@checknamematch#1\qst@mmtmp#2\,#3\@nil{% \def\MatchedTarget{#2}% \let\qst@finish} \def\RemoveMatched#1{\ifx#1\MatchedTarget \let#1\@empty \else \expandafter\def\expandafter\qst@mmtmp \expandafter##\expandafter1\expandafter\,\MatchedTarget\,{##1\,}% \expandafter\def\expandafter#1\expandafter{% \romannumeral\expandafter\expandafter\expandafter\z@ \expandafter\qst@remmat \romannumeral\expandafter\expandafter\expandafter\z@ \expandafter\qst@mmtmp\expandafter\,#1\,\@nil}% \fi} \def\qst@remmat\,#1\,\@nil{#1} \newcommand\MakeMatchTarget[3][\relax]{% \def\qst@mmtmp##1#1##2{##1\noexpand\,\qst@mmtmp##2}% \edef#2{\expandafter\qst@mmtmp\expandafter \@gobbletwo\expandafter#1\detokenize{#3}\iffalse#1\fi}% } \endinput %% %% End of file `makematch.sty'.