diff options
author | Karl Berry <karl@freefriends.org> | 2007-04-11 23:02:14 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2007-04-11 23:02:14 +0000 |
commit | 6858df01ea6ebb32f4be0f68e4b2e03d8713f38f (patch) | |
tree | d0466192a4c6ae7f99e95d2e6e9b613ebcb73d3d /Master/texmf-dist/tex/latex/oberdiek/flags.sty | |
parent | 59314283a9039be6cceb0bbee8600837477c9058 (diff) |
oberdiek: accsupp, atenddvi, hycolor, iflang (11apr07)
git-svn-id: svn://tug.org/texlive/trunk@4149 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/oberdiek/flags.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/oberdiek/flags.sty | 94 |
1 files changed, 81 insertions, 13 deletions
diff --git a/Master/texmf-dist/tex/latex/oberdiek/flags.sty b/Master/texmf-dist/tex/latex/oberdiek/flags.sty index d27d287ff7d..39de0fd1a91 100644 --- a/Master/texmf-dist/tex/latex/oberdiek/flags.sty +++ b/Master/texmf-dist/tex/latex/oberdiek/flags.sty @@ -28,7 +28,16 @@ %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{flags}% - [2007/02/18 v0.1 Flag setting in bit fields (HO)] + [2007/03/07 v0.3 Flag setting in bit fields (HO)]% +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname numexpr\endcsname\relax + \PackageError{flags}{% + Missing e-TeX, package loading aborted% + }{% + This packages makes heavy use of \string\numexpr.% + }% + \expandafter\endinput +\fi \newcommand*{\resetflags}[1]{% \expandafter\let\csname flags@#1\endcsname\@empty } @@ -54,10 +63,17 @@ \fi } \newcommand*{\setflag}[2]{% - \expandafter\@setflag\csname flags@#1\expandafter\endcsname - \expandafter{\romannumeral\number\numexpr#2-1\relax000}% + \ifnum#2>\z@ + \expandafter\@setflag\csname flags@#1\expandafter\endcsname + \expandafter{\romannumeral\number\numexpr#2-1\relax000}% + \else + \PackageError{flags}{Position must be a positive number}\@ehc + \fi } \def\@setflag#1#2{% + \ifx#1\relax + \let#1\@empty + \fi \edef#1{% \expandafter\@@setflag\expandafter{#1}{#2}% }% @@ -70,20 +86,27 @@ \ifx\\#2\\% 1\@gobble#1% \else - \@car#1\@nil - \expandafter\@@@setflag\expandafter{\@gobble#2}{#1}% + \@@@setflag#1|#2% \fi \fi } -\def\@@@setflag#1#2\fi\fi{% +\def\@@@setflag#1#2|#3#4\fi\fi{% \fi\fi - \expandafter\@@setflag\expandafter{\@cdr#2\@nil}{#1}% + #1% + \@@setflag{#2}{#4}% } \newcommand*{\clearflag}[2]{% - \expandafter\@clearflag\csname flags@#1\expandafter\endcsname - \expandafter{\romannumeral\number\numexpr#2-1\relax000}% + \ifnum#2>\z@ + \expandafter\@clearflag\csname flags@#1\expandafter\endcsname + \expandafter{\romannumeral\number\numexpr#2-1\relax000}% + \else + \PackageError{flags}{Position must be a positive number}\@ehc + \fi } \def\@clearflag#1#2{% + \ifx#1\relax + \let#1\@empty + \fi \edef#1{% \expandafter\@@clearflag\expandafter{#1}{#2}% }% @@ -94,14 +117,14 @@ \ifx\\#2\\% 0\@gobble#1% \else - \@car#1\@nil - \expandafter\@@@clearflag\expandafter{\@gobble#2}{#1}% + \@@@clearflag#1|#2% \fi \fi } -\def\@@@clearflag#1#2\fi\fi{% +\def\@@@clearflag#1#2|#3#4\fi\fi{% \fi\fi - \expandafter\@@clearflag\expandafter{\@cdr#2\@nil}{#1}% + #1% + \@@clearflag{#2}{#4}% } \def\FLAGS@zero#1{% \ifx#1\relax @@ -110,6 +133,51 @@ \expandafter\FLAGS@zero \fi } +\newcommand*{\queryflag}[2]{% + \ifnum\extractflag{#1}{#2}=\@ne + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\newcommand*{\extractflag}[1]{% + \expandafter\@extractflag\csname flags@#1\endcsname +} +\def\@extractflag#1#2{% + \ifx#1\@undefined + 0% + \else + \ifx#1\relax + 0% + \else + \ifx#1\@empty + 0% + \else + \expandafter\expandafter\expandafter\@@extractflag + \expandafter\expandafter\expandafter{% + \expandafter#1\expandafter + }\expandafter{% + \romannumeral\number\numexpr#2-1\relax000% + }% + \fi + \fi + \fi +} +\def\@@extractflag#1#2{% + \ifx\\#1\\% + 0% + \else + \ifx\\#2\\% + \@car#1\@nil + \else + \@@@extractflag#1|#2% + \fi + \fi +} +\def\@@@extractflag#1#2|#3#4\fi\fi{% + \fi\fi + \@@extractflag{#2}{#4}% +} \endinput %% %% End of file `flags.sty'. |