texlive[52980] Master: zref (30nov19)
commits+karl at tug.org
commits+karl at tug.org
Sat Nov 30 23:16:14 CET 2019
Revision: 52980
http://tug.org/svn/texlive?view=revision&revision=52980
Author: karl
Date: 2019-11-30 23:16:13 +0100 (Sat, 30 Nov 2019)
Log Message:
-----------
zref (30nov19)
Modified Paths:
--------------
trunk/Master/tlpkg/bin/tlpkg-ctan-check
trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
Added Paths:
-----------
trunk/Master/texmf-dist/doc/latex/zref/
trunk/Master/texmf-dist/doc/latex/zref/README.md
trunk/Master/texmf-dist/doc/latex/zref/zref.pdf
trunk/Master/texmf-dist/source/latex/zref/
trunk/Master/texmf-dist/source/latex/zref/zref.dtx
trunk/Master/texmf-dist/tex/latex/zref/
trunk/Master/texmf-dist/tex/latex/zref/zref-abspage.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-abspos.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-base.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-counter.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-dotfill.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-env.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-hyperref.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-lastpage.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-marks.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-nextpage.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-pageattr.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-pagelayout.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-perpage.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-runs.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-savepos.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-thepage.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-titleref.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-totpages.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-user.sty
trunk/Master/texmf-dist/tex/latex/zref/zref-xr.sty
trunk/Master/texmf-dist/tex/latex/zref/zref.sty
trunk/Master/tlpkg/tlpsrc/zref.tlpsrc
Added: trunk/Master/texmf-dist/doc/latex/zref/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/zref/README.md (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/zref/README.md 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,12 @@
+# zref
+
+zref packages for LaTeX
+
+
+Package zref tries to get rid of the restriction
+in LaTeX's reference system that only two properties are
+supported. The package implements an extensible referencing
+system, where properties are handled in a more flexible way.
+It offers an interface for macro programmers for the access
+to the system and some applications that uses the new
+reference scheme.
Property changes on: trunk/Master/texmf-dist/doc/latex/zref/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/zref/zref.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/zref/zref.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/zref/zref.pdf 2019-11-30 22:13:35 UTC (rev 52979)
+++ trunk/Master/texmf-dist/doc/latex/zref/zref.pdf 2019-11-30 22:16:13 UTC (rev 52980)
Property changes on: trunk/Master/texmf-dist/doc/latex/zref/zref.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/zref/zref.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/zref/zref.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/zref/zref.dtx 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,6873 @@
+% \iffalse meta-comment
+%
+% File: zref.dtx
+% Version: 2019/11/29 v2.28
+% Info: A new reference scheme for LaTeX
+%
+% Copyright (C)
+% 2006-2012 Heiko Oberdiek
+% 2016-2019 Oberdiek Package Support Group
+% https://github.com/ho-tex/zref/issues
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any later
+% version. This version of this license is in
+% https://www.latex-project.org/lppl/lppl-1-3c.txt
+% and the latest version of this license is in
+% https://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainers of this work are
+% Heiko Oberdiek and the Oberdiek Package Support Group
+% https://github.com/ho-tex/zref/issues
+%
+% 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-abspos.sty, zref-counter.sty,
+% zref-dotfill.sty, zref-env.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,
+% zref-example-nextpage.tex, zref-test1.tex,
+% zref-test-base.tex, zref-test-runs.tex,
+% zref-test-titleref-memoir.tex.
+%
+% Distribution:
+% CTAN:macros/latex/contrib/zref/zref.dtx
+% CTAN:macros/latex/contrib/zref/zref.pdf
+%
+% Unpacking:
+% (a) If zref.ins is present:
+% tex zref.ins
+% (b) Without zref.ins:
+% tex zref.dtx
+% (c) If you insist on using LaTeX
+% latex \let\install=y\input{zref.dtx}
+% (quote the arguments according to the demands of your shell)
+%
+% Documentation:
+% (a) If zref.drv is present:
+% latex zref.drv
+% (b) Without zref.drv:
+% latex zref.dtx; ...
+% The class ltxdoc loads the configuration file ltxdoc.cfg
+% if available. Here you can specify further options, e.g.
+% use A4 as paper format:
+% \PassOptionsToClass{a4paper}{article}
+%
+% Programm calls to get the documentation (example):
+% pdflatex zref.dtx
+% makeindex -s gind.ist zref.idx
+% pdflatex zref.dtx
+% makeindex -s gind.ist zref.idx
+% pdflatex zref.dtx
+%
+% Installation:
+% TDS:tex/latex/zref/zref.sty
+% TDS:tex/latex/zref/zref-base.sty
+% TDS:tex/latex/zref/zref-abspage.sty
+% TDS:tex/latex/zref/zref-abspos.sty
+% TDS:tex/latex/zref/zref-counter.sty
+% TDS:tex/latex/zref/zref-dotfill.sty
+% TDS:tex/latex/zref/zref-env.sty
+% TDS:tex/latex/zref/zref-hyperref.sty
+% TDS:tex/latex/zref/zref-lastpage.sty
+% TDS:tex/latex/zref/zref-marks.sty
+% TDS:tex/latex/zref/zref-nextpage.sty
+% TDS:tex/latex/zref/zref-pageattr.sty
+% TDS:tex/latex/zref/zref-pagelayout.sty
+% TDS:tex/latex/zref/zref-perpage.sty
+% TDS:tex/latex/zref/zref-runs.sty
+% TDS:tex/latex/zref/zref-savepos.sty
+% TDS:tex/latex/zref/zref-thepage.sty
+% TDS:tex/latex/zref/zref-titleref.sty
+% TDS:tex/latex/zref/zref-totpages.sty
+% TDS:tex/latex/zref/zref-user.sty
+% TDS:tex/latex/zref/zref-xr.sty
+% TDS:doc/latex/zref/zref.pdf
+% TDS:doc/latex/zref/zref-example.tex
+% TDS:doc/latex/zref/zref-example-lastpage.tex
+% TDS:doc/latex/zref/zref-example-nextpage.tex
+% TDS:doc/latex/zref/test/zref-test1.tex
+% TDS:doc/latex/zref/test/zref-test-base.tex
+% TDS:doc/latex/zref/test/zref-test-runs.tex
+% TDS:doc/latex/zref/test/zref-test-titleref-memoir.tex
+% TDS:source/latex/zref/zref.dtx
+%
+%<*ignore>
+\begingroup
+ \catcode123=1 %
+ \catcode125=2 %
+ \def\x{LaTeX2e}%
+\expandafter\endgroup
+\ifcase 0\ifx\install y1\fi\expandafter
+ \ifx\csname processbatchFile\endcsname\relax\else1\fi
+ \ifx\fmtname\x\else 1\fi\relax
+\else\csname fi\endcsname
+%</ignore>
+%<*install>
+\input docstrip.tex
+\Msg{************************************************************************}
+\Msg{* Installation}
+\Msg{* Package: zref 2019/11/29 v2.28 A new reference scheme for LaTeX (HO)}
+\Msg{************************************************************************}
+
+\keepsilent
+\askforoverwritefalse
+
+\let\MetaPrefix\relax
+\preamble
+
+This is a generated file.
+
+Project: zref
+Version: 2019/11/29 v2.28
+
+Copyright (C)
+ 2006-2012 Heiko Oberdiek
+ 2016-2019 Oberdiek Package Support Group
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3c of this license or (at your option) any later
+version. This version of this license is in
+ https://www.latex-project.org/lppl/lppl-1-3c.txt
+and the latest version of this license is in
+ https://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of
+LaTeX version 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+The Current Maintainers of this work are
+Heiko Oberdiek and the Oberdiek Package Support Group
+https://github.com/ho-tex/zref/issues
+
+
+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-abspos.sty, zref-counter.sty,
+ zref-dotfill.sty, zref-env.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,
+ zref-example-nextpage.tex, zref-test1.tex,
+ zref-test-base.tex, zref-test-runs.tex,
+ zref-test-titleref-memoir.tex.
+
+\endpreamble
+\let\MetaPrefix\DoubleperCent
+
+\generate{%
+ \file{zref.ins}{\from{zref.dtx}{install}}%
+ \file{zref.drv}{\from{zref.dtx}{driver}}%
+ \usedir{tex/latex/zref}%
+ \file{zref.sty}{\from{zref.dtx}{package}}%
+ \file{zref-base.sty}{\from{zref.dtx}{base}}%
+ \file{zref-abspage.sty}{\from{zref.dtx}{abspage}}%
+ \file{zref-abspos.sty}{\from{zref.dtx}{abspos}}%
+ \file{zref-counter.sty}{\from{zref.dtx}{counter}}%
+ \file{zref-dotfill.sty}{\from{zref.dtx}{dotfill}}%
+ \file{zref-env.sty}{\from{zref.dtx}{env}}%
+ \file{zref-hyperref.sty}{\from{zref.dtx}{hyperref}}%
+ \file{zref-lastpage.sty}{\from{zref.dtx}{lastpage}}%
+ \file{zref-marks.sty}{\from{zref.dtx}{marks}}%
+ \file{zref-nextpage.sty}{\from{zref.dtx}{nextpage}}%
+ \file{zref-pageattr.sty}{\from{zref.dtx}{pageattr}}%
+ \file{zref-pagelayout.sty}{\from{zref.dtx}{pagelayout}}%
+ \file{zref-perpage.sty}{\from{zref.dtx}{perpage}}%
+ \file{zref-runs.sty}{\from{zref.dtx}{runs}}%
+ \file{zref-savepos.sty}{\from{zref.dtx}{savepos}}%
+ \file{zref-thepage.sty}{\from{zref.dtx}{thepage}}%
+ \file{zref-titleref.sty}{\from{zref.dtx}{titleref}}%
+ \file{zref-totpages.sty}{\from{zref.dtx}{totpages}}%
+ \file{zref-user.sty}{\from{zref.dtx}{user}}%
+ \file{zref-xr.sty}{\from{zref.dtx}{xr}}%
+ \usedir{doc/latex/zref}%
+ \file{zref-example.tex}{\from{zref.dtx}{example}}%
+ \file{zref-example-lastpage.tex}{\from{zref.dtx}{example-lastpage}}%
+ \file{zref-example-nextpage.tex}{\from{zref.dtx}{example-nextpage}}%
+% \usedir{doc/latex/zref/test}%
+% \file{zref-test1.tex}{\from{zref.dtx}{test1}}%
+% \file{zref-test-base.tex}{\from{zref.dtx}{test-base}}%
+% \file{zref-test-runs.tex}{\from{zref.dtx}{test-runs}}%
+% \file{zref-test-titleref-memoir.tex}{\from{zref.dtx}{test-titleref-memoir}}%
+ \nopreamble
+ \nopostamble
+% \usedir{source/latex/zref/catalogue}%
+% \file{zref.xml}{\from{zref.dtx}{catalogue}}%
+}
+
+\catcode32=13\relax% active space
+\let =\space%
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* zref.sty, zref-base.sty, zref-abspage.sty, zref-abspos.sty,}
+\Msg{* zref-counter.sty, zref-dotfill.sty, zref-env.sty,}
+\Msg{* zref-hyperref.sty, zref-lastpage.sty, zref-marks.sty,}
+\Msg{* zref-nextpage.sty, zref-pageattr.sty, zref-pagelayout.sty,}
+\Msg{* zref-perpage.sty, zref-runs.sty, zref-savepos.sty,}
+\Msg{* zref-thepage.sty, zref-titleref.sty, zref-totpages.sty,}
+\Msg{* zref-user.sty, zref-xr.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file `zref.drv'}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+
+\endbatchfile
+%</install>
+%<*ignore>
+\fi
+%</ignore>
+%<*driver>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{zref.drv}%
+ [2019/11/29 v2.28 A new reference scheme for LaTeX (HO)]%
+\documentclass{ltxdoc}
+\usepackage{holtxdoc}[2011/11/22]
+\setlength{\emergencystretch}{1em}
+\begin{document}
+ \DocInput{zref.dtx}%
+\end{document}
+%</driver>
+% \fi
+%
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \GetFileInfo{zref.drv}
+%
+% \title{The \xpackage{zref} package}
+% \date{2019/11/29 v2.28}
+% \author{Heiko Oberdiek\thanks
+% {Please report any issues at \url{https://github.com/ho-tex/zref/issues}}}
+%
+% \maketitle
+%
+% \begin{abstract}
+% Package \xpackage{zref} tries to get rid of the restriction
+% in \hologo{LaTeX}'s reference system that only two properties are
+% supported. The package implements an extensible referencing
+% system, where properties are handled in a more flexible way.
+% It offers an interface for macro programmers for the access
+% to the system and some applications that uses the new
+% reference scheme.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \newcommand*{\metacs}[1]{\texttt{\itshape #1}}
+%
+% \newcommand{\markexp}{^^A
+% \textsuperscript{exp}^^A
+% \space
+% }
+% \newcommand{\markexptwo}{^^A
+% \textsuperscript{exp2}^^A
+% \space
+% }
+% \newcommand{\markrobust}{^^A
+% \textsuperscript{robust}^^A
+% \space
+% }
+% \newcommand{\marknowarn}{^^A
+% \textsuperscript{nowarn}^^A
+% \space
+% }
+% \newcommand{\markbabel}{^^A
+% \textsuperscript{babel}^^A
+% \space
+% }
+%
+% \section{Introduction}
+%
+% Standard \hologo{LaTeX}'s reference system with \cs{label}, \cs{ref},
+% and \cs{pageref} supports two properties, the apperance of
+% the counter that is last incremented by \cs{refstepcounter} and
+% the page with the \cs{label} command.
+%
+% Unhappily \hologo{LaTeX} does not provide an interface for adding
+% another properties. Packages such as \xpackage{hyperref},
+% \xpackage{nameref}, or \xpackage{titleref} are forced to
+% use ugly hacks to extend the reference system.
+% These ugly hacks are one of the causes for \xpackage{hyperref}'s
+% difficulty regarding compatibility with other packages.
+%
+% \subsection{Standard \hologo{LaTeX} behaviour}
+%
+% References are created by the \cs{label} command:
+% \begin{quote}
+% |\chapter{Second chapter}|\\
+% |\section{First section on page 7} % section 2.1|\\
+% |\label{myref}|
+% \end{quote}
+% Now \hologo{LaTeX} records the section number |2.1| and the page |7|
+% in the reference. Internally the reference is a list with
+% two entries:
+% \begin{quote}
+% |\r at myref| $\rightarrow$ |{2.1}{7}|
+% \end{quote}
+% The length of the list if fixed in the \hologo{LaTeX} kernel,
+% An interface for adding new properties is missing.
+%
+% There are several tries to add new properties:
+% \begin{description}
+% \item[\xpackage{hyperref}] uses a list of five
+% properties instead of the standard list with two entries.
+% This causes many compatibility problems with \hologo{LaTeX} and
+% other packages.
+% \item[\xpackage{titleref}] stores its title data into the
+% first entry in the list. \hologo{LaTeX} is happy because it
+% does only see its list with two entries. The situation
+% becomes more difficult, if more properties are added
+% this way. Then the macros form a nested structure
+% inside the first reference argument for the label.
+% Expandable extractions will then become painful.
+% \end{description}
+%
+% \subsection{Basic idea}
+%
+% Some time ago Morten H\o gholm sent me an experimental
+% cross referencing mechanism as ``expl3'' code. His
+% idea is:
+% \begin{quote}
+% |\g_xref_mylabel_plist| $\rightarrow$\\
+% \mbox{}\qquad|\xref_dance_key{salsa}\xref_name_key{Morten}|\dots
+% \end{quote}
+% The entries have the following format:
+% \begin{quote}
+% |\xref_|\meta{your key}|_key{|\meta{some text}|}|
+% \end{quote}
+% This approach is much more flexible:
+% \begin{itemize}
+% \item New properties can easily be added, just use a new key.
+% \item The length of the list is not fixed. A reference
+% can use a subset of the keys.
+% \item The order of the entries does not matter.
+% \end{itemize}
+% Unhappily I am not familiar with the experimental code
+% for \hologo{LaTeX3} that will need some time before its first release.
+% Thus I have implemented it as \hologo{LaTeXe} package without disturbing
+% the existing \hologo{LaTeX} reference system.
+%
+% \subsection{Interfaces}
+%
+% The package provides a generic \emph{interface for programmers}.
+% Commands of this interface are prefixed by \cs{zref@}.
+%
+% Option \xoption{user} enabels the \emph{user interface}.
+% Here the commands are prefixed by \cs{z} to avoid name
+% clashes with existing macros.
+%
+% Then the packages provides some \emph{modules}. They
+% are applications for the reference system and can also be
+% considered as examples how to use the reference system.
+%
+% The modules can be loaded as packages. The package
+% name is prefixed with |zref-|, for example:
+%\begin{quote}
+%\begin{verbatim}
+%\RequirePackage{zref-abspage}
+%\end{verbatim}
+%\end{quote}
+% This is the preferred way if the package is loaded from
+% within other packages to avoid option clashes.
+%
+% As alternative package |zref| can be used and the modules
+% are given as options:
+%\begin{quote}
+%\begin{verbatim}
+%\usepackage[perpage,user]{zref}
+%\end{verbatim}
+%\end{quote}
+%
+% \section{Interface for programmers}
+%
+% The user interface is described in the next section \ref{sec:user}.
+%
+% \subsection{Entities}
+%
+% \paragraph{Reference.}
+% Internally a reference is a list of key value pairs:
+% \begin{quote}
+% |\Z at R@myref| $\rightarrow$
+% |\default{2.1}\page{7}|
+% \end{quote}
+% The generic format of a entry is:
+% \begin{quote}
+% |\Z at R@|\meta{refname} $\rightarrow$
+% |\|\meta{propname}|{|\meta{value}|}|
+% \end{quote}
+% \meta{refname} is the name that denoted references
+% (the name used in \cs{label} and \cs{ref}). \meta{propname}
+% is the name of the property or key. The property key macro
+% is never executed, it is used in parameter text matching only.
+%
+% \paragraph{Property.}
+% Because the name of a property is used in a macro name
+% that must survive the \xfile{.aux} file, the name is
+% restricted to letters and `@'.
+%
+% \paragraph{Property list.}
+% Often references are used for special purposes. Thus it
+% saves memory if just the properties are used in this
+% reference that are necessary for its purpose.
+%
+% Therefore this package uses the concept of \emph{property lists}.
+% A property list is a set of properties. The set of properties
+% that is used by the default \cs{label} command is the
+% \emph{main property list}.
+%
+% \subsection{Property list}
+%
+% \markexp means that the implementation of the
+% marked macro is expandable. \markexptwo goes a step further
+% and marks the macro expandable in exact two expansion steps.
+%
+% \begin{declcs}{zref at newlist}
+% \M{listname}
+% \end{declcs}
+% Declares a new empty property list.
+%
+% \begin{declcs}{zref at addprop}
+% \M{listname} \M{propname}\\
+% \cs{zref at localaddprop} \M{listname} \M{propname}
+% \end{declcs}
+% Adds the property \meta{propname}
+% to the property list \meta{listname}.
+% The property and list must exist.
+% The addition is global by \cs{zref at addprop} and limited to
+% local scope by \cs{zref at localaddprop}.
+% Between 2010/04/19 v2.13 and 2010/10/22 v2.19 a comma separated list
+% of properties could be used as argument \meta{propname}.
+% Since 2010/10/22 v2.19 the addition of several properties
+% at once is supported by \cs{zref at addprops}.
+%
+% \begin{declcs}{zref at addprops}
+% \M{listname} \M{propname list}\\
+% \cs{zref at localaddprops} \M{listname} \M{propname list}
+% \end{declcs}
+% These macros add a comma separated list of properties
+% \meta{propname list} to list \meta{listname}.
+% \cs{zref at addprops} works globally and \cs{zref at localaddprops}
+% locally. Since 2010/10/22 v2.19.
+%
+% \begin{declcs}{zref at listexists}
+% \M{listname} \M{then}
+% \end{declcs}
+% Executes \meta{then} if the property list \meta{listname} exists
+% or raise an error otherwise.
+%
+% \begin{declcs}{zref at iflistundefined}\markexp \M{listname}
+% \M{then} \M{else}
+% \end{declcs}
+% Executes \meta{then} if the list exists or \meta{else}
+% otherwise.
+%
+% \begin{declcs}{zref at iflistcontainsprop}
+% \M{listname} \M{propname} \M{then} \M{else}
+% \end{declcs}
+% Executes \meta{then} if the property \meta{propname} is part
+% of property list \meta{listname} or otherwise it
+% runs the \meta{else} part.
+%
+% \subsection{Property}
+%
+% \begin{declcs}{zref at newprop}
+% \* \M{propname} |[|\meta{default}|]| \M{value}
+% \end{declcs}
+% This command declares and configures a new property with
+% name \meta{propname}.
+%
+% In case of unknown references
+% or the property does not exist in the reference, the
+% \meta{default} is used as value. If it is not specified
+% here, a global default is used, see \cs{zref at setdefault}.
+%
+% The correct values of some properties are not known
+% immediately but at page shipout time. Prominent example
+% is the page number. These properties are declared with
+% the star form of the command.
+%
+% \begin{declcs}{zref at setcurrent}
+% \M{propname} \M{value}
+% \end{declcs}
+% This sets the current value of the property \meta{propname}.
+% It is a generalization of setting \hologo{LaTeX}'s \cs{currentlabel}.
+%
+% \begin{declcs}{zref at getcurrent}\markexptwo
+% \M{propname}
+% \end{declcs}
+% This returns the current value of the property \meta{propname}.
+% The value may not be correct, especially if the property
+% is bound to a page (start form of \cs{zref at newprop}) and the
+% right value is only known at shipout time (e.g. property `page').
+% In case of errors (e.g. unknown property) the empty string is
+% returned.
+%
+% Since version 2010/04/22 v2.14 \cs{zref at getcurrent} supports
+% \cs{zref at wrapper@unexpanded}.
+%
+% \begin{declcs}{zref at propexists}
+% \M{propname} \M{then}
+% \end{declcs}
+% Calls \meta{then} if the property \meta{propname} is available
+% or generates an error message otherwise.
+%
+% \begin{declcs}{zref at ifpropundefined}\markexp
+% \M{propname} \M{then} \M{else}
+% \end{declcs}
+% Calls \meta{then} or \meta{else} depending on the existence
+% of property \meta{propname}.
+%
+% \subsection{Reference generation}
+%
+% \begin{declcs}{zref at label}
+% \M{refname}
+% \end{declcs}
+% This works similar to \cs{label}. The reference \meta{refname} is
+% created and put into the \xfile{.aux} file with the
+% properties of the main property list.
+%
+% \begin{declcs}{zref at labelbylist}
+% \M{refname} \M{listname}
+% \end{declcs}
+% Same as \cs{zref at label} except that the properties are
+% taken from the specified property list \meta{listname}.
+%
+% \begin{declcs}{zref at labelbyprops}
+% \M{refname} |{|\meta{propnameA}|,|\meta{propnameB}|,|\dots|}|
+% \end{declcs}
+% Same as \cs{zref at label} except that these properties
+% are used that are given as comma separated list in the
+% second argument.
+%
+% \begin{declcs}{zref at newlabel}
+% \M{refname} |{|\dots|}|
+% \end{declcs}
+% This is the macro that is used in the \xfile{.aux} file.
+% It is basically the same as \cs{newlabel} apart from
+% the format of the data in the second argument.
+%
+% \subsection{Data extraction}
+%
+% \begin{declcs}{zref at extractdefault}\markexptwo
+% \M{refname} \M{propname} \M{default}
+% \end{declcs}
+% This is the basic command that refernces the value of a
+% property \meta{propname} for the reference \meta{refname}.
+% In case of errors such as undefined reference the \meta{default}
+% is used instead.
+%
+% \begin{declcs}{zref at extract}\markexptwo
+% \M{refname} \M{propname}
+% \end{declcs}
+% The command is an abbreviation for \cs{zref at extractdefault}.
+% As default the default of the property is taken, otherwise
+% the global default.
+%
+% Example for page references:
+% \begin{quote}
+% \begin{tabular}{@{}ll}
+% \hologo{LaTeX}:& |\pageref{foobar}|\\
+% \xpackage{zref}:& |\zref at extract{foobar}{page}|
+% \end{tabular}
+% \end{quote}
+% Both \cs{zref at extract} and \cs{zref at extractdefault} are
+% expandable. That means, these macros can directly
+% be used in expandable calculations, see the example file.
+% On the other side, babel's shorthands are not supported,
+% there are no warnings in case of undefined references.
+%
+% If an user interface doesn't need expandable macros
+% then it can use \cs{zref at refused} and \cs{zref at wrapper@babel}
+% for its user macros.
+%
+% \begin{declcs}{zref at refused}
+% \M{refname}
+% \end{declcs}
+% This command is not expandable. It causes the warnings if
+% the reference \meta{refname} is not defined. Use the
+% \cs{zref at extract} commands inside expandable contexts and
+% mark their use outside by \cs{zref at refused}, see the example
+% file.
+%
+% \begin{declcs}{zref at def@extract}%
+% \M{cmd} \M{refname} \M{propname}\\
+% \cs{zref at def@extractdefault}
+% \M{cmd} \M{refname} \M{propname} \M{default}
+% \end{declcs}
+% Both macros extract the property \meta{propname} from the reference
+% \meta{refname} the same way as macros \cs{zref at extract} and
+% \cs{zref at extractdefault}. The result is stored in macro \meta{cmd}.
+% Also \cs{zref at refused} is called to notify \hologo{LaTeX} that
+% the reference \meta{refname} is used. Added in 2011/10/04 v2.22.
+%
+% \begin{declcs}{zref at ifrefundefined}\markexp
+% \M{refname} \M{then} \M{else}
+% \end{declcs}
+% Macro \cs{zref at ifrefundefined} calls arguments \meta{then} or \meta{else}
+% dependent on the existence of the reference \meta{refname}.
+%
+% \begin{declcs}{zifrefundefined}
+% \M{refname} \M{then} \M{else}
+% \end{declcs}
+% Macro \cs{zifrefundefined} calls \cs{ref at refused} before
+% executing \cs{zref at ifrefundefined}. Babel shorthands are
+% supported in \meta{refname}.
+%
+% \begin{declcs}{zref at ifrefcontainsprop}\markexp
+% \M{refname} \M{propname} \M{then} \M{else}
+% \end{declcs}
+% Test whether a reference provides a property.
+%
+% \subsection{Setup}
+%
+% \begin{declcs}{zref at default}
+% \end{declcs}
+% Holds the global default for unknown values.
+%
+% \begin{declcs}{zref at setdefault}
+% |{|\meta{value}|}|
+% \end{declcs}
+% Sets the global default for unknown values.
+% The global default is used, if a property does not specify
+% an own default and the value for a property
+% cannot be extracted. This can happen if the reference is
+% unknown or the reference does not have the property.
+%
+% \begin{declcs}{zref at setmainlist}
+% |{|\meta{value}|}|
+% \end{declcs}
+% Sets the name of the main property list. The package
+% sets and uses |main|.
+%
+% \subsection{Declared properties}
+%
+% \begin{quote}
+% \renewcommand*{\arraystretch}{1.05}
+% \setlength{\tabcolsep}{2\tabcolsep}
+% \def\VV{\vphantom{\large \"Ag}}
+% \def\EMPTY{{\itshape\textless empty\textgreater}}
+% \def\pl#1{&thepage&\cs{number}\cs{#1}}
+% \begin{tabular}{@{}>{\sffamily}l|>{\ttfamily}l|>{\ttfamily}l|>{\ttfamily}l@{}}
+% \rmfamily Module&
+% \rmfamily Property&
+% \rmfamily Property list&
+% \rmfamily Default\\
+% \hline
+% (base)
+% & default & main & \EMPTY\\
+% & page & main & \EMPTY\\
+% \hline
+% abspage
+% & abspage & main & 0\\
+% \hline
+% counter
+% & counter & main & \EMPTY\\
+% \hline
+% hyperref
+% & anchor & main & \EMPTY\\
+% & url & & \EMPTY\\
+% \hline
+% pageattr
+% & pdfpageattr & thepage & \dots\\
+% & pdfpagesattr & LastPage & \dots\\
+% \hline
+% pagelayout\footnotemark
+% \pl{mag}\\
+% \pl{paperwidth}\\
+% \pl{paperheight}\\
+% \pl{stockwidth}\\
+% \pl{stockheight}\\
+% \pl{pdfpageheight}\\
+% \pl{pdfpagewidth}\\
+% \pl{pdfhorigin}\\
+% \pl{pdfvorigin}\\
+% \pl{hoffset}\\
+% \pl{voffset}\\
+% \pl{topmargin}\\
+% \pl{oddsidemargin}\\
+% \pl{evensidemargin}\\
+% \pl{textwidth}\\
+% \pl{textheight}\\
+% \pl{headheight}\\
+% \pl{headsep}\\
+% \pl{footskip}\\
+% \pl{marginparwidth}\\
+% \pl{marginparsep}\\
+% \pl{columnwidth}\\
+% \pl{columnsep}\\
+% \hline
+% perpage
+% & pagevalue & perpage & 0\\
+% & page & perpage & \EMPTY\\
+% & abspage & perpage & 0\\
+% \hline
+% savepos
+% & posx & savepos & 0\\
+% & posy & savepos & 0\\
+% \hline
+% titleref
+% & title & main & \EMPTY\\
+% \hline
+% xr
+% & anchor & & \EMPTY\\
+% & externaldocument & & \EMPTY\\
+% & theotype & & \EMPTY\\
+% & title & & \EMPTY\\
+% & url & & \EMPTY\\
+% \end{tabular}
+% \footnotetext{Module \xmodule{pagelayout} only defines properties
+% if the parameter exists.}%
+% \end{quote}
+%
+% \subsection{Wrapper for advanced situations}
+%
+% \begin{declcs}{zref at wrapper@babel}
+% |{|\dots|}| \M{name}
+% \end{declcs}
+% This macro helps to add shorthand support. The second
+% argument is protected, then the code of the first argument
+% is called with the protected name appended. Examples
+% are in the sources.
+%
+% \begin{declcs}{zref at wrapper@immediate}
+% |{|\dots|}|
+% \end{declcs}
+% There are situations where a label must be written instantly
+% to the \xfile{.aux} file, for example after the last page.
+% If the \cs{zlabel} or \cs{label} command is put inside this wrapper,
+% immediate writing is enabled. See the implementation for
+% module \xmodule{lastpage} for an example of its use.
+%
+% \begin{declcs}{zref at wrapper@unexpanded}
+% |{|\dots|}|
+% \end{declcs}
+% Assuming someone wants to extract a value for property |bar|
+% and store the result in a macro |\foo| without traces of
+% the expanding macros and without expanding the value.
+% This (theoretical?) problem can be solved by this wrapper:
+% \begin{quote}
+%\begin{verbatim}
+%\zref at wrapper@unexpanded{%
+% \edef\foo{%
+% \zref at extract{someref}{bar}%
+% }%
+%}
+%\end{verbatim}
+% \end{quote}
+% The \cs{edef} forces the expansion of \cs{zref at extract},
+% but the extraction of the value is prevented by
+% the wrapper that uses \hologo{eTeX}'\ \cs{unexpanded} for this
+% purpose. Supported macros are \cs{zref at extract}, \cs{zref at extractdefault}
+% and since version 2010/04/22 v2.14 macro \cs{zref at getcurrent}.
+%
+% \subsection{Counter for unique names}
+%
+% Some modules (\xmodule{titleref} and \xmodule{dotfillmin})
+% need unique names for automatically generated label names.
+%
+% \begin{declcs}{zref at require@unique}
+% \end{declcs}
+% This command creates the unique counter |zref at unique| if the
+% counter does not already exist.
+%
+% \begin{declcs}{thezref at unique}
+% \end{declcs}
+% This command is used to generate unique label names.
+%
+% \section{User interface}\label{sec:user}
+%
+% \subsection{Module \xmodule{user}}
+%
+% The user interface for this package and its modules
+% is enabled by \xpackage{zref}'s package option \xmodule{user}
+% or package \xpackage{zref-user}.
+% The names of user commands are prefixed by |z| in order
+% to avoid name clashes with existing macros of the same
+% functionality. Thus the package does not disturb the
+% traditional reference scheme, both can be used together.
+%
+% The syntax descriptions contain the following markers
+% that are intended as hints for programmers:
+% \begin{quote}
+% \begin{tabular}{@{}ll@{}}
+% \markbabel\unskip & Babel shorthands are allowed.\\
+% \markrobust\unskip & Robust macro.\\
+% \markexp\unskip & Expandable version:\\
+% & \textbullet\ robust,
+% unless the extracted values are fragile,\\
+% & \textbullet\ no babel shorthand suport.\\
+% \markexptwo\unskip & Expandable like \markexp and:\\
+% & \textbullet\ expandable in exact two steps.\\
+% \end{tabular}
+% \end{quote}
+%
+% The basic user interface of the package without modules
+% are commands that mimic the standard \hologo{LaTeX} behaviour
+% of \cs{label}, \cs{ref}, and \cs{pageref}:
+%
+% \begin{declcs}{zlabel}
+% \M{refname}\markbabel
+% \end{declcs}
+% Similar to \cs{label}. It generates a label with name
+% \meta{refname} in the new reference scheme.
+%
+% \begin{declcs}{zref}
+% |[|\meta{propname}|]| \M{refname}\markbabel
+% \end{declcs}
+% Without optional argument similar to \cs{ref}, it returns
+% the default reference property. This property is named
+% |default|:
+% \[
+% |\zref{|x|}| \equiv |\zref[default]{|x|}|
+% \]
+%
+% \begin{declcs}{zpageref}
+% \M{refname}\markbabel
+% \end{declcs}
+% Convenience macro, similar to \cs{pageref}.
+% \[
+% |\zpageref{|x|}| \equiv |\zref[page]{|x|}|
+% \]
+%
+% \begin{declcs}{zrefused}
+% \M{refname}\markbabel
+% \end{declcs}
+% Some of the user commands in the modules are expandable.
+% The use of such commands do not cause any undefined
+% reference warnings, because inside of expandable
+% contexts this is not possible. However, if there is
+% a place outside of expandable contexts, \cs{refused}
+% is strongly recommended. The reference \meta{refname}
+% is marked as used, undefined ones will generate
+% warnings.
+%
+% \subsection{Module \xmodule{abspage}}
+%
+% With the help of package \xpackage{atbegshi}
+% a new counter |abspage| with absolute page numbers is provided.
+% Also a new property |abspage| is defined and added to the
+% main property list. Thus you can reference the absolute
+% page number:
+% \begin{quote}
+% |Section \zref{foo} is on page \zpageref{foo}.|\\
+% |This is page \zref[abspage]{foo}|\\
+% |of \zref[abspage]{LastPage}.|
+% \end{quote}
+% The example also makes use of module \xmodule{lastpage}.
+%
+% \subsection{Module \xmodule{lastpage}}
+%
+% Provides the functionality of package \xpackage{lastpage}
+% \cite{lastpage} in the new reference scheme.
+% The label |LastPage| is put at the end of the document.
+% You can refer the last page number with:
+% \begin{quote}
+% |\zref at extract{LastPage}{page}| (+ |\zref at refused{LastPage}|)\\
+% \end{quote}
+% or
+% \begin{quote}
+% |\zpageref{LastPage}| (module \xmodule{user})
+% \end{quote}
+%
+% Since version 2008/10/01 v2.3 the module defines the list |LastPage|.
+% In addition to the properties of the main list label |LastPage| also
+% stores the properties of this list |LastPage|. The default of this
+% list is empty. The list can be used by the user to add additional
+% properties for label |LastPage|.
+%
+% \subsubsection{Tests for last page}
+%
+% Since version 2010/03/26 v2.8 the macros \cs{zref at iflastpage}
+% and \cs{ziflastpage} were added. They test the reference,
+% whether it is a reference of the last page.
+%
+% \begin{declcs}{zref at iflastpage}\markexp \M{refname} \M{then} \M{else}
+% \end{declcs}
+% Macro \cs{zref at iflastpage} compares the references \meta{refname}
+% with \meta{LastPage}. Basis of the comparison is the value of
+% property |abspage|, because the values are different for different
+% pages. This is not ensured by property |page|. Therefore module
+% \xmodule{abspage} is loaded by module \xmodule{lastpage}.
+% If both values of property |abspage| are present and match,
+% then \meta{then} is executed, otherwise code \meta{else} is called.
+% If one or both references are undefined or lack the property |abspage|,
+% then \meta{else} is executed.
+%
+% Macro \cs{zref at iflastpage} is expandable, therefore \cs{zref at refused}
+% should be called on \meta{refname} and \meta{LastPage}.
+%
+% \begin{declcs}{ziflastpage} \M{refname} \M{then} \M{else}
+% \end{declcs}
+% Macro \cs{ziflastpage} has the same function as \cs{zref at iflastpage},
+% but adds support for babel shorthands in \meta{refname} and
+% calls \cs{zref at refused}. However macro \cs{ziflastpage} is not
+% expandable.
+%
+% \subsubsection{Example}
+%
+% \begin{macrocode}
+%<*example-lastpage>
+%<<END_EXAMPLE
+\NeedsTeXFormat{LaTeX2e}
+\documentclass{report}
+
+\newcounter{foo}
+\renewcommand*{\thefoo}{\Alph{foo}}
+
+\usepackage{zref-lastpage,zref-user}[2019/11/29]
+
+\makeatletter
+\zref at newprop{thefoo}{\thefoo}
+\zref at newprop{valuefoo}{\the\value{foo}}
+\zref at newprop{chapter}{\thechapter}
+\zref at addprops{LastPage}{thefoo,valuefoo,chapter}
+\makeatother
+
+\newcommand*{\foo}{%
+ \stepcounter{foo}%
+ [Current foo: \thefoo]%
+}
+
+\begin{document}
+ \chapter{First chapter}
+ Last page is \zref{LastPage}.\\
+ Last chapter is \zref[chapter]{LastPage}.\\
+ Last foo is \zref[thefoo]{LastPage}.\\
+ Last value of foo is \zref[valuefoo]{LastPage}.\\
+ \foo
+ \chapter{Second chapter}
+ \foo\foo\foo
+ \chapter{Last chapter}
+ \foo
+\end{document}
+%END_EXAMPLE
+%</example-lastpage>
+% \end{macrocode}
+%
+% \subsection{Module \xmodule{thepage}}
+%
+% This module \xmodule{thepage} loads module \xmodule{abspage},
+% constructs a reference name using the absolute page number
+% and remembers property |page|. Other properties can be added
+% by adding them to the property list |thepage|.
+%
+% \begin{declcs}{zthepage} \M{absolute page number}\\
+% \end{declcs}
+% Macro \cs{zthepage} is basically a \cs{zpageref}. The reference
+% name is yield by the \meta{absolute page number}. If the reference
+% is not defined, then the default for property |page| is used.
+%
+% \begin{declcs}{zref at thepage@name}\markexp \M{absolute page number}
+% \end{declcs}
+% Macro \cs{zref at thepage@name} returns the internal reference
+% name that is constructed using the \meta{absolute page number}.
+% The internal reference name should not be used directly, because
+% it might change in future versions.
+%
+% \begin{declcs}{zref at thepage}\markexp \M{absolute page number}\\
+% \cs{zref at thepage@refused} \M{absolute page number}
+% \end{declcs}
+% Macro \cs{zref at thepage} returns the page number (\cs{thepage})
+% of \meta{absolute page number}. Because this macro is expandable,
+% \cs{zref at thepage@refused} is used outside an expandable context
+% to mark the reference as used.
+%
+%
+% \subsection{Module \xmodule{nextpage}}
+%
+% \begin{declcs}{znextpage}
+% \end{declcs}
+% Macro \cs{znextpage} prints \cs{thepage} of the following page.
+% It gets the current absolute page number by using a label.
+% There are three cases for the next page:
+% \begin{enumerate}
+% \item The next page is not known yet because of undefined references.
+% Then \cs{zunknownnextpagename} is used instead. The default for
+% this macro is the default of property |page|.
+% \item This page is the last page. Then \cs{znonextpagename}
+% is used. Its default is empty.
+% \item The next page is known, then \cs{thepage} of the next
+% page is used (the value of property |page| of the next page).
+% \end{enumerate}
+%
+% \subsubsection{Configuration}
+%
+% The behaviour can be configured by the following macros.
+%
+% \begin{declcs}{zunknownnextpagename}\\
+% \cs{znonextpagename}
+% \end{declcs}
+% If the next page is not known or available, then
+% \cs{znextpage} uses these name macros as default.
+% \cs{zunknownnextpagename} is used in case of undefined
+% references. Default is the value of property |page| of the
+% next page (\cs{thepage}). Module \xmodule{thepage} is used.
+%
+% Macro \cs{znonextpagename} is used, if the next page does
+% not exists. That means that the current page is last page.
+% The default is empty.
+%
+% \begin{declcs}{znextpagesetup} \M{unknown} \M{no next}
+% \M{next}
+% \end{declcs}
+% Acording to the case (see \cs{znextpage}) macro \cs{znextpage}
+% calls an internal macro with an argument. The argument is
+% either \cs{thepage} of the next page or one of \cs{zunknownnextpagename}
+% or \cs{znonextpagename}. These internal macro can be changed by
+% \cs{znextpagesetup}. It expects the definition texts for these
+% three cases of a macro with one argument.
+% The default is
+% \begin{quote}
+% |\znextpagesetup{#1}{#1}{#1}|
+% \end{quote}
+%
+% \subsubsection{Example}
+%
+% \begin{macrocode}
+%<*example-nextpage>
+%<<END_EXAMPLE
+\documentclass{book}
+
+\usepackage{zref-nextpage}[2019/11/29]
+\znextpagesetup
+ {\thepage}% next page is unknown
+ {\thepage\ (#1)}% this page is last page
+ {\thepage\ $\rightarrow$ #1}% next page is known
+\renewcommand*{\znonextpagename}{last page}
+
+\usepackage{fancyhdr}
+\pagestyle{fancy}
+\fancyhf{}
+\fancyhead[LE,RO]{\znextpage}
+\fancypagestyle{plain}{%
+ \fancyhf{}%
+ \fancyhead[LE,RO]{\znextpage}%
+}
+
+\begin{document}
+\frontmatter
+ \tableofcontents
+\mainmatter
+ \chapter{Hello World}
+ \clearpage
+ \section{Last section}
+\end{document}
+%END_EXAMPLE
+%</example-nextpage>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{totpages}}
+%
+% For the total number of pages of a document you need to
+% know the absolute page number of the last page.
+% Both modules \xmodule{abspage} and \xmodule{lastpage}
+% are necessary and automatically enabled.
+%
+% \begin{declcs}{ztotpages}\markexp
+% \end{declcs}
+% Prints the total number of pages or |0| if this
+% number is not yet known. It expands to an explicit number
+% and can also used even in expandable calculations (\cs{numexpr})
+% or counter assignments.
+%
+% \subsection{Module \xmodule{pagelayout}}
+%
+% The module defines additional properties for each parameter
+% of the page layout that is effective during page shipout.
+% The value of length parameters is given in sp without the
+% unit as plain number.
+%
+% Some parameters are specific for a class (e.g.\@ \xoption{stockwidth}
+% and \xoption{stockheight} for class \xclass{memoir}) or the
+% \hologo{TeX} engine like \hologo{pdfTeX}. If the parameter is not
+% available, then the property will not be defined. The default value
+% of the property is the current setting of the parameter.
+%
+% The module \xmodule{thepage} is loaded that generates a label
+% for each page. The properties of module \xmodule{pagelayout}
+% are added to the property list |thepage| of module \xmodule{thepage}.
+%
+% List of properties:
+% \begin{quote}
+% \def\x#1{\cs{#1}}%
+% \begin{tabular}{l>{\sffamily}ll}
+% \textrm{parameter} & \textrm{property} & remarks\\
+% \hline
+% \x{mag}\\
+% \x{paperwidth}\\
+% \x{paperheight}\\
+% \x{stockwidth}& class \xclass{memoir}\\
+% \x{stockheight}& class \xclass{memoir}\\
+% \x{pdfpagewidth}& \hologo{pdfTeX}, \hologo{LuaTeX}\\
+% \x{pdfpageheight}& \hologo{pdfTeX}, \hologo{LuaTeX}\\
+% \x{pdfhorigin}& \hologo{pdfTeX}, \hologo{LuaTeX}\\
+% \x{pdfvorigin}& \hologo{pdfTeX}, \hologo{LuaTeX}\\
+% \x{hoffset}\\
+% \x{voffset}\\
+% \x{topmargin}\\
+% \x{oddsidemargin}\\
+% \x{evensidemargin}\\
+% \x{textwidth}\\
+% \x{textheight}\\
+% \x{headheight}\\
+% \x{headsep}\\
+% \x{footskip}\\
+% \x{marginparwidth}\\
+% \x{marginparsep}\\
+% \x{columnwidth}\\
+% \x{columnsep}\\
+% \end{tabular}
+% \end{quote}
+%
+% \begin{declcs}{zlistpagelayout}
+% \end{declcs}
+% At the end of document the page layout parameter for each page are
+% printed into the \xext{log} file if macro \cs{zlistpagelayout}
+% is called before |\end{document}| (preamble is a good place).
+%
+% \subsection{Module \xmodule{marks}}
+%
+% ToDo.
+%
+% \subsection{Module \xmodule{runs}}
+%
+% Module \xmodule{runs} counts the \hologo{LaTeX} runs since last
+% \xext{aux} file creation and prints the number in the
+% \xext{log} file.
+%
+% \begin{declcs}{zruns}\markexp
+% \end{declcs}
+% Prints the the total number of \hologo{LaTeX} runs including
+% the current one. It expands to an explicit number.
+% Before |begin{document}| the value is zero meaning
+% the \xext{aux} file is not read yet. If a previous
+% \xext{aux} file exists, the value found there increased
+% by one is the new number. Otherwise \cs{zruns} is set to one.
+% \hologo{LaTeX}~runs where the \xext{aux} files are not rewritten
+% are not counted (see \cs{nofiles}).
+%
+% \subsection{Module \xmodule{perpage}}
+%
+% With \cs{@addtoreset} or \cs{numberwithin} a counter can be
+% reset if another counter is incremented. This do not work
+% well if the other counter is the page counter. The page counter is
+% incremented in the output routine that is often called asynchronous
+% somewhere on the next page. A reference mechanism costs at least
+% two \hologo{LaTeX} runs, but ensures correct page counter values.
+%
+% \begin{declcs}{zmakeperpage}
+% |[|\meta{reset}|]| \M{counter}
+% \end{declcs}
+% At the of a new page counter \meta{counter} starts
+% counting with value \meta{reset} (default is \texttt{1}).
+% The macro has the same
+% syntax and semantics as \cs{MakePerPage} of package
+% \xpackage{perpage} \cite{perpage}.
+% Also \xoption{perpage} of package \xpackage{footmisc} \cite{footmisc}
+% can easily be simulated by
+% \begin{quote}
+% |\zmakeperpage{footnote}| \itshape |% \usepackage[perpage]{footmisc}|
+%\end{quote}
+% If footnote symbols are used, some people dislike the
+% first symbol \ensuremath{\dagger}. It can easily be skipped:
+% \begin{quote}
+% |\zmakeperpage[2]{footnote}|
+% \end{quote}
+%
+% \begin{declcs}{thezpage}\\
+% counter |zpage|
+% \end{declcs}
+% If the formatted counter value of the counter that is reset at
+% a new page contains the page value, then you can use \cs{thezpage},
+% the page number of the current page. Or counter |zpage| can be
+% used, if the page number should be formatted differently from
+% the current page number. Example:
+%\begin{quote}
+%\begin{verbatim}
+%\newcounter{foobar}
+%\zmakeperpage{foobar}
+%\renewcommand*{\thefoobar}{\thezpage-\arabic{foobar}}
+% % or
+%\renewcommand*{\thefoobar}{\roman{zpage}-\arabic{foobar}}
+%\end{verbatim}
+%\end{quote}
+%
+% \begin{declcs}{zunmakeperpage}
+% \M{counter}
+% \end{declcs}
+% The reset mechanism for this counter is deactivated.
+%
+%
+% \subsection{Module \xmodule{counter}}
+%
+% This option just add the property |counter| to the main
+% property list. The property stores the counter name,
+% that was responsible for the reference. This is the
+% property \xpackage{hyperref}'s \cs{autoref} feature
+% uses. Thus this property |counter| may be useful
+% for a reimplementation of the autoref feature,
+% see the section \ref{sec:todo} with the todo list.
+%
+% \subsection{Module \xmodule{titleref}}
+%
+% This option makes section and caption titles available
+% to the reference system similar to packages \xpackage{titleref}
+% or \xpackage{nameref}.
+%
+% \begin{declcs}{ztitleref}
+% \M{refname}\markbabel
+% \end{declcs}
+% Print the section or caption title of reference \meta{refname},
+% similar to \cs{nameref} or \cs{titleref}.
+%
+% \begin{declcs}{ztitlerefsetup}
+% |{|\textit{key$_1$=value$_1$, key$_2$=value$_2$, \dots}|}|
+% \end{declcs}
+% This command allows to configure the behaviour of module
+% \xmodule{titleref}. The following keys are available:
+% \begin{description}
+% \let\bfseries\relax
+% \item[\texttt{title=}\meta{value}]\mbox{}\\*
+% Sets the current title.
+% \item[\texttt{stripperiod=true\string|false}]\mbox{}\\*
+% Follow package \xpackage{nameref} that
+% removes a last period. Default: |true|.
+% \item[\texttt{expand=true\string|false}]\mbox{}\\*
+% Package \cs{titleref} expands the title first. This way
+% garbage and dangerous commands can be removed, e.g.
+% \cs{label}, \cs{index}\dots. See implementation section
+% for more details. Default is |false|.
+% \item[\texttt{cleanup=\{}\textrm{\dots}\texttt{\}}]\mbox{}\\*
+% Hook to add own cleanup code, if method |expand| is used.
+% See implementation section for more details.
+% \end{description}
+%
+% \subsection{Module \xmodule{savepos}}
+%
+% This option supports a feature that \pdfTeX\ provides
+% (and \hologo{XeTeX}).
+% \pdfTeX\ is able to tell the current position on the
+% page. The page position is not instantly known. First the
+% page must be constructed by \hologo{TeX}'s asynchronous output
+% routine. Thus the time where the position is known is
+% the page shipout time. Thus a reference system where the
+% information is recorded in the first run and made available
+% for use in the second run comes in handy.
+%
+% \begin{declcs}{zsavepos}
+% \M{refname}
+% \end{declcs}
+% It generates a reference with name \meta{refname}.
+% The reference stores the location where \cs{zsavepos}
+% is executed in properties |posx| and |posy|.
+%
+% \begin{declcs}{zsaveposx}
+% \M{refname}\\
+% \cs{zsaveposy}
+% \M{refname}
+% \end{declcs}
+% Same as \cs{zsavepos} except that only the |x| or |y| component
+% of the position is stored. Since 2011/12/05 v2.23.
+%
+% \begin{declcs}{zposx}\markexp
+% \M{refname}\\
+% \SpecialUsageIndex{\zposy}\cs{zposy}\markexp \M{refname}
+% \end{declcs}
+% Get the position as number. Unit is sp. Horizontal
+% positions by \cs{zposx} increase from left to right.
+% Vertical positions by \cs{zposy} from bottom to top.
+%
+% Do not rely on absolute page numbers. Because of problems
+% with the origin the numbers may differ in DVI or PDF mode
+% of \pdfTeX. Therefore work with relative values by comparisons.
+%
+% Both \cs{zposx} and \cs{zposy} are expandable and can be
+% used inside calculations (\cs{setcounter}, \cs{addtocounter},
+% package \xpackage{calc}, \cs{numexpr}). However this property
+% prevents from notifying \hologo{LaTeX} that the reference is actually
+% used (the notifying is not expandable). Therefore you should
+% mark the reference as used by \cs{zrefused}.
+%
+% This module uses \pdfTeX's \cs{pdfsavepos}, \cs{pdflastxpos},
+% and \cs{pdflastypos}. They are available in PDF mode and
+% since version 1.40.0 also in DVI mode.
+%
+% \begin{declcs}{zref at savepos}
+% \end{declcs}
+% Macro \cs{zref at savepos} performs the first part of \cs{zsavepos}
+% by calling \cs{pdfsavepos} (if \xext{aux} files are writable).
+%
+% Thus \cs{zsavepos} is basically \cs{zref at savepos} followed
+% by |\zref at labelbylist{|\texttt{\meta{refname}}|}{savepos}|.
+% If \cs{TeXXeTstate} is detected and enabled, \cs{savepos}
+% also adds \cs{zref at savepos} at the end to support \cs{beginR}
+% where the whatits are processed in reverse order.
+% The property list |savepos| contains the properties |posx|
+% and |posy|.
+%
+% \subsection{Module \xmodule{dotfill}}
+%
+% \begin{declcs}{zdotfill}
+% \end{declcs}
+% This package provides the command \cs{zdotfill} that works
+% similar to \cs{dotfill}, but can be configured. Especially
+% it suppresses the dots if a minimum number of dots cannot be set.
+%
+% \begin{declcs}{zdotfillsetup}
+% |{|\textit{key$_1$=value$_1$, key$_2$=value$_2$, \dots}|}|
+% \end{declcs}
+% This command allows to configure the behaviour of \cs{zdotfill}.
+% The following keys are available:
+% \begin{description}
+% \let\bfseries\relax
+% \item[\texttt{min=}\meta{count value}]\mbox{}\\*
+% If the actual number of dots are smaller than \meta{count value},
+% then the dots are suppressed. Default: |2|.
+% \item[\texttt{unit=}\meta{dimen value}]\mbox{}\\*
+% The width of a dot unit is given by \meta{dimen value}.
+% Default: |0.44em| (same as the unit in \cs{dotfill}).
+% \item[\texttt{dot=}\meta{value}]\mbox{}\\*
+% The dot itself is given by \meta{value}. Default: |.| (dot, same as
+% the dot in \cs{dotfill}).
+% \end{description}
+%
+% \subsection{Module \xmodule{env}}
+%
+% This module defines two properties |envname| and |envline|. They
+% remember the name of the environment and the line number at
+% the start of the environment.
+%
+% \subsection{Module \xmodule{xr}}
+%
+% This package provides the functionality of package \xpackage{xr},
+% see \cite{xr}. It also supports the syntax of \xpackage{xr-hyper}.
+%
+% \begin{declcs}{zexternaldocument}
+% \* |[|\meta{prefix}|]|\markbabel \M{external document}
+% |[|\meta{url}|]|
+% \end{declcs}
+% See \cs{externaldocument} for a description of this option.
+% The found labels also get a property |externaldocument| that
+% remembers \meta{external document}.
+% The standard reference scheme and the scheme of this
+% package use different name spaces for reference names.
+% If the external document uses both systems. Then one
+% import statement would put the names in one namespace
+% and probably causing problems with multiple references
+% of the same name. Thus the star form only looks for
+% \cs{newlabel} in the \xfile{.aux} files, whereas without
+% star only \cs{zref at newlabel}s are used.
+%
+% In the star form it tries to detect labels from
+% \xpackage{hyperref}, \xpackage{titleref}, and \xpackage{ntheorem}.
+% If such an extended property from the packages before cannot
+% be found or are empty, they are not included in the
+% imported reference.
+%
+% Warnings are given if a reference name is already in use
+% and the item is ignored. Unknown properties will automatically
+% be declared.
+%
+% If the external references contain |anchor| properties,
+% then we need also a url to be able to address the external
+% file. As default the filename is taken with a default
+% extension.
+%
+% \begin{declcs}{zxrsetup}
+% |{|\textit{key$_1$=value$_1$, key$_2$=value$_2$, \dots}|}|
+% \end{declcs}
+% The following setup options are available:
+% \begin{description}
+% \item[\xoption{ext}:] It sets the default extension.
+% \item[\xoption{tozreflabel}:] Boolean option. The found references
+% are imported as zref labels. This is enabled by default.
+% \item[\xoption{toltxlabel}:] Boolean option. The found references
+% are imported as \hologo{LaTeX} labels. Packages \xpackage{nameref},
+% \xpackage{titleref} and class \xclass{memoir} are supported.
+% \item[\xoption{urluse}:] Boolean option. If enabled, then a URL
+% is stored in a macro and the macro is put in property `urluse'.
+% The URL is not put in property `url'.
+% The purpose is to save \hologo{TeX} memory.
+% \item[\xoption{verbose}:] Boolean option. List the imported labels in the
+% \xext{log} file. Default is |false|.
+% \end{description}
+%
+% \begin{declcs}{zref at xr@ext}
+% \end{declcs}
+% If the \meta{url} is not specified in \cs{zref at externaldocument},
+% then the url will be constructed with the file name and
+% this macro as extension. \cs{XR at ext} is used if
+% \xpackage{hyperref} is loaded, otherwise |pdf|.
+%
+% \section{ToDo}\label{sec:todo}
+%
+% Among other things the following issues are left for future work:
+% \begin{itemize}
+% \item Other applications: autoref, hyperref, \dots
+% \end{itemize}
+%
+% \section{Example}
+%
+% \begin{macrocode}
+%<*example>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\documentclass{book}
+
+\usepackage[ngerman]{babel}%
+
+\usepackage[savepos,totpages,titleref,dotfill,counter,user]{zref}
+
+% \end{macrocode}
+%
+% Chapters are wrapped inside \cs{ChapterStart} and
+% \cs{ChapterStop}. The first argument \verb|#1| of \cs{ChapterStart}
+% is used to form a label id \verb|chap:#1|. At the end of
+% the chapter another label is set by \cs{zref at wrapper@immediate}, because
+% otherwise at the end of document a deferred write would not
+% be written, because there is no page for shipout.
+%
+% Also this example shows how chapter titles can be recorded.
+% A new property \verb|chaptitle| is declared and added to the
+% main property list. In \cs{ChapterStart} the current value
+% of the property is updated.
+% \begin{macrocode}
+\makeatletter
+\zref at newprop{chaptitle}{}
+\zref at addprop{main}{chaptitle}
+
+\newcommand*{\ChapterStart}[2]{%
+ \cleardoublepage
+ \def\current at chapid{#1}%
+ \zref at setcurrent{chaptitle}{#2}%
+ \chapter{#2}%
+ \zlabel{chap:#1}%
+}
+\newcommand*{\ChapterStop}{%
+ \cleardoublepage
+ \zref at wrapper@immediate{%
+ \zref at labelbyprops{chapend:\current at chapid}{abspage}%
+ }%
+}
+% \end{macrocode}
+% \cs{ChapterPages} calculates and returns the number of pages of the
+% referenced chapter.
+% \begin{macrocode}
+\newcommand*{\ChapterPages}[1]{%
+ \zrefused{chap:#1}%
+ \zrefused{chapend:#1}%
+ \number\numexpr
+ \zref at extract{chapend:#1}{abspage}%
+ -\zref at extract{chap:#1}{abspage}%
+ +1\relax
+}
+\makeatother
+% \end{macrocode}
+% \begin{macrocode}
+\begin{document}
+% \end{macrocode}
+% As exception we use \cs{makeatletter} here, because
+% this is just an example file that also should show some of
+% programmer's interface.
+% \begin{macrocode}
+\makeatletter
+
+\frontmatter
+\zlabel{documentstart}
+
+\begin{itemize}
+\item
+ The frontmatter part has
+ \number\numexpr\zref at extract{chap:first}{abspage}-1\relax
+ ~pages.
+\item
+ Chapter \zref{chap:first} has \ChapterPages{first} page(s).
+\item
+ Section \zref{hello} is on the
+ \ifcase\numexpr
+ \zref at extractdefault{hello}{page}{0}%
+ -\zref at extractdefault{chap:first}{page}{0}%
+ +1\relax
+ ??\or first\or second\or third\or forth\fi
+ ~page inside its chapter.
+\item
+ The document has
+ \zref[abspage]{LastPage} pages.
+ This number is \ifodd\ztotpages odd\else even\fi.
+\item
+ The last page is labeled with \zpageref{LastPage}.
+\item
+ The title of chapter \zref{chap:next} %
+ is ``\zref[chaptitle]{chap:next}''.
+\end{itemize}
+
+\tableofcontents
+
+\mainmatter
+\ChapterStart{first}{First chapter}
+
+% \end{macrocode}
+% The user level commands should protect babel shorthands
+% where possible. On the other side, expandable extracting
+% macros are useful in calculations, see above the
+% examples with \cs{numexpr}.
+% \begin{macrocode}
+\section{Test}
+\zlabel{a"o}
+Section \zref{a"o} on page
+\zref at wrapper@babel\zref at extract{a"o}{page}.
+
+Text.
+\newpage
+
+\section{Hello World}
+\zlabel{hello}
+
+\ChapterStop
+
+\ChapterStart{next}{Next chapter with \emph{umlauts}: "a"o"u"s}
+
+% \end{macrocode}
+%
+% Here an example follows that makes use of \pdfTeX's ``savepos''
+% feature. The position on the page is not known before the
+% page is constructed and shipped out. Therefore the position
+% ist stored in references and are available for calculations
+% in the next \hologo{LaTeX} compile run.
+% \begin{macrocode}
+The width of the first column is
+ \the\dimexpr \zposx{secondcol}sp - \zposx{firstcol}sp\relax,\\
+the height difference of the two baselines is
+ \the\dimexpr \zposy{firstcol}sp - \zposy{secondline}sp\relax:\\
+\begin{tabular}{ll}
+ \zsavepos{firstcol}Hello&\zsavepos{secondcol}World\\
+ \zsavepos{secondline}Second line&foobar\\
+\end{tabular}
+
+% \end{macrocode}
+% With \cs{zrefused} \hologo{LaTeX} is notified, if the references
+% are not yet available and \hologo{LaTeX} can generate the rerun
+% hint.
+% \begin{macrocode}
+\zrefused{firstcol}
+\zrefused{secondcol}
+\zrefused{secondline}
+
+\ChapterStop
+% \end{macrocode}
+% Test for module \cs{dotfill}.
+% \begin{macrocode}
+\ChapterStart{dotfill}{Test for dotfill feature}
+\newcommand*{\dftest}[1]{%
+ #1&
+ [\makebox[{#1}]{\dotfill}]&
+ [\makebox[{#1}]{\zdotfill}]\\
+}
+\begin{tabular}{rll}
+& [\verb|\dotfill|] & [\verb|\zdotfill|]\\
+\dftest{0.43em}
+\dftest{0.44em}
+\dftest{0.45em}
+\dftest{0.87em}
+\dftest{0.88em}
+\dftest{0.89em}
+\dftest{1.31em}
+\dftest{1.32em}
+\dftest{1.33em}
+\end{tabular}
+\ChapterStop
+\end{document}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</example>
+% \end{macrocode}
+%
+% \StopEventually{
+% }
+%
+% \section{Implementation}
+%
+% \subsection{Package \xpackage{zref}}
+%
+% \subsubsection{Identification}
+%
+% \begin{macrocode}
+%<*package>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref}
+ [2019/11/29 v2.28 A new reference scheme for LaTeX (HO)]%
+% \end{macrocode}
+%
+% \subsubsection{Load basic module}
+%
+% \begin{macrocode}
+\RequirePackage{zref-base}[2019/11/29]
+% \end{macrocode}
+% Abort package loading if \xpackage{zref-base} could not be
+% loaded successfully.
+% \begin{macrocode}
+\@ifundefined{ZREF at base@ok}{\endinput}{}
+% \end{macrocode}
+%
+% \subsubsection{Process options}
+%
+% Known modules are loaded and the release date is checked.
+% \begin{macrocode}
+\def\ZREF at temp#1{%
+ \DeclareOption{#1}{%
+ \AtEndOfPackage{%
+ \RequirePackage{zref-#1}[2019/11/29]%
+ }%
+ }%
+}
+\ZREF at temp{abspage}
+\ZREF at temp{counter}
+\ZREF at temp{dotfill}
+\ZREF at temp{hyperref}
+\ZREF at temp{lastpage}
+\ZREF at temp{marks}
+\ZREF at temp{nextpage}
+\ZREF at temp{pageattr}
+\ZREF at temp{pagelayout}
+\ZREF at temp{perpage}
+\ZREF at temp{runs}
+\ZREF at temp{savepos}
+\ZREF at temp{thepage}
+\ZREF at temp{titleref}
+\ZREF at temp{totpages}
+\ZREF at temp{user}
+\ZREF at temp{xr}
+% \end{macrocode}
+% \begin{macrocode}
+\ProcessOptions\relax
+%</package>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{base}}
+%
+% \subsubsection{Prefixes}
+%
+% This package uses the following prefixes for macro names:
+% \begin{description}
+% \item[\cs{zref@}:] Macros of the programmer's interface.
+% \item[\cs{ZREF@}:] Internal macros.
+% \item[\cs{Z at L@}\metacs{listname}:]
+% The properties of the list \meta{listname}.
+% \item[\cs{Z at D@}\metacs{propname}:]
+% The default value for property \meta{propname}.
+% \item[\cs{Z at E@}\metacs{propname}:]
+% Extract function for property \meta{propname}.
+% \item[\cs{Z at X@}\metacs{propname}:]
+% Information whether a property value for property
+% \meta{propname} is expanded
+% immediately or at shipout time.
+% \item[\cs{Z at C@}\metacs{propname}:]
+% Current value of the property \meta{propname}.
+% \item[\cs{Z at R@}\metacs{labelname}:]
+% Data for reference \meta{labelname}.
+% \item[\cs{ZREF at org@}:] Original versions of patched commands.
+% \item[\cs{z}:] For macros in user land, defined if
+% module \xmodule{user} is set.
+% \end{description}
+% The following family names are used for keys defined
+% according to the \xpackage{keyval} package:
+% \begin{description}
+% \item[\texttt{ZREF at TR}:] Setup for module \xmodule{titleref}.
+% \end{description}
+%
+% \subsubsection{Identification}
+%
+% \begin{macrocode}
+%<*base>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-base}%
+ [2019/11/29 v2.28 Module base for zref (HO)]%
+% \end{macrocode}
+%
+% \subsubsection{Utilities}
+%
+% \begin{macrocode}
+\RequirePackage{ltxcmds}[2010/12/02]
+\RequirePackage{infwarerr}[2010/04/08]
+\RequirePackage{kvsetkeys}[2010/03/01]
+\RequirePackage{kvdefinekeys}[2010/03/01]
+\RequirePackage{pdftexcmds}[2010/04/01]
+% \end{macrocode}
+%
+% \begin{macro}{\ZREF at name}
+% Several times the package name is used, thus we store it
+% in \cmd{\ZREF at name}.
+% \begin{macrocode}
+\def\ZREF at name{zref}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\ltx at IfUndefined{protected}{%
+ \RequirePackage{makerobust}[2006/03/18]%
+% \end{macrocode}
+% \begin{macro}{\ZREF at Robust}
+% \begin{macrocode}
+ \def\ZREF at Robust#1#2{%
+ \def\ZREF at temp{\MakeRobustcommand#2}%
+ \afterassignment\ZREF at temp
+ #1#2%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+}{%
+% \end{macrocode}
+% \begin{macro}{\ZREF at Robust}
+% \begin{macrocode}
+ \def\ZREF at Robust#1{%
+ \protected#1%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+}
+% \end{macrocode}
+% \begin{macro}{\ZREF at IfDefinable}
+% \begin{macrocode}
+\def\ZREF at IfDefinable#1#2#3{%
+ \@ifdefinable{#1}{%
+ \ZREF at Robust{#2}#1#3%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at UpdatePdfTeX}
+% \cs{ZREF at UpdatePdfTeX} is used as help message text in
+% error messages.
+% \begin{macrocode}
+\def\ZREF at UpdatePdfTeX{Update pdfTeX.}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifZREF at found}
+% The following switch is usded in list processing.
+% \begin{macrocode}
+\newif\ifZREF at found
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at patch}
+% Macro \cs{ZREF at patch} first checks the existence of
+% the command and safes it.
+% \begin{macrocode}
+\def\ZREF at patch#1{%
+ \ltx at IfUndefined{#1}{%
+ \ltx at gobble
+ }{%
+ \expandafter\let\csname ZREF at org@#1\expandafter\endcsname
+ \csname #1\endcsname
+ \ltx at firstofone
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Check for \hologo{eTeX}}
+%
+% The use of \hologo{eTeX} should be standard nowadays for \hologo{LaTeX}.
+% We test for \hologo{eTeX} in order to use its features later.
+% \begin{macrocode}
+\ltx at IfUndefined{eTeXversion}{%
+ \PackageError\ZREF at name{%
+ Missing support for eTeX; package is abandoned%
+ }{%
+ Use a TeX compiler that support eTeX and enable eTeX %
+ in the format.%
+ }%
+ \endinput
+}{}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{etexcmds}[2007/09/09]
+\ifetex at unexpanded
+\else
+ \PackageError\ZREF at name{%
+ Missing e-TeX's \string\unexpanded.\MessageBreak
+ Add \string\RequirePackage\string{etexcmds\string} before %
+ \string\documentclass%
+ }{%
+ Probably you are using some package (e.g. ConTeXt) that %
+ redefines \string\unexpanded%
+ }%
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% \subsubsection{Auxiliary file stuff}
+%
+% We are using some commands in the \xfile{.aux} files.
+% However sometimes these auxiliary files are interpreted
+% by \hologo{LaTeX} processes that haven't loaded this package
+% (e.g. package \xpackage{xr}).
+% Therefore we provide dummy definitions.
+% \begin{macrocode}
+\RequirePackage{auxhook}
+\AddLineBeginAux{%
+ \string\providecommand\string\zref at newlabel[2]{}%
+}
+% \end{macrocode}
+% \begin{macro}{\ZREF at RefPrefix}
+% \begin{macrocode}
+\def\ZREF at RefPrefix{Z at R}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at newlabel}
+% For the implementation of \cs{zref at newlabel} we call
+% the same internal macro \cs{@newl at bel} that is used
+% in \cs{newlabel}. Thus we have for free:
+% \begin{itemize}
+% \item \cs{Z at R@}\metacs{labelname} is defined.
+% \item \hologo{LaTeX}'s check for multiple references.
+% \item \hologo{LaTeX}'s check for changed references.
+% \end{itemize}
+% \begin{macrocode}
+\ZREF at Robust\edef\zref at newlabel{%
+ \noexpand\@newl at bel{\ZREF at RefPrefix}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Property lists}
+%
+% \begin{macro}{\zref at newlist}
+% Property lists are stored as list of property names
+% enclosed in curly braces. \cs{zref at newlist}
+% creates a new list as empty list. Assignments to
+% property lists are global.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at newlist#1{%
+ \zref at iflistundefined{#1}{%
+ \@ifdefinable{Z at L@#1}{%
+ \global\expandafter\let\csname Z at L@#1\endcsname\ltx at empty
+ \PackageInfo\ZREF at name{New property list: #1}%
+ }%
+ }{%
+ \PackageError\ZREF at name{%
+ Property list `#1' already exists%
+ }\@ehc
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at iflistundefined}
+% \cs{zref at iflistundefined} checks the existence of the
+% property list \verb|#1|. If the property list is present,
+% then \verb|#2| is executed and \verb|#3| otherwise.
+% \begin{macrocode}
+\def\zref at iflistundefined#1{%
+ \ltx at ifundefined{Z at L@#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at listexists}
+% \cs{zref at listexists} only executes \verb|#2| if the
+% property list \verb|#1| exists and raises an error
+% message otherwise.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at listexists#1{%
+ \zref at iflistundefined{#1}{%
+ \PackageError\ZREF at name{%
+ Property list `#1' does not exist%
+ }\@ehc
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at iflistcontainsprop}
+% \cs{zref at iflistcontainsprop} checks, whether a property \verb|#2| is
+% already present in a property list \verb|#1|.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at iflistcontainsprop#1#2{%
+ \zref at iflistundefined{#1}{%
+ \ltx at secondoftwo
+ }{%
+ \begingroup\expandafter\endgroup
+ \expandafter\in@
+ \csname#2\expandafter\expandafter\expandafter\endcsname
+ \expandafter\expandafter\expandafter{\csname Z at L@#1\endcsname}%
+ \csname ltx@\ifin@ first\else second\fi oftwo\endcsname
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at listforloop}
+% \begin{macrocode}
+\def\zref at listforloop#1#2{%
+ \zref at listexists{#1}{%
+ \expandafter\expandafter\expandafter\@tfor
+ \expandafter\expandafter\expandafter\zref at prop
+ \expandafter\expandafter\expandafter:%
+ \expandafter\expandafter\expandafter=%
+ \csname Z at L@#1\endcsname
+ \do{%
+ \begingroup
+ \escapechar=-1 %
+ \edef\x{\endgroup
+ \def\noexpand\zref at prop{%
+ \expandafter\string\zref at prop
+ }%
+ }%
+ \x
+ #2\zref at prop
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at addprops}
+% \cs{zref at addprop} adds the properties \verb|#2| to the property
+% list \verb|#1|, if the property is not already in the list.
+% Otherwise a warning is given.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at addprops#1#2{%
+ \zref at listexists{#1}{%
+ \comma at parse{#2}{%
+ \zref at propexists\comma at entry{%
+ \zref at iflistcontainsprop{#1}\comma at entry{%
+ \PackageWarning\ZREF at name{%
+ Property `\comma at entry' is already in list `#1'%
+ }%
+ }{%
+ \begingroup\expandafter\endgroup
+ \expandafter\g at addto@macro
+ \csname Z at L@#1\expandafter\endcsname
+ \expandafter{\csname\comma at entry\endcsname}%
+ }%
+ }%
+ \ltx at gobble
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at addprop}
+% \cs{zref at addprop} adds the property \verb|#2| to the property
+% list \verb|#1|, if the property is not already in the list.
+% Otherwise a warning is given.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at addprop#1#2{%
+ \zref at listexists{#1}{%
+ \zref at propexists{#2}{%
+ \zref at iflistcontainsprop{#1}{#2}{%
+ \PackageWarning\ZREF at name{%
+ Property `#2' is already in list `#1'%
+ }%
+ }{%
+ \begingroup\expandafter\endgroup
+ \expandafter\g at addto@macro
+ \csname Z at L@#1\expandafter\endcsname
+ \expandafter{\csname#2\endcsname}%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at localaddprops}
+% \begin{macrocode}
+\ZREF at Robust\def\zref at localaddprops#1#2{%
+ \zref at listexists{#1}{%
+ \comma at parse{#2}{%
+ \zref at propexists\comma at entry{%
+ \zref at iflistcontainsprop{#1}\comma at entry{%
+ \PackageWarning\ZREF at name{%
+ Property `\comma at entry' is already in list `#1'%
+ }%
+ }{%
+ \begingroup\expandafter\endgroup
+ \expandafter\ltx at LocalAppendToMacro
+ \csname Z at L@#1\expandafter\endcsname
+ \expandafter{\csname\comma at entry\endcsname}%
+ }%
+ }%
+ \ltx at gobble
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at localaddprop}
+% \begin{macrocode}
+\ZREF at Robust\def\zref at localaddprop#1#2{%
+ \zref at listexists{#1}{%
+ \zref at propexists{#2}{%
+ \zref at iflistcontainsprop{#1}{#2}{%
+ \PackageWarning\ZREF at name{%
+ Property `#2' is already in list `#1'%
+ }%
+ }{%
+ \begingroup\expandafter\endgroup
+ \expandafter\ltx at LocalAppendToMacro
+ \csname Z at L@#1\expandafter\endcsname
+ \expandafter{\csname#2\endcsname}%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\ltx at IfUndefined{pdf at strcmp}{%
+% \end{macrocode}
+% \begin{macro}{\zref at delprop}
+% \begin{macrocode}
+ \ZREF at Robust\def\zref at delprop{%
+ \ZREF at delprop\gdef
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at localdelprop}
+% \begin{macrocode}
+ \ZREF at Robust\def\zref at localdelprop{%
+ \ZREF at delprop\def
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at delprop}
+% \begin{macrocode}
+ \def\ZREF at delprop#1#2#3{%
+ \zref at listexists{#2}{%
+ \begingroup
+ \escapechar=-1 %
+ \def\ZREF at param{#3}%
+ \@onelevel at sanitize\ZREF at param
+ \toks@{}%
+ \expandafter\expandafter\expandafter\ZREF@@delprop
+ \csname Z at L@#2\endcsname!%
+ \expandafter\endgroup
+ \expandafter#1\csname Z at L@#2\expandafter\endcsname
+ \expandafter{%
+ \the\toks@
+ }%
+ }%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF@@delprop}
+% \begin{macrocode}
+ \def\ZREF@@delprop#1{%
+ \expandafter\ZREF@@@delprop\expandafter{\string#1}#1%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF@@@delprop}
+% \begin{macrocode}
+ \def\ZREF@@@delprop#1#2{%
+ \ifx#2!%
+ \else
+ \def\ZREF at temp{#1}%
+ \@onelevel at sanitize\ZREF at temp
+ \ifx\ZREF at param\ZREF at temp
+ \else
+ \toks@\expandafter{%
+ \the\expandafter\toks@\csname#1\endcsname
+ }%
+ \fi
+ \expandafter\ZREF@@delprop
+ \fi
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+}{%
+% \end{macrocode}
+% \begin{macro}{\zref at delprop}
+% \begin{macrocode}
+ \ZREF at Robust\def\zref at delprop{%
+ \ZREF at delprop\xdef
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at localdelprop}
+% \begin{macrocode}
+ \ZREF at Robust\def\zref at localdelprop{%
+ \ZREF at delprop\edef
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at delprop}
+% \begin{macrocode}
+ \def\ZREF at delprop#1#2#3{%
+ \zref at listexists{#2}{%
+ \def\ZREF at param{#3}%
+ \edef\ZREF at SavedEscapechar{\the\escapechar}%
+ \escapechar=-1 %
+ \expandafter#1\csname Z at L@#2%
+ \expandafter\expandafter\expandafter\endcsname{%
+ \expandafter\expandafter\expandafter\ZREF@@delprop
+ \csname Z at L@#2\endcsname!%
+ }%
+ \escapechar=\ZREF at SavedEscapechar\relax
+ }%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF@@delprop}
+% Caution: |#1| might be an \cs{if} or similar token.
+% \begin{macrocode}
+ \def\ZREF@@delprop#1{%
+ \expandafter\ZREF@@@delprop\expandafter{\string#1}#1%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF@@@delprop}
+% \begin{macrocode}
+ \def\ZREF@@@delprop#1#2{%
+ \ifx#2!%
+ \else
+ \ifnum\pdf at strcmp{#1}{\ZREF at param}=\ltx at zero
+ \else
+ \expandafter\noexpand\csname#1\endcsname
+ \fi
+ \expandafter\ZREF@@delprop
+ \fi
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+}
+% \end{macrocode}
+%
+% \subsubsection{Properties}
+%
+% \begin{macro}{\zref at ifpropundefined}
+% \cs{zref at ifpropundefined} checks the existence of the
+% property \verb|#1|. If the property is present,
+% then \verb|#2| is executed and \verb|#3| otherwise.
+% \begin{macrocode}
+\def\zref at ifpropundefined#1{%
+ \ltx at ifundefined{Z at E@#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at propexists}
+% Some macros rely on the existence of a property.
+% \cs{zref at propexists} only executes \verb|#2| if the
+% property \verb|#1| exists and raises an error
+% message otherwise.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at propexists#1{%
+ \zref at ifpropundefined{#1}{%
+ \PackageError\ZREF at name{%
+ Property `#1' does not exist%
+ }\@ehc
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at newprop}
+% A new property is declared by \cs{zref at newprop}, the
+% property name \meta{propname} is given in \verb|#1|. The
+% property is created and configured. If the star form
+% is given, then the expansion of the property value
+% is delayed to page shipout time, when the reference
+% is written to the \xfile{.aux} file.
+% \begin{description}
+% \item[\cs{Z at D@}\metacs{propname}:]
+% Stores the default value for this property.
+% \item[\cs{Z at E@}\metacs{propname}:]
+% Extract function.
+% \item[\cs{Z at X@}\metacs{propname}:]
+% Information whether the expansion of the property value
+% is delayed to shipout time.
+% \item[\cs{Z at C@}\metacs{propname}:]
+% Current value of the property.
+% \end{description}
+% \begin{macrocode}
+\ZREF at Robust\def\zref at newprop{%
+ \@ifstar{%
+ \let\ZREF at X\noexpand
+ \ZREF at newprop
+ }{%
+ \let\ZREF at X\ltx at empty
+ \ZREF at newprop
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at newprop}
+% \begin{macrocode}
+\def\ZREF at newprop#1{%
+ \edef\ZREF at P{#1}%
+ \@onelevel at sanitize\ZREF at P
+ \begingroup
+ \ifx\ZREF at P\ZREF at par
+ \@PackageError\ZREF at name{%
+ Invalid property name `\ZREF at P'%
+ }{%
+ The property name `par' is not allowed %
+ because of internal reasons.%
+ \MessageBreak
+ \@ehc
+ }%
+ \def\ZREF@@newprop[##1]##2{\endgroup}%
+ \else
+ \zref at ifpropundefined\ZREF at P{%
+ \endgroup
+ \PackageInfo\ZREF at name{%
+ New property: \ZREF at P
+ }%
+ }{%
+ \@PackageError\ZREF at name{%
+ Property `\ZREF at P' already exists%
+ }\@ehc
+ \def\ZREF@@newprop[##1]##2{\endgroup}%
+ }%
+ \fi
+ \@ifnextchar[\ZREF@@newprop{\ZREF@@newprop[\zref at default]}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at par}
+% \begin{macrocode}
+\def\ZREF at par{par}
+\@onelevel at sanitize\ZREF at par
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF@@newprop}
+% \begin{macrocode}
+\def\ZREF@@newprop[#1]{%
+ \global\@namedef{Z at D@\ZREF at P}{#1}%
+ \global\expandafter\let\csname Z at X@\ZREF at P\endcsname\ZREF at X
+ \begingroup\expandafter\endgroup
+ \expandafter\ZREF@@@newprop\csname\ZREF at P\endcsname
+ \expandafter\gdef\csname Z at C@\ZREF at P\endcsname{}%
+ \zref at setcurrent\ZREF at P
+}
+\def\ZREF@@@newprop#1{%
+ \expandafter
+ \gdef\csname Z at E@\ZREF at P\endcsname##1#1##2##3\ZREF at nil{##2}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at showprop}
+% \begin{macrocode}
+\ZREF at Robust\def\zref at showprop#1{%
+ \zref at ifpropundefined{#1}{%
+ \@PackageInfoNoLine{\ZREF at name}{%
+ Show property `#1': <undefined>%
+ }%
+ }{%
+ \begingroup
+ \toks@\expandafter\expandafter\expandafter{%
+ \csname Z at C@#1\endcsname
+ }%
+ \edef\ZREF at value{\the\toks@}%
+ \ltx at onelevel@sanitize\ZREF at value
+ \toks@\expandafter\expandafter\expandafter{%
+ \csname Z at D@#1\endcsname
+ }%
+ \edef\ZREF at default{\the\toks@}%
+ \ltx at onelevel@sanitize\ZREF at default
+ \@PackageInfoNoLine{\ZREF at name}{%
+ Show property `#1':\MessageBreak
+ \expandafter\ifx\csname Z at X@#1\endcsname\ltx at empty
+ Immediate %
+ \else
+ Delayed %
+ \fi
+ value: [\ZREF at value]\MessageBreak
+ Default: [\ZREF at default]%
+ }%
+ \endgroup
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at setcurrent}
+% \cs{zref at setcurrent} sets the current value for a property.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at setcurrent#1#2{%
+ \zref at propexists{#1}{%
+ \expandafter\def\csname Z at C@#1\endcsname{#2}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at getcurrent}
+% \cs{zref at getcurrent} gets the current value for a property.
+% \begin{macrocode}
+\def\ZREF at getcurrent#1{%
+ \romannumeral0%
+ \ltx at ifundefined{Z at C@#1}{%
+ \ltx at space
+ }{%
+ \expandafter\expandafter\expandafter\ltx at space
+ \csname Z at C@#1\endcsname
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at u@getcurrent}
+% \begin{macrocode}
+\def\ZREF at wu@getcurrent#1{%
+ \etex at unexpanded\expandafter\expandafter\expandafter{%
+ \ZREF at getcurrent{#1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at getcurrent}
+% \begin{macrocode}
+\let\zref at getcurrent\ZREF at getcurrent
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Reference generation}
+%
+% \begin{macro}{\zref at label}
+% Label macro that uses the main property list.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at label#1{%
+ \zref at labelbylist{#1}\ZREF at mainlist
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at labelbylist}
+% Label macro that stores the properties, specified in the
+% property list \verb|#2|.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at labelbylist#1#2{%
+ \@bsphack
+ \zref at listexists{#2}{%
+ \expandafter\expandafter\expandafter\ZREF at label
+ \expandafter\expandafter\expandafter{%
+ \csname Z at L@#2\endcsname
+ }{#1}%
+ }%
+ \@esphack
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at labelbyprops}
+% The properties are directly specified in a comma separated list.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at labelbyprops#1#2{%
+ \@bsphack
+ \begingroup
+ \toks@{}%
+ \comma at parse{#2}{%
+ \zref at ifpropundefined\comma at entry{%
+ \PackageWarning\ZREF at name{%
+ Property `\comma at entry' is not known%
+ }%
+ }{%
+ \toks@\expandafter{%
+ \the\expandafter\toks@\csname\comma at entry\endcsname
+ }%
+ }%
+ \ltx at gobble
+ }%
+ \expandafter\endgroup
+ \expandafter\ZREF at label\expandafter{\the\toks@}{#1}%
+ \@esphack
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at labelbykv}
+% \begin{macrocode}
+\ZREF at Robust\def\zref at labelbykv#1#2{%
+ \@bsphack
+ \begingroup
+ \let\Z at L@ZREF at temp\ltx at empty
+ \kvsetkeys{ZREF at LABEL}{#1}%
+ \ifZREF at immediate
+ \expandafter\zref at wrapper@immediate\expandafter{%
+ \expandafter\ZREF at label\expandafter{\Z at L@ZREF at temp}{#2}%
+ }%
+ \else
+ \expandafter\ZREF at label\expandafter{\Z at L@ZREF at temp}{#2}%
+ \fi
+ \endgroup
+ \@esphack
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\kv at define@key{ZREF at LABEL}{prop}{%
+ \edef\ZREF at param{#1}%
+ \zref at propexists\ZREF at param{%
+ \zref at iflistcontainsprop{ZREF at temp}\ZREF at param{}{%
+ \begingroup\expandafter\endgroup
+ \expandafter\ltx at LocalAppendToMacro
+ \expandafter\Z at L@ZREF at temp
+ \expandafter{\csname\ZREF at param\endcsname}%
+ }%
+ }%
+}
+\kv at define@key{ZREF at LABEL}{list}{%
+ \zref at listforloop{#1}{%
+ \zref at iflistcontainsprop{ZREF at temp}\zref at prop{}{%
+ \begingroup\expandafter\endgroup
+ \expandafter\ltx at LocalAppendToMacro
+ \expandafter\Z at L@ZREF at temp
+ \expandafter{\csname\zref at prop\endcsname}%
+ }%
+ \ltx at gobble
+ }%
+}
+\kv at define@key{ZREF at LABEL}{delprop}{%
+ \zref at propexists{#1}{%
+ \zref at localdelprop{ZREF at temp}{#1}%
+ }%
+}
+\kv at define@key{ZREF at LABEL}{immediate}[true]{%
+ \edef\ZREF at param{#1}%
+ \ifx\ZREF at param\ZREF at true
+ \ZREF at immediatetrue
+ \else
+ \ifx\ZREF at param\ZREF at false
+ \ZREF at immediatefalse
+ \else
+ \PackageWarning\ZREF at name{%
+ Option `immediate' expects `true' or `false'.\MessageBreak
+ Ignoring invalid value `\ZREF at param'%
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\ZREF at false}
+% \begin{macrocode}
+\def\ZREF at false{false}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at true}
+% \begin{macrocode}
+\def\ZREF at true{true}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\kv at define@key{ZREF at LABEL}{values}[]{%
+ \kv at parse{#1}{%
+ \ifx\kv at value\relax
+ \@PackageWarning\ZREF at name{%
+ Missing value for property `\kv at key'%
+ }%
+ \expandafter\ltx at gobbletwo
+ \else
+ \expandafter\zref at setcurrent
+ \fi
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macro}{\ifZREF at immediate}
+% The switch \cs{ifZREF at immediate} tells us, whether the
+% label should be written immediately or at page shipout time.
+% \cs{ZREF at label} need to be notified about this, because
+% it must disable the deferred execution of property values,
+% if the label is written immediately.
+% \begin{macrocode}
+\newif\ifZREF at immediate
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at wrapper@immediate}
+% The argument of \cs{zref at wrapper@immediate} is executed inside
+% a group where \cs{write} is redefined by adding
+% \cs{immediate} before its execution. Also \cs{ZREF at label}
+% is notified via the switch \cs{ifZREF at immediate}.
+% \begin{macrocode}
+\ZREF at Robust{\long\def}\zref at wrapper@immediate#1{%
+ \begingroup
+ \ZREF at immediatetrue
+ \let\ZREF at org@write\write
+ \def\write{\immediate\ZREF at org@write}%
+ #1%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at label}
+% \cs{ZREF at label} writes the data in the \xfile{.aux} file.
+% \verb|#1| contains the list of valid properties,
+% \verb|#2| the name of the reference. In case of immediate
+% writing, the deferred execution of property values is
+% disabled. Also \thepage is made expandable in this case.
+% \begin{macrocode}
+\def\ZREF at label#1#2{%
+ \if at filesw
+ \begingroup
+ \ifZREF at immediate
+ \let\ZREF at org@thepage\thepage
+ \fi
+ \protected at write\@auxout{%
+ \ifZREF at immediate
+ \let\thepage\ZREF at org@thepage
+ \fi
+ \let\ZREF at temp\ltx at empty
+ \@tfor\ZREF at P:=#1\do{%
+ \begingroup
+ \escapechar=-1 %
+ \edef\x{\endgroup
+ \def\noexpand\ZREF at P{%
+ \expandafter\string\ZREF at P
+ }%
+ }%
+ \x
+ \expandafter\ifx
+ \csname
+ \ifZREF at immediate
+ relax%
+ \else
+ Z at X@\ZREF at P%
+ \fi
+ \endcsname
+ \noexpand
+ \expandafter\let\csname Z at C@\ZREF at P\endcsname\relax
+ \fi
+ \toks@\expandafter{\ZREF at temp}%
+ \edef\ZREF at temp{%
+ \the\toks@
+ \ltx at backslashchar\ZREF at P{%
+ \expandafter\noexpand\csname Z at C@\ZREF at P\endcsname
+ }%
+ }%
+ }%
+ }{%
+ \string\zref at newlabel{#2}{\ZREF at temp}%
+ }%
+ \endgroup
+ \fi
+}
+\def\ZREF at addtoks#1{%
+ \toks@\expandafter\expandafter\expandafter{%
+ \expandafter\the\expandafter\toks@#1%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Reference querying and extracting}
+%
+% Design goal for the extracting macros is that the extraction
+% process is full expandable. Thus these macros can be used
+% in expandable contexts. But there are problems that cannot
+% be solved by full expandable macros:
+% \begin{itemize}
+% \item In standard \hologo{LaTeX} undefined references sets a flag
+% and generate a warning. Both actions are not expandable.
+% \item Babel's support for its shorthand uses commands that
+% use non-expandable assignments. However currently there
+% is hope, that primitives are added to \pdfTeX\ that
+% allows the detection of contexts. Then the shorthand
+% can detect, if they are executed inside \cs{csname}
+% and protect themselves automatically.
+% \end{itemize}
+% \begin{macro}{\zref at ifrefundefined}
+% If a reference \verb|#1| is undefined, then macro
+% \cs{zref at ifrefundefined} calls \verb|#2| and \verb|#3| otherwise.
+% \begin{macrocode}
+\def\zref at ifrefundefined#1{%
+ \ltx at ifundefined{Z at R@#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zifrefundefined}
+% If a reference \verb|#1| is undefined, then macro
+% \cs{zref at ifrefundefined} calls \verb|#2| and \verb|#3| otherwise.
+% Also the reference is marked used.
+% \begin{macrocode}
+\ZREF at IfDefinable\zifrefundefined\def{%
+ #1{%
+ \zref at wrapper@babel\ZREF at ifrefundefined{#1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at ifrefundefined}
+% \begin{macrocode}
+\def\ZREF at ifrefundefined#1{%
+ \zref at refused{#1}%
+ \zref at ifrefundefined{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at refused}
+% The problem with undefined references is addressed by
+% the macro \cs{zref at refused}. This can be used outside
+% the expandable context. In case of an undefined reference
+% the flag is set to notify \hologo{LaTeX} and a warning is given.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at refused#1{%
+ \zref at wrapper@babel\ZREF at refused{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at refused}
+% \begin{macrocode}
+\def\ZREF at refused#1{%
+ \zref at ifrefundefined{#1}{%
+ \protect\G at refundefinedtrue
+ \@latex at warning{%
+ Reference `#1' on page \thepage \space undefined%
+ }%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at ifrefcontainsprop}
+% \cs{zref at ifrefcontainsprop} looks, if the reference \verb|#1|
+% has the property \verb|#2| and calls then \verb|#3| and
+% \verb|#4| otherwise.
+% \begin{macrocode}
+\def\zref at ifrefcontainsprop#1#2{%
+ \zref at ifrefundefined{#1}{%
+ \ltx at secondoftwo
+ }{%
+ \expandafter\ZREF at ifrefcontainsprop
+ \csname Z at E@#2\expandafter\endcsname
+ \csname#2\expandafter\expandafter\expandafter\endcsname
+ \expandafter\expandafter\expandafter{%
+ \csname Z at R@#1\endcsname
+ }%
+ }%
+}
+\def\ZREF at ifrefcontainsprop#1#2#3{%
+ \expandafter\ifx\expandafter\ZREF at novalue
+ #1#3#2\ZREF at novalue\ZREF at nil\ltx at empty
+ \expandafter\ltx at secondoftwo
+ \else
+ \expandafter\ltx at firstoftwo
+ \fi
+}
+\def\ZREF at novalue{\ZREF at NOVALUE}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at extract}
+% \cs{zref at extract} is an abbreviation for the case
+% that the default of the property is used as default
+% value.
+% \begin{macrocode}
+\def\ZREF at extract#1#2{%
+ \romannumeral0%
+ \ltx at ifundefined{Z at D@#2}{%
+ \expandafter\ltx at space\zref at default
+ }{%
+ \expandafter\expandafter\expandafter\ZREF@@extract
+ \expandafter\expandafter\expandafter{%
+ \csname Z at D@#2\endcsname
+ }{#1}{#2}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF@@extract}
+% \begin{macrocode}
+\def\ZREF@@extract#1#2#3{%
+ \expandafter\expandafter\expandafter\ltx at space
+ \zref at extractdefault{#2}{#3}{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at wu@extract}
+% \begin{macrocode}
+\def\ZREF at wu@extract#1#2{%
+ \etex at unexpanded\expandafter\expandafter\expandafter{%
+ \ZREF at extract{#1}{#2}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at extract}
+% \begin{macrocode}
+\let\zref at extract\ZREF at extract
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at extractdefault}
+% The basic extracting macro is \cs{zref at extractdefault} with
+% the reference name in \verb|#1|, the property in \verb|#2| and
+% the default value in \verb|#3| in case for problems.
+% \begin{macrocode}
+\def\ZREF at extractdefault#1#2#3{%
+ \romannumeral0%
+ \zref at ifrefundefined{#1}\ltx at firstoftwo{%
+ \zref at ifpropundefined{#2}\ltx at firstoftwo\ltx at secondoftwo
+ }{%
+ \ltx at space
+ #3%
+ }{%
+ \expandafter\expandafter\expandafter\ltx at space
+ \csname Z at E@#2\expandafter\expandafter\expandafter\endcsname
+ \csname Z at R@#1\expandafter\endcsname
+ \csname#2\endcsname{#3}\ZREF at nil
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at wu@extractdefault}
+% \begin{macrocode}
+\def\ZREF at wu@extractdefault#1#2#3{%
+ \etex at unexpanded\expandafter\expandafter\expandafter{%
+ \ZREF at extractdefault{#1}{#2}{#3}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at extractdefault}
+% \begin{macrocode}
+\let\zref at extractdefault\ZREF at extractdefault
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at def@extract}
+% \begin{macrocode}
+\ZREF at Robust\def\zref at def@extract#1{%
+ \zref at wrapper@babel{\ZREF at def@extract{#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at def@extract}
+% \begin{macrocode}
+\def\ZREF at def@extract#1#2#3{%
+ \zref at refused{#2}%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter#1%
+ \expandafter\expandafter\expandafter{%
+ \zref at extract{#2}{#3}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at def@extractdefault}
+% \begin{macrocode}
+\ZREF at Robust\def\zref at def@extractdefault#1{%
+ \zref at wrapper@babel{\ZREF at def@extractdefault{#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at def@extractdefault}
+% \begin{macrocode}
+\def\ZREF at def@extractdefault#1#2#3#4{%
+ \zref at refused{#2}%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter#1%
+ \expandafter\expandafter\expandafter{%
+ \zref at extractdefault{#2}{#3}{#4}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at wrapper@unexpanded}
+% \begin{macrocode}
+\ZREF at Robust{\long\def}\ZREF at wrapper@unexpanded#1{%
+ \let\zref at wrapper@unexpanded\ltx at firstofone
+ \let\zref at getcurrent\ZREF at wu@getcurrent
+ \let\zref at extractdefault\ZREF at wu@extractdefault
+ \let\zref at extract\ZREF at wu@extract
+ #1%
+ \let\zref at wrapper@unexpanded\ZREF at wrapper@unexpanded
+ \let\zref at getcurrent\ZREF at getcurrent
+ \let\zref at extractdefault\ZREF at extractdefault
+ \let\zref at extract\ZREF at extract
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at wrapper@unexpanded}
+% \begin{macrocode}
+\ltx at IfUndefined{etex at unexpanded}{%
+ \let\zref at wrapper@unexpanded\ltx at firstofone
+}{%
+ \let\zref at wrapper@unexpanded\ZREF at wrapper@unexpanded
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Compatibility with \xpackage{babel}}
+%
+% \begin{macro}{\zref at wrapper@babel}
+% \begin{macrocode}
+\ZREF at Robust{\long\def}\zref at wrapper@babel#1#2{%
+ \ifcsname if at safe@actives\endcsname
+ \expandafter\ltx at firstofone
+ \else
+ \expandafter\ltx at secondoftwo
+ \fi
+ {%
+ \if at safe@actives
+ \expandafter\ltx at secondoftwo
+ \else
+ \expandafter\ltx at firstoftwo
+ \fi
+ {%
+ \begingroup
+ \csname @safe at activestrue\endcsname
+ \edef\x{#2}%
+ \expandafter\endgroup
+ \expandafter\ZREF at wrapper@babel\expandafter{\x}{#1}%
+ }%
+ }{%
+ #1{#2}%
+ }%
+}
+\long\def\ZREF at wrapper@babel#1#2{%
+ #2{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Unique counter support}
+%
+% \begin{macro}{\zref at require@unique}
+% Generate the counter |zref at unique| if the counter does not
+% already exist.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at require@unique{%
+ \@ifundefined{c at zref@unique}{%
+ \begingroup
+ \let\@addtoreset\ltx at gobbletwo
+ \newcounter{zref at unique}%
+ \endgroup
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\thezref at unique}
+% \cs{thezref at unique} is used for automatically generated unique
+% labelnames.
+% \begin{macrocode}
+ \renewcommand*{\thezref at unique}{%
+ zref@\number\c at zref@unique
+ }%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Utilities}
+%
+% \begin{macro}{\ZREF at number}
+% \begin{macrocode}
+\ltx at IfUndefined{numexpr}{%
+ \def\ZREF at number#1{\number#1}%
+}{%
+ \def\ZREF at number#1{\the\numexpr(#1)\relax}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Setup}
+%
+% \begin{macro}{\zref at setdefault}
+% Standard \hologo{LaTeX} prints ``??'' in bold face if a reference
+% is not known. \cs{zref at default} holds the text that is
+% printed in case of unknown references and is used, if
+% the default was not specified during the definition
+% of the new property by \cs{ref at newprop}.
+% The global default value can be set by \cs{zref at setdefault}.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at setdefault#1{%
+ \def\zref at default{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at default}
+% Now we initialize \cs{zref at default} with the same value
+% that \hologo{LaTeX} uses for its undefined references.
+% \begin{macrocode}
+\zref at setdefault{%
+ \nfss at text{\reset at font\bfseries ??}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Main property list.}
+%
+% \begin{macro}{\zref at setmainlist}
+% The name of the default property list is stored in
+% \cs{ZREF at mainlist} and can be set by \cs{zref at setmainlist}.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at setmainlist#1{%
+ \def\ZREF at mainlist{#1}%
+}
+\zref at setmainlist{main}
+% \end{macrocode}
+% \end{macro}
+% Now we create the list.
+% \begin{macrocode}
+\zref at newlist\ZREF at mainlist
+% \end{macrocode}
+%
+% \paragraph{Main properties.}
+%
+% The two properties \texttt{default} and \texttt{page}
+% are created and added to the main property list.
+% They store the data that
+% standard \hologo{LaTeX} uses in its references created by
+% \cs{label}.
+% \begin{description}
+% \item[\texttt{default}] the apperance of the latest
+% counter that is incremented by \cs{refstepcounter}
+% \item[\texttt{page}] the apperance of the page counter
+% \end{description}
+% \begin{macrocode}
+\zref at newprop{default}{\@currentlabel}
+\zref at newprop*{page}{\thepage}
+\zref at addprops\ZREF at mainlist{default,page}
+% \end{macrocode}
+%
+% \paragraph{Properties}
+%
+% \begin{macro}{\ZREF at NewPropAnchor}
+% \begin{macrocode}
+\def\ZREF at NewPropAnchor{%
+ \zref at newprop{anchor}{%
+ \ltx at ifundefined{@currentHref}{}{\@currentHref}%
+ }%
+ \global\let\ZREF at NewPropAnchor\relax
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at titleref@current}
+% Later we will redefine the section and caption macros
+% to catch the current title and remember the value in
+% \cs{zref at titleref@current}.
+% \begin{macro}{\ZREF at NewPropTitle}
+% \begin{macrocode}
+\def\ZREF at NewPropTitle{%
+ \gdef\zref at titleref@current{}%
+ \zref at newprop{title}{\zref at titleref@current}%
+ \global\let\ZREF at NewPropTitle\relax
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\ZREF at NewPropTheotype}
+% \begin{macrocode}
+\def\ZREF at NewPropTheotype{%
+ \zref at newprop{theotype}{}%
+ \global\let\ZREF at NewPropTheotype\relax
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at NewPropPageValue}
+% \begin{macrocode}
+\def\ZREF at NewPropPageValue{%
+ \zref at newprop*{pagevalue}[0]{\number\c at page}%
+ \global\let\ZREF at NewPropPageValue\relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Mark successful loading}
+%
+% \begin{macrocode}
+\let\ZREF at base@ok=Y
+%</base>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{user}}
+%
+% \begin{macrocode}
+%<*user>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-user}%
+ [2019/11/29 v2.28 Module user for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% Module \xmodule{user} enables a small user interface.
+% All macros are prefixed by \cs{z}.
+%
+% First we define the pendants to the standard \hologo{LaTeX} referencing
+% commands \cs{label}, \cs{ref}, and \cs{pageref}.
+%
+% \begin{macro}{\zlabel}
+% Similar to \cs{label} the macro \cs{zlabel} writes a reference
+% entry in the \xfile{.aux} file. The main property list is used.
+% Also we add the babel patch. The \cs{label} command can also be
+% used inside section titles, but it must not go into the
+% table of contents. Therefore we have to check this situation.
+% \begin{macrocode}
+\newcommand*\zlabel{%
+ \ifx\label\ltx at gobble
+ \expandafter\ltx at gobble
+ \else
+ \expandafter\zref at wrapper@babel\expandafter\zref at label
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zkvlabel}
+% \begin{macrocode}
+\newcommand*{\zkvlabel}[1]{%
+ \ifx\label\ltx at gobble
+ \expandafter\ltx at gobblethree
+ \fi
+ \zref at wrapper@babel{\zref at labelbykv{#1}}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref}
+% Macro \cs{zref} is the corresponding macro for \cs{ref}.
+% Also it provides an optional argument in order to
+% select another property.
+% \begin{macrocode}
+\newcommand*{\zref}[2][default]{% robust because of optional argument
+ \zref at propexists{#1}{%
+ \zref at wrapper@babel\ZREF at zref{#2}{#1}%
+ }%
+}%
+\def\ZREF at zref#1{%
+ \zref at refused{#1}%
+ \zref at extract{#1}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zpageref}
+% For macro \cs{zpageref} we just call \cs{zref}
+% with property \verb|page|.
+% \begin{macrocode}
+\ZREF at IfDefinable\zpageref\def{%
+ {\zref[page]}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zrefused}
+% For the following expandible user macros \cs{zrefused}
+% should be used to notify \hologo{LaTeX} in case of undefined
+% references.
+% \begin{macrocode}
+\ZREF at IfDefinable\zrefused\def{%
+ {\zref at refused}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</user>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{abspage}}
+%
+% \begin{macrocode}
+%<*abspage>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-abspage}%
+ [2019/11/29 v2.28 Module abspage for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% Module \xmodule{abspage} adds a new property \verb|abspage|
+% to the \verb|main| property list for absolute page numbers.
+% These are recorded by the help of package \xpackage{atbegshi}.
+% \begin{macrocode}
+\RequirePackage{atbegshi}[2011/10/05]%
+% \end{macrocode}
+% The counter \verb|abspage| must not go in the clear list
+% of \verb|@ckpt| that is used to set counters in
+% \xfile{.aux} files of included \hologo{TeX} files.
+% \begin{macrocode}
+\begingroup
+ \let\@addtoreset\ltx at gobbletwo
+ \newcounter{abspage}%
+\endgroup
+\setcounter{abspage}{0}%
+\AtBeginShipout{%
+ \stepcounter{abspage}%
+}%
+\zref at newprop*{abspage}[0]{\the\c at abspage}%
+\zref at addprop\ZREF at mainlist{abspage}%
+% \end{macrocode}
+% Note that counter \verb|abspage| shows the
+% previous page during page processing. Before
+% shipout the counter is incremented.
+% Thus the property is correctly written with
+% deferred writing. If the counter is written
+% using \cs{zref at wrapper@immediate}, then the number
+% is too small by one.
+%
+% \begin{macrocode}
+%</abspage>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{counter}}
+%
+% \begin{macrocode}
+%<*counter>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-counter}%
+ [2019/11/29 v2.28 Module counter for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% For features such as \xpackage{hyperref}'s \cs{autoref}
+% we need the name of the counter. The property
+% \verb|counter| is defined and added to the main property
+% list.
+% \begin{macrocode}
+\zref at newprop{counter}{}
+\zref at addprop\ZREF at mainlist{counter}
+% \end{macrocode}
+%
+% \cs{refstepcounter} is the central macro where we know
+% which counter is responsible for the reference.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \ZREF at patch{refstepcounter}{%
+ \def\refstepcounter#1{%
+ \zref at setcurrent{counter}{#1}%
+ \ZREF at org@refstepcounter{#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+% \begin{macrocode}
+%</counter>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{lastpage}}
+%
+% \begin{macrocode}
+%<*lastpage>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-lastpage}%
+ [2019/11/29 v2.28 Module lastpage for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\RequirePackage{zref-abspage}[2019/11/29]
+\RequirePackage{atveryend}[2009/12/07]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% The module \xmodule{lastpage} implements the service
+% of package \xpackage{lastpage} by setting a reference
+% \verb|LastPage| at the end of the document.
+% If module \xmodule{abspage} is given, also the absolute
+% page number is available, because the properties of
+% the main property list are used.
+% \begin{macrocode}
+\zref at newlist{LastPage}
+\AfterLastShipout{%
+ \if at filesw
+ \begingroup
+ \advance\c at page\m at ne
+ \toks@\expandafter\expandafter\expandafter{%
+ \expandafter\Z at L@main
+ \Z at L@LastPage
+ }%
+ \expandafter\zref at wrapper@immediate\expandafter{%
+ \expandafter\ZREF at label\expandafter{\the\toks@}{LastPage}%
+ }%
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\zref at iflastpage}
+% \begin{macrocode}
+\def\zref at iflastpage#1{%
+ \ifnum\zref at extractdefault{#1}{abspage}{-1}=%
+ \zref at extractdefault{LastPage}{abspage}{-2} %
+ \expandafter\ltx at firstoftwo
+ \else
+ \expandafter\ltx at secondoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ziflastpage}
+% \begin{macrocode}
+\ZREF at IfDefinable\ziflastpage\def{%
+ {\zref at wrapper@babel\ZREF at iflastpage}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{ZREF at iflastpage}
+% \begin{macrocode}
+\def\ZREF at iflastpage#1{%
+ \zref at refused{LastPage}%
+ \zref at refused{#1}%
+ \zref at iflastpage{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%</lastpage>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{thepage}}
+%
+% \begin{macrocode}
+%<*thepage>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-thepage}%
+ [2019/11/29 v2.28 Module thepage for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{atbegshi}[2011/10/05]
+\RequirePackage{zref-abspage}[2019/11/29]
+% \end{macrocode}
+% \begin{macrocode}
+\zref at newlist{thepage}
+\zref at addprop{thepage}{page}
+\ZREF at NewPropPageValue
+% \end{macrocode}
+% \begin{macro}{\zref at thepage@atbegshi at hook}
+% \begin{macrocode}
+\let\zref at thepage@atbegshi at hook\ltx at empty
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\zref at addprop{thepage}{pagevalue}
+\AtBeginShipout{%
+ \AtBeginShipoutAddToBox{%
+ \zref at thepage@atbegshi at hook
+ \zref at labelbylist{thepage\the\value{abspage}}{thepage}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\zref at thepage@name}
+% \begin{macrocode}
+\ltx at IfUndefined{numexpr}{%
+ \def\zref at thepage@name#1{thepage\number#1}%
+}{%
+ \def\zref at thepage@name#1{thepage\the\numexpr#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at thepage}
+% \begin{macrocode}
+\def\zref at thepage#1{%
+ \zref at extract{\zref at thepage@name{#1}}{page}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at thepage@refused}
+% \begin{macrocode}
+\ZREF at Robust\def\zref at thepage@refused#1{%
+ \zref at refused{\zref at thepage@name{#1}}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zthepage}
+% \begin{macrocode}
+\ZREF at IfDefinable\zthepage\def{%
+ #1{%
+ \zref at thepage@refused{#1}%
+ \zref at thepage{#1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%</thepage>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{nextpage}}
+%
+% \begin{macrocode}
+%<*nextpage>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-nextpage}%
+ [2019/11/29 v2.28 Module nextpage for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{zref-abspage}[2019/11/29]
+\RequirePackage{zref-thepage}[2019/11/29]
+\RequirePackage{zref-lastpage}[2019/11/29]
+\RequirePackage{uniquecounter}[2009/12/18]
+% \end{macrocode}
+% \begin{macrocode}
+\UniqueCounterNew{znextpage}
+
+\newcommand*{\znextpagesetup}{%
+ \afterassignment\ZREF at np@setup at i
+ \def\ZREF at np@call at unknown##1%
+}
+\def\ZREF at np@setup at i{%
+ \afterassignment\ZREF at np@setup at ii
+ \def\ZREF at np@call at nonext##1%
+}
+\def\ZREF at np@setup at ii{%
+ \def\ZREF at np@call at next##1%
+}
+\def\ZREF at np@call at unknown#1{#1}
+\def\ZREF at np@call at nonext#1{#1}
+\def\ZREF at np@call at next#1{#1}
+\ZREF at IfDefinable\znextpage\def{%
+ {\UniqueCounterCall{znextpage}{\ZREF at nextpage}}%
+}%
+\newcommand*{\znonextpagename}{}
+\newcommand*{\zunknownnextpagename}{\Z at D@page}
+\def\ZREF at nextpage#1{%
+ \begingroup
+ \def\ZREF at refname@this{zref at np#1}%
+ \zref at labelbyprops\ZREF at refname@this{abspage}%
+ \chardef\ZREF at call=0 % unknown
+ \ZREF at ifrefundefined\ZREF at refname@this{%
+ }{%
+ \edef\ZREF at pagenum@this{%
+ \zref at extractdefault\ZREF at refname@this{abspage}{0}%
+ }%
+ \edef\ZREF at refname@next{%
+ \zref at thepage@name{%
+ \the\numexpr\ZREF at pagenum@this+1%
+ }%
+ }%
+ \ifnum\ZREF at pagenum@this>0 %
+ \ZREF at ifrefundefined{LastPage}{%
+ \zref at ifrefundefined\ZREF at refname@next{%
+ }{%
+ \chardef\ZREF at call=2 % next page
+ }%
+ }{%
+ \edef\ZREF at pagenum@last{%
+ \zref at extractdefault{LastPage}{abspage}{0}%
+ }%
+ \ifnum\ZREF at pagenum@this<\ZREF at pagenum@last\ltx at space
+ \ZREF at ifrefundefined\ZREF at refname@next{%
+ }{%
+ \chardef\ZREF at call=2 % next page
+ }%
+ \else
+ \ifnum\ZREF at pagenum@this=\ZREF at pagenum@this\ltx at space
+ \chardef\ZREF at call=1 % no next page
+ \fi
+ \fi
+ }%
+ \fi
+ }%
+ \edef\x{%
+ \endgroup
+ \ifcase\ZREF at call
+ \noexpand\ZREF at np@call at unknown{%
+ \noexpand\zunknownnextpagename
+ }%
+ \or
+ \noexpand\ZREF at np@call at nonext{%
+ \noexpand\znonextpagename
+ }%
+ \else
+ \noexpand\ZREF at np@call at next{%
+ \noexpand\zref at extract{\ZREF at refname@next}{page}%
+ }%
+ \fi
+ }%
+ \x
+}
+% \end{macrocode}
+% \begin{macrocode}
+%</nextpage>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{totpages}}
+%
+% \begin{macrocode}
+%<*totpages>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-totpages}%
+ [2019/11/29 v2.28 Module totpages for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% The absolute page number of the last page is the total
+% page number.
+% \begin{macrocode}
+\RequirePackage{zref-abspage}[2019/11/29]
+\RequirePackage{zref-lastpage}[2019/11/29]
+% \end{macrocode}
+%
+% \begin{macro}{\ztotpages}
+% Macro \cs{ztotpages} contains the number of pages. It can be
+% used inside expandable calculations. It expands to zero if
+% the reference is not yet available.
+% \begin{macrocode}
+\newcommand*{\ztotpages}{%
+ \zref at extractdefault{LastPage}{abspage}{0}%
+}
+% \end{macrocode}
+% \end{macro}
+% Also we mark the reference |LastPage| as used:
+% \begin{macrocode}
+\AtBeginDocument{%
+ \zref at refused{LastPage}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+%</totpages>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{pagelayout}}
+%
+% \begin{macrocode}
+%<*pagelayout>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-pagelayout}%
+ [2019/11/29 v2.28 Module pagelayout for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{zref-thepage}[2019/11/29]
+\RequirePackage{iftex}[2019/11/07]%
+\RequirePackage{atveryend}[2010/03/24]
+% \end{macrocode}
+%
+% \subsubsection{Support for \hologo{LuaTeX}}
+%
+% \begin{macrocode}
+\ifluatex
+ \ifnum\luatexversion<39 %
+ \else
+ \begingroup
+ \escapechar=-1 %
+ \def\ZREF at temp#1{%
+ \ltx at IfUndefined{\string#1}{%
+ \let#1\ltx at undefined
+ \directlua{%
+ if tex.enableprimitives then %
+ tex.enableprimitives('', {'\string#1'})%
+ end%
+ }%
+ \ltx at ifundefined{\string#1}{%
+ }{%
+ \global#1=#1%
+ \@PackageInfoNoLine{zref-pagelayout}{%
+ \string#1 enabled%
+ }%
+ }%
+ }{}%
+ }%
+ \ZREF at temp\pdfpagewidth
+ \ZREF at temp\pdfpageheight
+ \ZREF at temp\pdfhorigin
+ \ZREF at temp\pdfvorigin
+ \endgroup
+ \fi
+\fi
+% \end{macrocode}
+%
+% \subsubsection{Define layout properties}
+%
+% \begin{macrocode}
+\def\ZREF at temp#1{%
+ \begingroup
+ \escapechar=-1 %
+ \ltx at ifundefined{\string#1}{\endgroup}{%
+ \edef\x{%
+ \endgroup
+ \noexpand\zref at newprop*{\string#1}%
+ [\noexpand\number\noexpand#1]% hash-ok
+ {\noexpand\number\noexpand#1}%
+ \noexpand\zref at addprop{thepage}{\string#1}%
+ }%
+ \x
+ }%
+}
+\ZREF at temp\mag
+\ZREF at temp\paperwidth
+\ZREF at temp\paperheight
+\ZREF at temp\stockwidth % memoir.cls, crop.sty
+\ZREF at temp\stockheight % memoir.cls, crop.sty
+\ZREF at temp\mediawidth % VTeX
+\ZREF at temp\mediaheight % VTeX
+\ZREF at temp\pdfpagewidth
+\ZREF at temp\pdfpageheight
+\ZREF at temp\pdfhorigin
+\ZREF at temp\pdfvorigin
+\ZREF at temp\hoffset
+\ZREF at temp\voffset
+\ZREF at temp\topmargin
+\ZREF at temp\oddsidemargin
+\ZREF at temp\evensidemargin
+\ZREF at temp\textwidth
+\ZREF at temp\textheight
+\ZREF at temp\headheight
+\ZREF at temp\headsep
+\ZREF at temp\footskip
+\ZREF at temp\marginparwidth
+\ZREF at temp\marginparsep
+\ZREF at temp\columnwidth
+\ZREF at temp\columnsep
+\ZREF at temp\trimedge % memoir.cls
+\ZREF at temp\spinemargin % memoir.cls
+\ZREF at temp\foremargin % memoir.cls
+\ZREF at temp\trimtop % memoir.cls
+\ZREF at temp\uppermargin % memoir.cls
+\ZREF at temp\headmargin % memoir.cls
+% \end{macrocode}
+%
+% \begin{macrocode}
+\zref at newprop*{outputboxwd}[0pt]{\AtBeginShipoutBoxWidth}
+% \end{macrocode}
+% \begin{macrocode}
+\zref at newprop*{outputboxht}[0pt]{\AtBeginShipoutBoxHeight}
+% \end{macrocode}
+% \begin{macrocode}
+\zref at newprop*{outputboxdp}[0pt]{\AtBeginShipoutBoxDepth}
+% \end{macrocode}
+% \begin{macrocode}
+\zref at addprops{thepage}{outputboxwd,outputboxht,outputboxdp}
+% \end{macrocode}
+%
+% \begin{macro}{\ifZREF at pl@list}
+% \begin{macrocode}
+\ltx at newif\ifZREF at pl@list
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at listpagelayout}
+% \begin{macrocode}
+\ZREF at IfDefinable\zlistpagelayout\def{%
+ {\global\ZREF at pl@listtrue}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at pl@AfterLastShipout}
+% \begin{macrocode}
+\def\ZREF at pl@AfterLastShipout{%
+ \ifZREF at pl@list
+ \edef\ZREF at page@max{\the\value{abspage}}%
+ \ltx at ifundefined{ZREF at org@testdef}{%
+ \let\ZREF at org@testdef\@testdef
+ \def\@testdef##1##2##3{%
+ \ZREF at org@testdef{##1}{##2}{##3}%
+ \def\ZREF at temp{##1}%
+ \ifx\ZREF at temp\ZREF at RefPrefix
+ \expandafter\gdef\csname##1@##2\endcsname{##3}%
+ \fi
+ }%
+ }{}%
+ \AtVeryEndDocument{\ZREF at pl@AtVeryEnd}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at pl@AtVeryEnd}
+% \begin{macrocode}
+\def\ZREF at pl@AtVeryEnd{%
+ \begingroup
+ \toks@{Page layout parameters:\MessageBreak}%
+ \count@=1 %
+ \ZREF at pl@ListPage
+ \edef\x{\endgroup
+ \noexpand\@PackageInfoNoLine{zref-pagelayout}{\the\toks@}%
+ }%
+ \x
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at pl@ListPage}
+% \begin{macrocode}
+\def\ZREF at pl@ListPage{%
+ \edef\x{%
+ \toks@={%
+ \the\toks@
+ Page \the\count@:\noexpand\MessageBreak
+ \zref at ifrefundefined{thepage\the\count@}{}{%
+ \ltx at space\ltx at space mag = %
+ \zref at extract{thepage\the\count@}{mag}%
+ \noexpand\MessageBreak
+ \ZREF at pl@ListEntry{paperwidth}%
+ \ZREF at pl@ListEntry{paperheight}%
+ \ZREF at pl@ListEntry{stockwidth}%
+ \ZREF at pl@ListEntry{stockheight}%
+ \ZREF at pl@ListEntry{mediawidth}%
+ \ZREF at pl@ListEntry{mediaheight}%
+ \ZREF at pl@ListEntry{pdfpagewidth}%
+ \ZREF at pl@ListEntry{pdfpageheight}%
+ \ZREF at pl@ListEntry{pdfhorigin}%
+ \ZREF at pl@ListEntry{pdfvorigin}%
+ \ZREF at pl@ListEntry{hoffset}%
+ \ZREF at pl@ListEntry{voffset}%
+ \ZREF at pl@ListEntry{topmargin}%
+ \ZREF at pl@ListEntry{oddsidemargin}%
+ \ZREF at pl@ListEntry{evensidemargin}%
+ \ZREF at pl@ListEntry{textwidth}%
+ \ZREF at pl@ListEntry{textheight}%
+ \ZREF at pl@ListEntry{headheight}%
+ \ZREF at pl@ListEntry{headsep}%
+ \ZREF at pl@ListEntry{footskip}%
+ \ZREF at pl@ListEntry{marginparwidth}%
+ \ZREF at pl@ListEntry{marginparsep}%
+ \ZREF at pl@ListEntry{columnwidth}%
+ \ZREF at pl@ListEntry{columnsep}%
+ \ZREF at pl@ListEntry{trimedge}%
+ \ZREF at pl@ListEntry{spinemargin}%
+ \ZREF at pl@ListEntry{foremargin}%
+ \ZREF at pl@ListEntry{trimtop}%
+ \ZREF at pl@ListEntry{uppermargin}%
+ \ZREF at pl@ListEntry{headmargin}%
+ }%
+ }%
+ }\x
+ \ifnum\ZREF at page@max>\count@
+ \advance\count@ by\ltx at one
+ \else
+ \expandafter\ltx at gobble
+ \fi
+ \ZREF at pl@ListPage
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at pl@ListEntry}
+% \begin{macrocode}
+\def\ZREF at pl@ListEntry#1{%
+ \zref at ifpropundefined{#1}{%
+ }{%
+ \zref at ifrefcontainsprop{thepage\the\count@}{#1}{%
+ \ltx at space\ltx at space#1 = %
+ \zref at extract{thepage\the\count@}{#1}sp = %
+ \the\dimexpr\zref at extract{thepage\the\count@}{#1}sp\relax
+ \noexpand\MessageBreak
+ }{}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\AfterLastShipout{%
+ \ZREF at pl@AfterLastShipout
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</pagelayout>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{pageattr}}
+%
+% \begin{macrocode}
+%<*pageattr>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-pageattr}%
+ [2019/11/29 v2.28 Module pageattr for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{iftex}[2019/11/07]%
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ifluatex
+ \ifnum\luatexversion<39 %
+ \else
+ \begingroup
+ \escapechar=-1 %
+ \def\ZREF at temp#1{%
+ \ltx at IfUndefined{\string#1}{%
+ \let#1\ltx at undefined
+ \directlua{%
+ if tex.enableprimitives then %
+ tex.enableprimitives('', {'\string#1'})%
+ end%
+ }%
+ \ltx at ifundefined{\string#1}{%
+ }{%
+ \global#1=#1%
+ \@PackageInfoNoLine{zref-pageattr}{%
+ \string#1 enabled%
+ }%
+ }%
+ }{}%
+ }%
+ \ZREF at temp\pdfpageattr
+ \ZREF at temp\pdfpagesattr
+ \endgroup
+ \fi
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\let\ZREF at temp=N%
+\ltx at IfUndefined{pdfpageattr}{%
+ \@PackageInfoNoLine{zref-pageattr}{%
+ \string\pdfpageattr\space is not available%
+ }%
+ \def\zref at pdfpageattr#1{}%
+ \def\zref at pdfpageattr@used#1{}%
+}{%
+ \RequirePackage{zref-thepage}[2019/11/29]%
+ \zref at newprop*{pdfpageattr}[]{\zref at hex{\the\pdfpageattr}}%
+ \zref at addprop{thepage}{pdfpageattr}%
+ \let\ZREF at temp=Y%
+}
+\ltx at IfUndefined{pdfpagesattr}{%
+ \@PackageInfoNoLine{zref-pageattr}{%
+ \string\pdfpagesattr\space is not available%
+ }%
+ \def\zref at pdfpagesattr{}%
+ \def\zref at pdfpagesattr@used{}%
+}{%
+ \RequirePackage{zref-lastpage}[2019/11/29]%
+ \zref at newprop*{pdfpagesattr}[]{\zref at hex{\the\pdfpagesattr}}%
+ \zref at addprop{LastPage}{pdfpagesattr}%
+ \let\ZREF at temp=Y%
+}%
+% \end{macrocode}
+% \begin{macrocode}
+\ifx\ZREF at temp N%
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+% \begin{macrocode}
+\RequirePackage{zref-abspage}[2019/11/29]
+\RequirePackage{atveryend}[2010/03/24]
+\RequirePackage{pdftexcmds}[2010/04/01]
+\let\ZREF at temp=Y%
+\ltx at IfUndefined{pdf at escapehex}{\let\ZREF at temp=N}{}
+\ltx at IfUndefined{pdf at unescapehex}{\let\ZREF at temp=N}{}
+\ifx\ZREF at temp N%
+ \let\zref at hex\ltx at firstofone
+ \let\zref at unhex\ltx at firstofone
+\else
+ \let\zref at hex\pdf at escapehex
+ \let\zref at unhex\pdf at unescapehex
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\ifZREF at pa@list}
+% \begin{macrocode}
+\ltx at newif\ifZREF at pa@list
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at listpageattr}
+% \begin{macrocode}
+\ZREF at IfDefinable\zlistpageattr\def{%
+ {\ZREF at pa@listtrue}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at pa@AfterLastShipout}
+% \begin{macrocode}
+\def\ZREF at pa@AfterLastShipout{%
+ \ifZREF at pa@list
+ \edef\ZREF at page@max{\the\value{abspage}}%
+ \ltx at ifundefined{ZREF at org@testdef}{%
+ \let\ZREF at org@testdef\@testdef
+ \def\@testdef##1##2##3{%
+ \ZREF at org@testdef{##1}{##2}{##3}%
+ \def\ZREF at temp{##1}%
+ \ifx\ZREF at temp\ZREF at RefPrefix
+ \expandafter\xdef\csname##1@##2\endcsname{##3}%
+ \fi
+ }%
+ }{}%
+ \AtVeryEndDocument{\ZREF at pa@AtVeryEnd}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at pa@AtVeryEnd}
+% \begin{macrocode}
+\ltx at IfUndefined{pdfpageattr}{%
+ \def\ZREF at pa@AtVeryEnd{}%
+}{%
+ \def\ZREF at pa@AtVeryEnd{%
+ \begingroup
+ \toks@{List of \ltx at backslashchar pdfpageattr:\MessageBreak}%
+ \count@=1 %
+ \ZREF at pa@ListPage
+ \edef\x{\endgroup
+ \noexpand\@PackageInfoNoLine{zref-pageattr}{%
+ \the\toks@
+ }%
+ }%
+ \x
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at pageattr}
+% \begin{macrocode}
+\def\zref at pageattr#1{%
+ \zref at unhex{%
+ \zref at extract{thepage\ZREF at number{#1}}{pdfpageattr}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at pageattr@used}
+% \begin{macrocode}
+\ZREF at Robust\def\zref at pageattr@used#1{%
+ \zref at refused{thepage\ZREF at number{#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at pa@ListPage}
+% \begin{macrocode}
+ \def\ZREF at pa@ListPage{%
+ \edef\x{%
+ \toks@={%
+ \the\toks@
+ Page \the\count@:%
+ \noexpand\MessageBreak
+ \zref at ifrefundefined{thepage\the\count@}{}{%
+ <<\zref at pdfpageattr\count@>>%
+ \noexpand\MessageBreak
+ }%
+ }%
+ }\x
+ \ifnum\ZREF at page@max>\count@
+ \advance\count@ by\ltx at one
+ \else
+ \expandafter\ltx at gobble
+ \fi
+ \ZREF at pa@ListPage
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\ltx at IfUndefined{pdfpagesattr}{%
+}{%
+% \end{macrocode}
+% \begin{macro}{\zref at pdfpagesattr}
+% \begin{macrocode}
+ \def\zref at pdfpagesattr{%
+ \zref at unhex{%
+ \zref at extract{LastPage}{pdfpagesattr}%
+ }%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at pdfpagesattr@used}
+% \begin{macrocode}
+ \ZREF at Robust\def\zref at pdfpagesattr@used{%
+ \zref at refused{LastPage}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+ \ltx at LocalAppendToMacro\ZREF at pa@AtVeryEnd{%
+ \@PackageInfoNoLine{zref-pageattr}{%
+ \ltx at backslashchar pdfpagesattr:\MessageBreak
+ <<\zref at pdfpagesattr>>%
+ \MessageBreak
+ }%
+ }%
+}
+\AfterLastShipout{%
+ \ZREF at pa@AfterLastShipout
+}
+% \end{macrocode}
+% \begin{macrocode}
+%</pageattr>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{marks}}
+%
+% \begin{macrocode}
+%<*marks>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-marks}%
+ [2019/11/29 v2.28 Module marks for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand*{\zref at marks@register}[3][]{%
+ \edef\ZREF at TempName{#1}%
+ \edef\ZREF at TempNum{\ZREF at number{#2}}%
+ \ifnum\ZREF at TempNum<\ltx at zero %
+ \PackageError\ZREF at name{%
+ \string\zref at marks@register\ltx at space is called with invalid%
+ \MessageBreak
+ marks register number (\ZREF at TempNum)%
+ }{%
+ Use `0' or the command, defined by \string\newmarks.\MessageBreak
+ \@ehc
+ }%
+ \else
+ \ifx\ZREF at TempName\ltx at empty
+ \edef\ZREF at TempName{mark\romannumeral\ZREF at TempNum}%
+ \else
+ \edef\ZREF at TempName{marks\ZREF at TempName}%
+ \fi
+ \ZREF at MARKS@DefineProp{top}%
+ \ZREF at MARKS@DefineProp{first}%
+ \ZREF at MARKS@DefineProp{bot}%
+ \kv at parse{#3}{%
+ \ifx\kv at value\relax
+ \def\kv at value{top,first,bot}%
+ \fi
+ \edef\ZREF at temp{\expandafter\ltx at car\kv at key X\@nil}%
+ \ifx\ZREF at temp\ZREF at STAR
+ \edef\kv at key{\expandafter\ltx at cdr\kv at key\@nil}%
+ \zref at newlist\kv at key
+ \fi
+ \expandafter\comma at parse\expandafter{\kv at value}{%
+ \ifcase0\ifx\comma at entry\ZREF at NAME@top 1\else
+ \ifx\comma at entry\ZREF at NAME@first 1\else
+ \ifx\comma at entry\ZREF at NAME@bot 1\fi\fi\fi\ltx at space
+ \PackageWarning{zref-marks}{%
+ Use `top', `first' or `bot' for the list values%
+ \MessageBreak
+ in the third argument of \string\zref at marks@register.%
+ \MessageBreak
+ Ignoring unkown value `\comma at entry'%
+ }%
+ \else
+ \zref at addprop{\kv at key}{\comma at entry\ZREF at TempName}%
+ \fi
+ \ltx at gobble
+ }%
+ \ltx at gobbletwo
+ }%
+ \fi
+}
+\def\ZREF at STAR{*}
+\def\ZREF at NAME@top{top}
+\def\ZREF at NAME@first{first}
+\def\ZREF at NAME@bot{bot}
+\def\ZREF at MARKS@DefineProp#1{%
+ \zref at ifpropundefined{#1\ZREF at TempName}{%
+ \ifnum\ZREF at TempNum=\ltx at zero
+ \begingroup
+ \edef\x{\endgroup
+ \noexpand\zref at newprop*{#1\ZREF at TempName}[]{%
+ \expandafter\noexpand\csname#1mark\endcsname
+ }%
+ }%
+ \x
+ \else
+ \begingroup
+ \edef\x{\endgroup
+ \noexpand\zref at newprop*{#1\ZREF at TempName}[]{%
+ \expandafter\noexpand\csname#1marks\endcsname
+ \ZREF at TempNum
+ }%
+ }%
+ \x
+ \fi
+ }{%
+ \PackageWarning{zref-marks}{%
+ \string\zref at marks@register\ltx at space does not generate the%
+ \MessageBreak
+ new property `#1\ZREF at TempName', because\MessageBreak
+ it is already defined%
+ }%
+ }%
+}
+% \end{macrocode}
+% \begin{macrocode}
+%</marks>
+% \end{macrocode}
+%
+% \subsection{Module \xmodule{runs}}
+%
+% This module does not use the label-reference-system.
+% The reference changes with each \hologo{LaTeX}~run and would
+% force a rerun warning always.
+% \begin{macrocode}
+%<*runs>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-runs}%
+ [2019/11/29 v2.28 Module runs for zref (HO)]%
+% \end{macrocode}
+%
+% \begin{macro}{\zruns}
+% \begin{macrocode}
+\providecommand*{\zruns}{0}%
+\AtBeginDocument{%
+ \edef\zruns{\number\numexpr\zruns+1}%
+ \begingroup
+ \def\on at line{}%
+ \PackageInfo{zref-runs}{LaTeX runs: \zruns}%
+ \if at filesw
+ \immediate\write\@mainaux{%
+ \string\gdef\string\zruns{\zruns}%
+ }%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</runs>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{perpage}}
+%
+% \begin{macrocode}
+%<*perpage>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-perpage}%
+ [2019/11/29 v2.28 Module perpage for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% This module resets a counter at page boundaries.
+% Because of the asynchronous output routine
+% page counter properties cannot be asked directly,
+% references are necessary.
+%
+% For detecting changed pages module \xmodule{abspage}
+% is loaded.
+% \begin{macrocode}
+\RequirePackage{zref-abspage}[2019/11/29]
+% \end{macrocode}
+%
+% We group the properties for the needed references
+% in the property list |perpage|. The property |pagevalue|
+% records the correct value of the page counter.
+% \begin{macrocode}
+\ZREF at NewPropPageValue
+\zref at newlist{perpage}
+\zref at addprops{perpage}{abspage,page,pagevalue}
+% \end{macrocode}
+% The page value, known by the reference mechanism, will be
+% stored in counter |zpage|.
+% \begin{macrocode}
+\newcounter{zpage}
+% \end{macrocode}
+% Counter |zref at unique| helps in generating unique reference
+% names.
+% \begin{macrocode}
+\zref at require@unique
+% \end{macrocode}
+% In order to be able to reset the counter, we hook here
+% into \cs{stepcounter}. In fact two nested hooks are used
+% to allow other packages to use the first hook at the beginning
+% of \cs{stepcounter}.
+% \begin{macrocode}
+\let\ZREF at org@stepcounter\stepcounter
+\def\stepcounter#1{%
+ \ifcsname @stepcounterhook@#1\endcsname
+ \csname @stepcounterhook@#1\endcsname
+ \fi
+ \ZREF at org@stepcounter{#1}%
+}
+% \end{macrocode}
+% \cs{@stpelt} must be adapted due to the change in latex
+% 2015-01, see https://github.com/ho-tex/zref/issues/26
+% \begin{macrocode}
+\let\ZREF at org@@stpelt\@stpelt
+\def\@stpelt#1{%
+ \ifcsname ZREF at perpage@#1\endcsname
+ \begingroup
+ \let\stepcounter\ZREF at org@stepcounter
+ \ZREF at org@@stpelt{#1}%
+ \endgroup
+ \expandafter\ltx at gobbletwo
+ \fi
+ \ZREF at org@@stpelt{#1}%
+}
+% \end{macrocode}
+%
+% \begin{macro}{\zmakeperpage}
+% Makro \cs{zmakeperpage} resets a counter at each page
+% break. It uses the same syntax and semantics as
+% \cs{MakePerPage} from package \xpackage{perpage} \cite{perpage}.
+% The initial start value can be given by the optional
+% argument. Default is one that means after the first
+% \cs{stepcounter} on a new page the counter starts with
+% one.
+% \begin{macrocode}
+\ZREF at IfDefinable\zmakeperpage\def{%
+ {%
+ \@ifnextchar[\ZREF at makeperpage@opt{\ZREF@@makeperpage[\ltx at zero]}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% We hook before the counter is incremented in \cs{stepcounter},
+% package \xpackage{perpage} afterwards. Thus a little
+% calculation is necessary.
+% \begin{macrocode}
+\def\ZREF at makeperpage@opt[#1]{%
+ \begingroup
+ \edef\x{\endgroup
+ \noexpand\ZREF@@makeperpage[\number\numexpr#1-1\relax]%
+ }%
+ \x
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\ZREF@@makeperpage[#1]#2{%
+ \@ifundefined{@stepcounterhook@#2}{%
+ \expandafter\gdef\csname @stepcounterhook@#2\endcsname{}%
+ }{}%
+ \expandafter\gdef\csname ZREF at perpage@#2\endcsname{%
+ \ZREF@@perpage at step{#2}{#1}%
+ }%
+ \expandafter\g at addto@macro\csname @stepcounterhook@#2\endcsname{%
+ \ifcsname ZREF at perpage@#2\endcsname
+ \csname ZREF at perpage@#2\endcsname
+ \fi
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\ZREF@@perpage at step}
+% The heart of this module follows.
+% \begin{macrocode}
+\def\ZREF@@perpage at step#1#2{%
+% \end{macrocode}
+% First the reference is generated.
+% \begin{macrocode}
+ \global\advance\c at zref@unique\ltx at one
+ \begingroup
+ \expandafter
+ \zref at labelbylist\expandafter{\thezref at unique}{perpage}%
+% \end{macrocode}
+% The \cs{expandafter} commands are necessary, because \cs{ZREF at temp}
+% is also used inside of \cs{zref at labelbylist}.
+%
+% The evaluation of the reference follows. If the reference
+% is not yet kwown, we use the page counter as approximation.
+% \begin{macrocode}
+ \zref at ifrefundefined\thezref at unique{%
+ \global\c at zpage=\c at page
+ \global\let\thezpage\thepage
+ \expandafter\xdef\csname ZREF at abspage@#1\endcsname{%
+ \number\c at abspage
+ }%
+ }{%
+% \end{macrocode}
+% The reference is used to set \cs{thezpage} and counter |zpage|.
+% \begin{macrocode}
+ \global\c at zpage=\zref at extract\thezref at unique{pagevalue}\relax
+ \xdef\thezpage{\noexpand\zref at extract{\thezref at unique}{page}}%
+ \expandafter\xdef\csname ZREF at abspage@#1\endcsname{%
+ \zref at extractdefault\thezref at unique
+ {abspage}{\number\c at abspage}%
+ }%
+ }%
+% \end{macrocode}
+% Page changes are detected by a changed absolute page number.
+% \begin{macrocode}
+ \expandafter\ifx\csname ZREF at abspage@#1\expandafter\endcsname
+ \csname ZREF at currentabspage@#1\endcsname
+ \else
+ \global\csname c@#1\endcsname=#2\relax
+ \global\expandafter\let
+ \csname ZREF at currentabspage@#1\expandafter\endcsname
+ \csname ZREF at abspage@#1\endcsname
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zunmakeperpage}
+% Macro \cs{zunmakeperpage} cancels the effect of \cs{zmakeperpage}.
+% \begin{macrocode}
+\ZREF at IfDefinable\zunmakeperpage\def{%
+ #1{%
+ \global\expandafter
+ \let\csname ZREF at perpage@#1\endcsname\@undefined
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</perpage>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{titleref}}
+%
+% \begin{macrocode}
+%<*titleref>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-titleref}%
+ [2019/11/29 v2.28 Module titleref for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\RequirePackage{gettitlestring}[2009/12/08]
+% \end{macrocode}
+%
+% \subsubsection{Implementation}
+% \begin{macrocode}
+\RequirePackage{keyval}
+% \end{macrocode}
+%
+% This module makes section and caption titles available
+% for the reference system. It uses some of the ideas
+% of package \xpackage{nameref} and \xpackage{titleref}.
+%
+% Now we can add the property \verb|title| is added to
+% the main property list.
+% \begin{macrocode}
+\ZREF at NewPropTitle
+\zref at addprop\ZREF at mainlist{title}%
+% \end{macrocode}
+%
+% The title strings go into the \xfile{.aux} file, thus
+% they need some kind of protection.
+% Package \xpackage{titleref} uses a protected expansion
+% method. The advantage is that this can be used to
+% cleanup the string and to remove \cs{label}, \cs{index}
+% and other macros unwanted for referencing.
+% But there is the risk that fragile stuff can break.
+%
+% Therefore package \xpackage{nameref} does not expand
+% the string. Thus the entries can safely be written to
+% the \xfile{.aux} file. But potentially dangerous
+% macros such as \cs{label} remain in the string and
+% can cause problems when using the string in references.
+%
+% \begin{macro}{\ifzref at titleref@expand}
+% The switch \cs{ifzref at titleref@expand} distinguishes
+% between the both methods. Package \xpackage{nameref}'s
+% behaviour is achieved by setting the switch to false,
+% otherwise \xpackage{titleref}'s expansion is used.
+% Default is false.
+% \begin{macrocode}
+\newif\ifzref at titleref@expand
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at titleref@hook}
+% The hook \cs{ZREF at titleref@hook} allows to extend
+% the cleanup for the expansion method. Thus
+% unnecessary macros can be removed or dangerous commands
+% removed. The hook is executed before the expansion of
+% \cs{zref at titleref@current}.
+% \begin{macrocode}
+\let\ZREF at titleref@hook\ltx at empty
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zref at titleref@cleanup}
+% The hook should not be used directly, instead we provide the
+% macro \cs{zref at titleref@cleanup} to add stuff to the hook
+% and prevents that a previous non-empty content is not discarded
+% accidently.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at titleref@cleanup#1{%
+ \begingroup
+ \toks@\expandafter{%
+ \ZREF at titleref@hook
+ #1%
+ }%
+ \expandafter\endgroup
+ \expandafter\def\expandafter\ZREF at titleref@hook\expandafter{%
+ \the\toks@
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifzref at titleref@stripperiod}
+% Sometimes a title contains a period at the end.
+% Package \xpackage{nameref} removes this. This behaviour
+% is controlled by the switch \cs{ifzref at titleref@stripperiod}
+% and works regardless of the setting of option \xoption{expand}.
+% Period stripping is the default.
+% \begin{macrocode}
+\newif\ifzref at titleref@stripperiod
+\zref at titleref@stripperiodtrue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at titleref@setcurrent}
+% Macro \cs{zref at titleref@setcurrent} sets a new current title
+% stored in \cs{zref at titleref@current}. Some cleanup and
+% expansion is performed that can be controlled by the
+% previous switches.
+% \begin{macrocode}
+\ZREF at Robust\def\zref at titleref@setcurrent#1{%
+ \ifzref at titleref@expand
+ \GetTitleStringExpand{#1}%
+ \else
+ \GetTitleStringNonExpand{#1}%
+ \fi
+ \edef\zref at titleref@current{%
+ \detokenize\expandafter{\GetTitleStringResult}%
+ }%
+ \ifzref at titleref@stripperiod
+ \edef\zref at titleref@current{%
+ \expandafter\ZREF at stripperiod\zref at titleref@current
+ \ltx at empty.\ltx at empty\@nil
+ }%
+ \fi
+}%
+\GetTitleStringDisableCommands{%
+ \ZREF at titleref@hook
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at stripperiod}
+% If \cs{ZREF at stripperiod} is called, the argument consists of
+% space tokens and tokens with catcode 12 (other), because
+% of \hologo{eTeX}'s \cs{detokenize}.
+% \begin{macrocode}
+\def\ZREF at stripperiod#1.\ltx at empty#2\@nil{#1}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{User interface}
+%
+% \begin{macro}{\ztitlerefsetup}
+% The behaviour of module \xmodule{titleref} is controlled
+% by switches and a hook. They can be set by \cs{ztitlerefsetup}
+% with a key value interface, provided by package \xpackage{keyval}.
+% Also the current title can be given explicitly by the key
+% \verb|title|.
+% \begin{macrocode}
+\define at key{ZREF at TR}{expand}[true]{%
+ \csname zref at titleref@expand#1\endcsname
+}%
+\define at key{ZREF at TR}{stripperiod}[true]{%
+ \csname zref at titleref@stripperiod#1\endcsname
+}%
+\define at key{ZREF at TR}{cleanup}{%
+ \zref at titleref@cleanup{#1}%
+}%
+\define at key{ZREF at TR}{title}{%
+ \def\zref at titleref@current{#1}%
+}%
+\ZREF at IfDefinable\ztitlerefsetup\def{%
+ {\kvsetkeys{ZREF at TR}}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ztitleref}
+% The user command \cs{ztitleref} references the title.
+% For safety \cs{label} is disabled to prevent multiply
+% defined references.
+% \begin{macrocode}
+\ZREF at IfDefinable\ztitleref\def{%
+ {\zref at wrapper@babel\ZREF at titleref}%
+}%
+\def\ZREF at titleref#1{%
+ \begingroup
+ \zref at refused{#1}%
+ \let\label\ltx at gobble
+ \zref at extract{#1}{title}%
+ \endgroup
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Patches for section and caption commands}
+%
+% The section and caption macros are patched to extract the
+% title data.
+%
+% Captions of figures and tables.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \ZREF at patch{@caption}{%
+ \long\def\@caption#1[#2]{%
+ \zref at titleref@setcurrent{#2}%
+ \ZREF at org@@caption{#1}[{#2}]%
+ }%
+ }%
+% \end{macrocode}
+%
+% Section commands without star. The title version for the
+% table of contents is used because it is usually shorter and
+% more robust.
+% \begin{macrocode}
+ \ZREF at patch{@part}{%
+ \def\@part[#1]{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@@part[{#1}]%
+ }%
+ }%
+ \ZREF at patch{@chapter}{%
+ \def\@chapter[#1]{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@@chapter[{#1}]%
+ }%
+ }%
+ \ZREF at patch{@sect}{%
+ \def\@sect#1#2#3#4#5#6[#7]{%
+ \zref at titleref@setcurrent{#7}%
+ \ZREF at org@@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]%
+ }%
+ }%
+% \end{macrocode}
+% The star versions of the section commands.
+% \begin{macrocode}
+ \ZREF at patch{@spart}{%
+ \def\@spart#1{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@@spart{#1}%
+ }%
+ }%
+ \ZREF at patch{@schapter}{%
+ \def\@schapter#1{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@@schapter{#1}%
+ }%
+ }%
+ \ZREF at patch{@ssect}{%
+ \def\@ssect#1#2#3#4#5{%
+ \zref at titleref@setcurrent{#5}%
+ \ZREF at org@@ssect{#1}{#2}{#3}{#4}{#5}%
+ }%
+ }%
+% \end{macrocode}
+%
+% \subsubsection{Environment \textsf{description}}
+%
+% \begin{macrocode}
+ \ZREF at patch{descriptionlabel}{%
+ \def\descriptionlabel#1{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@descriptionlabel{#1}%
+ }%
+ }%
+% \end{macrocode}
+%
+% \subsubsection{Class \xclass{memoir}}
+%
+% \begin{macrocode}
+ \@ifclassloaded{memoir}{%
+ \ltx at IfUndefined{ifheadnameref}{}{%
+ \def\@chapter[#1]#2{%
+ \ltx at IfUndefined{ch at pt@c}{%
+ \zref at titleref@setcurrent{#1}%
+ }{%
+ \ifx\ch at pt@c\ltx at empty
+ \zref at titleref@setcurrent{#2}%
+ \else
+ \def\NR at temp{#1}%
+ \ifx\NR at temp\ltx at empty
+ \expandafter\zref at titleref@setcurrent
+ \expandafter{\ch at pt@c}%
+ \else
+ \ifheadnameref
+ \zref at titleref@setcurrent{#1}%
+ \else
+ \expandafter\zref at titleref@setcurrent
+ \expandafter{\ch at pt@c}%
+ \fi
+ \fi
+ \fi
+ }%
+ \ZREF at org@@chapter[{#1}]{#2}%
+ }%
+ \ZREF at patch{M at sect}{%
+ \def\M at sect#1#2#3#4#5#6[#7][#8]{%
+ \ifheadnameref
+ \zref at titleref@setcurrent{#8}%
+ \else
+ \zref at titleref@setcurrent{#7}%
+ \fi
+ \ZREF at org@M at sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}][{#8}]%
+ }%
+ }%
+ }%
+ }{}%
+% \end{macrocode}
+%
+% \subsubsection{Class \xclass{beamer}}
+%
+% \begin{macrocode}
+ \@ifclassloaded{beamer}{%
+ \ZREF at patch{beamer at section}{%
+ \long\def\beamer at section[#1]{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@beamer at section[{#1}]%
+ }%
+ }%
+ \ZREF at patch{beamer at subsection}{%
+ \long\def\beamer at subsection[#1]{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@beamer at subsection[{#1}]%
+ }%
+ }%
+ \ZREF at patch{beamer at subsubsection}{%
+ \long\def\beamer at subsubsection[#1]{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@beamer at subsubsection[{#1}]%
+ }%
+ }%
+ }{}%
+% \end{macrocode}
+%
+% \subsubsection{Package \xpackage{titlesec}}
+%
+% \begin{macrocode}
+ \@ifpackageloaded{titlesec}{%
+ \ZREF at patch{ttl at sect@i}{%
+ \def\ttl at sect@i#1#2[#3]#4{%
+ \zref at titleref@setcurrent{#4}%
+ \ZREF at org@ttl at sect@i{#1}{#2}[{#3}]{#4}%
+ }%
+ }%
+ \ZREF at patch{ttl at straight@i}{%
+ \def\ttl at straight@i#1[#2]#3{%
+ \def\ZREF at temp{#2}%
+ \ifx\ZREF at temp\ltx at empty
+ \zref at titleref@setcurrent{#3}%
+ \else
+ \zref at titleref@setcurrent{#2}%
+ \fi
+ \ZREF at org@ttl at straight@i{#1}[{#2}]{#3}%
+ }%
+ }%
+ }{}%
+% \end{macrocode}
+%
+% \subsubsection{Package \xpackage{longtable}}
+%
+% Package \xpackage{longtable}: some support for its \cs{caption}.
+% However \cs{label} inside the caption is not supported.
+% \begin{macrocode}
+ \@ifpackageloaded{longtable}{%
+ \ZREF at patch{LT at c@ption}{%
+ \def\LT at c@ption#1[#2]#3{%
+ \ZREF at org@LT at c@ption{#1}[{#2}]{#3}%
+ \zref at titleref@setcurrent{#2}%
+ }%
+ }%
+ }{}%
+% \end{macrocode}
+%
+% \subsubsection{Package \xpackage{listings}}
+%
+% Package \xpackage{listings}: support for its caption.
+% \begin{macrocode}
+ \@ifpackageloaded{listings}{%
+ \ZREF at patch{lst at MakeCaption}{%
+ \def\lst at MakeCaption{%
+ \ifx\lst at label\ltx at empty
+ \else
+ \expandafter\zref at titleref@setcurrent\expandafter{%
+ \lst@@caption
+ }%
+ \fi
+ \ZREF at org@lst at MakeCaption
+ }%
+ }%
+ }{}%
+% \end{macrocode}
+%
+% \subsubsection{Theorems}
+%
+% \begin{macrocode}
+ \ZREF at patch{@opargbegintheorem}{%
+ \def\@opargbegintheorem#1#2#3{%
+ \zref at titleref@setcurrent{#3}%
+ \ZREF at org@@opargbegintheorem{#1}{#2}{#3}%
+ }%
+ }%
+ \@ifpackageloaded{amsthm}{%
+ \begingroup
+ \edef\x{macro:\string#1\string#2[\string#3]}%
+ \@onelevel at sanitize\x
+ \def\y#1->#2\@nil{#1}%
+ \edef\z{\expandafter\y\meaning\@begintheorem->\@nil}%
+ \@onelevel at sanitize\z
+ \expandafter\endgroup
+ \ifx\x\z
+ \ZREF at patch{@begintheorem}{%
+ \def\@begintheorem#1#2[#3]{%
+ \zref at titleref@setcurrent{#3}%
+ \ZREF at org@@begintheorem{#1}{#2}[{#3}]%
+ }%
+ }%
+ \fi
+ }{}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</titleref>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{xr}}
+%
+% \begin{macrocode}
+%<*xr>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-xr}%
+ [2019/11/29 v2.28 Module xr for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+% \begin{macrocode}
+\RequirePackage{keyval}
+\RequirePackage{kvoptions}[2010/02/22]
+% \end{macrocode}
+%
+% We declare property |url|, because this is added,
+% if a reference is imported and has not already set this field.
+% Or if |hyperref| is used, then this property can be asked.
+% \begin{macrocode}
+\zref at newprop{url}{}%
+\zref at newprop{urluse}{}%
+% \end{macrocode}
+% \begin{macrocode}
+\zref at newprop{externaldocument}{}%
+% \end{macrocode}
+%
+% Most code, especially the handling of the \xfile{.aux}
+% files are taken from David Carlisle's \xpackage{xr} package.
+% Therefore I drop the documentation for these macros here.
+%
+% \begin{macro}{\zref at xr@ext}
+% If the URL is not specied, then assume
+% processed file with a guessed extension.
+% Use the setting of \xpackage{hyperref} if available.
+% \begin{macrocode}
+\providecommand*{\zref at xr@ext}{%
+ \ltx at ifundefined{XR at ext}{pdf}{\XR at ext}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ifZREF at xr@zreflabel}
+% The use of the star form of \cs{zexternaldocument}
+% is remembered in the switch \cs{ifZREF at xr@zreflabel}.
+% \begin{macrocode}
+\newif\ifZREF at xr@zreflabel
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\SetupKeyvalOptions{%
+ family=ZREF at XR,%
+ prefix=ZREF at xr@%
+}
+\DeclareBoolOption[true]{tozreflabel}
+\DeclareBoolOption[false]{toltxlabel}
+\DeclareBoolOption{verbose}
+\define at key{ZREF at XR}{ext}{%
+ \def\zref at xr@{#1}%
+}
+\DeclareBoolOption[false]{urluse}
+% \end{macrocode}
+% \begin{macro}{\zxrsetup}
+% \begin{macrocode}
+\newcommand*{\zxrsetup}{%
+ \kvsetkeys{ZREF at XR}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at xr@URL}
+% \begin{macrocode}
+\newcount\ZREF at xr@URL
+\ZREF at xr@URL=\ltx at zero
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at xr@AddURL}
+% \begin{macrocode}
+\def\ZREF at xr@AddURL#1{%
+ \begingroup
+ \def\ZREF at temp{#1}%
+ \count@=\ltx at one
+ \ZREF at xr@@AddUrl
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at xr@@AddUrl}
+% \begin{macrocode}
+\def\ZREF at xr@@AddUrl{%
+ \ifnum\count@>\ZREF at xr@URL
+ \global\advance\ZREF at xr@URL by\ltx at one
+ \xdef\ZREF at xr@theURL{\romannumeral\ZREF at xr@URL}%
+ \global\expandafter\let
+ \csname Z at U@\ZREF at xr@theURL\endcsname\ZREF at temp
+ \@PackageInfo{zref-xr}{%
+ \ltx at backslashchar Z at U@\ZREF at xr@theURL:\MessageBreak
+ \ZREF at temp\MessageBreak
+ }%
+ \else
+ \expandafter
+ \ifx\csname Z at U@\romannumeral\count@\endcsname\ZREF at temp
+ \xdef\ZREF at xr@theURL{\romannumeral\count@}%
+ \else
+ \expandafter\expandafter\expandafter\ZREF at xr@@AddUrl
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zexternaldocument}
+% In its star form it looks for \cs{newlabel},
+% otherwise for \cs{zref at newlabel}.
+% Later we
+% will read \xfile{.aux} files that expects
+% |@| to have catcode 11 (letter).
+% \begin{macrocode}
+\ZREF at IfDefinable\zexternaldocument\def{%
+ {%
+ \ZREF at NewPropAnchor
+ \ZREF at NewPropTitle
+ \begingroup
+ \csname @safe at actives@true\endcsname
+ \makeatletter
+ \@ifstar{%
+ \ZREF at xr@zreflabelfalse
+ \@testopt\ZREF at xr@externaldocument{}%
+ }{%
+ \ZREF at xr@zreflabeltrue
+ \@testopt\ZREF at xr@externaldocument{}%
+ }%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% If the \cs{include} featuer was used, there can be
+% several \xfile{.aux} files. These files are read
+% one after another, especially they are not recursively
+% read in order to save read registers. Thus it can
+% happen that the read order of the newlabel commands
+% differs from \hologo{LaTeX}'s order using \cs{input}.
+%
+% \begin{macro}{\ZREF at xr@externaldocument}
+% It reads the remaining arguments. \cs{newcommand}
+% comes in handy for the optional argument.
+% \begin{macrocode}
+\def\ZREF at xr@externaldocument[#1]#2{%
+ \def\ZREF at xr@prefix{#1}%
+ \let\ZREF at xr@filelist\ltx at empty
+ \edef\ZREF at xr@externalfile{#2}%
+ \edef\ZREF at xr@file{\ZREF at xr@externalfile.aux}%
+ \filename at parse{#2}%
+ \@testopt\ZREF at xr@graburl{#2.\zref at xr@ext}%
+}%
+\def\ZREF at xr@graburl[#1]{%
+ \edef\ZREF at xr@url{#1}%
+ \ifZREF at xr@urluse
+ \expandafter\ZREF at xr@AddURL\expandafter{\ZREF at xr@url}%
+ \expandafter\def\expandafter\ZREF at xr@url
+ \expandafter{\csname Z at U@\ZREF at xr@theURL\endcsname}%
+ \fi
+ \ZREF at xr@checkfile
+ \endgroup
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at xr@processfile}
+% We follow \xpackage{xr} here, \cs{IfFileExists} offers
+% a nicer test, but we have to open the file anyway.
+% \begin{macrocode}
+\def\ZREF at xr@checkfile{%
+ \openin\@inputcheck\ZREF at xr@file\relax
+ \ifeof\@inputcheck
+ \PackageWarning{zref-xr}{%
+ File `\ZREF at xr@file' not found or empty,\MessageBreak
+ labels not imported%
+ }%
+ \else
+ \PackageInfo{zref-xr}{%
+ Label \ifZREF at xr@zreflabel (zref) \fi
+ import from `\ZREF at xr@file'%
+ }%
+ \def\ZREF at xr@found{0}%
+ \def\ZREF at xr@ignored at empty{0}%
+ \def\ZREF at xr@ignored at zref{0}%
+ \def\ZREF at xr@ignored at ltx{0}%
+ \ZREF at xr@processfile
+ \closein\@inputcheck
+ \begingroup
+ \let\on at line\ltx at empty
+ \PackageInfo{zref-xr}{%
+ Statistics for `\ZREF at xr@file':\MessageBreak
+ \ZREF at xr@found\space
+ \ifZREF at xr@zreflabel zref\else LaTeX\fi\space
+ label(s) found%
+ \ifnum\ZREF at xr@ignored at empty>0 %
+ ,\MessageBreak
+ \ZREF at xr@ignored at empty\space empty label(s) ignored%
+ \fi
+ \ifnum\ZREF at xr@ignored at zref>0 %
+ ,\MessageBreak
+ \ZREF at xr@ignored at zref\space
+ duplicated zref label(s) ignored%
+ \fi
+ \ifnum\ZREF at xr@ignored at ltx>0 %
+ ,\MessageBreak
+ \ZREF at xr@ignored at ltx\space
+ duplicated latex label(s) ignored%
+ \fi
+ }%
+ \endgroup
+ \fi
+ \ifx\ZREF at xr@filelist\ltx at empty
+ \else
+ \edef\ZREF at xr@file{%
+ \expandafter\ltx at car\ZREF at xr@filelist\@nil
+ }%
+ \edef\ZREF at xr@filelist{%
+ \expandafter\ltx at cdr\ZREF at xr@filelist\ltx at empty\@nil
+ }%
+ \expandafter\ZREF at xr@checkfile
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at xr@processfile}
+% \begin{macrocode}
+\def\ZREF at xr@processfile{%
+ \read\@inputcheck to\ZREF at xr@line
+ \expandafter\ZREF at xr@processline\ZREF at xr@line..\ZREF at nil
+ \ifeof\@inputcheck
+ \else
+ \expandafter\ZREF at xr@processfile
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at xr@processline}
+% The most work must be done for analyzing the
+% arguments of \cs{newlabel}.
+% \begin{macrocode}
+\long\def\ZREF at xr@processline#1#2#3\ZREF at nil{%
+ \def\x{#1}%
+ \toks@{#2}%
+ \ifZREF at xr@zreflabel
+ \ifx\x\ZREF at xr@zref at newlabel
+ \expandafter
+ \ZREF at xr@process at zreflabel\ZREF at xr@line...\ZREF at nil
+ \fi
+ \else
+ \ifx\x\ZREF at xr@newlabel
+ \expandafter
+ \ZREF at xr@process at label\ZREF at xr@line...[]\ZREF at nil
+ \fi
+ \fi
+ \ifx\x\ZREF at xr@@input
+ \edef\ZREF at xr@filelist{%
+ \etex at unexpanded\expandafter{\ZREF at xr@filelist}%
+ {\filename at area\the\toks@}%
+ }%
+ \fi
+}%
+\def\ZREF at xr@process at zreflabel\zref at newlabel#1#2#3\ZREF at nil{%
+ \edef\ZREF at xr@refname{Z at R@\ZREF at xr@prefix#1}%
+ \edef\ZREF at xr@found{\the\numexpr\ZREF at xr@found+1\relax}%
+ \def\x{#2}%
+ \edef\ZREF at xr@tempname{$temp$}%
+ \edef\ZREF at xr@temprefname{Z at R@\ZREF at xr@tempname}%
+ \let\ZREF at xr@list\x
+ \ifx\ZREF at xr@list\ltx at empty
+ \PackageWarningNoLine{zref-xr}{%
+ Label `#1' without properties ignored\MessageBreak
+ in file `\ZREF at xr@file'%
+ }%
+ \edef\ZREF at xr@ignored at empty{%
+ \the\numexpr\ZREF at xr@ignored at empty+1\relax
+ }%
+ \else
+ \expandafter\ZREF at xr@checklist\x\ZREF at nil
+ \expandafter\let\csname\ZREF at xr@temprefname\endcsname\x
+ \expandafter\ltx at LocalAppendToMacro
+ \csname\ZREF at xr@temprefname\expandafter\endcsname
+ \expandafter{%
+ \expandafter\externaldocument\expandafter{%
+ \ZREF at xr@externalfile
+ }%
+ }%
+ \ZREF at xr@urlcheck\ZREF at xr@tempname
+ \ifZREF at xr@tozreflabel
+ \@ifundefined{\ZREF at xr@refname}{%
+ \ifZREF at xr@verbose
+ \PackageInfo{zref-xr}{%
+ Import to zref label `\ZREF at xr@tempname#1'%
+ }%
+ \fi
+ \global\expandafter
+ \let\csname\ZREF at xr@refname\expandafter\endcsname
+ \csname\ZREF at xr@temprefname\endcsname
+ }{%
+ \ZREF at xr@zref at ignorewarning{\ZREF at xr@prefix#1}%
+ }%
+ \fi
+ \ifZREF at xr@toltxlabel
+ \ZREF at xr@tolabel{\ZREF at xr@tempname}{\ZREF at xr@prefix#1}%
+ \fi
+ \fi
+}%
+\def\ZREF at xr@process at label\newlabel#1#2#3[#4]#5\ZREF at nil{%
+ \def\ZREF at xr@refname{Z at R@\ZREF at xr@prefix#1}%
+ \edef\ZREF at xr@found{\the\numexpr\ZREF at xr@found+1\relax}%
+ \def\x{#2}%
+ \edef\ZREF at xr@tempname{$temp$}%
+ \edef\ZREF at xr@temprefname{Z at R@\ZREF at xr@tempname}%
+ \expandafter\ZREF at xr@scanparams
+ \csname\ZREF at xr@temprefname\expandafter\endcsname
+ \x{}{}{}{}{}\ZREF at nil
+ \ifx\\#4\\%
+ \else
+ % ntheorem knows an optional argument at the end of \newlabel
+ \ZREF at NewPropTheotype
+ \expandafter\ltx at LocalAppendToMacro
+ \csname\ZREF at xr@temprefname\endcsname{\theotype{#4}}%
+ \fi
+ \expandafter\ltx at LocalAppendToMacro
+ \csname\ZREF at xr@temprefname\expandafter\endcsname\expandafter{%
+ \expandafter\externaldocument\expandafter{%
+ \ZREF at xr@externalfile
+ }%
+ }%
+ \ZREF at xr@urlcheck\ZREF at xr@tempname
+ \ifZREF at xr@tozreflabel
+ \@ifundefined{\ZREF at xr@refname}{%
+ \ifZREF at xr@verbose
+ \PackageInfo{zref-xr}{%
+ Import to zref label `\ZREF at xr@prefix#1'%
+ }%
+ \fi
+ \global\expandafter
+ \let\csname\ZREF at xr@refname\expandafter\endcsname
+ \csname\ZREF at xr@temprefname\endcsname
+ }{%
+ \ZREF at xr@zref at ignorewarning{\ZREF at xr@prefix#1}%
+ }%
+ \fi
+ \ifZREF at xr@toltxlabel
+ \ZREF at xr@tolabel{\ZREF at xr@tempname}{\ZREF at xr@prefix#1}%
+ \fi
+}
+\def\ZREF at xr@zref at newlabel{\zref at newlabel}%
+\def\ZREF at xr@newlabel{\newlabel}%
+\def\ZREF at xr@@input{\@input}%
+\def\ZREF at xr@relax{\relax}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at xr@tolabel}
+% \begin{macrocode}
+\def\ZREF at xr@tolabel#1#2{%
+ \ifZREF at xr@verbose
+ \PackageInfo{zref-xr}{%
+ Import to LaTeX label `#2'%
+ }%
+ \fi
+ \zref at wrapper@unexpanded{%
+ \expandafter\xdef\csname r@#2\endcsname{%
+ {%
+ \ltx at ifundefined{M at TitleReference}{%
+ \ltx at ifundefined{TR at TitleReference}{%
+ \zref at extractdefault{#1}{default}{}%
+ }{%
+ \noexpand\TR at TitleReference
+ {\zref at extractdefault{#1}{default}{}}%
+ {\zref at extractdefault{#1}{title}{}}%
+ }%
+ }{%
+ \noexpand\M at TitleReference
+ {\zref at extractdefault{#1}{default}{}}%
+ {\zref at extractdefault{#1}{title}{}}%
+ }%
+ }%
+ {\zref at extractdefault{#1}{page}{}}%
+ \ltx at ifpackageloaded{nameref}{%
+ {\zref at extractdefault{#1}{title}{}}%
+ {\zref at extractdefault{#1}{anchor}{}}%
+ \zref at ifrefcontainsprop{#1}{urluse}{%
+ {\zref at extractdefault{#1}{urluse}{}}%
+ }{%
+ {\zref at extractdefault{#1}{url}{}}%
+ }%
+ }{}%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at xr@zref at ignorewarning}
+% \begin{macrocode}
+\def\ZREF at xr@zref at ignorewarning#1{%
+ \PackageWarningNoLine{zref-xr}{%
+ Zref label `#1' is already in use\MessageBreak
+ in file `\ZREF at xr@file'%
+ }%
+ \edef\ZREF at xr@ignored at zref{%
+ \the\numexpr\ZREF at xr@ignored at zref+1%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at xr@ltx at ignorewarning}
+% \begin{macrocode}
+\def\ZREF at xr@ltx at ignorewarning#1{%
+ \PackageWarningNoLine{zref-xr}{%
+ LaTeX label `#1' is already in use\MessageBreak
+ in file `\ZREF at xr@file'%
+ }%
+ \edef\ZREF at xr@ignored at ltx{%
+ \the\numexpr\ZREF at xr@ignored at ltx+1%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at xr@checklist}
+% \begin{macrocode}
+\def\ZREF at xr@checklist#1#2#3\ZREF at nil{%
+ \ifx\@undefined#1\relax
+ \expandafter\ZREF at xr@checkkey\string#1\@nil
+ \fi
+ \ifx\\#3\\%
+ \else
+ \ltx at ReturnAfterFi{%
+ \ZREF at xr@checklist#3\ZREF at nil
+ }%
+ \fi
+}%
+\def\ZREF at xr@checkkey#1#2\@nil{%
+ \zref at ifpropundefined{#2}{%
+ \zref at newprop{#2}{}%
+ }{}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at xr@scanparams}
+% \begin{macrocode}
+\def\ZREF at xr@scanparams#1#2#3#4#5#6#7\ZREF at nil{%
+ \let#1\ltx at empty
+ \ZREF at foundfalse
+ \ZREF at xr@scantitleref#1#2\TR at TitleReference{}{}\ZREF at nil
+ \ifZREF at found
+ \else
+ \ltx at LocalAppendToMacro#1{\default{#2}}%
+ \fi
+ % page
+ \ltx at LocalAppendToMacro#1{\page{#3}}%
+ % nameref title
+ \ifZREF at found
+ \else
+ \ifx\\#4\\%
+ \else
+ \def\ZREF at xr@temp{#4}%
+ \ifx\ZREF at xr@temp\ZREF at xr@relax
+ \else
+ \ltx at LocalAppendToMacro#1{\title{#4}}%
+ \fi
+ \fi
+ \fi
+ % anchor
+ \ifx\\#5\\%
+ \else
+ \ltx at LocalAppendToMacro#1{\anchor{#5}}%
+ \fi
+ \ifx\\#6\\%
+ \else
+ \ifZREF at xr@urluse
+ \ZREF at xr@AddURL{#6}%
+ \expandafter\ltx at LocalAppendToMacro\expandafter#1%
+ \expandafter{%
+ \expandafter\urluse\expandafter{%
+ \csname Z at U@\ZREF at xr@theURL\endcsname
+ }%
+ }%
+ \else
+ \ltx at LocalAppendToMacro#1{\url{#6}}%
+ \fi
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at xr@scantitleref}
+% \begin{macrocode}
+\def\ZREF at xr@scantitleref#1#2\TR at TitleReference#3#4#5\ZREF at nil{%
+ \ifx\\#5\\%
+ \else
+ \ltx at LocalAppendToMacro#1{%
+ \default{#3}%
+ \title{#4}%
+ }%
+ \ZREF at foundtrue
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at xr@urlcheck}%
+% \begin{macrocode}
+\def\ZREF at xr@urlcheck#1{%
+ \zref at ifrefcontainsprop{#1}{anchor}{%
+ \zref at ifrefcontainsprop{#1}{url}{%
+ }{%
+ \expandafter
+ \ltx at LocalAppendToMacro\csname Z at R@#1\expandafter\endcsname
+ \expandafter{%
+ \csname url\ifZREF at xr@urluse use\fi
+ \expandafter\endcsname\expandafter{\ZREF at xr@url}%
+ }%
+ }%
+ }{%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</xr>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{hyperref}}
+%
+% UNFINISHED :-(
+%
+% \begin{macrocode}
+%<*hyperref>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-hyperref}%
+ [2019/11/29 v2.28 Module hyperref for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ZREF at NewPropAnchor
+\zref at addprop\ZREF at mainlist{anchor}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</hyperref>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{savepos}}
+%
+% Module \xmodule{savepos} provides an interface for
+% \pdfTeX's \cmd{\pdfsavepos}, see the manual for
+% \pdfTeX.
+%
+% \subsubsection{Identification}
+%
+% \begin{macrocode}
+%<*savepos>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-savepos}%
+ [2019/11/29 v2.28 Module savepos for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+% LuaTeX compatibility
+% \begin{macrocode}
+\ifx\pdfsavepos\@undefined
+ \let\pdfsavepos \savepos
+ \let\pdflastxpos \lastxpos
+ \let\pdflastypos \lastypos
+\fi
+% \end{macrocode}
+%
+% \subsubsection{Availability}
+%
+% First we check, whether the feature is available.
+% \begin{macrocode}
+\ltx at IfUndefined{pdfsavepos}{%
+ \PackageError\ZREF at name{%
+ \string\pdfsavepos\space is not supported.\MessageBreak
+ It is provided by pdfTeX (1.40) or XeTeX%
+ }\ZREF at UpdatePdfTeX
+ \endinput
+}{}%
+% \end{macrocode}
+% In PDF mode we are done. However support for DVI mode
+% was added later in version 1.40.0. In earlier versions
+% \cs{pdfsavepos} is defined, but its execution raises
+% an error. Note that \hologo{XeTeX} also provides \cs{pdfsavepos}.
+% \begin{macrocode}
+\RequirePackage{ifpdf}
+\ifpdf
+\else
+ \ltx at IfUndefined{pdftexversion}{%
+ }{%
+ \ifnum\pdftexversion<140 %
+ \PackageError\ZREF at name{%
+ \string\pdfsavepos\space is not supported in DVI mode%
+ \MessageBreak
+ of this pdfTeX version%
+ }\ZREF at UpdatePdfTeX
+ \expandafter\expandafter\expandafter\endinput
+ \fi
+ }%
+\fi
+% \end{macrocode}
+%
+% \subsubsection{Setup}
+%
+% \begin{macrocode}
+\zref at newlist{savepos}
+\zref at newprop*{posx}[0]{\the\pdflastxpos}
+\zref at newprop*{posy}[0]{\the\pdflastypos}
+\zref at addprops{savepos}{posx,posy}
+% \end{macrocode}
+%
+% \subsubsection{User macros}
+%
+% \begin{macro}{\zref at savepos}
+% \begin{macrocode}
+\def\zref at savepos{%
+ \if at filesw
+ \pdfsavepos
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at zsavepos}
+% \begin{macrocode}
+\def\ZREF at zsavepos#1#2#3{%
+ \@bsphack
+ \if at filesw
+ \zref at savepos
+ #1{#3}{#2}%
+ \ltx at IfUndefined{TeXXeTstate}{%
+ }{%
+ \ifnum\TeXXeTstate=\ltx at zero
+ \else
+ \zref at savepos
+ \fi
+ }%
+ \fi
+ \@esphack
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zsavepos}
+% The current location is stored in a reference with the
+% given name.
+% \begin{macrocode}
+\ZREF at IfDefinable\zsavepos\def{%
+ {%
+ \ZREF at zsavepos\zref at labelbylist{savepos}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zsaveposx}
+% \begin{macrocode}
+\ZREF at IfDefinable\zsaveposx\def{%
+ {%
+ \ZREF at zsavepos\zref at labelbyprops{posx}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\zsaveposy}
+% \begin{macrocode}
+\ZREF at IfDefinable\zsaveposy\def{%
+ {%
+ \ZREF at zsavepos\zref at labelbyprops{posy}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zposx}
+% \begin{macro}{\zposy}
+% The horizontal and vertical position are available by
+% \cs{zposx} and \cs{zposy}. Do not rely on absolute
+% positions. They differ in DVI and PDF mode of \pdfTeX.
+% Use differences instead. The unit of the position numbers
+% is sp.
+% \begin{macrocode}
+\newcommand*{\zposx}[1]{%
+ \zref at extract{#1}{posx}%
+}%
+\newcommand*{\zposy}[1]{%
+ \zref at extract{#1}{posy}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Typically horizontal and vertical positions are used
+% inside calculations. Therefore the extracting macros
+% should be expandable and babel's patch is not applyable.
+%
+% Also it is in the responsibility of the user to marked
+% used positions by \cs{zrefused}
+% in order to notify \hologo{LaTeX} about undefined references.
+%
+% \begin{macro}{\ZREF at savepos@ok}
+% \begin{macrocode}
+\let\ZREF at savepos@ok=Y
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</savepos>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{abspos}}
+%
+% \subsubsection{Identification}
+%
+% \begin{macrocode}
+%<*abspos>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-abspos}%
+ [2019/11/29 v2.28 Module abspos for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{zref-savepos}[2019/11/29]
+\ifx\ZREF at savepos@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+% \begin{macrocode}
+\RequirePackage{zref-pagelayout}[2019/11/29]
+\zref at addprop{savepos}{abspage}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{ifpdf}[2010/09/13]
+% \end{macrocode}
+%
+% \begin{macro}{\zref at absposx}
+% \begin{macrocode}
+\newcommand*{\zref at absposx}[3]{%
+ \number
+ \expandafter\zref at absposnumx\expandafter{%
+ \number\zref at extractdefault{#1}{abspage}{0}%
+ }{#2}{#3}%
+ \ltx at space
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at absposy}
+% \begin{macrocode}
+\newcommand*{\zref at absposy}[3]{%
+ \number
+ \expandafter\zref at absposnumy\expandafter{%
+ \number\zref at extractdefault{#1}{abspage}{0}%
+ }{#2}{#3}%
+ \ltx at space
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at absposnumx}
+% \begin{macrocode}
+\newcommand*{\zref at absposnumx}[3]{%
+ \number
+% \ifnum#1>\ltx at zero
+% \zref at ifrefundefined{thepage#1}{%
+% 0%
+% }{%
+ \numexpr\ZREF at absposnum{thepage#1}{#2}{x}{#3}\relax
+% }%
+% \else
+% 0%
+% \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at absposnumy}
+% \begin{macrocode}
+\newcommand*{\zref at absposnumy}[3]{%
+ \number
+% \ifnum#1>\ltx at zero
+% \zref at ifrefundefined{thepage#1}{%
+% 0%
+% }{%
+ \numexpr\ZREF at absposnum{thepage#1}{#2}{y}{#3}\relax
+% }%
+% \else
+% 0%
+% \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at absposnum}
+% \begin{macrocode}
+\def\ZREF at absposnum#1#2#3#4{%
+ \ltx at ifundefined{ZREF at abspos@#2@#3@#4}{%
+ 0%
+ }{%
+ \csname ZREF at abspos@#2@#3@#4\endcsname{#1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at def@absposx}
+% \begin{macrocode}
+\ZREF at Robust\def\zref at def@absposx#1{%
+ \zref at wrapper@babel{\ZREF at def@abspos{#1}\zref at absposx}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at def@absposy}
+% \begin{macrocode}
+\ZREF at Robust\def\zref at def@absposy#1{%
+ \zref at wrapper@babel{\ZREF at def@abspos{#1}\zref at absposy}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at def@absposnumx}
+% \begin{macrocode}
+\ZREF at Robust\def\zref at def@absposnumx#1{%
+ \zref at wrapper@babel{\ZREF at def@abspos{#1}\zref at absposnumx}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at def@absposnumy}
+% \begin{macrocode}
+\ZREF at Robust\def\zref at def@absposnumy#1{%
+ \zref at wrapper@babel{\ZREF at def@abspos{#1}\zref at absposnumy}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at def@abspos}
+% \begin{macrocode}
+\def\ZREF at def@absposnumy#1#2#3#4#5{%
+ \edef#1{#2{#3}{#4}{#5}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at absposused}
+% \begin{macrocode}
+\ZREF at Robust\def\zref at absposused{%
+ \zref at wrapper@babel\ZREF at abspos@used
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@used}
+% \begin{macrocode}
+\def\ZREF at abspos@used#1{%
+ \zref at refused{#1}%
+ \zref at ifrefundefined{#1}{%
+ }{%
+ \begingroup
+ \edef\ZREF at temp{%
+ \zref at extractdefault{#1}{abspage}{0}%
+ }%
+ \ifnum\ZREF at temp>\ltx at zero
+ \zref at refused{thepage\ZREF at temp}%
+ \else
+ \@PackageError{zref-abspos}{%
+ \string\zref at pos@label at used\ltx at space
+ needs property `abspage'\MessageBreak
+ in label `#1'%
+ }\@ehc
+ \fi
+ \endgroup
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at absposnumused}
+% \begin{macrocode}
+\newcommand*{\zref at absposnumused}[1]{%
+ \ifnum#1>\ltx at zero
+ \zref at refused{thepage\number#1}%
+ \else
+ \@PackageError{zref-abspos}{%
+ Invalid absolute page number (#1)\MessageBreak
+ for \string\zref at pos@num at used.\MessageBreak
+ A positive integer is expected%
+ }\@ehc
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at ifabsposundefined}
+% \begin{macrocode}
+\def\zref at ifabsposundefined#1{%
+ \zref at ifrefundefined{#1}\ltx at firsttwo{%
+ \expandafter\zref at ifabsposnumundefined\expandafter{%
+ \number\zref at extractdefault{#1}{abspage}{0}%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zref at ifabsposnumundefined}
+% \begin{macrocode}
+\def\zref at ifabsposnumundefined#1{%
+ \ifnum\ZREF at number{#1}>\ltx at zero
+ \zref at ifrefundefined{thepage#1}%
+ \ltx at firstoftwo\ltx at secondoftwo
+ \else
+ \expandafter\ltx at firstoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Media}
+%
+% \begin{macro}{\ZREF at abspos@media at width}
+% \begin{macrocode}
+\edef\ZREF at abspos@media at width{%
+ \ltx at ifundefined{pdfpagewidth}{%
+ \ltx at ifundefined{mediawidth}{%
+ \ltx at ifundefined{stockwidth}{%
+ paperwidth%
+ }{%
+ stockwidth%
+ }%
+ }{%
+ mediawidth%
+ }%
+ }{%
+ pdfpagewidth%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@media at height}
+% \begin{macrocode}
+\edef\ZREF at abspos@media at height{%
+ \ltx at ifundefined{pdfpageheight}{%
+ \ltx at ifundefined{mediaheight}{%
+ \ltx at ifundefined{stockheight}{%
+ paperheight%
+ }{%
+ stockheight%
+ }%
+ }{%
+ mediaheight%
+ }%
+ }{%
+ \noexpand\ifcase\pdfpageheight
+ \ltx at ifundefined{stockheight}{%
+ paperheight%
+ }{%
+ stockheight%
+ }%
+ \noexpand\else
+ pdfpageheight%
+ \noexpand\fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at abspos@media at x@left}
+% \begin{macrocode}
+\def\ZREF at abspos@media at x@left#1{%
+ 0%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@media at x@right}
+% \begin{macrocode}
+\def\ZREF at abspos@media at x@right#1{%
+ \zref at extract{#1}\ZREF at abspos@media at width
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@media at x@center}
+% \begin{macrocode}
+\def\ZREF at abspos@media at x@center#1{%
+ \ZREF at abspos@media at x@left{#1}%
+ +\zref at extract{#1}\ZREF at abspos@media at width/2%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at abspos@media at y@top}
+% \begin{macrocode}
+\def\ZREF at abspos@media at y@top#1{%
+ \zref at extract{#1}\ZREF at abspos@media at height
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@media at y@bottom}
+% \begin{macrocode}
+\def\ZREF at abspos@media at y@bottom#1{%
+ 0%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@media at y@center}
+% \begin{macrocode}
+\def\ZREF at abspos@media at y@center#1{%
+ \zref at extract{#1}\ZREF at abspos@media at height/2%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Paper}
+%
+% \begin{macro}{\ZREF at abspos@paper at x@left}
+% \begin{macrocode}
+\def\ZREF at abspos@paper at x@left#1{%
+ 0%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@paper at x@right}
+% \begin{macrocode}
+\def\ZREF at abspos@paper at x@right#1{%
+ \zref at extract{#1}{paperwidth}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@paper at x@center}
+% \begin{macrocode}
+\def\ZREF at abspos@paper at x@center#1{%
+ \zref at extract{#1}{paperwidth}/2%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at abspos@paper at y@top}
+% \begin{macrocode}
+\let\ZREF at abspos@paper at y@top\ZREF at abspos@media at y@top
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@paper at y@bottom}
+% \begin{macrocode}
+\def\ZREF at abspos@paper at y@bottom#1{%
+ \ZREF at abspos@paper at y@top{#1}%
+ -\zref at extract{#1}{paperheight}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@paper at y@center}
+% \begin{macrocode}
+\def\ZREF at abspos@paper at y@center#1{%
+ \ZREF at abspos@paper at y@top{#1}%
+ -\zref at extract{#1}{paperheight}/2%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Origin}
+%
+% \begin{macro}{\ZREF at abspos@origin at x}
+% \begin{macrocode}
+\let\ZREF at temp\ltx at two
+\ltx at IfUndefined{pdfhorigin}{}{%
+ \ifpdf
+ \let\ZREF at temp\ltx at zero
+ \fi
+}
+\ifx\ZREF at temp\ltx at two
+ \ifnum\mag=1000 %
+ \let\ZREF at temp\ltx at one
+ \fi
+\fi
+\ifcase\ZREF at temp
+ \def\ZREF at abspos@origin at x#1{%
+ \zref at extract{#1}{pdfhorigin}%
+ }%
+\or
+ \def\ZREF at abspos@origin at x#1{%
+ 4736286%
+ }%
+\or
+ \def\ZREF at abspos@origin at x#1{%
+ \numexpr\mag/1000*\dimexpr 1truein\relax\relax
+ }%
+\fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@origin at y}
+% \begin{macrocode}
+\let\ZREF at temp\ltx at two
+\ltx at IfUndefined{pdfvorigin}{}{%
+ \ifpdf
+ \let\ZREF at temp\ltx at zero
+ \fi
+}
+\ifx\ZREF at temp\ltx at two
+ \ifnum\mag=1000 %
+ \let\ZREF at temp\ltx at one
+ \fi
+\fi
+\ifcase\ZREF at temp
+ \def\ZREF at abspos@origin at y#1{%
+ \zref at extract{#1}{pdfvorigin}%
+ }%
+\or
+ \def\ZREF at abspos@origin at y#1{%
+ 4736286%
+ }%
+\or
+ \def\ZREF at abspos@origin at y#1{%
+ \numexpr\mag/1000*\dimexpr 1truein\relax\relax
+ }%
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Header}
+%
+% \begin{macro}{\ZREF at abspos@head at x@left}
+% \begin{macrocode}
+\def\ZREF at abspos@head at x@left#1{%
+ \ZREF at abspos@paper at x@left{#1}%
+ +\ZREF at abspos@origin at x{#1}%
+ +\zref at extract{#1}{hoffset}%
+ +\ifodd\zref at extractdefault{#1}{pagevalue}{\number\c at page} %
+ \zref at extract{#1}{oddsidemargin}%
+ \else
+ \zref at extract{#1}{evensidemargin}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@head at x@right}
+% \begin{macrocode}
+\def\ZREF at abspos@head at x@right#1{%
+ \ZREF at abspos@head at x@left{#1}%
+ +\zref at extract{#1}{textwidth}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@head at x@center}
+% \begin{macrocode}
+\def\ZREF at abspos@head at x@center#1{%
+ \ZREF at abspos@head at x@left{#1}%
+ +\zref at extract{#1}{textwidth}/2%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at abspos@head at y@top}
+% \begin{macrocode}
+\def\ZREF at abspos@head at y@top#1{%
+ \ZREF at abspos@paper at y@top{#1}%
+ -\ZREF at abspos@origin at y{#1}%
+ -\zref at extract{#1}{voffset}%
+ -\zref at extract{#1}{topmargin}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@head at y@bottom}
+% \begin{macrocode}
+\def\ZREF at abspos@head at y@bottom#1{%
+ \ZREF at abspos@head at y@top{#1}%
+ -\zref at extract{#1}{headheight}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@head at y@center}
+% \begin{macrocode}
+\def\ZREF at abspos@head at y@center#1{%
+ \ZREF at abspos@head at y@top{#1}%
+ -\zref at extract{#1}{headheight}/2%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Body}
+%
+% \begin{macro}{\ZREF at abspos@body at x@left}
+% \begin{macrocode}
+\let\ZREF at abspos@body at x@left\ZREF at abspos@head at x@left
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@body at x@right}
+% \begin{macrocode}
+\let\ZREF at abspos@body at x@right\ZREF at abspos@head at x@right
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@body at x@center}
+% \begin{macrocode}
+\let\ZREF at abspos@body at x@center\ZREF at abspos@head at x@center
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at abspos@body at y@top}
+% \begin{macrocode}
+\def\ZREF at abspos@body at y@top#1{%
+ \ZREF at abspos@head at y@bottom{#1}%
+ -\zref at extract{#1}{headsep}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@body at y@bottom}
+% \begin{macrocode}
+\def\ZREF at abspos@body at y@bottom#1{%
+ \ZREF at abspos@body at y@top{#1}%
+ -\zref at extract{#1}{textheight}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@body at y@center}
+% \begin{macrocode}
+\def\ZREF at abspos@body at y@center#1{%
+ \ZREF at abspos@body at y@top{#1}%
+ -\zref at extract{#1}{textheight}/2%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Footer}
+%
+% \begin{macro}{\ZREF at abspos@foot at x@left}
+% \begin{macrocode}
+\let\ZREF at abspos@foot at x@left\ZREF at abspos@head at x@left
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@foot at x@right}
+% \begin{macrocode}
+\let\ZREF at abspos@foot at x@right\ZREF at abspos@head at x@right
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@foot at x@center}
+% \begin{macrocode}
+\let\ZREF at abspos@foot at x@center\ZREF at abspos@head at x@center
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at abspos@foot at y@bottom}
+% \begin{macrocode}
+\def\ZREF at abspos@foot at y@bottom#1{%
+ \ZREF at abspos@body at y@bottom{#1}%
+ -\zref at extract{#1}{footskip}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Marginal notes}
+%
+% \begin{macro}{\ZREF at abspos@marginpar at x@left}
+% \begin{macrocode}
+\def\ZREF at abspos@marginpar at x@left#1{%
+ \ifodd\zref at extractdefault{#1}{pagevalue}{\number\c at page} %
+ \ZREF at abspos@body at x@right{#1}%
+ +\zref at extract{#1}{marginparsep}%
+ \else
+ \ZREF at abspos@body at x@left{#1}%
+ -\zref at extract{#1}{marginparsep}%
+ -\zref at extract{#1}{marginparwidth}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@marginpar at x@right}
+% \begin{macrocode}
+\def\ZREF at abspos@marginpar at x@right#1{%
+ \ZREF at abspos@marginpar at x@left{#1}%
+ +\zref at extract{#1}{marginparwidth}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@marginpar at x@center}
+% \begin{macrocode}
+\def\ZREF at abspos@marginpar at x@center#1{%
+ \ZREF at abspos@marginpar at x@left{#1}%
+ +\zref at extract{#1}{marginparwidth}/2%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at abspos@marginpar at y@top}
+% \begin{macrocode}
+\let\ZREF at abspos@marginpar at y@top\ZREF at abspos@body at y@top
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@marginpar at y@bottom}
+% \begin{macrocode}
+\let\ZREF at abspos@marginpar at y@bottom\ZREF at abspos@body at y@bottom
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@marginpar at y@center}
+% \begin{macrocode}
+\let\ZREF at abspos@marginpar at y@center\ZREF at abspos@body at y@center
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Stock paper}
+%
+% \begin{macro}{\ZREF at abspos@stock at x@left}
+% \begin{macrocode}
+\let\ZREF at abspos@stock at x@left\ZREF at abspos@paper at x@left
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@stock at x@right}
+% \begin{macrocode}
+\let\ZREF at abspos@stock at x@right\ZREF at abspos@paper at x@right
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@stock at x@center}
+% \begin{macrocode}
+\let\ZREF at abspos@stock at x@center\ZREF at abspos@paper at x@center
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ZREF at abspos@stock at y@top}
+% \begin{macrocode}
+\let\ZREF at abspos@stock at y@top\ZREF at abspos@paper at y@top
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@stock at y@bottom}
+% \begin{macrocode}
+\let\ZREF at abspos@stock at y@bottom\ZREF at abspos@paper at y@bottom
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at abspos@stock at y@center}
+% \begin{macrocode}
+\let\ZREF at abspos@stock at y@center\ZREF at abspos@paper at y@center
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</abspos>
+% \end{macrocode}
+%
+%
+% \subsection{Module \xmodule{dotfill}}
+%
+% \begin{macrocode}
+%<*dotfill>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-dotfill}%
+ [2019/11/29 v2.28 Module dotfill for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% For measuring the width of \cs{zdotfill} we use the features
+% provided by module \xmodule{savepos}.
+% \begin{macrocode}
+\RequirePackage{zref-savepos}[2019/11/29]
+% \end{macrocode}
+% For automatically generated label names we use the unique
+% counter of module \xmodule{base}.
+% \begin{macrocode}
+\zref at require@unique
+% \end{macrocode}
+% Configuration is done by the key value interface of package
+% \xpackage{keyval}.
+% \begin{macrocode}
+\RequirePackage{keyval}
+% \end{macrocode}
+% The definitions of the keys follow.
+% \begin{macrocode}
+\define at key{ZREF at DF}{unit}{%
+ \def\ZREF at df@unit{#1}%
+}
+\define at key{ZREF at DF}{min}{%
+ \def\ZREF at df@min{#1}%
+}
+\define at key{ZREF at DF}{dot}{%
+ \def\ZREF at df@dot{#1}%
+}
+% \end{macrocode}
+% Defaults are set, see user interface.
+% \begin{macrocode}
+\providecommand\ZREF at df@min{2}
+\providecommand\ZREF at df@unit{.44em}
+\providecommand\ZREF at df@dot{.}
+% \end{macrocode}
+% \begin{macro}{\zdotfillsetup}
+% Configuration of \cs{zdotfill} is done by \cs{zdotfillsetup}.
+% \begin{macrocode}
+\newcommand*{\zdotfillsetup}{\kvsetkeys{ZREF at DF}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\zdotfill}
+% \cs{zdotfill} sets labels at the left and the right to get
+% the horizontal position. \cs{zsavepos} is not used, because
+% we do not need the vertical position.
+% \begin{macrocode}
+\ZREF at IfDefinable\zdotfill\def{%
+ {%
+ \leavevmode
+ \global\advance\c at zref@unique\ltx at one
+ \begingroup
+ \def\ZREF at temp{zref@\number\c at zref@unique}%
+ \pdfsavepos
+ \zref at labelbyprops{\thezref at unique L}{posx}%
+ \setlength{\dimen@}{\ZREF at df@unit}%
+ \zref at ifrefundefined{\thezref at unique R}{%
+ \ZREF at dotfill
+ }{%
+ \ifnum\numexpr\zposx{\thezref at unique R}%
+ -\zposx{\thezref at unique L}\relax
+ <\dimexpr\ZREF at df@min\dimen@\relax
+ \hfill
+ \else
+ \ZREF at dotfill
+ \fi
+ }%
+ \pdfsavepos
+ \zref at labelbyprops{\thezref at unique R}{posx}%
+ \endgroup
+ \kern\z@
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at dotfill}
+% Help macro that actually sets the dots.
+% \begin{macrocode}
+\def\ZREF at dotfill{%
+ \cleaders\hb at xt@\dimen@{\hss\ZREF at df@dot\hss}\hfill
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</dotfill>
+% \end{macrocode}
+%
+% \subsection{Module \xmodule{env}}
+%
+% \begin{macrocode}
+%<*env>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-env}%
+ [2019/11/29 v2.28 Module env for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\zref at newprop{envname}[]{\@currenvir}
+\zref at newprop{envline}[]{\zref at env@line}
+% \end{macrocode}
+%
+% \begin{macro}{\zref at env@line}
+% Macro \cs{zref at env@line} extracts the line number
+% from \cs{@currenvline}.
+% \begin{macrocode}
+\def\zref at env@line{%
+ \ifx\@currenvline\ltx at empty
+ \else
+ \expandafter
+ \ZREF at ENV@line\@currenvline\ltx at empty line \ltx at empty\@nil
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ZREF at ENV@line}
+% \begin{macrocode}
+\def\ZREF at ENV@line#1line #2\ltx at empty#3\@nil{#2}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</env>
+% \end{macrocode}
+%
+%
+% \section{Test}
+%
+% \subsection{\cs{zref at localaddprop}}
+%
+% \begin{macrocode}
+%<*test1>
+\NeedsTeXFormat{LaTeX2e}
+\nofiles
+\documentclass{article}
+\usepackage{zref-base}[2019/11/29]
+\usepackage{qstest}
+\IncludeTests{*}
+\LogTests{log}{*}{*}
+
+\makeatletter
+\def\ExpectList#1#2{%
+ \expandafter\expandafter\expandafter\Expect
+ \expandafter\expandafter\expandafter{\csname Z at L@#1\endcsname}{#2}%
+}
+\begin{qstest}{localaddprop}{localaddprop}
+ \ExpectList{main}{\default\page}%
+ \Expect{undefined}*{\meaning\foobar}%
+ \zref at newprop{foobar}{FOO}%
+ \Expect{undefined}*{\meaning\foobar}%
+ \zref at newlist{alist}%
+ \ExpectList{alist}{}%
+ \begingroup
+ \zref at localaddprop{main}{foobar}%
+ \Expect{undefined}*{\meaning\foobar}%
+ \ExpectList{main}{\default\page\foobar}%
+ \zref at localaddprop{alist}{page}%
+ \ExpectList{alist}{\page}%
+ \endgroup
+ \ExpectList{main}{\default\page}%
+ \ExpectList{alist}{}%
+ \zref at addprop{alist}{foobar}%
+ \ExpectList{alist}{\foobar}%
+ \Expect{undefined}*{\meaning\foobar}%
+\end{qstest}
+\@@end
+%</test1>
+% \end{macrocode}
+%
+% \subsection{Module \xmodule{base}}
+%
+% \begin{macrocode}
+%<*test-base>
+\NeedsTeXFormat{LaTeX2e}
+\documentclass{article}
+\usepackage{zref-base,zref-titleref}[2019/11/29]
+\usepackage{qstest}
+\IncludeTests{*}
+\LogTests{log}{*}{*}
+
+\makeatletter
+\newcommand*{\DefExpand}[2]{%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter#1%
+ \expandafter\expandafter\expandafter{#2}%
+ \@onelevel at sanitize#1%
+}
+\newcommand*{\Test}[3]{%
+ \Expect{#2}*{#1}%
+ \zref at wrapper@unexpanded{%
+ \Expect*{#3}*{#1}%
+ }%
+ \DefExpand\x{#1}%
+ \Expect*{#3}*{\x}%
+}
+\makeatother
+
+\begin{document}
+\section{\textit{Hello} \textbf{World}}
+\label{sec:hello}
+\makeatletter
+\zref at newprop{foo}[\@empty D\@empty efault]{\@empty V\@empty alue}
+\begin{qstest}{getcurrent}{getcurrent}
+ \Test{\zref at getcurrent{foo}}%
+ {Value}{\noexpand\@empty V\noexpand\@empty alue}%
+ \Test{\zref at getcurrent{xy}}{}{}%
+\end{qstest}
+\begin{qstest}{extract}{extract}
+ \def\textbf#1{<#1>}%
+ \def\textit#1{[#1]}% hash-ok
+ \Test{\zref at extractdefault{xy}{page}{\@empty D\@empty efault}}%
+ {Default}{\noexpand\@empty D\noexpand\@empty efault}%
+ \Test{\zref at extractdefault{sec:hello}{foo}{\@empty A\@empty B}}%
+ {AB}{\noexpand\@empty A\noexpand\@empty B}%
+ \Test{\zref at extract{sec:hello}{foo}}%
+ {Default}{\noexpand\@empty D\noexpand\@empty efault}%
+ \zref at ifrefundefined{sec:hello}{%
+ }{%
+ \Test{\zref at extract{sec:hello}{default}}{1}{1}%
+ \Test{\zref at extract{sec:hello}{title}}%
+ {[Hello] <World>}%
+ {\noexpand\textit{Hello} \noexpand\textbf{World}}%
+ }%
+\end{qstest}
+\end{document}
+%</test-base>
+% \end{macrocode}
+%
+% \subsection{Module \xmodule{runs}}
+%
+% \begin{macrocode}
+%<*test-runs>
+\NeedsTeXFormat{LaTeX2e}
+\documentclass{article}
+\usepackage{zref-runs}[2019/11/29]
+\usepackage{qstest}
+\IncludeTests{*}
+\LogTests{log}{*}{*}
+
+\begin{qstest}{zruns-preamble}{zruns-preamble}
+ \Expect{0}*{\zruns}%
+\end{qstest}
+
+\AtBeginDocument{%
+ \begin{qstest}{zruns-atbegindocument}{zruns-atbegindocument}%
+ \Expect*{\number\ExpectRuns}*{\zruns}%
+ \end{qstest}%
+}
+
+\begin{document}
+\begin{qstest}{zruns-document}{zruns-document}
+ \Expect*{\number\ExpectRuns}*{\zruns}%
+\end{qstest}
+\end{document}
+%</test-runs>
+% \end{macrocode}
+%
+% \subsection{Module \xmodule{titleref}}
+%
+% \begin{macrocode}
+%<*test-titleref-memoir>
+\NeedsTeXFormat{LaTeX2e}
+\documentclass{memoir}
+\usepackage{zref-titleref}[2019/11/29]
+\usepackage{qstest}
+\IncludeTests{*}
+\LogTests{log}{*}{*}
+\begin{document}
+\makeatletter
+\def\List{}
+\def\Label#1{%
+ \zref at label{#1}%
+ \g at addto@macro\List{%
+ \par
+ #1: [\ztitleref{#1}]%
+ }%
+ \mbox{}%
+ \zref at refused{#1}%
+ \zref at ifrefundefined{#1}{%
+ }{%
+ \begingroup
+ \edef\x{\zref at extract{#1}{title}}%
+ \Expect{OK/}*{\expandafter\ltx at carthree\x{}{}{}\@nil}%
+ \endgroup
+ }%
+}
+\def\Test#1{%
+ \csname#1\endcsname*{OK/#1}%
+ \Label{#1*}%
+ \csname#1\endcsname{OK/#1}%
+ \Label{#1}%
+ \csname#1\endcsname[OK/#1-toc]%
+ {WRONG-in-titleref/#1-toc-2}%
+ \Label{#1-toc}%
+ \expandafter\ifx\csname#1\endcsname\part
+ \else
+ \headnamereffalse
+ \csname#1\endcsname[OK/#1-th-toc]%
+ [WRONG-in-titleref/#1-th-toc-2]%
+ {WRONG-in-titleref/#1-th-toc-3}%
+ \Label{#1-th-toc}%
+ \headnamereftrue
+ \csname#1\endcsname[WRONG-in-titleref/#1-th-head-1]%
+ [OK/#1-th-head]%
+ {WRONG-in-titleref/#1-th-head-3}%
+ \Label{#1-th-head}%
+ \fi
+}
+\begin{qstest}{section}{section}
+ \@for\x:=part,chapter,section,subsection,subsubsection\do{%
+ \expandafter\Test\expandafter{\x}%
+ }%
+\end{qstest}
+\newpage
+\List
+\end{document}
+%</test-titleref-memoir>
+% \end{macrocode}
+%
+% \section{Installation}
+%
+% \subsection{Download}
+%
+% \paragraph{Package.} This package is available on
+% CTAN\footnote{\CTANpkg{zref}}:
+% \begin{description}
+% \item[\CTAN{macros/latex/contrib/zref/zref.dtx}] The source file.
+% \item[\CTAN{macros/latex/contrib/zref/zref.pdf}] Documentation.
+% \end{description}
+%
+%
+% \paragraph{Bundle.} All the packages of the bundle `zref'
+% are also available in a TDS compliant ZIP archive. There
+% the packages are already unpacked and the documentation files
+% are generated. The files and directories obey the TDS standard.
+% \begin{description}
+% \item[\CTANinstall{install/macros/latex/contrib/zref.tds.zip}]
+% \end{description}
+% \emph{TDS} refers to the standard ``A Directory Structure
+% for \TeX\ Files'' (\CTANpkg{tds}). Directories
+% with \xfile{texmf} in their name are usually organized this way.
+%
+% \subsection{Bundle installation}
+%
+% \paragraph{Unpacking.} Unpack the \xfile{zref.tds.zip} in the
+% TDS tree (also known as \xfile{texmf} tree) of your choice.
+% Example (linux):
+% \begin{quote}
+% |unzip zref.tds.zip -d ~/texmf|
+% \end{quote}
+%
+%
+% \subsection{Package installation}
+%
+% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting
+% \docstrip\ archive. The files are extracted by running the
+% \xfile{.dtx} through \plainTeX:
+% \begin{quote}
+% \verb|tex zref.dtx|
+% \end{quote}
+%
+% \paragraph{TDS.} Now the different files must be moved into
+% the different directories in your installation TDS tree
+% (also known as \xfile{texmf} tree):
+% \begin{quote}
+% \def\t{^^A
+% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}}
+% zref.sty & tex/latex/zref/zref.sty\\
+% zref-base.sty & tex/latex/zref/zref-base.sty\\
+% zref-abspage.sty & tex/latex/zref/zref-abspage.sty\\
+% zref-abspos.sty & tex/latex/zref/zref-abspos.sty\\
+% zref-counter.sty & tex/latex/zref/zref-counter.sty\\
+% zref-dotfill.sty & tex/latex/zref/zref-dotfill.sty\\
+% zref-env.sty & tex/latex/zref/zref-env.sty\\
+% zref-hyperref.sty & tex/latex/zref/zref-hyperref.sty\\
+% zref-lastpage.sty & tex/latex/zref/zref-lastpage.sty\\
+% zref-marks.sty & tex/latex/zref/zref-marks.sty\\
+% zref-nextpage.sty & tex/latex/zref/zref-nextpage.sty\\
+% zref-pageattr.sty & tex/latex/zref/zref-pageattr.sty\\
+% zref-pagelayout.sty & tex/latex/zref/zref-pagelayout.sty\\
+% zref-perpage.sty & tex/latex/zref/zref-perpage.sty\\
+% zref-runs.sty & tex/latex/zref/zref-runs.sty\\
+% zref-savepos.sty & tex/latex/zref/zref-savepos.sty\\
+% zref-thepage.sty & tex/latex/zref/zref-thepage.sty\\
+% zref-titleref.sty & tex/latex/zref/zref-titleref.sty\\
+% zref-totpages.sty & tex/latex/zref/zref-totpages.sty\\
+% zref-user.sty & tex/latex/zref/zref-user.sty\\
+% zref-xr.sty & tex/latex/zref/zref-xr.sty\\
+% zref.pdf & doc/latex/zref/zref.pdf\\
+% zref-example.tex & doc/latex/zref/zref-example.tex\\
+% zref-example-lastpage.tex & doc/latex/zref/zref-example-lastpage.tex\\
+% zref-example-nextpage.tex & doc/latex/zref/zref-example-nextpage.tex\\
+% test/zref-test1.tex & doc/latex/zref/test/zref-test1.tex\\
+% test/zref-test-base.tex & doc/latex/zref/test/zref-test-base.tex\\
+% test/zref-test-runs.tex & doc/latex/zref/test/zref-test-runs.tex\\
+% test/zref-test-titleref-memoir.tex & doc/latex/zref/test/zref-test-titleref-memoir.tex\\
+% zref.dtx & source/latex/zref/zref.dtx\\
+% \end{tabular}^^A
+% }^^A
+% \sbox0{\t}^^A
+% \ifdim\wd0>\linewidth
+% \begingroup
+% \advance\linewidth by\leftmargin
+% \advance\linewidth by\rightmargin
+% \edef\x{\endgroup
+% \def\noexpand\lw{\the\linewidth}^^A
+% }\x
+% \def\lwbox{^^A
+% \leavevmode
+% \hbox to \linewidth{^^A
+% \kern-\leftmargin\relax
+% \hss
+% \usebox0
+% \hss
+% \kern-\rightmargin\relax
+% }^^A
+% }^^A
+% \ifdim\wd0>\lw
+% \sbox0{\small\t}^^A
+% \ifdim\wd0>\linewidth
+% \ifdim\wd0>\lw
+% \sbox0{\footnotesize\t}^^A
+% \ifdim\wd0>\linewidth
+% \ifdim\wd0>\lw
+% \sbox0{\scriptsize\t}^^A
+% \ifdim\wd0>\linewidth
+% \ifdim\wd0>\lw
+% \sbox0{\tiny\t}^^A
+% \ifdim\wd0>\linewidth
+% \lwbox
+% \else
+% \usebox0
+% \fi
+% \else
+% \lwbox
+% \fi
+% \else
+% \usebox0
+% \fi
+% \else
+% \lwbox
+% \fi
+% \else
+% \usebox0
+% \fi
+% \else
+% \lwbox
+% \fi
+% \else
+% \usebox0
+% \fi
+% \else
+% \lwbox
+% \fi
+% \else
+% \usebox0
+% \fi
+% \end{quote}
+% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's
+% TDS installing feature, then some files can already be in the right
+% place, see the documentation of \docstrip.
+%
+% \subsection{Refresh file name databases}
+%
+% If your \TeX~distribution
+% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh
+% these. For example, \TeX\,Live\ users run \verb|texhash| or
+% \verb|mktexlsr|.
+%
+% \subsection{Some details for the interested}
+%
+% \paragraph{Unpacking with \LaTeX.}
+% The \xfile{.dtx} chooses its action depending on the format:
+% \begin{description}
+% \item[\plainTeX:] Run \docstrip\ and extract the files.
+% \item[\LaTeX:] Generate the documentation.
+% \end{description}
+% If you insist on using \LaTeX\ for \docstrip\ (really,
+% \docstrip\ does not need \LaTeX), then inform the autodetect routine
+% about your intention:
+% \begin{quote}
+% \verb|latex \let\install=y\input{zref.dtx}|
+% \end{quote}
+% Do not forget to quote the argument according to the demands
+% of your shell.
+%
+% \paragraph{Generating the documentation.}
+% You can use both the \xfile{.dtx} or the \xfile{.drv} to generate
+% the documentation. The process can be configured by the
+% configuration file \xfile{ltxdoc.cfg}. For instance, put this
+% line into this file, if you want to have A4 as paper format:
+% \begin{quote}
+% \verb|\PassOptionsToClass{a4paper}{article}|
+% \end{quote}
+% An example follows how to generate the
+% documentation with pdf\LaTeX:
+% \begin{quote}
+%\begin{verbatim}
+%pdflatex zref.dtx
+%makeindex -s gind.ist zref.idx
+%pdflatex zref.dtx
+%makeindex -s gind.ist zref.idx
+%pdflatex zref.dtx
+%\end{verbatim}
+% \end{quote}
+%
+% \begin{thebibliography}{99}
+% \bibpackage{footmisc}{Robin Fairbairns}{2004/01/23 v5.3a}
+% {\CTANpkg{footmisc}}
+% \bibpackage{hyperref}{Sebastian Rahtz, Heiko Oberdiek}{2006/08/16 v6.75c}
+% {\CTANpkg{hyperref}}
+% \bibpackage{lastpage}{Jeff Goldberg}{1994/06/25 v0.1b}
+% {\CTANpkg{lastpage}}
+% \bibpackage{nameref}{Sebastian Rahtz, Heiko Oberdiek}{2006/02/12 v2.24}
+% {\CTANpkg{nameref}}
+% \bibpackage{perpage}{David Kastrup}{2002/12/20 v1.0}
+% {\CTANpkg{perpage}}
+% \bibpackage{titleref}{Donald Arsenau}{2001/04/05 v3.1}
+% {\CTANpkg{titleref}}
+% \bibpackage{totpages}{Wilhelm M\"uller}{1999/07/14 v1.00}
+% {\CTANpkg{totpages}}
+% \bibpackage{xr}{David Carlisle}{1994/05/28 v5.02}
+% {\CTANpkg{xr}}
+% \bibpackage{xr-hyper}{David Carlisle}{2000/03/22 v6.00beta4}
+% {\CTANpkg{xr-hyper}}
+% \end{thebibliography}
+%
+% \begin{History}
+% \begin{Version}{2006/02/20 v1.0}
+% \item
+% First version.
+% \end{Version}
+% \begin{Version}{2006/05/03 v1.1}
+% \item
+% Module \xmodule{perpage} added.
+% \item
+% Module redesign as packages.
+% \end{Version}
+% \begin{Version}{2006/05/25 v1.2}
+% \item
+% Module \xmodule{dotfillmin} added.
+% \item
+% Module \xmodule{base}: macros \cs{zref at require@uniqe}
+% and \cs{thezref at unique} added
+% (used by modules \xmodule{titleref} and \xmodule{dotfillmin}).
+% \end{Version}
+% \begin{Version}{2006/09/08 v1.3}
+% \item
+% Typo fixes and English cleanup by Per Starback.
+% \end{Version}
+% \begin{Version}{2007/01/23 v1.4}
+% \item
+% Typo in macro name fixed in documentation.
+% \end{Version}
+% \begin{Version}{2007/02/18 v1.5}
+% \item
+% \cs{zref at getcurrent} added (suggestion of Igor Akkerman).
+% \item
+% Module \xmodule{savepos} also supports \hologo{XeTeX}.
+% \end{Version}
+% \begin{Version}{2007/04/06 v1.6}
+% \item
+% Fix in modules \xmodule{abspage} and \xmodule{base}:
+% Now counter |abspage| and |zref at unique|
+% are not remembered by \cs{include}.
+% \item
+% Beamer support for module \xmodule{titleref}.
+% \end{Version}
+% \begin{Version}{2007/04/17 v1.7}
+% \item
+% Package \xpackage{atbegshi} replaces \xpackage{everyshi}.
+% \end{Version}
+% \begin{Version}{2007/04/22 v1.8}
+% \item
+% \cs{zref at wrapper@babel} and \cs{zref at refused} are now expandable
+% if babel is not used or \cs{if at safe@actives} is already set to true.
+% (Feature request of Josselin Noirel)
+% \end{Version}
+% \begin{Version}{2007/05/02 v1.9}
+% \item
+% Module \xmodule{titleref}: Some support for \cs{caption} of package
+% \xpackage{longtable}, but only if \cs{label} is given after
+% \cs{caption}.
+% \end{Version}
+% \begin{Version}{2007/05/06 v2.0}
+% \item
+% Uses package \xpackage{etexcmds} for accessing \hologo{eTeX}'s \cs{unexpanded}.
+% \end{Version}
+% \begin{Version}{2007/05/28 v2.1}
+% \item
+% Module \xmodule{titleref} supports caption of package \xpackage{listings}.
+% \item
+% Fixes in module \xmodule{titleref} for support
+% of packages \xpackage{titlesec} and \xpackage{longtable}.
+% \end{Version}
+% \begin{Version}{2008/09/21 v2.2}
+% \item
+% Module \xmodule{base}: \cs{zref at iflistcontainsprop} is documented, but
+% a broken \cs{zref at listcontainsprop} implemented. Name and
+% implementation fixed (thanks Ohad Kammar).
+% \end{Version}
+% \begin{Version}{2008/10/01 v2.3}
+% \item
+% \cs{zref at localaddprop} added (feature request of Ohad Kammar).
+% \item
+% Module \xmodule{lastpage}: list `LastPage' added. Label `LastPage' will use
+% the properties of this list (default is empty) along with the
+% properties of the main list.
+% \end{Version}
+% \begin{Version}{2009/08/07 v2.4}
+% \item
+% Module \xmodule{runs} added.
+% \end{Version}
+% \begin{Version}{2009/12/06 v2.5}
+% \item
+% Module \xmodule{lastpage}: Uses package \xpackage{atveryend}.
+% \item
+% Module \xmodule{titleref}: Further commands are disabled
+% during string expansion, imported from package \xpackage{nameref}.
+% \end{Version}
+% \begin{Version}{2009/12/07 v2.6}
+% \item
+% Version date added for package \xpackage{atveryend}.
+% \end{Version}
+% \begin{Version}{2009/12/08 v2.7}
+% \item
+% Module \xmodule{titleref}: Use of package \xpackage{gettitlestring}.
+% \end{Version}
+% \begin{Version}{2010/03/26 v2.8}
+% \item
+% \cs{zifrefundefined} added.
+% \item
+% Module \xmodule{lastpage}: Macros \cs{zref at iflastpage}
+% and \cs{ziflastpage} added.
+% \item
+% Module \xmodule{thepage} added.
+% \item
+% Module \xmodule{nextpage} added.
+% \end{Version}
+% \begin{Version}{2010/03/29 v2.9}
+% \item
+% Module \xmodule{marks} added (without documentation).
+% \item
+% \cs{zref at addprop} now adds expanded property to list.
+% \item
+% Useless \cs{ZREF at ErrorNoLine} removed.
+% \end{Version}
+% \begin{Version}{2010/04/08 v2.10}
+% \item
+% Module \xmodule{xr} remembers the external document name
+% in property `externaldocument'.
+% \end{Version}
+% \begin{Version}{2010/04/15 v2.11}
+% \item
+% Module \xmodule{titleref}: Better support of class \xclass{memoir}.
+% \item
+% Module \xmodule{titleref}: Support of theorems.
+% \end{Version}
+% \begin{Version}{2010/04/17 v2.12}
+% \item
+% Module \xmodule{base}: \cs{zref at newprop} ensures global
+% empty default.
+% \item
+% Module \xmodule{xr}: Setup options \xoption{tozreflabel}
+% and \xoption{toltxlabel} added.
+% \end{Version}
+% \begin{Version}{2010/04/19 v2.13}
+% \item
+% \cs{zref at setcurrent} throws an error if the property
+% does not exist (Florent Chervet).
+% \item
+% \cs{zref at getcurrent} the documentation is fixed (Florent Chervet).
+% Also it returns the empty string in case of errors.
+% \item
+% \cs{zref at addprop} and \cs{zref at localaddprop} now take a list of
+% property names (feature request of Florent Chervet).
+% \item
+% Example for \cs{zref at wrapper@unexpanded} corrected (Florent Chervet).
+% \end{Version}
+% \begin{Version}{2010/04/22 v2.14}
+% \item
+% Bug fix for \cs{zref at getcurrent} second argument wasn't eaten in
+% case of unknown property.
+% \item
+% \cs{zref at getcurrent} supports \cs{zref at wrapper@unexpanded}.
+% \item
+% \cs{zref at wrapper@unexpanded} added for \cs{ZREF at xr@tolabel}.
+% \item
+% \cs{zref at extract}, \cs{zref at extractdefault}, \cs{zref at getcurrent}
+% are expandable in exact two steps
+% except inside \cs{zref at wrapper@unexpanded}.
+% \end{Version}
+% \begin{Version}{2010/04/23 v2.15}
+% \item
+% \cs{zexternaldocument} fixed for property `url' when
+% importing \cs{new at label} (bug found by Victor Ivrii).
+% \item
+% Two expansion steps also in \cs{zref at wrapper@unexpanded}.
+% \item
+% Nested calls of \cs{zref at wrapper@unexpanded} possible.
+% \end{Version}
+% \begin{Version}{2010/04/28 v2.16}
+% \item
+% More consequent use of package `ltxcmds' and `hologo'.
+% \item
+% Module \xmodule{pagelayout} added.
+% \item
+% Module \xmodule{pageattr} added.
+% \item
+% Robustness introduced for non-expandable interface macros.
+% \item
+% Internal change of the data format of property lists
+% (suggestion of Florent Chervet).
+% \item
+% Module \xmodule{titleref}: Support of environment \textsf{description}.
+% \end{Version}
+% \begin{Version}{2010/05/01 v2.17}
+% \item
+% \cs{zref at newprop} throws an error if the property already exists.
+% \item
+% Module \xmodule{xr}: Bug fix for the case of several \xext{aux} files
+% (bug found by Victor Ivrii).
+% \item
+% Module \xmodule{xr}: Property `urluse' and option \xoption{urluse} added.
+% \end{Version}
+% \begin{Version}{2010/05/13 v2.18}
+% \item
+% Module \xmodule{env} added.
+% \item
+% Module \xmodule{savepos}: \cs{zref at savepos} added.
+% \end{Version}
+% \begin{Version}{2010/10/22 v2.19}
+% \item
+% \cs{zref at addprop} and \cs{zref at localaddprop} are limited
+% to one property only
+% (incompatibility to versions v2.13 to v2.18).
+% \item
+% \cs{zref at addprops} and \cs{zref at localaddprops} added.
+% \item
+% \cs{zref at delprop} and \cs{zref at localdelprop} added.
+% \item
+% \cs{zref at labelbykv} and \cs{zkvlabel} (module \xmodule{user})
+% with keys \xoption{prop}, \xoption{list}, \xoption{delprop},
+% \xoption{immediate}, \xoption{values} added.
+% \end{Version}
+% \begin{Version}{2011/02/12 v2.20}
+% \item
+% Fix for warning in \xpackage{zref-xr}.
+% \end{Version}
+% \begin{Version}{2011/03/18 v2.21}
+% \item
+% Fix in module \xmodule{pagelayout} for \cs{zlistpagelayout}.
+% \item
+% Fix for \cs{zref at localaddprop} (probably since v2.19).
+% \end{Version}
+% \begin{Version}{2011/10/05 v2.22}
+% \item
+% Documentation fixed for \cs{zref@(local)addprop(s)}.
+% \item
+% Module \xmodule{base}: \cs{zref at def@extract}, \cs{zref at def@extractdefault}
+% added.
+% \item
+% Fix in module \xmodule{pagelayout}: Because of missing \cs{noexpand}
+% commands the values of the pagelayout properties on all pages were
+% the values at package loading.
+% \item
+% Module \xmodule{base}: \cs{zref at showprop} added.
+% \end{Version}
+% \begin{Version}{2011/12/05 v2.23}
+% \item
+% Module \xmodule{savepos}: \cs{zsaveposx} and \cs{zsaveposy} added.
+% \end{Version}
+% \begin{Version}{2012/04/04 v2.24}
+% \item
+% Module \xmodule{titleref}, package \xpackage{titlesec}:
+% some support for class `straight' (\cs{ttl at straight@i}) added.
+% \end{Version}
+% \begin{Version}{2016/05/16 v2.25}
+% \item
+% Documentation updates.
+% \end{Version}
+% \begin{Version}{2016/05/21 v2.26}
+% \item
+% update zref-savepos for new luatex
+% \end{Version}
+% \begin{Version}{2018/11/21 v2.27}
+% \item
+% adapted zref-perpage, see issue https://github.com/ho-tex/zref/issues/2
+% \end{Version}
+% \begin{Version}{2019/11/29 v2.28}
+% \item
+% Documentation updates.
+% \item
+% Use \xpackage{iftex} directly.
+% \end{Version}
+% \end{History}
+%
+% \PrintIndex
+%
+% \Finale
+\endinput
Property changes on: trunk/Master/texmf-dist/source/latex/zref/zref.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-abspage.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-abspage.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-abspage.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,70 @@
+%%
+%% This is file `zref-abspage.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `abspage')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-abspage}%
+ [2019/11/29 v2.28 Module abspage for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\RequirePackage{atbegshi}[2011/10/05]%
+\begingroup
+ \let\@addtoreset\ltx at gobbletwo
+ \newcounter{abspage}%
+\endgroup
+\setcounter{abspage}{0}%
+\AtBeginShipout{%
+ \stepcounter{abspage}%
+}%
+\zref at newprop*{abspage}[0]{\the\c at abspage}%
+\zref at addprop\ZREF at mainlist{abspage}%
+\endinput
+%%
+%% End of file `zref-abspage.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-abspage.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-abspos.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-abspos.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-abspos.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,364 @@
+%%
+%% This is file `zref-abspos.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `abspos')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-abspos}%
+ [2019/11/29 v2.28 Module abspos for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\RequirePackage{zref-savepos}[2019/11/29]
+\ifx\ZREF at savepos@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\RequirePackage{zref-pagelayout}[2019/11/29]
+\zref at addprop{savepos}{abspage}
+\RequirePackage{ifpdf}[2010/09/13]
+\newcommand*{\zref at absposx}[3]{%
+ \number
+ \expandafter\zref at absposnumx\expandafter{%
+ \number\zref at extractdefault{#1}{abspage}{0}%
+ }{#2}{#3}%
+ \ltx at space
+}
+\newcommand*{\zref at absposy}[3]{%
+ \number
+ \expandafter\zref at absposnumy\expandafter{%
+ \number\zref at extractdefault{#1}{abspage}{0}%
+ }{#2}{#3}%
+ \ltx at space
+}
+\newcommand*{\zref at absposnumx}[3]{%
+ \number
+ \numexpr\ZREF at absposnum{thepage#1}{#2}{x}{#3}\relax
+}
+\newcommand*{\zref at absposnumy}[3]{%
+ \number
+ \numexpr\ZREF at absposnum{thepage#1}{#2}{y}{#3}\relax
+}
+\def\ZREF at absposnum#1#2#3#4{%
+ \ltx at ifundefined{ZREF at abspos@#2@#3@#4}{%
+ 0%
+ }{%
+ \csname ZREF at abspos@#2@#3@#4\endcsname{#1}%
+ }%
+}
+\ZREF at Robust\def\zref at def@absposx#1{%
+ \zref at wrapper@babel{\ZREF at def@abspos{#1}\zref at absposx}%
+}
+\ZREF at Robust\def\zref at def@absposy#1{%
+ \zref at wrapper@babel{\ZREF at def@abspos{#1}\zref at absposy}%
+}
+\ZREF at Robust\def\zref at def@absposnumx#1{%
+ \zref at wrapper@babel{\ZREF at def@abspos{#1}\zref at absposnumx}%
+}
+\ZREF at Robust\def\zref at def@absposnumy#1{%
+ \zref at wrapper@babel{\ZREF at def@abspos{#1}\zref at absposnumy}%
+}
+\def\ZREF at def@absposnumy#1#2#3#4#5{%
+ \edef#1{#2{#3}{#4}{#5}}%
+}
+\ZREF at Robust\def\zref at absposused{%
+ \zref at wrapper@babel\ZREF at abspos@used
+}
+\def\ZREF at abspos@used#1{%
+ \zref at refused{#1}%
+ \zref at ifrefundefined{#1}{%
+ }{%
+ \begingroup
+ \edef\ZREF at temp{%
+ \zref at extractdefault{#1}{abspage}{0}%
+ }%
+ \ifnum\ZREF at temp>\ltx at zero
+ \zref at refused{thepage\ZREF at temp}%
+ \else
+ \@PackageError{zref-abspos}{%
+ \string\zref at pos@label at used\ltx at space
+ needs property `abspage'\MessageBreak
+ in label `#1'%
+ }\@ehc
+ \fi
+ \endgroup
+ }%
+}
+\newcommand*{\zref at absposnumused}[1]{%
+ \ifnum#1>\ltx at zero
+ \zref at refused{thepage\number#1}%
+ \else
+ \@PackageError{zref-abspos}{%
+ Invalid absolute page number (#1)\MessageBreak
+ for \string\zref at pos@num at used.\MessageBreak
+ A positive integer is expected%
+ }\@ehc
+ \fi
+}
+\def\zref at ifabsposundefined#1{%
+ \zref at ifrefundefined{#1}\ltx at firsttwo{%
+ \expandafter\zref at ifabsposnumundefined\expandafter{%
+ \number\zref at extractdefault{#1}{abspage}{0}%
+ }%
+ }%
+}
+\def\zref at ifabsposnumundefined#1{%
+ \ifnum\ZREF at number{#1}>\ltx at zero
+ \zref at ifrefundefined{thepage#1}%
+ \ltx at firstoftwo\ltx at secondoftwo
+ \else
+ \expandafter\ltx at firstoftwo
+ \fi
+}
+\edef\ZREF at abspos@media at width{%
+ \ltx at ifundefined{pdfpagewidth}{%
+ \ltx at ifundefined{mediawidth}{%
+ \ltx at ifundefined{stockwidth}{%
+ paperwidth%
+ }{%
+ stockwidth%
+ }%
+ }{%
+ mediawidth%
+ }%
+ }{%
+ pdfpagewidth%
+ }%
+}
+\edef\ZREF at abspos@media at height{%
+ \ltx at ifundefined{pdfpageheight}{%
+ \ltx at ifundefined{mediaheight}{%
+ \ltx at ifundefined{stockheight}{%
+ paperheight%
+ }{%
+ stockheight%
+ }%
+ }{%
+ mediaheight%
+ }%
+ }{%
+ \noexpand\ifcase\pdfpageheight
+ \ltx at ifundefined{stockheight}{%
+ paperheight%
+ }{%
+ stockheight%
+ }%
+ \noexpand\else
+ pdfpageheight%
+ \noexpand\fi
+ }%
+}
+\def\ZREF at abspos@media at x@left#1{%
+ 0%
+}
+\def\ZREF at abspos@media at x@right#1{%
+ \zref at extract{#1}\ZREF at abspos@media at width
+}
+\def\ZREF at abspos@media at x@center#1{%
+ \ZREF at abspos@media at x@left{#1}%
+ +\zref at extract{#1}\ZREF at abspos@media at width/2%
+}
+\def\ZREF at abspos@media at y@top#1{%
+ \zref at extract{#1}\ZREF at abspos@media at height
+}
+\def\ZREF at abspos@media at y@bottom#1{%
+ 0%
+}
+\def\ZREF at abspos@media at y@center#1{%
+ \zref at extract{#1}\ZREF at abspos@media at height/2%
+}
+\def\ZREF at abspos@paper at x@left#1{%
+ 0%
+}
+\def\ZREF at abspos@paper at x@right#1{%
+ \zref at extract{#1}{paperwidth}%
+}
+\def\ZREF at abspos@paper at x@center#1{%
+ \zref at extract{#1}{paperwidth}/2%
+}
+\let\ZREF at abspos@paper at y@top\ZREF at abspos@media at y@top
+\def\ZREF at abspos@paper at y@bottom#1{%
+ \ZREF at abspos@paper at y@top{#1}%
+ -\zref at extract{#1}{paperheight}%
+}
+\def\ZREF at abspos@paper at y@center#1{%
+ \ZREF at abspos@paper at y@top{#1}%
+ -\zref at extract{#1}{paperheight}/2%
+}
+\let\ZREF at temp\ltx at two
+\ltx at IfUndefined{pdfhorigin}{}{%
+ \ifpdf
+ \let\ZREF at temp\ltx at zero
+ \fi
+}
+\ifx\ZREF at temp\ltx at two
+ \ifnum\mag=1000 %
+ \let\ZREF at temp\ltx at one
+ \fi
+\fi
+\ifcase\ZREF at temp
+ \def\ZREF at abspos@origin at x#1{%
+ \zref at extract{#1}{pdfhorigin}%
+ }%
+\or
+ \def\ZREF at abspos@origin at x#1{%
+ 4736286%
+ }%
+\or
+ \def\ZREF at abspos@origin at x#1{%
+ \numexpr\mag/1000*\dimexpr 1truein\relax\relax
+ }%
+\fi
+\let\ZREF at temp\ltx at two
+\ltx at IfUndefined{pdfvorigin}{}{%
+ \ifpdf
+ \let\ZREF at temp\ltx at zero
+ \fi
+}
+\ifx\ZREF at temp\ltx at two
+ \ifnum\mag=1000 %
+ \let\ZREF at temp\ltx at one
+ \fi
+\fi
+\ifcase\ZREF at temp
+ \def\ZREF at abspos@origin at y#1{%
+ \zref at extract{#1}{pdfvorigin}%
+ }%
+\or
+ \def\ZREF at abspos@origin at y#1{%
+ 4736286%
+ }%
+\or
+ \def\ZREF at abspos@origin at y#1{%
+ \numexpr\mag/1000*\dimexpr 1truein\relax\relax
+ }%
+\fi
+\def\ZREF at abspos@head at x@left#1{%
+ \ZREF at abspos@paper at x@left{#1}%
+ +\ZREF at abspos@origin at x{#1}%
+ +\zref at extract{#1}{hoffset}%
+ +\ifodd\zref at extractdefault{#1}{pagevalue}{\number\c at page} %
+ \zref at extract{#1}{oddsidemargin}%
+ \else
+ \zref at extract{#1}{evensidemargin}%
+ \fi
+}
+\def\ZREF at abspos@head at x@right#1{%
+ \ZREF at abspos@head at x@left{#1}%
+ +\zref at extract{#1}{textwidth}%
+}
+\def\ZREF at abspos@head at x@center#1{%
+ \ZREF at abspos@head at x@left{#1}%
+ +\zref at extract{#1}{textwidth}/2%
+}
+\def\ZREF at abspos@head at y@top#1{%
+ \ZREF at abspos@paper at y@top{#1}%
+ -\ZREF at abspos@origin at y{#1}%
+ -\zref at extract{#1}{voffset}%
+ -\zref at extract{#1}{topmargin}%
+}
+\def\ZREF at abspos@head at y@bottom#1{%
+ \ZREF at abspos@head at y@top{#1}%
+ -\zref at extract{#1}{headheight}%
+}
+\def\ZREF at abspos@head at y@center#1{%
+ \ZREF at abspos@head at y@top{#1}%
+ -\zref at extract{#1}{headheight}/2%
+}
+\let\ZREF at abspos@body at x@left\ZREF at abspos@head at x@left
+\let\ZREF at abspos@body at x@right\ZREF at abspos@head at x@right
+\let\ZREF at abspos@body at x@center\ZREF at abspos@head at x@center
+\def\ZREF at abspos@body at y@top#1{%
+ \ZREF at abspos@head at y@bottom{#1}%
+ -\zref at extract{#1}{headsep}%
+}
+\def\ZREF at abspos@body at y@bottom#1{%
+ \ZREF at abspos@body at y@top{#1}%
+ -\zref at extract{#1}{textheight}%
+}
+\def\ZREF at abspos@body at y@center#1{%
+ \ZREF at abspos@body at y@top{#1}%
+ -\zref at extract{#1}{textheight}/2%
+}
+\let\ZREF at abspos@foot at x@left\ZREF at abspos@head at x@left
+\let\ZREF at abspos@foot at x@right\ZREF at abspos@head at x@right
+\let\ZREF at abspos@foot at x@center\ZREF at abspos@head at x@center
+\def\ZREF at abspos@foot at y@bottom#1{%
+ \ZREF at abspos@body at y@bottom{#1}%
+ -\zref at extract{#1}{footskip}%
+}
+\def\ZREF at abspos@marginpar at x@left#1{%
+ \ifodd\zref at extractdefault{#1}{pagevalue}{\number\c at page} %
+ \ZREF at abspos@body at x@right{#1}%
+ +\zref at extract{#1}{marginparsep}%
+ \else
+ \ZREF at abspos@body at x@left{#1}%
+ -\zref at extract{#1}{marginparsep}%
+ -\zref at extract{#1}{marginparwidth}%
+ \fi
+}
+\def\ZREF at abspos@marginpar at x@right#1{%
+ \ZREF at abspos@marginpar at x@left{#1}%
+ +\zref at extract{#1}{marginparwidth}%
+}
+\def\ZREF at abspos@marginpar at x@center#1{%
+ \ZREF at abspos@marginpar at x@left{#1}%
+ +\zref at extract{#1}{marginparwidth}/2%
+}
+\let\ZREF at abspos@marginpar at y@top\ZREF at abspos@body at y@top
+\let\ZREF at abspos@marginpar at y@bottom\ZREF at abspos@body at y@bottom
+\let\ZREF at abspos@marginpar at y@center\ZREF at abspos@body at y@center
+\let\ZREF at abspos@stock at x@left\ZREF at abspos@paper at x@left
+\let\ZREF at abspos@stock at x@right\ZREF at abspos@paper at x@right
+\let\ZREF at abspos@stock at x@center\ZREF at abspos@paper at x@center
+\let\ZREF at abspos@stock at y@top\ZREF at abspos@paper at y@top
+\let\ZREF at abspos@stock at y@bottom\ZREF at abspos@paper at y@bottom
+\let\ZREF at abspos@stock at y@center\ZREF at abspos@paper at y@center
+\endinput
+%%
+%% End of file `zref-abspos.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-abspos.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-base.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-base.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-base.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,789 @@
+%%
+%% This is file `zref-base.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `base')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-base}%
+ [2019/11/29 v2.28 Module base for zref (HO)]%
+\RequirePackage{ltxcmds}[2010/12/02]
+\RequirePackage{infwarerr}[2010/04/08]
+\RequirePackage{kvsetkeys}[2010/03/01]
+\RequirePackage{kvdefinekeys}[2010/03/01]
+\RequirePackage{pdftexcmds}[2010/04/01]
+\def\ZREF at name{zref}
+\ltx at IfUndefined{protected}{%
+ \RequirePackage{makerobust}[2006/03/18]%
+ \def\ZREF at Robust#1#2{%
+ \def\ZREF at temp{\MakeRobustcommand#2}%
+ \afterassignment\ZREF at temp
+ #1#2%
+ }%
+}{%
+ \def\ZREF at Robust#1{%
+ \protected#1%
+ }%
+}
+\def\ZREF at IfDefinable#1#2#3{%
+ \@ifdefinable{#1}{%
+ \ZREF at Robust{#2}#1#3%
+ }%
+}
+\def\ZREF at UpdatePdfTeX{Update pdfTeX.}
+\newif\ifZREF at found
+\def\ZREF at patch#1{%
+ \ltx at IfUndefined{#1}{%
+ \ltx at gobble
+ }{%
+ \expandafter\let\csname ZREF at org@#1\expandafter\endcsname
+ \csname #1\endcsname
+ \ltx at firstofone
+ }%
+}
+\ltx at IfUndefined{eTeXversion}{%
+ \PackageError\ZREF at name{%
+ Missing support for eTeX; package is abandoned%
+ }{%
+ Use a TeX compiler that support eTeX and enable eTeX %
+ in the format.%
+ }%
+ \endinput
+}{}%
+\RequirePackage{etexcmds}[2007/09/09]
+\ifetex at unexpanded
+\else
+ \PackageError\ZREF at name{%
+ Missing e-TeX's \string\unexpanded.\MessageBreak
+ Add \string\RequirePackage\string{etexcmds\string} before %
+ \string\documentclass%
+ }{%
+ Probably you are using some package (e.g. ConTeXt) that %
+ redefines \string\unexpanded%
+ }%
+ \expandafter\endinput
+\fi
+\RequirePackage{auxhook}
+\AddLineBeginAux{%
+ \string\providecommand\string\zref at newlabel[2]{}%
+}
+\def\ZREF at RefPrefix{Z at R}
+\ZREF at Robust\edef\zref at newlabel{%
+ \noexpand\@newl at bel{\ZREF at RefPrefix}%
+}
+\ZREF at Robust\def\zref at newlist#1{%
+ \zref at iflistundefined{#1}{%
+ \@ifdefinable{Z at L@#1}{%
+ \global\expandafter\let\csname Z at L@#1\endcsname\ltx at empty
+ \PackageInfo\ZREF at name{New property list: #1}%
+ }%
+ }{%
+ \PackageError\ZREF at name{%
+ Property list `#1' already exists%
+ }\@ehc
+ }%
+}
+\def\zref at iflistundefined#1{%
+ \ltx at ifundefined{Z at L@#1}%
+}
+\ZREF at Robust\def\zref at listexists#1{%
+ \zref at iflistundefined{#1}{%
+ \PackageError\ZREF at name{%
+ Property list `#1' does not exist%
+ }\@ehc
+ }%
+}
+\ZREF at Robust\def\zref at iflistcontainsprop#1#2{%
+ \zref at iflistundefined{#1}{%
+ \ltx at secondoftwo
+ }{%
+ \begingroup\expandafter\endgroup
+ \expandafter\in@
+ \csname#2\expandafter\expandafter\expandafter\endcsname
+ \expandafter\expandafter\expandafter{\csname Z at L@#1\endcsname}%
+ \csname ltx@\ifin@ first\else second\fi oftwo\endcsname
+ }%
+}
+\def\zref at listforloop#1#2{%
+ \zref at listexists{#1}{%
+ \expandafter\expandafter\expandafter\@tfor
+ \expandafter\expandafter\expandafter\zref at prop
+ \expandafter\expandafter\expandafter:%
+ \expandafter\expandafter\expandafter=%
+ \csname Z at L@#1\endcsname
+ \do{%
+ \begingroup
+ \escapechar=-1 %
+ \edef\x{\endgroup
+ \def\noexpand\zref at prop{%
+ \expandafter\string\zref at prop
+ }%
+ }%
+ \x
+ #2\zref at prop
+ }%
+ }%
+}
+\ZREF at Robust\def\zref at addprops#1#2{%
+ \zref at listexists{#1}{%
+ \comma at parse{#2}{%
+ \zref at propexists\comma at entry{%
+ \zref at iflistcontainsprop{#1}\comma at entry{%
+ \PackageWarning\ZREF at name{%
+ Property `\comma at entry' is already in list `#1'%
+ }%
+ }{%
+ \begingroup\expandafter\endgroup
+ \expandafter\g at addto@macro
+ \csname Z at L@#1\expandafter\endcsname
+ \expandafter{\csname\comma at entry\endcsname}%
+ }%
+ }%
+ \ltx at gobble
+ }%
+ }%
+}
+\ZREF at Robust\def\zref at addprop#1#2{%
+ \zref at listexists{#1}{%
+ \zref at propexists{#2}{%
+ \zref at iflistcontainsprop{#1}{#2}{%
+ \PackageWarning\ZREF at name{%
+ Property `#2' is already in list `#1'%
+ }%
+ }{%
+ \begingroup\expandafter\endgroup
+ \expandafter\g at addto@macro
+ \csname Z at L@#1\expandafter\endcsname
+ \expandafter{\csname#2\endcsname}%
+ }%
+ }%
+ }%
+}
+\ZREF at Robust\def\zref at localaddprops#1#2{%
+ \zref at listexists{#1}{%
+ \comma at parse{#2}{%
+ \zref at propexists\comma at entry{%
+ \zref at iflistcontainsprop{#1}\comma at entry{%
+ \PackageWarning\ZREF at name{%
+ Property `\comma at entry' is already in list `#1'%
+ }%
+ }{%
+ \begingroup\expandafter\endgroup
+ \expandafter\ltx at LocalAppendToMacro
+ \csname Z at L@#1\expandafter\endcsname
+ \expandafter{\csname\comma at entry\endcsname}%
+ }%
+ }%
+ \ltx at gobble
+ }%
+ }%
+}
+\ZREF at Robust\def\zref at localaddprop#1#2{%
+ \zref at listexists{#1}{%
+ \zref at propexists{#2}{%
+ \zref at iflistcontainsprop{#1}{#2}{%
+ \PackageWarning\ZREF at name{%
+ Property `#2' is already in list `#1'%
+ }%
+ }{%
+ \begingroup\expandafter\endgroup
+ \expandafter\ltx at LocalAppendToMacro
+ \csname Z at L@#1\expandafter\endcsname
+ \expandafter{\csname#2\endcsname}%
+ }%
+ }%
+ }%
+}
+\ltx at IfUndefined{pdf at strcmp}{%
+ \ZREF at Robust\def\zref at delprop{%
+ \ZREF at delprop\gdef
+ }%
+ \ZREF at Robust\def\zref at localdelprop{%
+ \ZREF at delprop\def
+ }%
+ \def\ZREF at delprop#1#2#3{%
+ \zref at listexists{#2}{%
+ \begingroup
+ \escapechar=-1 %
+ \def\ZREF at param{#3}%
+ \@onelevel at sanitize\ZREF at param
+ \toks@{}%
+ \expandafter\expandafter\expandafter\ZREF@@delprop
+ \csname Z at L@#2\endcsname!%
+ \expandafter\endgroup
+ \expandafter#1\csname Z at L@#2\expandafter\endcsname
+ \expandafter{%
+ \the\toks@
+ }%
+ }%
+ }%
+ \def\ZREF@@delprop#1{%
+ \expandafter\ZREF@@@delprop\expandafter{\string#1}#1%
+ }%
+ \def\ZREF@@@delprop#1#2{%
+ \ifx#2!%
+ \else
+ \def\ZREF at temp{#1}%
+ \@onelevel at sanitize\ZREF at temp
+ \ifx\ZREF at param\ZREF at temp
+ \else
+ \toks@\expandafter{%
+ \the\expandafter\toks@\csname#1\endcsname
+ }%
+ \fi
+ \expandafter\ZREF@@delprop
+ \fi
+ }%
+}{%
+ \ZREF at Robust\def\zref at delprop{%
+ \ZREF at delprop\xdef
+ }%
+ \ZREF at Robust\def\zref at localdelprop{%
+ \ZREF at delprop\edef
+ }%
+ \def\ZREF at delprop#1#2#3{%
+ \zref at listexists{#2}{%
+ \def\ZREF at param{#3}%
+ \edef\ZREF at SavedEscapechar{\the\escapechar}%
+ \escapechar=-1 %
+ \expandafter#1\csname Z at L@#2%
+ \expandafter\expandafter\expandafter\endcsname{%
+ \expandafter\expandafter\expandafter\ZREF@@delprop
+ \csname Z at L@#2\endcsname!%
+ }%
+ \escapechar=\ZREF at SavedEscapechar\relax
+ }%
+ }%
+ \def\ZREF@@delprop#1{%
+ \expandafter\ZREF@@@delprop\expandafter{\string#1}#1%
+ }%
+ \def\ZREF@@@delprop#1#2{%
+ \ifx#2!%
+ \else
+ \ifnum\pdf at strcmp{#1}{\ZREF at param}=\ltx at zero
+ \else
+ \expandafter\noexpand\csname#1\endcsname
+ \fi
+ \expandafter\ZREF@@delprop
+ \fi
+ }%
+}
+\def\zref at ifpropundefined#1{%
+ \ltx at ifundefined{Z at E@#1}%
+}
+\ZREF at Robust\def\zref at propexists#1{%
+ \zref at ifpropundefined{#1}{%
+ \PackageError\ZREF at name{%
+ Property `#1' does not exist%
+ }\@ehc
+ }%
+}
+\ZREF at Robust\def\zref at newprop{%
+ \@ifstar{%
+ \let\ZREF at X\noexpand
+ \ZREF at newprop
+ }{%
+ \let\ZREF at X\ltx at empty
+ \ZREF at newprop
+ }%
+}
+\def\ZREF at newprop#1{%
+ \edef\ZREF at P{#1}%
+ \@onelevel at sanitize\ZREF at P
+ \begingroup
+ \ifx\ZREF at P\ZREF at par
+ \@PackageError\ZREF at name{%
+ Invalid property name `\ZREF at P'%
+ }{%
+ The property name `par' is not allowed %
+ because of internal reasons.%
+ \MessageBreak
+ \@ehc
+ }%
+ \def\ZREF@@newprop[##1]##2{\endgroup}%
+ \else
+ \zref at ifpropundefined\ZREF at P{%
+ \endgroup
+ \PackageInfo\ZREF at name{%
+ New property: \ZREF at P
+ }%
+ }{%
+ \@PackageError\ZREF at name{%
+ Property `\ZREF at P' already exists%
+ }\@ehc
+ \def\ZREF@@newprop[##1]##2{\endgroup}%
+ }%
+ \fi
+ \@ifnextchar[\ZREF@@newprop{\ZREF@@newprop[\zref at default]}%
+}
+\def\ZREF at par{par}
+\@onelevel at sanitize\ZREF at par
+\def\ZREF@@newprop[#1]{%
+ \global\@namedef{Z at D@\ZREF at P}{#1}%
+ \global\expandafter\let\csname Z at X@\ZREF at P\endcsname\ZREF at X
+ \begingroup\expandafter\endgroup
+ \expandafter\ZREF@@@newprop\csname\ZREF at P\endcsname
+ \expandafter\gdef\csname Z at C@\ZREF at P\endcsname{}%
+ \zref at setcurrent\ZREF at P
+}
+\def\ZREF@@@newprop#1{%
+ \expandafter
+ \gdef\csname Z at E@\ZREF at P\endcsname##1#1##2##3\ZREF at nil{##2}%
+}
+\ZREF at Robust\def\zref at showprop#1{%
+ \zref at ifpropundefined{#1}{%
+ \@PackageInfoNoLine{\ZREF at name}{%
+ Show property `#1': <undefined>%
+ }%
+ }{%
+ \begingroup
+ \toks@\expandafter\expandafter\expandafter{%
+ \csname Z at C@#1\endcsname
+ }%
+ \edef\ZREF at value{\the\toks@}%
+ \ltx at onelevel@sanitize\ZREF at value
+ \toks@\expandafter\expandafter\expandafter{%
+ \csname Z at D@#1\endcsname
+ }%
+ \edef\ZREF at default{\the\toks@}%
+ \ltx at onelevel@sanitize\ZREF at default
+ \@PackageInfoNoLine{\ZREF at name}{%
+ Show property `#1':\MessageBreak
+ \expandafter\ifx\csname Z at X@#1\endcsname\ltx at empty
+ Immediate %
+ \else
+ Delayed %
+ \fi
+ value: [\ZREF at value]\MessageBreak
+ Default: [\ZREF at default]%
+ }%
+ \endgroup
+ }%
+}
+\ZREF at Robust\def\zref at setcurrent#1#2{%
+ \zref at propexists{#1}{%
+ \expandafter\def\csname Z at C@#1\endcsname{#2}%
+ }%
+}
+\def\ZREF at getcurrent#1{%
+ \romannumeral0%
+ \ltx at ifundefined{Z at C@#1}{%
+ \ltx at space
+ }{%
+ \expandafter\expandafter\expandafter\ltx at space
+ \csname Z at C@#1\endcsname
+ }%
+}
+\def\ZREF at wu@getcurrent#1{%
+ \etex at unexpanded\expandafter\expandafter\expandafter{%
+ \ZREF at getcurrent{#1}%
+ }%
+}
+\let\zref at getcurrent\ZREF at getcurrent
+\ZREF at Robust\def\zref at label#1{%
+ \zref at labelbylist{#1}\ZREF at mainlist
+}
+\ZREF at Robust\def\zref at labelbylist#1#2{%
+ \@bsphack
+ \zref at listexists{#2}{%
+ \expandafter\expandafter\expandafter\ZREF at label
+ \expandafter\expandafter\expandafter{%
+ \csname Z at L@#2\endcsname
+ }{#1}%
+ }%
+ \@esphack
+}
+\ZREF at Robust\def\zref at labelbyprops#1#2{%
+ \@bsphack
+ \begingroup
+ \toks@{}%
+ \comma at parse{#2}{%
+ \zref at ifpropundefined\comma at entry{%
+ \PackageWarning\ZREF at name{%
+ Property `\comma at entry' is not known%
+ }%
+ }{%
+ \toks@\expandafter{%
+ \the\expandafter\toks@\csname\comma at entry\endcsname
+ }%
+ }%
+ \ltx at gobble
+ }%
+ \expandafter\endgroup
+ \expandafter\ZREF at label\expandafter{\the\toks@}{#1}%
+ \@esphack
+}
+\ZREF at Robust\def\zref at labelbykv#1#2{%
+ \@bsphack
+ \begingroup
+ \let\Z at L@ZREF at temp\ltx at empty
+ \kvsetkeys{ZREF at LABEL}{#1}%
+ \ifZREF at immediate
+ \expandafter\zref at wrapper@immediate\expandafter{%
+ \expandafter\ZREF at label\expandafter{\Z at L@ZREF at temp}{#2}%
+ }%
+ \else
+ \expandafter\ZREF at label\expandafter{\Z at L@ZREF at temp}{#2}%
+ \fi
+ \endgroup
+ \@esphack
+}
+\kv at define@key{ZREF at LABEL}{prop}{%
+ \edef\ZREF at param{#1}%
+ \zref at propexists\ZREF at param{%
+ \zref at iflistcontainsprop{ZREF at temp}\ZREF at param{}{%
+ \begingroup\expandafter\endgroup
+ \expandafter\ltx at LocalAppendToMacro
+ \expandafter\Z at L@ZREF at temp
+ \expandafter{\csname\ZREF at param\endcsname}%
+ }%
+ }%
+}
+\kv at define@key{ZREF at LABEL}{list}{%
+ \zref at listforloop{#1}{%
+ \zref at iflistcontainsprop{ZREF at temp}\zref at prop{}{%
+ \begingroup\expandafter\endgroup
+ \expandafter\ltx at LocalAppendToMacro
+ \expandafter\Z at L@ZREF at temp
+ \expandafter{\csname\zref at prop\endcsname}%
+ }%
+ \ltx at gobble
+ }%
+}
+\kv at define@key{ZREF at LABEL}{delprop}{%
+ \zref at propexists{#1}{%
+ \zref at localdelprop{ZREF at temp}{#1}%
+ }%
+}
+\kv at define@key{ZREF at LABEL}{immediate}[true]{%
+ \edef\ZREF at param{#1}%
+ \ifx\ZREF at param\ZREF at true
+ \ZREF at immediatetrue
+ \else
+ \ifx\ZREF at param\ZREF at false
+ \ZREF at immediatefalse
+ \else
+ \PackageWarning\ZREF at name{%
+ Option `immediate' expects `true' or `false'.\MessageBreak
+ Ignoring invalid value `\ZREF at param'%
+ }%
+ \fi
+ \fi
+}
+\def\ZREF at false{false}
+\def\ZREF at true{true}
+\kv at define@key{ZREF at LABEL}{values}[]{%
+ \kv at parse{#1}{%
+ \ifx\kv at value\relax
+ \@PackageWarning\ZREF at name{%
+ Missing value for property `\kv at key'%
+ }%
+ \expandafter\ltx at gobbletwo
+ \else
+ \expandafter\zref at setcurrent
+ \fi
+ }%
+}
+\newif\ifZREF at immediate
+\ZREF at Robust{\long\def}\zref at wrapper@immediate#1{%
+ \begingroup
+ \ZREF at immediatetrue
+ \let\ZREF at org@write\write
+ \def\write{\immediate\ZREF at org@write}%
+ #1%
+ \endgroup
+}
+\def\ZREF at label#1#2{%
+ \if at filesw
+ \begingroup
+ \ifZREF at immediate
+ \let\ZREF at org@thepage\thepage
+ \fi
+ \protected at write\@auxout{%
+ \ifZREF at immediate
+ \let\thepage\ZREF at org@thepage
+ \fi
+ \let\ZREF at temp\ltx at empty
+ \@tfor\ZREF at P:=#1\do{%
+ \begingroup
+ \escapechar=-1 %
+ \edef\x{\endgroup
+ \def\noexpand\ZREF at P{%
+ \expandafter\string\ZREF at P
+ }%
+ }%
+ \x
+ \expandafter\ifx
+ \csname
+ \ifZREF at immediate
+ relax%
+ \else
+ Z at X@\ZREF at P%
+ \fi
+ \endcsname
+ \noexpand
+ \expandafter\let\csname Z at C@\ZREF at P\endcsname\relax
+ \fi
+ \toks@\expandafter{\ZREF at temp}%
+ \edef\ZREF at temp{%
+ \the\toks@
+ \ltx at backslashchar\ZREF at P{%
+ \expandafter\noexpand\csname Z at C@\ZREF at P\endcsname
+ }%
+ }%
+ }%
+ }{%
+ \string\zref at newlabel{#2}{\ZREF at temp}%
+ }%
+ \endgroup
+ \fi
+}
+\def\ZREF at addtoks#1{%
+ \toks@\expandafter\expandafter\expandafter{%
+ \expandafter\the\expandafter\toks@#1%
+ }%
+}
+\def\zref at ifrefundefined#1{%
+ \ltx at ifundefined{Z at R@#1}%
+}
+\ZREF at IfDefinable\zifrefundefined\def{%
+ #1{%
+ \zref at wrapper@babel\ZREF at ifrefundefined{#1}%
+ }%
+}
+\def\ZREF at ifrefundefined#1{%
+ \zref at refused{#1}%
+ \zref at ifrefundefined{#1}%
+}
+\ZREF at Robust\def\zref at refused#1{%
+ \zref at wrapper@babel\ZREF at refused{#1}%
+}
+\def\ZREF at refused#1{%
+ \zref at ifrefundefined{#1}{%
+ \protect\G at refundefinedtrue
+ \@latex at warning{%
+ Reference `#1' on page \thepage \space undefined%
+ }%
+ }{}%
+}
+\def\zref at ifrefcontainsprop#1#2{%
+ \zref at ifrefundefined{#1}{%
+ \ltx at secondoftwo
+ }{%
+ \expandafter\ZREF at ifrefcontainsprop
+ \csname Z at E@#2\expandafter\endcsname
+ \csname#2\expandafter\expandafter\expandafter\endcsname
+ \expandafter\expandafter\expandafter{%
+ \csname Z at R@#1\endcsname
+ }%
+ }%
+}
+\def\ZREF at ifrefcontainsprop#1#2#3{%
+ \expandafter\ifx\expandafter\ZREF at novalue
+ #1#3#2\ZREF at novalue\ZREF at nil\ltx at empty
+ \expandafter\ltx at secondoftwo
+ \else
+ \expandafter\ltx at firstoftwo
+ \fi
+}
+\def\ZREF at novalue{\ZREF at NOVALUE}
+\def\ZREF at extract#1#2{%
+ \romannumeral0%
+ \ltx at ifundefined{Z at D@#2}{%
+ \expandafter\ltx at space\zref at default
+ }{%
+ \expandafter\expandafter\expandafter\ZREF@@extract
+ \expandafter\expandafter\expandafter{%
+ \csname Z at D@#2\endcsname
+ }{#1}{#2}%
+ }%
+}
+\def\ZREF@@extract#1#2#3{%
+ \expandafter\expandafter\expandafter\ltx at space
+ \zref at extractdefault{#2}{#3}{#1}%
+}
+\def\ZREF at wu@extract#1#2{%
+ \etex at unexpanded\expandafter\expandafter\expandafter{%
+ \ZREF at extract{#1}{#2}%
+ }%
+}
+\let\zref at extract\ZREF at extract
+\def\ZREF at extractdefault#1#2#3{%
+ \romannumeral0%
+ \zref at ifrefundefined{#1}\ltx at firstoftwo{%
+ \zref at ifpropundefined{#2}\ltx at firstoftwo\ltx at secondoftwo
+ }{%
+ \ltx at space
+ #3%
+ }{%
+ \expandafter\expandafter\expandafter\ltx at space
+ \csname Z at E@#2\expandafter\expandafter\expandafter\endcsname
+ \csname Z at R@#1\expandafter\endcsname
+ \csname#2\endcsname{#3}\ZREF at nil
+ }%
+}
+\def\ZREF at wu@extractdefault#1#2#3{%
+ \etex at unexpanded\expandafter\expandafter\expandafter{%
+ \ZREF at extractdefault{#1}{#2}{#3}%
+ }%
+}
+\let\zref at extractdefault\ZREF at extractdefault
+\ZREF at Robust\def\zref at def@extract#1{%
+ \zref at wrapper@babel{\ZREF at def@extract{#1}}%
+}
+\def\ZREF at def@extract#1#2#3{%
+ \zref at refused{#2}%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter#1%
+ \expandafter\expandafter\expandafter{%
+ \zref at extract{#2}{#3}%
+ }%
+}
+\ZREF at Robust\def\zref at def@extractdefault#1{%
+ \zref at wrapper@babel{\ZREF at def@extractdefault{#1}}%
+}
+\def\ZREF at def@extractdefault#1#2#3#4{%
+ \zref at refused{#2}%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter#1%
+ \expandafter\expandafter\expandafter{%
+ \zref at extractdefault{#2}{#3}{#4}%
+ }%
+}
+\ZREF at Robust{\long\def}\ZREF at wrapper@unexpanded#1{%
+ \let\zref at wrapper@unexpanded\ltx at firstofone
+ \let\zref at getcurrent\ZREF at wu@getcurrent
+ \let\zref at extractdefault\ZREF at wu@extractdefault
+ \let\zref at extract\ZREF at wu@extract
+ #1%
+ \let\zref at wrapper@unexpanded\ZREF at wrapper@unexpanded
+ \let\zref at getcurrent\ZREF at getcurrent
+ \let\zref at extractdefault\ZREF at extractdefault
+ \let\zref at extract\ZREF at extract
+}
+\ltx at IfUndefined{etex at unexpanded}{%
+ \let\zref at wrapper@unexpanded\ltx at firstofone
+}{%
+ \let\zref at wrapper@unexpanded\ZREF at wrapper@unexpanded
+}
+\ZREF at Robust{\long\def}\zref at wrapper@babel#1#2{%
+ \ifcsname if at safe@actives\endcsname
+ \expandafter\ltx at firstofone
+ \else
+ \expandafter\ltx at secondoftwo
+ \fi
+ {%
+ \if at safe@actives
+ \expandafter\ltx at secondoftwo
+ \else
+ \expandafter\ltx at firstoftwo
+ \fi
+ {%
+ \begingroup
+ \csname @safe at activestrue\endcsname
+ \edef\x{#2}%
+ \expandafter\endgroup
+ \expandafter\ZREF at wrapper@babel\expandafter{\x}{#1}%
+ }%
+ }{%
+ #1{#2}%
+ }%
+}
+\long\def\ZREF at wrapper@babel#1#2{%
+ #2{#1}%
+}
+\ZREF at Robust\def\zref at require@unique{%
+ \@ifundefined{c at zref@unique}{%
+ \begingroup
+ \let\@addtoreset\ltx at gobbletwo
+ \newcounter{zref at unique}%
+ \endgroup
+ \renewcommand*{\thezref at unique}{%
+ zref@\number\c at zref@unique
+ }%
+ }{}%
+}
+\ltx at IfUndefined{numexpr}{%
+ \def\ZREF at number#1{\number#1}%
+}{%
+ \def\ZREF at number#1{\the\numexpr(#1)\relax}%
+}
+\ZREF at Robust\def\zref at setdefault#1{%
+ \def\zref at default{#1}%
+}
+\zref at setdefault{%
+ \nfss at text{\reset at font\bfseries ??}%
+}
+\ZREF at Robust\def\zref at setmainlist#1{%
+ \def\ZREF at mainlist{#1}%
+}
+\zref at setmainlist{main}
+\zref at newlist\ZREF at mainlist
+\zref at newprop{default}{\@currentlabel}
+\zref at newprop*{page}{\thepage}
+\zref at addprops\ZREF at mainlist{default,page}
+\def\ZREF at NewPropAnchor{%
+ \zref at newprop{anchor}{%
+ \ltx at ifundefined{@currentHref}{}{\@currentHref}%
+ }%
+ \global\let\ZREF at NewPropAnchor\relax
+}
+\def\ZREF at NewPropTitle{%
+ \gdef\zref at titleref@current{}%
+ \zref at newprop{title}{\zref at titleref@current}%
+ \global\let\ZREF at NewPropTitle\relax
+}
+\def\ZREF at NewPropTheotype{%
+ \zref at newprop{theotype}{}%
+ \global\let\ZREF at NewPropTheotype\relax
+}
+\def\ZREF at NewPropPageValue{%
+ \zref at newprop*{pagevalue}[0]{\number\c at page}%
+ \global\let\ZREF at NewPropPageValue\relax
+}
+\let\ZREF at base@ok=Y
+\endinput
+%%
+%% End of file `zref-base.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-base.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-counter.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-counter.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-counter.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,69 @@
+%%
+%% This is file `zref-counter.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `counter')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-counter}%
+ [2019/11/29 v2.28 Module counter for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\zref at newprop{counter}{}
+\zref at addprop\ZREF at mainlist{counter}
+\AtBeginDocument{%
+ \ZREF at patch{refstepcounter}{%
+ \def\refstepcounter#1{%
+ \zref at setcurrent{counter}{#1}%
+ \ZREF at org@refstepcounter{#1}%
+ }%
+ }%
+}
+\endinput
+%%
+%% End of file `zref-counter.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-counter.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-dotfill.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-dotfill.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-dotfill.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,104 @@
+%%
+%% This is file `zref-dotfill.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `dotfill')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-dotfill}%
+ [2019/11/29 v2.28 Module dotfill for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\RequirePackage{zref-savepos}[2019/11/29]
+\zref at require@unique
+\RequirePackage{keyval}
+\define at key{ZREF at DF}{unit}{%
+ \def\ZREF at df@unit{#1}%
+}
+\define at key{ZREF at DF}{min}{%
+ \def\ZREF at df@min{#1}%
+}
+\define at key{ZREF at DF}{dot}{%
+ \def\ZREF at df@dot{#1}%
+}
+\providecommand\ZREF at df@min{2}
+\providecommand\ZREF at df@unit{.44em}
+\providecommand\ZREF at df@dot{.}
+\newcommand*{\zdotfillsetup}{\kvsetkeys{ZREF at DF}}
+\ZREF at IfDefinable\zdotfill\def{%
+ {%
+ \leavevmode
+ \global\advance\c at zref@unique\ltx at one
+ \begingroup
+ \def\ZREF at temp{zref@\number\c at zref@unique}%
+ \pdfsavepos
+ \zref at labelbyprops{\thezref at unique L}{posx}%
+ \setlength{\dimen@}{\ZREF at df@unit}%
+ \zref at ifrefundefined{\thezref at unique R}{%
+ \ZREF at dotfill
+ }{%
+ \ifnum\numexpr\zposx{\thezref at unique R}%
+ -\zposx{\thezref at unique L}\relax
+ <\dimexpr\ZREF at df@min\dimen@\relax
+ \hfill
+ \else
+ \ZREF at dotfill
+ \fi
+ }%
+ \pdfsavepos
+ \zref at labelbyprops{\thezref at unique R}{posx}%
+ \endgroup
+ \kern\z@
+ }%
+}
+\def\ZREF at dotfill{%
+ \cleaders\hb at xt@\dimen@{\hss\ZREF at df@dot\hss}\hfill
+}
+\endinput
+%%
+%% End of file `zref-dotfill.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-dotfill.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-env.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-env.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-env.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,69 @@
+%%
+%% This is file `zref-env.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `env')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-env}%
+ [2019/11/29 v2.28 Module env for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\zref at newprop{envname}[]{\@currenvir}
+\zref at newprop{envline}[]{\zref at env@line}
+\def\zref at env@line{%
+ \ifx\@currenvline\ltx at empty
+ \else
+ \expandafter
+ \ZREF at ENV@line\@currenvline\ltx at empty line \ltx at empty\@nil
+ \fi
+}
+\def\ZREF at ENV@line#1line #2\ltx at empty#3\@nil{#2}%
+\endinput
+%%
+%% End of file `zref-env.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-env.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-hyperref.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-hyperref.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-hyperref.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,61 @@
+%%
+%% This is file `zref-hyperref.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `hyperref')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-hyperref}%
+ [2019/11/29 v2.28 Module hyperref for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\ZREF at NewPropAnchor
+\zref at addprop\ZREF at mainlist{anchor}%
+\endinput
+%%
+%% End of file `zref-hyperref.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-hyperref.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-lastpage.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-lastpage.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-lastpage.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,92 @@
+%%
+%% This is file `zref-lastpage.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `lastpage')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-lastpage}%
+ [2019/11/29 v2.28 Module lastpage for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\RequirePackage{zref-abspage}[2019/11/29]
+\RequirePackage{atveryend}[2009/12/07]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\zref at newlist{LastPage}
+\AfterLastShipout{%
+ \if at filesw
+ \begingroup
+ \advance\c at page\m at ne
+ \toks@\expandafter\expandafter\expandafter{%
+ \expandafter\Z at L@main
+ \Z at L@LastPage
+ }%
+ \expandafter\zref at wrapper@immediate\expandafter{%
+ \expandafter\ZREF at label\expandafter{\the\toks@}{LastPage}%
+ }%
+ \endgroup
+ \fi
+}
+\def\zref at iflastpage#1{%
+ \ifnum\zref at extractdefault{#1}{abspage}{-1}=%
+ \zref at extractdefault{LastPage}{abspage}{-2} %
+ \expandafter\ltx at firstoftwo
+ \else
+ \expandafter\ltx at secondoftwo
+ \fi
+}
+\ZREF at IfDefinable\ziflastpage\def{%
+ {\zref at wrapper@babel\ZREF at iflastpage}%
+}
+\def\ZREF at iflastpage#1{%
+ \zref at refused{LastPage}%
+ \zref at refused{#1}%
+ \zref at iflastpage{#1}%
+}
+\endinput
+%%
+%% End of file `zref-lastpage.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-lastpage.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-marks.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-marks.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-marks.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,142 @@
+%%
+%% This is file `zref-marks.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `marks')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-marks}%
+ [2019/11/29 v2.28 Module marks for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\newcommand*{\zref at marks@register}[3][]{%
+ \edef\ZREF at TempName{#1}%
+ \edef\ZREF at TempNum{\ZREF at number{#2}}%
+ \ifnum\ZREF at TempNum<\ltx at zero %
+ \PackageError\ZREF at name{%
+ \string\zref at marks@register\ltx at space is called with invalid%
+ \MessageBreak
+ marks register number (\ZREF at TempNum)%
+ }{%
+ Use `0' or the command, defined by \string\newmarks.\MessageBreak
+ \@ehc
+ }%
+ \else
+ \ifx\ZREF at TempName\ltx at empty
+ \edef\ZREF at TempName{mark\romannumeral\ZREF at TempNum}%
+ \else
+ \edef\ZREF at TempName{marks\ZREF at TempName}%
+ \fi
+ \ZREF at MARKS@DefineProp{top}%
+ \ZREF at MARKS@DefineProp{first}%
+ \ZREF at MARKS@DefineProp{bot}%
+ \kv at parse{#3}{%
+ \ifx\kv at value\relax
+ \def\kv at value{top,first,bot}%
+ \fi
+ \edef\ZREF at temp{\expandafter\ltx at car\kv at key X\@nil}%
+ \ifx\ZREF at temp\ZREF at STAR
+ \edef\kv at key{\expandafter\ltx at cdr\kv at key\@nil}%
+ \zref at newlist\kv at key
+ \fi
+ \expandafter\comma at parse\expandafter{\kv at value}{%
+ \ifcase0\ifx\comma at entry\ZREF at NAME@top 1\else
+ \ifx\comma at entry\ZREF at NAME@first 1\else
+ \ifx\comma at entry\ZREF at NAME@bot 1\fi\fi\fi\ltx at space
+ \PackageWarning{zref-marks}{%
+ Use `top', `first' or `bot' for the list values%
+ \MessageBreak
+ in the third argument of \string\zref at marks@register.%
+ \MessageBreak
+ Ignoring unkown value `\comma at entry'%
+ }%
+ \else
+ \zref at addprop{\kv at key}{\comma at entry\ZREF at TempName}%
+ \fi
+ \ltx at gobble
+ }%
+ \ltx at gobbletwo
+ }%
+ \fi
+}
+\def\ZREF at STAR{*}
+\def\ZREF at NAME@top{top}
+\def\ZREF at NAME@first{first}
+\def\ZREF at NAME@bot{bot}
+\def\ZREF at MARKS@DefineProp#1{%
+ \zref at ifpropundefined{#1\ZREF at TempName}{%
+ \ifnum\ZREF at TempNum=\ltx at zero
+ \begingroup
+ \edef\x{\endgroup
+ \noexpand\zref at newprop*{#1\ZREF at TempName}[]{%
+ \expandafter\noexpand\csname#1mark\endcsname
+ }%
+ }%
+ \x
+ \else
+ \begingroup
+ \edef\x{\endgroup
+ \noexpand\zref at newprop*{#1\ZREF at TempName}[]{%
+ \expandafter\noexpand\csname#1marks\endcsname
+ \ZREF at TempNum
+ }%
+ }%
+ \x
+ \fi
+ }{%
+ \PackageWarning{zref-marks}{%
+ \string\zref at marks@register\ltx at space does not generate the%
+ \MessageBreak
+ new property `#1\ZREF at TempName', because\MessageBreak
+ it is already defined%
+ }%
+ }%
+}
+\endinput
+%%
+%% End of file `zref-marks.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-marks.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-nextpage.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-nextpage.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-nextpage.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,140 @@
+%%
+%% This is file `zref-nextpage.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `nextpage')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-nextpage}%
+ [2019/11/29 v2.28 Module nextpage for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\RequirePackage{zref-abspage}[2019/11/29]
+\RequirePackage{zref-thepage}[2019/11/29]
+\RequirePackage{zref-lastpage}[2019/11/29]
+\RequirePackage{uniquecounter}[2009/12/18]
+\UniqueCounterNew{znextpage}
+
+\newcommand*{\znextpagesetup}{%
+ \afterassignment\ZREF at np@setup at i
+ \def\ZREF at np@call at unknown##1%
+}
+\def\ZREF at np@setup at i{%
+ \afterassignment\ZREF at np@setup at ii
+ \def\ZREF at np@call at nonext##1%
+}
+\def\ZREF at np@setup at ii{%
+ \def\ZREF at np@call at next##1%
+}
+\def\ZREF at np@call at unknown#1{#1}
+\def\ZREF at np@call at nonext#1{#1}
+\def\ZREF at np@call at next#1{#1}
+\ZREF at IfDefinable\znextpage\def{%
+ {\UniqueCounterCall{znextpage}{\ZREF at nextpage}}%
+}%
+\newcommand*{\znonextpagename}{}
+\newcommand*{\zunknownnextpagename}{\Z at D@page}
+\def\ZREF at nextpage#1{%
+ \begingroup
+ \def\ZREF at refname@this{zref at np#1}%
+ \zref at labelbyprops\ZREF at refname@this{abspage}%
+ \chardef\ZREF at call=0 % unknown
+ \ZREF at ifrefundefined\ZREF at refname@this{%
+ }{%
+ \edef\ZREF at pagenum@this{%
+ \zref at extractdefault\ZREF at refname@this{abspage}{0}%
+ }%
+ \edef\ZREF at refname@next{%
+ \zref at thepage@name{%
+ \the\numexpr\ZREF at pagenum@this+1%
+ }%
+ }%
+ \ifnum\ZREF at pagenum@this>0 %
+ \ZREF at ifrefundefined{LastPage}{%
+ \zref at ifrefundefined\ZREF at refname@next{%
+ }{%
+ \chardef\ZREF at call=2 % next page
+ }%
+ }{%
+ \edef\ZREF at pagenum@last{%
+ \zref at extractdefault{LastPage}{abspage}{0}%
+ }%
+ \ifnum\ZREF at pagenum@this<\ZREF at pagenum@last\ltx at space
+ \ZREF at ifrefundefined\ZREF at refname@next{%
+ }{%
+ \chardef\ZREF at call=2 % next page
+ }%
+ \else
+ \ifnum\ZREF at pagenum@this=\ZREF at pagenum@this\ltx at space
+ \chardef\ZREF at call=1 % no next page
+ \fi
+ \fi
+ }%
+ \fi
+ }%
+ \edef\x{%
+ \endgroup
+ \ifcase\ZREF at call
+ \noexpand\ZREF at np@call at unknown{%
+ \noexpand\zunknownnextpagename
+ }%
+ \or
+ \noexpand\ZREF at np@call at nonext{%
+ \noexpand\znonextpagename
+ }%
+ \else
+ \noexpand\ZREF at np@call at next{%
+ \noexpand\zref at extract{\ZREF at refname@next}{page}%
+ }%
+ \fi
+ }%
+ \x
+}
+\endinput
+%%
+%% End of file `zref-nextpage.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-nextpage.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-pageattr.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-pageattr.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-pageattr.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,212 @@
+%%
+%% This is file `zref-pageattr.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `pageattr')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-pageattr}%
+ [2019/11/29 v2.28 Module pageattr for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\RequirePackage{iftex}[2019/11/07]%
+\ifluatex
+ \ifnum\luatexversion<39 %
+ \else
+ \begingroup
+ \escapechar=-1 %
+ \def\ZREF at temp#1{%
+ \ltx at IfUndefined{\string#1}{%
+ \let#1\ltx at undefined
+ \directlua{%
+ if tex.enableprimitives then %
+ tex.enableprimitives('', {'\string#1'})%
+ end%
+ }%
+ \ltx at ifundefined{\string#1}{%
+ }{%
+ \global#1=#1%
+ \@PackageInfoNoLine{zref-pageattr}{%
+ \string#1 enabled%
+ }%
+ }%
+ }{}%
+ }%
+ \ZREF at temp\pdfpageattr
+ \ZREF at temp\pdfpagesattr
+ \endgroup
+ \fi
+\fi
+\let\ZREF at temp=N%
+\ltx at IfUndefined{pdfpageattr}{%
+ \@PackageInfoNoLine{zref-pageattr}{%
+ \string\pdfpageattr\space is not available%
+ }%
+ \def\zref at pdfpageattr#1{}%
+ \def\zref at pdfpageattr@used#1{}%
+}{%
+ \RequirePackage{zref-thepage}[2019/11/29]%
+ \zref at newprop*{pdfpageattr}[]{\zref at hex{\the\pdfpageattr}}%
+ \zref at addprop{thepage}{pdfpageattr}%
+ \let\ZREF at temp=Y%
+}
+\ltx at IfUndefined{pdfpagesattr}{%
+ \@PackageInfoNoLine{zref-pageattr}{%
+ \string\pdfpagesattr\space is not available%
+ }%
+ \def\zref at pdfpagesattr{}%
+ \def\zref at pdfpagesattr@used{}%
+}{%
+ \RequirePackage{zref-lastpage}[2019/11/29]%
+ \zref at newprop*{pdfpagesattr}[]{\zref at hex{\the\pdfpagesattr}}%
+ \zref at addprop{LastPage}{pdfpagesattr}%
+ \let\ZREF at temp=Y%
+}%
+\ifx\ZREF at temp N%
+ \expandafter\endinput
+\fi
+\RequirePackage{zref-abspage}[2019/11/29]
+\RequirePackage{atveryend}[2010/03/24]
+\RequirePackage{pdftexcmds}[2010/04/01]
+\let\ZREF at temp=Y%
+\ltx at IfUndefined{pdf at escapehex}{\let\ZREF at temp=N}{}
+\ltx at IfUndefined{pdf at unescapehex}{\let\ZREF at temp=N}{}
+\ifx\ZREF at temp N%
+ \let\zref at hex\ltx at firstofone
+ \let\zref at unhex\ltx at firstofone
+\else
+ \let\zref at hex\pdf at escapehex
+ \let\zref at unhex\pdf at unescapehex
+\fi
+\ltx at newif\ifZREF at pa@list
+\ZREF at IfDefinable\zlistpageattr\def{%
+ {\ZREF at pa@listtrue}%
+}
+\def\ZREF at pa@AfterLastShipout{%
+ \ifZREF at pa@list
+ \edef\ZREF at page@max{\the\value{abspage}}%
+ \ltx at ifundefined{ZREF at org@testdef}{%
+ \let\ZREF at org@testdef\@testdef
+ \def\@testdef##1##2##3{%
+ \ZREF at org@testdef{##1}{##2}{##3}%
+ \def\ZREF at temp{##1}%
+ \ifx\ZREF at temp\ZREF at RefPrefix
+ \expandafter\xdef\csname##1@##2\endcsname{##3}%
+ \fi
+ }%
+ }{}%
+ \AtVeryEndDocument{\ZREF at pa@AtVeryEnd}%
+ \fi
+}
+\ltx at IfUndefined{pdfpageattr}{%
+ \def\ZREF at pa@AtVeryEnd{}%
+}{%
+ \def\ZREF at pa@AtVeryEnd{%
+ \begingroup
+ \toks@{List of \ltx at backslashchar pdfpageattr:\MessageBreak}%
+ \count@=1 %
+ \ZREF at pa@ListPage
+ \edef\x{\endgroup
+ \noexpand\@PackageInfoNoLine{zref-pageattr}{%
+ \the\toks@
+ }%
+ }%
+ \x
+ }%
+\def\zref at pageattr#1{%
+ \zref at unhex{%
+ \zref at extract{thepage\ZREF at number{#1}}{pdfpageattr}%
+ }%
+}
+\ZREF at Robust\def\zref at pageattr@used#1{%
+ \zref at refused{thepage\ZREF at number{#1}}%
+}
+ \def\ZREF at pa@ListPage{%
+ \edef\x{%
+ \toks@={%
+ \the\toks@
+ Page \the\count@:%
+ \noexpand\MessageBreak
+ \zref at ifrefundefined{thepage\the\count@}{}{%
+ <<\zref at pdfpageattr\count@>>%
+ \noexpand\MessageBreak
+ }%
+ }%
+ }\x
+ \ifnum\ZREF at page@max>\count@
+ \advance\count@ by\ltx at one
+ \else
+ \expandafter\ltx at gobble
+ \fi
+ \ZREF at pa@ListPage
+ }%
+}
+\ltx at IfUndefined{pdfpagesattr}{%
+}{%
+ \def\zref at pdfpagesattr{%
+ \zref at unhex{%
+ \zref at extract{LastPage}{pdfpagesattr}%
+ }%
+ }%
+ \ZREF at Robust\def\zref at pdfpagesattr@used{%
+ \zref at refused{LastPage}%
+ }%
+ \ltx at LocalAppendToMacro\ZREF at pa@AtVeryEnd{%
+ \@PackageInfoNoLine{zref-pageattr}{%
+ \ltx at backslashchar pdfpagesattr:\MessageBreak
+ <<\zref at pdfpagesattr>>%
+ \MessageBreak
+ }%
+ }%
+}
+\AfterLastShipout{%
+ \ZREF at pa@AfterLastShipout
+}
+\endinput
+%%
+%% End of file `zref-pageattr.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-pageattr.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-pagelayout.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-pagelayout.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-pagelayout.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,233 @@
+%%
+%% This is file `zref-pagelayout.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `pagelayout')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-pagelayout}%
+ [2019/11/29 v2.28 Module pagelayout for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\RequirePackage{zref-thepage}[2019/11/29]
+\RequirePackage{iftex}[2019/11/07]%
+\RequirePackage{atveryend}[2010/03/24]
+\ifluatex
+ \ifnum\luatexversion<39 %
+ \else
+ \begingroup
+ \escapechar=-1 %
+ \def\ZREF at temp#1{%
+ \ltx at IfUndefined{\string#1}{%
+ \let#1\ltx at undefined
+ \directlua{%
+ if tex.enableprimitives then %
+ tex.enableprimitives('', {'\string#1'})%
+ end%
+ }%
+ \ltx at ifundefined{\string#1}{%
+ }{%
+ \global#1=#1%
+ \@PackageInfoNoLine{zref-pagelayout}{%
+ \string#1 enabled%
+ }%
+ }%
+ }{}%
+ }%
+ \ZREF at temp\pdfpagewidth
+ \ZREF at temp\pdfpageheight
+ \ZREF at temp\pdfhorigin
+ \ZREF at temp\pdfvorigin
+ \endgroup
+ \fi
+\fi
+\def\ZREF at temp#1{%
+ \begingroup
+ \escapechar=-1 %
+ \ltx at ifundefined{\string#1}{\endgroup}{%
+ \edef\x{%
+ \endgroup
+ \noexpand\zref at newprop*{\string#1}%
+ [\noexpand\number\noexpand#1]% hash-ok
+ {\noexpand\number\noexpand#1}%
+ \noexpand\zref at addprop{thepage}{\string#1}%
+ }%
+ \x
+ }%
+}
+\ZREF at temp\mag
+\ZREF at temp\paperwidth
+\ZREF at temp\paperheight
+\ZREF at temp\stockwidth % memoir.cls, crop.sty
+\ZREF at temp\stockheight % memoir.cls, crop.sty
+\ZREF at temp\mediawidth % VTeX
+\ZREF at temp\mediaheight % VTeX
+\ZREF at temp\pdfpagewidth
+\ZREF at temp\pdfpageheight
+\ZREF at temp\pdfhorigin
+\ZREF at temp\pdfvorigin
+\ZREF at temp\hoffset
+\ZREF at temp\voffset
+\ZREF at temp\topmargin
+\ZREF at temp\oddsidemargin
+\ZREF at temp\evensidemargin
+\ZREF at temp\textwidth
+\ZREF at temp\textheight
+\ZREF at temp\headheight
+\ZREF at temp\headsep
+\ZREF at temp\footskip
+\ZREF at temp\marginparwidth
+\ZREF at temp\marginparsep
+\ZREF at temp\columnwidth
+\ZREF at temp\columnsep
+\ZREF at temp\trimedge % memoir.cls
+\ZREF at temp\spinemargin % memoir.cls
+\ZREF at temp\foremargin % memoir.cls
+\ZREF at temp\trimtop % memoir.cls
+\ZREF at temp\uppermargin % memoir.cls
+\ZREF at temp\headmargin % memoir.cls
+\zref at newprop*{outputboxwd}[0pt]{\AtBeginShipoutBoxWidth}
+\zref at newprop*{outputboxht}[0pt]{\AtBeginShipoutBoxHeight}
+\zref at newprop*{outputboxdp}[0pt]{\AtBeginShipoutBoxDepth}
+\zref at addprops{thepage}{outputboxwd,outputboxht,outputboxdp}
+\ltx at newif\ifZREF at pl@list
+\ZREF at IfDefinable\zlistpagelayout\def{%
+ {\global\ZREF at pl@listtrue}%
+}
+\def\ZREF at pl@AfterLastShipout{%
+ \ifZREF at pl@list
+ \edef\ZREF at page@max{\the\value{abspage}}%
+ \ltx at ifundefined{ZREF at org@testdef}{%
+ \let\ZREF at org@testdef\@testdef
+ \def\@testdef##1##2##3{%
+ \ZREF at org@testdef{##1}{##2}{##3}%
+ \def\ZREF at temp{##1}%
+ \ifx\ZREF at temp\ZREF at RefPrefix
+ \expandafter\gdef\csname##1@##2\endcsname{##3}%
+ \fi
+ }%
+ }{}%
+ \AtVeryEndDocument{\ZREF at pl@AtVeryEnd}%
+ \fi
+}
+\def\ZREF at pl@AtVeryEnd{%
+ \begingroup
+ \toks@{Page layout parameters:\MessageBreak}%
+ \count@=1 %
+ \ZREF at pl@ListPage
+ \edef\x{\endgroup
+ \noexpand\@PackageInfoNoLine{zref-pagelayout}{\the\toks@}%
+ }%
+ \x
+}
+\def\ZREF at pl@ListPage{%
+ \edef\x{%
+ \toks@={%
+ \the\toks@
+ Page \the\count@:\noexpand\MessageBreak
+ \zref at ifrefundefined{thepage\the\count@}{}{%
+ \ltx at space\ltx at space mag = %
+ \zref at extract{thepage\the\count@}{mag}%
+ \noexpand\MessageBreak
+ \ZREF at pl@ListEntry{paperwidth}%
+ \ZREF at pl@ListEntry{paperheight}%
+ \ZREF at pl@ListEntry{stockwidth}%
+ \ZREF at pl@ListEntry{stockheight}%
+ \ZREF at pl@ListEntry{mediawidth}%
+ \ZREF at pl@ListEntry{mediaheight}%
+ \ZREF at pl@ListEntry{pdfpagewidth}%
+ \ZREF at pl@ListEntry{pdfpageheight}%
+ \ZREF at pl@ListEntry{pdfhorigin}%
+ \ZREF at pl@ListEntry{pdfvorigin}%
+ \ZREF at pl@ListEntry{hoffset}%
+ \ZREF at pl@ListEntry{voffset}%
+ \ZREF at pl@ListEntry{topmargin}%
+ \ZREF at pl@ListEntry{oddsidemargin}%
+ \ZREF at pl@ListEntry{evensidemargin}%
+ \ZREF at pl@ListEntry{textwidth}%
+ \ZREF at pl@ListEntry{textheight}%
+ \ZREF at pl@ListEntry{headheight}%
+ \ZREF at pl@ListEntry{headsep}%
+ \ZREF at pl@ListEntry{footskip}%
+ \ZREF at pl@ListEntry{marginparwidth}%
+ \ZREF at pl@ListEntry{marginparsep}%
+ \ZREF at pl@ListEntry{columnwidth}%
+ \ZREF at pl@ListEntry{columnsep}%
+ \ZREF at pl@ListEntry{trimedge}%
+ \ZREF at pl@ListEntry{spinemargin}%
+ \ZREF at pl@ListEntry{foremargin}%
+ \ZREF at pl@ListEntry{trimtop}%
+ \ZREF at pl@ListEntry{uppermargin}%
+ \ZREF at pl@ListEntry{headmargin}%
+ }%
+ }%
+ }\x
+ \ifnum\ZREF at page@max>\count@
+ \advance\count@ by\ltx at one
+ \else
+ \expandafter\ltx at gobble
+ \fi
+ \ZREF at pl@ListPage
+}
+\def\ZREF at pl@ListEntry#1{%
+ \zref at ifpropundefined{#1}{%
+ }{%
+ \zref at ifrefcontainsprop{thepage\the\count@}{#1}{%
+ \ltx at space\ltx at space#1 = %
+ \zref at extract{thepage\the\count@}{#1}sp = %
+ \the\dimexpr\zref at extract{thepage\the\count@}{#1}sp\relax
+ \noexpand\MessageBreak
+ }{}%
+ }%
+}
+\AfterLastShipout{%
+ \ZREF at pl@AfterLastShipout
+}
+\endinput
+%%
+%% End of file `zref-pagelayout.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-pagelayout.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-perpage.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-perpage.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-perpage.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,143 @@
+%%
+%% This is file `zref-perpage.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `perpage')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-perpage}%
+ [2019/11/29 v2.28 Module perpage for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\RequirePackage{zref-abspage}[2019/11/29]
+\ZREF at NewPropPageValue
+\zref at newlist{perpage}
+\zref at addprops{perpage}{abspage,page,pagevalue}
+\newcounter{zpage}
+\zref at require@unique
+\let\ZREF at org@stepcounter\stepcounter
+\def\stepcounter#1{%
+ \ifcsname @stepcounterhook@#1\endcsname
+ \csname @stepcounterhook@#1\endcsname
+ \fi
+ \ZREF at org@stepcounter{#1}%
+}
+\let\ZREF at org@@stpelt\@stpelt
+\def\@stpelt#1{%
+ \ifcsname ZREF at perpage@#1\endcsname
+ \begingroup
+ \let\stepcounter\ZREF at org@stepcounter
+ \ZREF at org@@stpelt{#1}%
+ \endgroup
+ \expandafter\ltx at gobbletwo
+ \fi
+ \ZREF at org@@stpelt{#1}%
+}
+\ZREF at IfDefinable\zmakeperpage\def{%
+ {%
+ \@ifnextchar[\ZREF at makeperpage@opt{\ZREF@@makeperpage[\ltx at zero]}%
+ }%
+}
+\def\ZREF at makeperpage@opt[#1]{%
+ \begingroup
+ \edef\x{\endgroup
+ \noexpand\ZREF@@makeperpage[\number\numexpr#1-1\relax]%
+ }%
+ \x
+}
+\def\ZREF@@makeperpage[#1]#2{%
+ \@ifundefined{@stepcounterhook@#2}{%
+ \expandafter\gdef\csname @stepcounterhook@#2\endcsname{}%
+ }{}%
+ \expandafter\gdef\csname ZREF at perpage@#2\endcsname{%
+ \ZREF@@perpage at step{#2}{#1}%
+ }%
+ \expandafter\g at addto@macro\csname @stepcounterhook@#2\endcsname{%
+ \ifcsname ZREF at perpage@#2\endcsname
+ \csname ZREF at perpage@#2\endcsname
+ \fi
+ }%
+}
+\def\ZREF@@perpage at step#1#2{%
+ \global\advance\c at zref@unique\ltx at one
+ \begingroup
+ \expandafter
+ \zref at labelbylist\expandafter{\thezref at unique}{perpage}%
+ \zref at ifrefundefined\thezref at unique{%
+ \global\c at zpage=\c at page
+ \global\let\thezpage\thepage
+ \expandafter\xdef\csname ZREF at abspage@#1\endcsname{%
+ \number\c at abspage
+ }%
+ }{%
+ \global\c at zpage=\zref at extract\thezref at unique{pagevalue}\relax
+ \xdef\thezpage{\noexpand\zref at extract{\thezref at unique}{page}}%
+ \expandafter\xdef\csname ZREF at abspage@#1\endcsname{%
+ \zref at extractdefault\thezref at unique
+ {abspage}{\number\c at abspage}%
+ }%
+ }%
+ \expandafter\ifx\csname ZREF at abspage@#1\expandafter\endcsname
+ \csname ZREF at currentabspage@#1\endcsname
+ \else
+ \global\csname c@#1\endcsname=#2\relax
+ \global\expandafter\let
+ \csname ZREF at currentabspage@#1\expandafter\endcsname
+ \csname ZREF at abspage@#1\endcsname
+ \fi
+ \endgroup
+}
+\ZREF at IfDefinable\zunmakeperpage\def{%
+ #1{%
+ \global\expandafter
+ \let\csname ZREF at perpage@#1\endcsname\@undefined
+ }%
+}
+\endinput
+%%
+%% End of file `zref-perpage.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-perpage.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-runs.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-runs.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-runs.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,67 @@
+%%
+%% This is file `zref-runs.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `runs')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-runs}%
+ [2019/11/29 v2.28 Module runs for zref (HO)]%
+\providecommand*{\zruns}{0}%
+\AtBeginDocument{%
+ \edef\zruns{\number\numexpr\zruns+1}%
+ \begingroup
+ \def\on at line{}%
+ \PackageInfo{zref-runs}{LaTeX runs: \zruns}%
+ \if at filesw
+ \immediate\write\@mainaux{%
+ \string\gdef\string\zruns{\zruns}%
+ }%
+ \fi
+ \endgroup
+}
+\endinput
+%%
+%% End of file `zref-runs.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-runs.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-savepos.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-savepos.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-savepos.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,132 @@
+%%
+%% This is file `zref-savepos.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `savepos')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-savepos}%
+ [2019/11/29 v2.28 Module savepos for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\ifx\pdfsavepos\@undefined
+ \let\pdfsavepos \savepos
+ \let\pdflastxpos \lastxpos
+ \let\pdflastypos \lastypos
+\fi
+\ltx at IfUndefined{pdfsavepos}{%
+ \PackageError\ZREF at name{%
+ \string\pdfsavepos\space is not supported.\MessageBreak
+ It is provided by pdfTeX (1.40) or XeTeX%
+ }\ZREF at UpdatePdfTeX
+ \endinput
+}{}%
+\RequirePackage{ifpdf}
+\ifpdf
+\else
+ \ltx at IfUndefined{pdftexversion}{%
+ }{%
+ \ifnum\pdftexversion<140 %
+ \PackageError\ZREF at name{%
+ \string\pdfsavepos\space is not supported in DVI mode%
+ \MessageBreak
+ of this pdfTeX version%
+ }\ZREF at UpdatePdfTeX
+ \expandafter\expandafter\expandafter\endinput
+ \fi
+ }%
+\fi
+\zref at newlist{savepos}
+\zref at newprop*{posx}[0]{\the\pdflastxpos}
+\zref at newprop*{posy}[0]{\the\pdflastypos}
+\zref at addprops{savepos}{posx,posy}
+\def\zref at savepos{%
+ \if at filesw
+ \pdfsavepos
+ \fi
+}
+\def\ZREF at zsavepos#1#2#3{%
+ \@bsphack
+ \if at filesw
+ \zref at savepos
+ #1{#3}{#2}%
+ \ltx at IfUndefined{TeXXeTstate}{%
+ }{%
+ \ifnum\TeXXeTstate=\ltx at zero
+ \else
+ \zref at savepos
+ \fi
+ }%
+ \fi
+ \@esphack
+}
+\ZREF at IfDefinable\zsavepos\def{%
+ {%
+ \ZREF at zsavepos\zref at labelbylist{savepos}%
+ }%
+}
+\ZREF at IfDefinable\zsaveposx\def{%
+ {%
+ \ZREF at zsavepos\zref at labelbyprops{posx}%
+ }%
+}
+\ZREF at IfDefinable\zsaveposy\def{%
+ {%
+ \ZREF at zsavepos\zref at labelbyprops{posy}%
+ }%
+}
+\newcommand*{\zposx}[1]{%
+ \zref at extract{#1}{posx}%
+}%
+\newcommand*{\zposy}[1]{%
+ \zref at extract{#1}{posy}%
+}%
+\let\ZREF at savepos@ok=Y
+\endinput
+%%
+%% End of file `zref-savepos.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-savepos.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-thepage.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-thepage.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-thepage.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,89 @@
+%%
+%% This is file `zref-thepage.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `thepage')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-thepage}%
+ [2019/11/29 v2.28 Module thepage for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\RequirePackage{atbegshi}[2011/10/05]
+\RequirePackage{zref-abspage}[2019/11/29]
+\zref at newlist{thepage}
+\zref at addprop{thepage}{page}
+\ZREF at NewPropPageValue
+\let\zref at thepage@atbegshi at hook\ltx at empty
+\zref at addprop{thepage}{pagevalue}
+\AtBeginShipout{%
+ \AtBeginShipoutAddToBox{%
+ \zref at thepage@atbegshi at hook
+ \zref at labelbylist{thepage\the\value{abspage}}{thepage}%
+ }%
+}
+\ltx at IfUndefined{numexpr}{%
+ \def\zref at thepage@name#1{thepage\number#1}%
+}{%
+ \def\zref at thepage@name#1{thepage\the\numexpr#1}%
+}
+\def\zref at thepage#1{%
+ \zref at extract{\zref at thepage@name{#1}}{page}%
+}%
+\ZREF at Robust\def\zref at thepage@refused#1{%
+ \zref at refused{\zref at thepage@name{#1}}%
+}%
+\ZREF at IfDefinable\zthepage\def{%
+ #1{%
+ \zref at thepage@refused{#1}%
+ \zref at thepage{#1}%
+ }%
+}
+\endinput
+%%
+%% End of file `zref-thepage.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-thepage.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-titleref.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-titleref.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-titleref.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,293 @@
+%%
+%% This is file `zref-titleref.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `titleref')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-titleref}%
+ [2019/11/29 v2.28 Module titleref for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\RequirePackage{gettitlestring}[2009/12/08]
+\RequirePackage{keyval}
+\ZREF at NewPropTitle
+\zref at addprop\ZREF at mainlist{title}%
+\newif\ifzref at titleref@expand
+\let\ZREF at titleref@hook\ltx at empty
+\ZREF at Robust\def\zref at titleref@cleanup#1{%
+ \begingroup
+ \toks@\expandafter{%
+ \ZREF at titleref@hook
+ #1%
+ }%
+ \expandafter\endgroup
+ \expandafter\def\expandafter\ZREF at titleref@hook\expandafter{%
+ \the\toks@
+ }%
+}%
+\newif\ifzref at titleref@stripperiod
+\zref at titleref@stripperiodtrue
+\ZREF at Robust\def\zref at titleref@setcurrent#1{%
+ \ifzref at titleref@expand
+ \GetTitleStringExpand{#1}%
+ \else
+ \GetTitleStringNonExpand{#1}%
+ \fi
+ \edef\zref at titleref@current{%
+ \detokenize\expandafter{\GetTitleStringResult}%
+ }%
+ \ifzref at titleref@stripperiod
+ \edef\zref at titleref@current{%
+ \expandafter\ZREF at stripperiod\zref at titleref@current
+ \ltx at empty.\ltx at empty\@nil
+ }%
+ \fi
+}%
+\GetTitleStringDisableCommands{%
+ \ZREF at titleref@hook
+}
+\def\ZREF at stripperiod#1.\ltx at empty#2\@nil{#1}%
+\define at key{ZREF at TR}{expand}[true]{%
+ \csname zref at titleref@expand#1\endcsname
+}%
+\define at key{ZREF at TR}{stripperiod}[true]{%
+ \csname zref at titleref@stripperiod#1\endcsname
+}%
+\define at key{ZREF at TR}{cleanup}{%
+ \zref at titleref@cleanup{#1}%
+}%
+\define at key{ZREF at TR}{title}{%
+ \def\zref at titleref@current{#1}%
+}%
+\ZREF at IfDefinable\ztitlerefsetup\def{%
+ {\kvsetkeys{ZREF at TR}}%
+}%
+\ZREF at IfDefinable\ztitleref\def{%
+ {\zref at wrapper@babel\ZREF at titleref}%
+}%
+\def\ZREF at titleref#1{%
+ \begingroup
+ \zref at refused{#1}%
+ \let\label\ltx at gobble
+ \zref at extract{#1}{title}%
+ \endgroup
+}%
+\AtBeginDocument{%
+ \ZREF at patch{@caption}{%
+ \long\def\@caption#1[#2]{%
+ \zref at titleref@setcurrent{#2}%
+ \ZREF at org@@caption{#1}[{#2}]%
+ }%
+ }%
+ \ZREF at patch{@part}{%
+ \def\@part[#1]{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@@part[{#1}]%
+ }%
+ }%
+ \ZREF at patch{@chapter}{%
+ \def\@chapter[#1]{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@@chapter[{#1}]%
+ }%
+ }%
+ \ZREF at patch{@sect}{%
+ \def\@sect#1#2#3#4#5#6[#7]{%
+ \zref at titleref@setcurrent{#7}%
+ \ZREF at org@@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]%
+ }%
+ }%
+ \ZREF at patch{@spart}{%
+ \def\@spart#1{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@@spart{#1}%
+ }%
+ }%
+ \ZREF at patch{@schapter}{%
+ \def\@schapter#1{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@@schapter{#1}%
+ }%
+ }%
+ \ZREF at patch{@ssect}{%
+ \def\@ssect#1#2#3#4#5{%
+ \zref at titleref@setcurrent{#5}%
+ \ZREF at org@@ssect{#1}{#2}{#3}{#4}{#5}%
+ }%
+ }%
+ \ZREF at patch{descriptionlabel}{%
+ \def\descriptionlabel#1{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@descriptionlabel{#1}%
+ }%
+ }%
+ \@ifclassloaded{memoir}{%
+ \ltx at IfUndefined{ifheadnameref}{}{%
+ \def\@chapter[#1]#2{%
+ \ltx at IfUndefined{ch at pt@c}{%
+ \zref at titleref@setcurrent{#1}%
+ }{%
+ \ifx\ch at pt@c\ltx at empty
+ \zref at titleref@setcurrent{#2}%
+ \else
+ \def\NR at temp{#1}%
+ \ifx\NR at temp\ltx at empty
+ \expandafter\zref at titleref@setcurrent
+ \expandafter{\ch at pt@c}%
+ \else
+ \ifheadnameref
+ \zref at titleref@setcurrent{#1}%
+ \else
+ \expandafter\zref at titleref@setcurrent
+ \expandafter{\ch at pt@c}%
+ \fi
+ \fi
+ \fi
+ }%
+ \ZREF at org@@chapter[{#1}]{#2}%
+ }%
+ \ZREF at patch{M at sect}{%
+ \def\M at sect#1#2#3#4#5#6[#7][#8]{%
+ \ifheadnameref
+ \zref at titleref@setcurrent{#8}%
+ \else
+ \zref at titleref@setcurrent{#7}%
+ \fi
+ \ZREF at org@M at sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}][{#8}]%
+ }%
+ }%
+ }%
+ }{}%
+ \@ifclassloaded{beamer}{%
+ \ZREF at patch{beamer at section}{%
+ \long\def\beamer at section[#1]{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@beamer at section[{#1}]%
+ }%
+ }%
+ \ZREF at patch{beamer at subsection}{%
+ \long\def\beamer at subsection[#1]{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@beamer at subsection[{#1}]%
+ }%
+ }%
+ \ZREF at patch{beamer at subsubsection}{%
+ \long\def\beamer at subsubsection[#1]{%
+ \zref at titleref@setcurrent{#1}%
+ \ZREF at org@beamer at subsubsection[{#1}]%
+ }%
+ }%
+ }{}%
+ \@ifpackageloaded{titlesec}{%
+ \ZREF at patch{ttl at sect@i}{%
+ \def\ttl at sect@i#1#2[#3]#4{%
+ \zref at titleref@setcurrent{#4}%
+ \ZREF at org@ttl at sect@i{#1}{#2}[{#3}]{#4}%
+ }%
+ }%
+ \ZREF at patch{ttl at straight@i}{%
+ \def\ttl at straight@i#1[#2]#3{%
+ \def\ZREF at temp{#2}%
+ \ifx\ZREF at temp\ltx at empty
+ \zref at titleref@setcurrent{#3}%
+ \else
+ \zref at titleref@setcurrent{#2}%
+ \fi
+ \ZREF at org@ttl at straight@i{#1}[{#2}]{#3}%
+ }%
+ }%
+ }{}%
+ \@ifpackageloaded{longtable}{%
+ \ZREF at patch{LT at c@ption}{%
+ \def\LT at c@ption#1[#2]#3{%
+ \ZREF at org@LT at c@ption{#1}[{#2}]{#3}%
+ \zref at titleref@setcurrent{#2}%
+ }%
+ }%
+ }{}%
+ \@ifpackageloaded{listings}{%
+ \ZREF at patch{lst at MakeCaption}{%
+ \def\lst at MakeCaption{%
+ \ifx\lst at label\ltx at empty
+ \else
+ \expandafter\zref at titleref@setcurrent\expandafter{%
+ \lst@@caption
+ }%
+ \fi
+ \ZREF at org@lst at MakeCaption
+ }%
+ }%
+ }{}%
+ \ZREF at patch{@opargbegintheorem}{%
+ \def\@opargbegintheorem#1#2#3{%
+ \zref at titleref@setcurrent{#3}%
+ \ZREF at org@@opargbegintheorem{#1}{#2}{#3}%
+ }%
+ }%
+ \@ifpackageloaded{amsthm}{%
+ \begingroup
+ \edef\x{macro:\string#1\string#2[\string#3]}%
+ \@onelevel at sanitize\x
+ \def\y#1->#2\@nil{#1}%
+ \edef\z{\expandafter\y\meaning\@begintheorem->\@nil}%
+ \@onelevel at sanitize\z
+ \expandafter\endgroup
+ \ifx\x\z
+ \ZREF at patch{@begintheorem}{%
+ \def\@begintheorem#1#2[#3]{%
+ \zref at titleref@setcurrent{#3}%
+ \ZREF at org@@begintheorem{#1}{#2}[{#3}]%
+ }%
+ }%
+ \fi
+ }{}%
+}
+\endinput
+%%
+%% End of file `zref-titleref.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-titleref.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-totpages.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-totpages.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-totpages.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,67 @@
+%%
+%% This is file `zref-totpages.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `totpages')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-totpages}%
+ [2019/11/29 v2.28 Module totpages for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\RequirePackage{zref-abspage}[2019/11/29]
+\RequirePackage{zref-lastpage}[2019/11/29]
+\newcommand*{\ztotpages}{%
+ \zref at extractdefault{LastPage}{abspage}{0}%
+}
+\AtBeginDocument{%
+ \zref at refused{LastPage}%
+}
+\endinput
+%%
+%% End of file `zref-totpages.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-totpages.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-user.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-user.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-user.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,87 @@
+%%
+%% This is file `zref-user.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `user')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-user}%
+ [2019/11/29 v2.28 Module user for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\newcommand*\zlabel{%
+ \ifx\label\ltx at gobble
+ \expandafter\ltx at gobble
+ \else
+ \expandafter\zref at wrapper@babel\expandafter\zref at label
+ \fi
+}%
+\newcommand*{\zkvlabel}[1]{%
+ \ifx\label\ltx at gobble
+ \expandafter\ltx at gobblethree
+ \fi
+ \zref at wrapper@babel{\zref at labelbykv{#1}}%
+}%
+\newcommand*{\zref}[2][default]{% robust because of optional argument
+ \zref at propexists{#1}{%
+ \zref at wrapper@babel\ZREF at zref{#2}{#1}%
+ }%
+}%
+\def\ZREF at zref#1{%
+ \zref at refused{#1}%
+ \zref at extract{#1}%
+}%
+\ZREF at IfDefinable\zpageref\def{%
+ {\zref[page]}%
+}
+\ZREF at IfDefinable\zrefused\def{%
+ {\zref at refused}%
+}
+\endinput
+%%
+%% End of file `zref-user.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-user.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref-xr.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref-xr.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref-xr.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,452 @@
+%%
+%% This is file `zref-xr.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `xr')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref-xr}%
+ [2019/11/29 v2.28 Module xr for zref (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\ifx\ZREF at base@ok Y%
+\else
+ \expandafter\endinput
+\fi
+\RequirePackage{keyval}
+\RequirePackage{kvoptions}[2010/02/22]
+\zref at newprop{url}{}%
+\zref at newprop{urluse}{}%
+\zref at newprop{externaldocument}{}%
+\providecommand*{\zref at xr@ext}{%
+ \ltx at ifundefined{XR at ext}{pdf}{\XR at ext}%
+}%
+\newif\ifZREF at xr@zreflabel
+\SetupKeyvalOptions{%
+ family=ZREF at XR,%
+ prefix=ZREF at xr@%
+}
+\DeclareBoolOption[true]{tozreflabel}
+\DeclareBoolOption[false]{toltxlabel}
+\DeclareBoolOption{verbose}
+\define at key{ZREF at XR}{ext}{%
+ \def\zref at xr@{#1}%
+}
+\DeclareBoolOption[false]{urluse}
+\newcommand*{\zxrsetup}{%
+ \kvsetkeys{ZREF at XR}%
+}%
+\newcount\ZREF at xr@URL
+\ZREF at xr@URL=\ltx at zero
+\def\ZREF at xr@AddURL#1{%
+ \begingroup
+ \def\ZREF at temp{#1}%
+ \count@=\ltx at one
+ \ZREF at xr@@AddUrl
+ \endgroup
+}
+\def\ZREF at xr@@AddUrl{%
+ \ifnum\count@>\ZREF at xr@URL
+ \global\advance\ZREF at xr@URL by\ltx at one
+ \xdef\ZREF at xr@theURL{\romannumeral\ZREF at xr@URL}%
+ \global\expandafter\let
+ \csname Z at U@\ZREF at xr@theURL\endcsname\ZREF at temp
+ \@PackageInfo{zref-xr}{%
+ \ltx at backslashchar Z at U@\ZREF at xr@theURL:\MessageBreak
+ \ZREF at temp\MessageBreak
+ }%
+ \else
+ \expandafter
+ \ifx\csname Z at U@\romannumeral\count@\endcsname\ZREF at temp
+ \xdef\ZREF at xr@theURL{\romannumeral\count@}%
+ \else
+ \expandafter\expandafter\expandafter\ZREF at xr@@AddUrl
+ \fi
+ \fi
+}
+\ZREF at IfDefinable\zexternaldocument\def{%
+ {%
+ \ZREF at NewPropAnchor
+ \ZREF at NewPropTitle
+ \begingroup
+ \csname @safe at actives@true\endcsname
+ \makeatletter
+ \@ifstar{%
+ \ZREF at xr@zreflabelfalse
+ \@testopt\ZREF at xr@externaldocument{}%
+ }{%
+ \ZREF at xr@zreflabeltrue
+ \@testopt\ZREF at xr@externaldocument{}%
+ }%
+ }%
+}%
+\def\ZREF at xr@externaldocument[#1]#2{%
+ \def\ZREF at xr@prefix{#1}%
+ \let\ZREF at xr@filelist\ltx at empty
+ \edef\ZREF at xr@externalfile{#2}%
+ \edef\ZREF at xr@file{\ZREF at xr@externalfile.aux}%
+ \filename at parse{#2}%
+ \@testopt\ZREF at xr@graburl{#2.\zref at xr@ext}%
+}%
+\def\ZREF at xr@graburl[#1]{%
+ \edef\ZREF at xr@url{#1}%
+ \ifZREF at xr@urluse
+ \expandafter\ZREF at xr@AddURL\expandafter{\ZREF at xr@url}%
+ \expandafter\def\expandafter\ZREF at xr@url
+ \expandafter{\csname Z at U@\ZREF at xr@theURL\endcsname}%
+ \fi
+ \ZREF at xr@checkfile
+ \endgroup
+}%
+\def\ZREF at xr@checkfile{%
+ \openin\@inputcheck\ZREF at xr@file\relax
+ \ifeof\@inputcheck
+ \PackageWarning{zref-xr}{%
+ File `\ZREF at xr@file' not found or empty,\MessageBreak
+ labels not imported%
+ }%
+ \else
+ \PackageInfo{zref-xr}{%
+ Label \ifZREF at xr@zreflabel (zref) \fi
+ import from `\ZREF at xr@file'%
+ }%
+ \def\ZREF at xr@found{0}%
+ \def\ZREF at xr@ignored at empty{0}%
+ \def\ZREF at xr@ignored at zref{0}%
+ \def\ZREF at xr@ignored at ltx{0}%
+ \ZREF at xr@processfile
+ \closein\@inputcheck
+ \begingroup
+ \let\on at line\ltx at empty
+ \PackageInfo{zref-xr}{%
+ Statistics for `\ZREF at xr@file':\MessageBreak
+ \ZREF at xr@found\space
+ \ifZREF at xr@zreflabel zref\else LaTeX\fi\space
+ label(s) found%
+ \ifnum\ZREF at xr@ignored at empty>0 %
+ ,\MessageBreak
+ \ZREF at xr@ignored at empty\space empty label(s) ignored%
+ \fi
+ \ifnum\ZREF at xr@ignored at zref>0 %
+ ,\MessageBreak
+ \ZREF at xr@ignored at zref\space
+ duplicated zref label(s) ignored%
+ \fi
+ \ifnum\ZREF at xr@ignored at ltx>0 %
+ ,\MessageBreak
+ \ZREF at xr@ignored at ltx\space
+ duplicated latex label(s) ignored%
+ \fi
+ }%
+ \endgroup
+ \fi
+ \ifx\ZREF at xr@filelist\ltx at empty
+ \else
+ \edef\ZREF at xr@file{%
+ \expandafter\ltx at car\ZREF at xr@filelist\@nil
+ }%
+ \edef\ZREF at xr@filelist{%
+ \expandafter\ltx at cdr\ZREF at xr@filelist\ltx at empty\@nil
+ }%
+ \expandafter\ZREF at xr@checkfile
+ \fi
+}%
+\def\ZREF at xr@processfile{%
+ \read\@inputcheck to\ZREF at xr@line
+ \expandafter\ZREF at xr@processline\ZREF at xr@line..\ZREF at nil
+ \ifeof\@inputcheck
+ \else
+ \expandafter\ZREF at xr@processfile
+ \fi
+}%
+\long\def\ZREF at xr@processline#1#2#3\ZREF at nil{%
+ \def\x{#1}%
+ \toks@{#2}%
+ \ifZREF at xr@zreflabel
+ \ifx\x\ZREF at xr@zref at newlabel
+ \expandafter
+ \ZREF at xr@process at zreflabel\ZREF at xr@line...\ZREF at nil
+ \fi
+ \else
+ \ifx\x\ZREF at xr@newlabel
+ \expandafter
+ \ZREF at xr@process at label\ZREF at xr@line...[]\ZREF at nil
+ \fi
+ \fi
+ \ifx\x\ZREF at xr@@input
+ \edef\ZREF at xr@filelist{%
+ \etex at unexpanded\expandafter{\ZREF at xr@filelist}%
+ {\filename at area\the\toks@}%
+ }%
+ \fi
+}%
+\def\ZREF at xr@process at zreflabel\zref at newlabel#1#2#3\ZREF at nil{%
+ \edef\ZREF at xr@refname{Z at R@\ZREF at xr@prefix#1}%
+ \edef\ZREF at xr@found{\the\numexpr\ZREF at xr@found+1\relax}%
+ \def\x{#2}%
+ \edef\ZREF at xr@tempname{$temp$}%
+ \edef\ZREF at xr@temprefname{Z at R@\ZREF at xr@tempname}%
+ \let\ZREF at xr@list\x
+ \ifx\ZREF at xr@list\ltx at empty
+ \PackageWarningNoLine{zref-xr}{%
+ Label `#1' without properties ignored\MessageBreak
+ in file `\ZREF at xr@file'%
+ }%
+ \edef\ZREF at xr@ignored at empty{%
+ \the\numexpr\ZREF at xr@ignored at empty+1\relax
+ }%
+ \else
+ \expandafter\ZREF at xr@checklist\x\ZREF at nil
+ \expandafter\let\csname\ZREF at xr@temprefname\endcsname\x
+ \expandafter\ltx at LocalAppendToMacro
+ \csname\ZREF at xr@temprefname\expandafter\endcsname
+ \expandafter{%
+ \expandafter\externaldocument\expandafter{%
+ \ZREF at xr@externalfile
+ }%
+ }%
+ \ZREF at xr@urlcheck\ZREF at xr@tempname
+ \ifZREF at xr@tozreflabel
+ \@ifundefined{\ZREF at xr@refname}{%
+ \ifZREF at xr@verbose
+ \PackageInfo{zref-xr}{%
+ Import to zref label `\ZREF at xr@tempname#1'%
+ }%
+ \fi
+ \global\expandafter
+ \let\csname\ZREF at xr@refname\expandafter\endcsname
+ \csname\ZREF at xr@temprefname\endcsname
+ }{%
+ \ZREF at xr@zref at ignorewarning{\ZREF at xr@prefix#1}%
+ }%
+ \fi
+ \ifZREF at xr@toltxlabel
+ \ZREF at xr@tolabel{\ZREF at xr@tempname}{\ZREF at xr@prefix#1}%
+ \fi
+ \fi
+}%
+\def\ZREF at xr@process at label\newlabel#1#2#3[#4]#5\ZREF at nil{%
+ \def\ZREF at xr@refname{Z at R@\ZREF at xr@prefix#1}%
+ \edef\ZREF at xr@found{\the\numexpr\ZREF at xr@found+1\relax}%
+ \def\x{#2}%
+ \edef\ZREF at xr@tempname{$temp$}%
+ \edef\ZREF at xr@temprefname{Z at R@\ZREF at xr@tempname}%
+ \expandafter\ZREF at xr@scanparams
+ \csname\ZREF at xr@temprefname\expandafter\endcsname
+ \x{}{}{}{}{}\ZREF at nil
+ \ifx\\#4\\%
+ \else
+ % ntheorem knows an optional argument at the end of \newlabel
+ \ZREF at NewPropTheotype
+ \expandafter\ltx at LocalAppendToMacro
+ \csname\ZREF at xr@temprefname\endcsname{\theotype{#4}}%
+ \fi
+ \expandafter\ltx at LocalAppendToMacro
+ \csname\ZREF at xr@temprefname\expandafter\endcsname\expandafter{%
+ \expandafter\externaldocument\expandafter{%
+ \ZREF at xr@externalfile
+ }%
+ }%
+ \ZREF at xr@urlcheck\ZREF at xr@tempname
+ \ifZREF at xr@tozreflabel
+ \@ifundefined{\ZREF at xr@refname}{%
+ \ifZREF at xr@verbose
+ \PackageInfo{zref-xr}{%
+ Import to zref label `\ZREF at xr@prefix#1'%
+ }%
+ \fi
+ \global\expandafter
+ \let\csname\ZREF at xr@refname\expandafter\endcsname
+ \csname\ZREF at xr@temprefname\endcsname
+ }{%
+ \ZREF at xr@zref at ignorewarning{\ZREF at xr@prefix#1}%
+ }%
+ \fi
+ \ifZREF at xr@toltxlabel
+ \ZREF at xr@tolabel{\ZREF at xr@tempname}{\ZREF at xr@prefix#1}%
+ \fi
+}
+\def\ZREF at xr@zref at newlabel{\zref at newlabel}%
+\def\ZREF at xr@newlabel{\newlabel}%
+\def\ZREF at xr@@input{\@input}%
+\def\ZREF at xr@relax{\relax}%
+\def\ZREF at xr@tolabel#1#2{%
+ \ifZREF at xr@verbose
+ \PackageInfo{zref-xr}{%
+ Import to LaTeX label `#2'%
+ }%
+ \fi
+ \zref at wrapper@unexpanded{%
+ \expandafter\xdef\csname r@#2\endcsname{%
+ {%
+ \ltx at ifundefined{M at TitleReference}{%
+ \ltx at ifundefined{TR at TitleReference}{%
+ \zref at extractdefault{#1}{default}{}%
+ }{%
+ \noexpand\TR at TitleReference
+ {\zref at extractdefault{#1}{default}{}}%
+ {\zref at extractdefault{#1}{title}{}}%
+ }%
+ }{%
+ \noexpand\M at TitleReference
+ {\zref at extractdefault{#1}{default}{}}%
+ {\zref at extractdefault{#1}{title}{}}%
+ }%
+ }%
+ {\zref at extractdefault{#1}{page}{}}%
+ \ltx at ifpackageloaded{nameref}{%
+ {\zref at extractdefault{#1}{title}{}}%
+ {\zref at extractdefault{#1}{anchor}{}}%
+ \zref at ifrefcontainsprop{#1}{urluse}{%
+ {\zref at extractdefault{#1}{urluse}{}}%
+ }{%
+ {\zref at extractdefault{#1}{url}{}}%
+ }%
+ }{}%
+ }%
+ }%
+}
+\def\ZREF at xr@zref at ignorewarning#1{%
+ \PackageWarningNoLine{zref-xr}{%
+ Zref label `#1' is already in use\MessageBreak
+ in file `\ZREF at xr@file'%
+ }%
+ \edef\ZREF at xr@ignored at zref{%
+ \the\numexpr\ZREF at xr@ignored at zref+1%
+ }%
+}%
+\def\ZREF at xr@ltx at ignorewarning#1{%
+ \PackageWarningNoLine{zref-xr}{%
+ LaTeX label `#1' is already in use\MessageBreak
+ in file `\ZREF at xr@file'%
+ }%
+ \edef\ZREF at xr@ignored at ltx{%
+ \the\numexpr\ZREF at xr@ignored at ltx+1%
+ }%
+}%
+\def\ZREF at xr@checklist#1#2#3\ZREF at nil{%
+ \ifx\@undefined#1\relax
+ \expandafter\ZREF at xr@checkkey\string#1\@nil
+ \fi
+ \ifx\\#3\\%
+ \else
+ \ltx at ReturnAfterFi{%
+ \ZREF at xr@checklist#3\ZREF at nil
+ }%
+ \fi
+}%
+\def\ZREF at xr@checkkey#1#2\@nil{%
+ \zref at ifpropundefined{#2}{%
+ \zref at newprop{#2}{}%
+ }{}%
+}%
+\def\ZREF at xr@scanparams#1#2#3#4#5#6#7\ZREF at nil{%
+ \let#1\ltx at empty
+ \ZREF at foundfalse
+ \ZREF at xr@scantitleref#1#2\TR at TitleReference{}{}\ZREF at nil
+ \ifZREF at found
+ \else
+ \ltx at LocalAppendToMacro#1{\default{#2}}%
+ \fi
+ % page
+ \ltx at LocalAppendToMacro#1{\page{#3}}%
+ % nameref title
+ \ifZREF at found
+ \else
+ \ifx\\#4\\%
+ \else
+ \def\ZREF at xr@temp{#4}%
+ \ifx\ZREF at xr@temp\ZREF at xr@relax
+ \else
+ \ltx at LocalAppendToMacro#1{\title{#4}}%
+ \fi
+ \fi
+ \fi
+ % anchor
+ \ifx\\#5\\%
+ \else
+ \ltx at LocalAppendToMacro#1{\anchor{#5}}%
+ \fi
+ \ifx\\#6\\%
+ \else
+ \ifZREF at xr@urluse
+ \ZREF at xr@AddURL{#6}%
+ \expandafter\ltx at LocalAppendToMacro\expandafter#1%
+ \expandafter{%
+ \expandafter\urluse\expandafter{%
+ \csname Z at U@\ZREF at xr@theURL\endcsname
+ }%
+ }%
+ \else
+ \ltx at LocalAppendToMacro#1{\url{#6}}%
+ \fi
+ \fi
+}%
+\def\ZREF at xr@scantitleref#1#2\TR at TitleReference#3#4#5\ZREF at nil{%
+ \ifx\\#5\\%
+ \else
+ \ltx at LocalAppendToMacro#1{%
+ \default{#3}%
+ \title{#4}%
+ }%
+ \ZREF at foundtrue
+ \fi
+}%
+\def\ZREF at xr@urlcheck#1{%
+ \zref at ifrefcontainsprop{#1}{anchor}{%
+ \zref at ifrefcontainsprop{#1}{url}{%
+ }{%
+ \expandafter
+ \ltx at LocalAppendToMacro\csname Z at R@#1\expandafter\endcsname
+ \expandafter{%
+ \csname url\ifZREF at xr@urluse use\fi
+ \expandafter\endcsname\expandafter{\ZREF at xr@url}%
+ }%
+ }%
+ }{%
+ }%
+}%
+\endinput
+%%
+%% End of file `zref-xr.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref-xr.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/zref/zref.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/zref/zref.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/zref/zref.sty 2019-11-30 22:16:13 UTC (rev 52980)
@@ -0,0 +1,81 @@
+%%
+%% This is file `zref.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Project: zref
+%% Version: 2019/11/29 v2.28
+%%
+%% Copyright (C)
+%% 2006-2012 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/zref/issues
+%%
+%%
+%% 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-abspos.sty, zref-counter.sty,
+%% zref-dotfill.sty, zref-env.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,
+%% zref-example-nextpage.tex, zref-test1.tex,
+%% zref-test-base.tex, zref-test-runs.tex,
+%% zref-test-titleref-memoir.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zref}
+ [2019/11/29 v2.28 A new reference scheme for LaTeX (HO)]%
+\RequirePackage{zref-base}[2019/11/29]
+\@ifundefined{ZREF at base@ok}{\endinput}{}
+\def\ZREF at temp#1{%
+ \DeclareOption{#1}{%
+ \AtEndOfPackage{%
+ \RequirePackage{zref-#1}[2019/11/29]%
+ }%
+ }%
+}
+\ZREF at temp{abspage}
+\ZREF at temp{counter}
+\ZREF at temp{dotfill}
+\ZREF at temp{hyperref}
+\ZREF at temp{lastpage}
+\ZREF at temp{marks}
+\ZREF at temp{nextpage}
+\ZREF at temp{pageattr}
+\ZREF at temp{pagelayout}
+\ZREF at temp{perpage}
+\ZREF at temp{runs}
+\ZREF at temp{savepos}
+\ZREF at temp{thepage}
+\ZREF at temp{titleref}
+\ZREF at temp{totpages}
+\ZREF at temp{user}
+\ZREF at temp{xr}
+\ProcessOptions\relax
+\endinput
+%%
+%% End of file `zref.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/zref/zref.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check 2019-11-30 22:13:35 UTC (rev 52979)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check 2019-11-30 22:16:13 UTC (rev 52980)
@@ -774,7 +774,7 @@
yinit-otf york-thesis youngtab yplan ytableau
zapfchan zapfding zebra-goodies zed-csp
zhlineskip zhlipsum zhnumber zhmetrics zhmetrics-uptex zhspacing
- ziffer zlmtt zootaxa-bst
+ ziffer zlmtt zootaxa-bst zref
zwgetfdate zwpagelayout
zxjafbfont zxjafont zxjatype
);
Modified: trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc 2019-11-30 22:13:35 UTC (rev 52979)
+++ trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc 2019-11-30 22:16:13 UTC (rev 52980)
@@ -1279,5 +1279,6 @@
depend zebra-goodies
depend zed-csp
depend ziffer
+depend zref
depend zwgetfdate
depend zwpagelayout
Added: trunk/Master/tlpkg/tlpsrc/zref.tlpsrc
===================================================================
More information about the tex-live-commits
mailing list