summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/oberdiek/zref-base.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/oberdiek/zref-base.sty')
-rw-r--r--Master/texmf-dist/tex/latex/oberdiek/zref-base.sty211
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'.