diff options
author | Karl Berry <karl@freefriends.org> | 2010-05-04 17:35:01 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-05-04 17:35:01 +0000 |
commit | 3cd7d680d047db2f439ccba96948f1ceaa6d973f (patch) | |
tree | 99414f003d20290deb6c11806bde6685c1eb9b25 /Master/texmf-dist/tex/latex/oberdiek/zref-base.sty | |
parent | 67c3a09c0f5d7fcf6bff5cfbc686a0c247d0e744 (diff) |
oberdiek update (3may10)
git-svn-id: svn://tug.org/texlive/trunk@18100 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/oberdiek/zref-base.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/oberdiek/zref-base.sty | 211 |
1 files changed, 136 insertions, 75 deletions
diff --git a/Master/texmf-dist/tex/latex/oberdiek/zref-base.sty b/Master/texmf-dist/tex/latex/oberdiek/zref-base.sty index bc1287147cc..4ddad0871e9 100644 --- a/Master/texmf-dist/tex/latex/oberdiek/zref-base.sty +++ b/Master/texmf-dist/tex/latex/oberdiek/zref-base.sty @@ -28,9 +28,10 @@ %% This work consists of the main source file zref.dtx %% and the derived files %% zref.sty, zref.pdf, zref.ins, zref.drv, zref-base.sty, -%% zref-abspage.sty, zref-counter.sty, zref-dotfill.sty, -%% zref-hyperref.sty, zref-lastpage.sty, zref-marks.sty, -%% zref-nextpage.sty, zref-perpage.sty, zref-runs.sty, +%% zref-abspage.sty, zref-abspos.sty, zref-counter.sty, +%% zref-dotfill.sty, zref-hyperref.sty, zref-lastpage.sty, +%% zref-marks.sty, zref-nextpage.sty, zref-pageattr.sty, +%% zref-pagelayout.sty, zref-perpage.sty, zref-runs.sty, %% zref-savepos.sty, zref-thepage.sty, zref-titleref.sty, %% zref-totpages.sty, zref-user.sty, zref-xr.sty, %% zref-example.tex, zref-example-lastpage.tex, @@ -40,10 +41,28 @@ %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-base}% - [2010/04/23 v2.15 Module base for zref (HO)]% + [2010/05/01 v2.17 Module base for zref (HO)]% \RequirePackage{ltxcmds}[2010/03/01] +\RequirePackage{infwarerr}[2010/04/08] \RequirePackage{kvsetkeys}[2010/03/01] \def\ZREF@name{zref} +\ltx@IfUndefined{protected}{% + \RequirePackage{makerobust}[2006/03/18]% + \def\ZREF@Robust#1#2{% + \def\ZREF@temp{\MakeRobustcommand#2}% + \afterassignment\ZREF@temp + #1#2% + }% +}{% + \def\ZREF@Robust#1{% + \protected#1% + }% +} +\def\ZREF@IfDefinable#1#2#3{% + \@ifdefinable{#1}{% + \ZREF@Robust{#2}#1#3% + }% +} \def\ZREF@UpdatePdfTeX{Update pdfTeX.} \newif\ifZREF@found \def\ZREF@patch#1{% @@ -81,14 +100,15 @@ \AddLineBeginAux{% \string\providecommand\string\zref@newlabel[2]{}% } -\def\zref@newlabel{% - \@newl@bel{Z@R}% +\def\ZREF@RefPrefix{Z@R} +\ZREF@Robust\edef\zref@newlabel{% + \noexpand\@newl@bel{\ZREF@RefPrefix}% } -\def\zref@newlist#1{% +\ZREF@Robust\def\zref@newlist#1{% \zref@iflistundefined{#1}{% \@ifdefinable{Z@L@#1}{% - \global\expandafter\let\csname Z@L@#1\endcsname\@empty - \PackageInfo{zref}{New property list: #1}% + \global\expandafter\let\csname Z@L@#1\endcsname\ltx@empty + \PackageInfo\ZREF@name{New property list: #1}% }% }{% \PackageError\ZREF@name{% @@ -99,49 +119,45 @@ \def\zref@iflistundefined#1{% \ltx@ifundefined{Z@L@#1}% } -\def\zref@listexists#1{% +\ZREF@Robust\def\zref@listexists#1{% \zref@iflistundefined{#1}{% \PackageError\ZREF@name{% Property list `#1' does not exist% }\@ehc }% } -\def\zref@iflistcontainsprop#1{% +\ZREF@Robust\def\zref@iflistcontainsprop#1#2{% \zref@iflistundefined{#1}{% - \expandafter\ltx@secondoftwo\@gobble + \ltx@secondoftwo }{% - \expandafter\ZREF@iflistcontainsprop\csname Z@L@#1\endcsname + \begingroup\expandafter\endgroup + \expandafter\in@ + \csname#2\expandafter\expandafter\expandafter\endcsname + \expandafter\expandafter\expandafter{\csname Z@L@#1\endcsname}% + \csname ltx@\ifin@ first\else second\fi oftwo\endcsname }% } -\def\ZREF@iflistcontainsprop#1#2{% - \begingroup - \ZREF@foundfalse - \edef\y{#2}% - \expandafter\@tfor\expandafter\x - \expandafter:\expandafter=#1\do{% - \edef\x{\x}% - \ifx\x\y - \ZREF@foundtrue - \fi - }% - \expandafter\endgroup - \ifZREF@found - \expandafter\ltx@firstoftwo - \else - \expandafter\ltx@secondoftwo - \fi -} \def\zref@listforloop#1#2{% - \expandafter\expandafter\expandafter\@tfor - \expandafter\expandafter\expandafter\zref@prop - \expandafter\expandafter\expandafter:% - \expandafter\expandafter\expandafter=% - \csname Z@L@#1\endcsname - \do{% - #2\zref@prop + \zref@listexists{#1}{% + \expandafter\expandafter\expandafter\@tfor + \expandafter\expandafter\expandafter\zref@prop + \expandafter\expandafter\expandafter:% + \expandafter\expandafter\expandafter=% + \csname Z@L@#1\endcsname + \do{% + \begingroup + \escapechar=-1 % + \edef\x{\endgroup + \def\noexpand\zref@prop{% + \expandafter\string\zref@prop + }% + }% + \x + #2\zref@prop + }% }% } -\def\zref@addprop#1#2{% +\ZREF@Robust\def\zref@addprop#1#2{% \zref@listexists{#1}{% \comma@parse{#2}{% \zref@propexists\comma@entry{% @@ -150,16 +166,17 @@ Property `\comma@entry' is already in list `#1'% }% }{% - \edef\comma@entry{\comma@entry}% - \expandafter\g@addto@macro\csname Z@L@#1\expandafter\endcsname - \expandafter{\expandafter{\comma@entry}}% + \begingroup\expandafter\endgroup + \expandafter\g@addto@macro + \csname Z@L@#1\expandafter\endcsname + \expandafter{\csname\comma@entry\endcsname}% }% }% \ltx@gobble }% }% } -\def\zref@localaddprop#1#2{% +\ZREF@Robust\def\zref@localaddprop#1#2{% \zref@listexists{#1}{% \comma@parse{#2}{% \zref@propexists\comma@entry{% @@ -168,10 +185,10 @@ Property `\comma@entry' is already in list `#1'% }% }{% - \edef\comma@entry{\comma@entry}% + \begingroup\expandafter\endgroup \expandafter\ltx@LocalAppendToMacro \csname Z@L@#1\expandafter\endcsname - \expandafter{\expandafter{\comma@entry}}% + \expandafter{\csname\comma@entry\endcsname}% }% }% \ltx@gobble @@ -181,38 +198,66 @@ \def\zref@ifpropundefined#1{% \ltx@ifundefined{Z@E@#1}% } -\def\zref@propexists#1{% +\ZREF@Robust\def\zref@propexists#1{% \zref@ifpropundefined{#1}{% \PackageError\ZREF@name{% Property `#1' does not exist% }\@ehc }% } -\def\zref@newprop{% +\ZREF@Robust\def\zref@newprop{% \@ifstar{% \let\ZREF@X\noexpand \ZREF@newprop }{% - \let\ZREF@X\@empty + \let\ZREF@X\ltx@empty \ZREF@newprop }% } \def\ZREF@newprop#1{% - \PackageInfo{zref}{New property: #1}% - \def\ZREF@P{#1}% + \edef\ZREF@P{#1}% + \@onelevel@sanitize\ZREF@P + \begingroup + \ifx\ZREF@P\ZREF@par + \@PackageError\ZREF@name{% + Invalid property name `\ZREF@P'% + }{% + The property name `par' is not allowed % + because of internal reasons.% + \MessageBreak + \@ehc + }% + \def\ZREF@@newprop[##1]##2{\endgroup}% + \else + \zref@ifpropundefined\ZREF@P{% + \endgroup + \PackageInfo\ZREF@name{% + New property: \ZREF@P + }% + }{% + \@PackageError\ZREF@name{% + Property `\ZREF@P' already exists% + }\@ehc + \def\ZREF@@newprop[##1]##2{\endgroup}% + }% + \fi \@ifnextchar[\ZREF@@newprop{\ZREF@@newprop[\zref@default]}% } +\def\ZREF@par{par} +\@onelevel@sanitize\ZREF@par \def\ZREF@@newprop[#1]{% \global\@namedef{Z@D@\ZREF@P}{#1}% \global\expandafter\let\csname Z@X@\ZREF@P\endcsname\ZREF@X + \begingroup\expandafter\endgroup \expandafter\ZREF@@@newprop\csname\ZREF@P\endcsname \expandafter\gdef\csname Z@C@\ZREF@P\endcsname{}% \zref@setcurrent\ZREF@P } \def\ZREF@@@newprop#1{% - \expandafter\gdef\csname Z@E@\ZREF@P\endcsname##1#1##2##3\ZREF@nil{##2}% + \expandafter + \gdef\csname Z@E@\ZREF@P\endcsname##1#1##2##3\ZREF@nil{##2}% } -\def\zref@setcurrent#1#2{% +\ZREF@Robust\def\zref@setcurrent#1#2{% \zref@propexists{#1}{% \expandafter\def\csname Z@C@#1\endcsname{#2}% }% @@ -232,10 +277,10 @@ }% } \let\zref@getcurrent\ZREF@getcurrent -\def\zref@label#1{% +\ZREF@Robust\def\zref@label#1{% \zref@labelbylist{#1}\ZREF@mainlist } -\def\zref@labelbylist#1#2{% +\ZREF@Robust\def\zref@labelbylist#1#2{% \@bsphack \zref@listexists{#2}{% \expandafter\expandafter\expandafter\ZREF@label @@ -245,28 +290,28 @@ }% \@esphack } -\def\zref@labelbyprops#1#2{% +\ZREF@Robust\def\zref@labelbyprops#1#2{% \@bsphack \begingroup - \edef\l{#2}% \toks@{}% - \@for\x:=#2\do{% - \zref@ifpropundefined{\x}{% + \comma@parse{#2}{% + \zref@ifpropundefined\comma@entry{% \PackageWarning\ZREF@name{% - Property `\x' is not known% + Property `\comma@entry' is not known% }% }{% - \toks@\expandafter\expandafter\expandafter{% - \expandafter\the\expandafter\toks@\expandafter{\x}% + \toks@\expandafter{% + \the\expandafter\toks@\csname\comma@entry\endcsname }% }% + \ltx@gobble }% \expandafter\endgroup \expandafter\ZREF@label\expandafter{\the\toks@}{#1}% \@esphack } \newif\ifZREF@immediate -\long\def\zref@wrapper@immediate#1{% +\ZREF@Robust{\long\def}\zref@wrapper@immediate#1{% \begingroup \ZREF@immediatetrue \let\ZREF@org@write\write @@ -284,17 +329,31 @@ \ifZREF@immediate \let\thepage\ZREF@org@thepage \fi - \let\ZREF@temp\@empty + \let\ZREF@temp\ltx@empty \@tfor\ZREF@P:=#1\do{% + \begingroup + \escapechar=-1 % + \edef\x{\endgroup + \def\noexpand\ZREF@P{% + \expandafter\string\ZREF@P + }% + }% + \x \expandafter\ifx - \csname\ifZREF@immediate relax\else Z@X@\ZREF@P\fi\endcsname + \csname + \ifZREF@immediate + relax% + \else + Z@X@\ZREF@P% + \fi + \endcsname \noexpand \expandafter\let\csname Z@C@\ZREF@P\endcsname\relax \fi \toks@\expandafter{\ZREF@temp}% \edef\ZREF@temp{% \the\toks@ - \expandafter\string\csname\ZREF@P\endcsname{% + \ltx@backslashchar\ZREF@P{% \expandafter\noexpand\csname Z@C@\ZREF@P\endcsname }% }% @@ -313,14 +372,16 @@ \def\zref@ifrefundefined#1{% \ltx@ifundefined{Z@R@#1}% } -\newcommand*{\zifrefundefined}[1]{% - \zref@wrapper@babel\ZREF@ifrefundefined{#1}% +\ZREF@IfDefinable\zifrefundefined\def{% + #1{% + \zref@wrapper@babel\ZREF@ifrefundefined{#1}% + }% } \def\ZREF@ifrefundefined#1{% \zref@refused{#1}% \zref@ifrefundefined{#1}% } -\def\zref@refused#1{% +\ZREF@Robust\def\zref@refused#1{% \zref@wrapper@babel\ZREF@refused{#1}% } \def\ZREF@refused#1{% @@ -345,7 +406,7 @@ } \def\ZREF@ifrefcontainsprop#1#2#3{% \expandafter\ifx\expandafter\ZREF@novalue - #1#3#2\ZREF@novalue\ZREF@nil\@empty + #1#3#2\ZREF@novalue\ZREF@nil\ltx@empty \expandafter\ltx@secondoftwo \else \expandafter\ltx@firstoftwo @@ -393,7 +454,7 @@ }% } \let\zref@extractdefault\ZREF@extractdefault -\long\def\ZREF@wrapper@unexpanded#1{% +\ZREF@Robust{\long\def}\ZREF@wrapper@unexpanded#1{% \let\zref@wrapper@unexpanded\ltx@firstofone \let\zref@getcurrent\ZREF@wu@getcurrent \let\zref@extractdefault\ZREF@wu@extractdefault @@ -409,7 +470,7 @@ }{% \let\zref@wrapper@unexpanded\ZREF@wrapper@unexpanded } -\long\def\zref@wrapper@babel#1#2{% +\ZREF@Robust{\long\def}\zref@wrapper@babel#1#2{% \ifcsname if@safe@actives\endcsname \expandafter\ltx@firstofone \else @@ -435,7 +496,7 @@ \long\def\ZREF@wrapper@babel#1#2{% #2{#1}% } -\def\zref@require@unique{% +\ZREF@Robust\def\zref@require@unique{% \@ifundefined{c@zref@unique}{% \begingroup \let\@addtoreset\ltx@gobbletwo @@ -451,13 +512,13 @@ }{% \def\ZREF@number#1{\the\numexpr#1}% } -\def\zref@setdefault#1{% +\ZREF@Robust\def\zref@setdefault#1{% \def\zref@default{#1}% } \zref@setdefault{% \nfss@text{\reset@font\bfseries ??}% } -\def\zref@setmainlist#1{% +\ZREF@Robust\def\zref@setmainlist#1{% \def\ZREF@mainlist{#1}% } \zref@setmainlist{main} @@ -465,7 +526,7 @@ \zref@newprop{default}{\@currentlabel} \zref@newprop*{page}{\thepage} \zref@addprop\ZREF@mainlist{default,page} -\let\ZREF@baseok\@empty +\let\ZREF@base@ok=Y \endinput %% %% End of file `zref-base.sty'. |