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{&#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}&#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