From 9a032296aec6ef5b4ac4bb94209873531040284f Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 26 Mar 2010 23:30:06 +0000 Subject: oberdiek update (26mar10) git-svn-id: svn://tug.org/texlive/trunk@17570 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/source/latex/oberdiek/atveryend.dtx | 12 +- Master/texmf-dist/source/latex/oberdiek/hypdoc.dtx | 22 +- .../texmf-dist/source/latex/oberdiek/oberdiek.ins | 2 +- .../texmf-dist/source/latex/oberdiek/oberdiek.tex | 10 +- Master/texmf-dist/source/latex/oberdiek/zref.dtx | 609 +++++++++++++++++---- 5 files changed, 523 insertions(+), 132 deletions(-) (limited to 'Master/texmf-dist/source/latex/oberdiek') diff --git a/Master/texmf-dist/source/latex/oberdiek/atveryend.dtx b/Master/texmf-dist/source/latex/oberdiek/atveryend.dtx index a29cb91a39d..bf12ff3b168 100644 --- a/Master/texmf-dist/source/latex/oberdiek/atveryend.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/atveryend.dtx @@ -185,9 +185,9 @@ and the derived files % This \LaTeX\ package provides two hooks for \verb|\end{document}| % that are executed after the hook of \cs{AtEndDocument}. % \cs{AfterLastShipout} can be used for code that is to be executed -% right after the last \cs{clearpage} before the \xext{.aux} file +% right after the last \cs{clearpage} before the \xext{aux} file % is closed. \cs{AtVeryEndDocument} is used for code after closing -% and final reading of the \xext{.aux} file. +% and final reading of the \xext{aux} file. % \end{abstract} % % \tableofcontents @@ -223,12 +223,12 @@ and the derived files % \begin{declcs}{AfterLastShipout} \M{code} % \end{declcs} % The code is called after the final \cs{clearpage} of \cs{enddocument} -% before the main \xext{.aux} file is closed. This is the right place -% to remember the last page in the \xext{.aux} file, for instance. +% before the main \xext{aux} file is closed. This is the right place +% to remember the last page in the \xext{aux} file, for instance. % % \begin{declcs}{AtVeryEndDocument} \M{code} % \end{declcs} -% The code is called after the \xext{.aux} file is closed and read in again. +% The code is called after the \xext{aux} file is closed and read in again. % It is the place for final checks, rerun hints, final messages. % % \subsection{Related work} @@ -809,7 +809,7 @@ and the derived files % a precondition of this package that the \cs{clearpage} in % \cs{enddocument} is the final call with no material at % later times. Therefore we move the label making -% from the \xext{.aux} file to \cs{AtEndDocument}. +% from the \xext{aux} file to \cs{AtEndDocument}. % \begin{macrocode} \def\AtVeryEnd@temp{% \AtBeginDocument{% diff --git a/Master/texmf-dist/source/latex/oberdiek/hypdoc.dtx b/Master/texmf-dist/source/latex/oberdiek/hypdoc.dtx index a4167e7ef3a..118dc56f878 100644 --- a/Master/texmf-dist/source/latex/oberdiek/hypdoc.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/hypdoc.dtx @@ -71,7 +71,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: hypdoc 2010/02/03 v1.8 Hyper extensions for doc.sty (HO)} +\Msg{* Package: hypdoc 2010/03/26 v1.9 Hyper extensions for doc.sty (HO)} \Msg{************************************************************************} \keepsilent @@ -141,7 +141,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{hypdoc.drv}% - [2010/02/03 v1.8 Hyper extensions for doc.sty (HO)]% + [2010/03/26 v1.9 Hyper extensions for doc.sty (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2008/08/11] \begin{document} @@ -150,7 +150,7 @@ and the derived files % % \fi % -% \CheckSum{710} +% \CheckSum{718} % % \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 @@ -171,7 +171,7 @@ and the derived files % \GetFileInfo{hypdoc.drv} % % \title{The \xpackage{hypdoc} package} -% \date{2010/02/03 v1.8} +% \date{2010/03/26 v1.9} % \author{Heiko Oberdiek\\\xemail{heiko.oberdiek at googlemail.com}} % % \maketitle @@ -348,7 +348,7 @@ and the derived files %<*package> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{hypdoc}% - [2010/02/03 v1.8 Hyper extensions for doc.sty (HO)]% + [2010/03/26 v1.9 Hyper extensions for doc.sty (HO)]% % \end{macrocode} % The package identification is done at the top of the |.dtx| file % in order to use only one identification string. @@ -370,6 +370,7 @@ and the derived files % \subsection{Package loading} % % \begin{macrocode} +\RequirePackage{atveryend}[2010/03/24] \RequirePackage{doc} % \end{macrocode} % \begin{macrocode} @@ -1097,10 +1098,13 @@ and the derived files % % \cs{MacroIndent} automatically calculated. % \begin{macrocode} -\AtEndDocument{% +\AfterLastShipout{% \if@filesw \immediate\write\@auxout{% - \noexpand\HD@SetMacroIndent{\number\value{CodelineNo}}% + \string\providecommand\string\HD@SetMacroIndent[1]{}% + }% + \immediate\write\@auxout{% + \string\HD@SetMacroIndent{\number\value{CodelineNo}}% }% \fi } @@ -1351,6 +1355,10 @@ and the derived files % \item % Fix for bug latex/4096 added. % \end{Version} +% \begin{Version}{2010/03/26 v1.9} +% \item +% Definition of \cs{HD@SetMacroIndex} is provided in the \xext{aux} file. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins b/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins index f6f73602622..48f89f2f44b 100644 --- a/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins +++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins @@ -1,5 +1,5 @@ % oberdiek.ins -% 2010/03/25 +% 2010/03/26 % % Copyright (C) 1999, 2001, 2006 by % Heiko Oberdiek diff --git a/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex index fada005bfbc..ef0dbe9e6f0 100644 --- a/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex +++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex @@ -6,7 +6,7 @@ \newcommand*{\Subject}{CTAN:\CTANdir} \newcommand*{\Author}{Heiko Oberdiek} \newcommand*{\Email}{heiko.oberdiek at googlemail.com} -\newcommand*{\Date}{2010/03/25} +\newcommand*{\Date}{2010/03/26} % Copyright (C) 2006 by % Heiko Oberdiek @@ -226,7 +226,7 @@ [\entrysep] \entry{hypdestopt}{2008/08/08}{2.2}{Hyperref destination optimizer}% [\entrysep] -\entry{hypdoc}{2010/02/03}{1.8}{Hyper extensions for doc.sty}% +\entry{hypdoc}{2010/03/26}{1.9}{Hyper extensions for doc.sty}% [\entrysep] \entry{hypgotoe}{2007/10/30}{0.1}{Experimental links to embedded files}% [\entrysep] @@ -330,7 +330,7 @@ [\entrysep] \entry{uniquecounter}{2009/12/18}{1.1}{Provides unlimited unique counter}% [\entrysep] -\entry{zref}{2009/12/08}{2.7}{New reference scheme for \LaTeXe{}}% +\entry{zref}{2010/03/26}{2.8}{New reference scheme for \LaTeXe{}}% \end{overview} \section{Packages} @@ -417,9 +417,9 @@ the attached files. This \LaTeX\ package provides two hooks for \verb|\end{document}| that are executed after the hook of \cs{AtEndDocument}. \cs{AfterLastShipout} can be used for code that is to be executed -right after the last \cs{clearpage} before the \xext{.aux} file +right after the last \cs{clearpage} before the \xext{aux} file is closed. \cs{AtVeryEndDocument} is used for code after closing -and final reading of the \xext{.aux} file. +and final reading of the \xext{aux} file. \end{abstract} \tocinclude{atveryend} diff --git a/Master/texmf-dist/source/latex/oberdiek/zref.dtx b/Master/texmf-dist/source/latex/oberdiek/zref.dtx index 926878f4341..7defc471004 100644 --- a/Master/texmf-dist/source/latex/oberdiek/zref.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/zref.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2006-2009 by +% Copyright (C) 2006-2010 by % Heiko Oberdiek % % This work may be distributed and/or modified under the @@ -21,11 +21,12 @@ % and the derived files % zref.sty, zref.pdf, zref.ins, zref.drv, zref-base.sty, % zref-abspage.sty, zref-counter.sty, zref-dotfill.sty, -% zref-hyperref.sty, zref-lastpage.sty, zref-perpage.sty, -% zref-runs.sty, zref-savepos.sty, zref-titleref.sty, -% zref-totpages.sty, zref-user.sty, zref-xr.sty, -% zref-example.tex, zref-example-lastpage.tex, zref-test1.tex, -% zref-test-runs.tex. +% zref-hyperref.sty, zref-lastpage.sty, zref-nextpage.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-runs.tex. % % Distribution: % CTAN:macros/latex/contrib/oberdiek/zref.dtx @@ -65,9 +66,11 @@ % TDS:tex/latex/oberdiek/zref-dotfill.sty % TDS:tex/latex/oberdiek/zref-hyperref.sty % TDS:tex/latex/oberdiek/zref-lastpage.sty +% TDS:tex/latex/oberdiek/zref-nextpage.sty % TDS:tex/latex/oberdiek/zref-perpage.sty % TDS:tex/latex/oberdiek/zref-runs.sty % TDS:tex/latex/oberdiek/zref-savepos.sty +% TDS:tex/latex/oberdiek/zref-thepage.sty % TDS:tex/latex/oberdiek/zref-titleref.sty % TDS:tex/latex/oberdiek/zref-totpages.sty % TDS:tex/latex/oberdiek/zref-user.sty @@ -75,6 +78,7 @@ % TDS:doc/latex/oberdiek/zref.pdf % TDS:doc/latex/oberdiek/zref-example.tex % TDS:doc/latex/oberdiek/zref-example-lastpage.tex +% TDS:doc/latex/oberdiek/zref-example-nextpage.tex % TDS:doc/latex/oberdiek/test/zref-test1.tex % TDS:doc/latex/oberdiek/test/zref-test-runs.tex % TDS:source/latex/oberdiek/zref.dtx @@ -94,7 +98,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: zref 2009/12/08 v2.7 New reference scheme for LaTeX2e (HO)} +\Msg{* Package: zref 2010/03/26 v2.8 New reference scheme for LaTeX2e (HO)} \Msg{************************************************************************} \keepsilent @@ -105,7 +109,7 @@ This is a generated file. -Copyright (C) 2006-2009 by +Copyright (C) 2006-2010 by Heiko Oberdiek This work may be distributed and/or modified under the @@ -126,11 +130,12 @@ This work consists of the main source file zref.dtx and the derived files zref.sty, zref.pdf, zref.ins, zref.drv, zref-base.sty, zref-abspage.sty, zref-counter.sty, zref-dotfill.sty, - zref-hyperref.sty, zref-lastpage.sty, zref-perpage.sty, - zref-runs.sty, zref-savepos.sty, zref-titleref.sty, - zref-totpages.sty, zref-user.sty, zref-xr.sty, - zref-example.tex, zref-example-lastpage.tex, zref-test1.tex, - zref-test-runs.tex. + zref-hyperref.sty, zref-lastpage.sty, zref-nextpage.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-runs.tex. \endpreamble \let\MetaPrefix\DoubleperCent @@ -146,9 +151,11 @@ and the derived files \file{zref-dotfill.sty}{\from{zref.dtx}{dotfill}}% \file{zref-hyperref.sty}{\from{zref.dtx}{hyperref}}% \file{zref-lastpage.sty}{\from{zref.dtx}{lastpage}}% + \file{zref-nextpage.sty}{\from{zref.dtx}{nextpage}}% \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}}% @@ -156,6 +163,7 @@ and the derived files \usedir{doc/latex/oberdiek}% \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/oberdiek/test}% \file{zref-test1.tex}{\from{zref.dtx}{test1}}% \file{zref-test-runs.tex}{\from{zref.dtx}{test-runs}}% @@ -170,9 +178,9 @@ and the derived files \Msg{*} \Msg{* zref.sty, zref-base.sty, zref-abspage.sty, zref-counter.sty,} \Msg{* zref-dotfill.sty, zref-hyperref.sty, zref-lastpage.sty,} -\Msg{* zref-perpage.sty, zref-runs.sty, zref-savepos.sty,} -\Msg{* zref-titleref.sty, zref-totpages.sty, zref-user.sty,} -\Msg{* zref-xr.sty} +\Msg{* zref-nextpage.sty, zref-perpage.sty, zref-runs.sty,} +\Msg{* zref-savepos.sty, zref-thepage.sty, zref-titleref.sty,} +\Msg{* zref-totpages.sty, zref-user.sty, zref-xr.sty} \Msg{*} \Msg{* And install the following script file:} \Msg{*} @@ -193,7 +201,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{zref.drv}% - [2009/12/08 v2.7 New reference scheme for LaTeX2e (HO)]% + [2010/03/26 v2.8 New reference scheme for LaTeX2e (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2008/08/11] \begin{document} @@ -202,7 +210,7 @@ and the derived files % % \fi % -% \CheckSum{1668} +% \CheckSum{1838} % % \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 @@ -223,7 +231,7 @@ and the derived files % \GetFileInfo{zref.drv} % % \title{The \xpackage{zref} package} -% \date{2009/12/08 v2.7} +% \date{2010/03/26 v2.8} % \author{Heiko Oberdiek\\\xemail{heiko.oberdiek at googlemail.com}} % % \maketitle @@ -559,6 +567,13 @@ and the derived files % \end{declcs} % A possibility to check whether a reference exists. % +% \begin{declcs}{zifrefundefined} +% \M{refname} \M{then} \M{else} +% \end{declcs} +% Macro \cs{zifrefundefined} calls \cs{ref@refused} before +% executing \cs{zref@ifrefundefined}. Babel shorthands are +% supported in \meta{refname}. +% % \begin{declcs}{zref@ifrefcontainsprop}\markexp % \M{refname} \M{propname} \M{then} \M{else} % \end{declcs} @@ -760,7 +775,11 @@ and the derived files % The label |LastPage| is put at the end of the document. % You can refer the last page number with: % \begin{quote} -% |\zpageref{LastPage}| +% |\zref@extract{LastPage}{page}| (+ |\zref@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|. @@ -769,18 +788,47 @@ and the derived files % 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@iflastpage} +% and \cs{ziflastpage} were added. They test the reference, +% whether it is a reference of the last page. +% +% \begin{declcs}{zref@iflastpage}\markexp \M{refname} \M{then} \M{else} +% \end{declcs} +% Macro \cs{zref@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@iflastpage} is expandable, therefore \cs{zref@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@iflastpage}, +% but adds support for babel shorthands in \meta{refname} and +% calls \cs{zref@refused}. However macro \cs{ziflastpage} is not +% expandable. +% % \subsubsection{Example} % % \begin{macrocode} %<*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@thepage@name}\markexp \M{absolute page number} +% \end{declcs} +% Macro \cs{zref@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@thepage}\markexp \M{absolute page number}\\ +% \cs{zref@thepage@refused} \M{absolute page number} +% \end{declcs} +% Macro \cs{zref@thepage} returns the page number (\cs{thepage}) +% of \meta{absolute page number}. Because this macro is expandable, +% \cs{zref@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{macrocode} +% +% % \subsection{Module \xmodule{totpages}} % % For the total number of pages of a document you need to @@ -1253,13 +1415,13 @@ the height difference of the two baselines is %<*package> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref} - [2009/12/08 v2.7 New reference scheme for LaTeX2e (HO)]% + [2010/03/26 v2.8 New reference scheme for LaTeX2e (HO)]% % \end{macrocode} % % \subsubsection{Load basic module} % % \begin{macrocode} -\RequirePackage{zref-base}[2009/12/08] +\RequirePackage{zref-base}[2010/03/26] % \end{macrocode} % Abort package loading if \xpackage{zref-base} could not be % loaded successfully. @@ -1274,7 +1436,7 @@ the height difference of the two baselines is \def\ZREF@temp#1{% \DeclareOption{#1}{% \AtEndOfPackage{% - \RequirePackage{zref-#1}[2009/12/08]% + \RequirePackage{zref-#1}[2010/03/26]% }% }% } @@ -1334,11 +1496,15 @@ the height difference of the two baselines is %<*base> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-base}% - [2009/12/08 v2.7 Module base for zref (HO)]% + [2010/03/26 v2.8 Module base for zref (HO)]% % \end{macrocode} % % \subsubsection{Utilities} % +% \begin{macrocode} +\RequirePackage{ltxcmds}[2009/12/12] +% \end{macrocode} +% % \begin{macro}{\ZREF@name} % Several times the package name is used, thus we store it % in \cmd{\ZREF@name}. @@ -1382,11 +1548,11 @@ the height difference of the two baselines is \def\ZREF@patch#1{% \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname #1\endcsname\relax - \expandafter\@gobble + \expandafter\ltx@gobble \else \expandafter\let\csname ZREF@org@#1\expandafter\endcsname \csname #1\endcsname - \expandafter\@firstofone + \expandafter\ltx@firstofone \fi } % \end{macrocode} @@ -1397,18 +1563,15 @@ the height difference of the two baselines is % The use of \eTeX\ should be standard nowadays for \LaTeX. % We test for \eTeX\ in order to use its features later. % \begin{macrocode} -\begingroup - \@ifundefined{eTeXversion}{% - \ZREF@ErrorNoLine{% - Missing support for eTeX; package is abandoned% - }{% - Use a TeX compiler that support eTeX and enable eTeX % - in the format.% - }% - \endgroup - \endinput - }{}% -\endgroup +\ltx@IfUndefined{eTeXversion}{% + \ZREF@ErrorNoLine{% + 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} @@ -1486,9 +1649,9 @@ the height difference of the two baselines is % \begin{macrocode} \def\zref@iflistundefined#1{% \expandafter\ifx\csname Z@L@#1\endcsname\relax - \expandafter\@firstoftwo + \expandafter\ltx@firstoftwo \else - \expandafter\@secondoftwo + \expandafter\ltx@secondoftwo \fi } % \end{macrocode} @@ -1528,9 +1691,9 @@ the height difference of the two baselines is }% \expandafter\endgroup \ifZREF@found - \expandafter\@firstoftwo + \expandafter\ltx@firstoftwo \else - \expandafter\@secondoftwo + \expandafter\ltx@secondoftwo \fi } % \end{macrocode} @@ -1616,9 +1779,9 @@ the height difference of the two baselines is % \begin{macrocode} \def\zref@ifpropundefined#1{% \expandafter\ifx\csname Z@E@#1\endcsname\relax - \expandafter\@firstoftwo + \expandafter\ltx@firstoftwo \else - \expandafter\@secondoftwo + \expandafter\ltx@secondoftwo \fi } % \end{macrocode} @@ -1849,14 +2012,33 @@ the height difference of the two baselines is % \begin{macrocode} \def\zref@ifrefundefined#1{% \expandafter\ifx\csname Z@R@#1\endcsname\relax - \expandafter\@firstoftwo + \expandafter\ltx@firstoftwo \else - \expandafter\@secondoftwo + \expandafter\ltx@secondoftwo \fi } % \end{macrocode} % \end{macro} % +% \begin{macro}{\zifrefundefined} +% If a reference \verb|#1| is undefined, then macro +% \cs{zref@ifrefundefined} calls \verb|#2| and \verb|#3| otherwise. +% Also the reference is marked used. +% \begin{macrocode} +\newcommand*{\zifrefundefined}[1]{% + \zref@wrapper@babel\ZREF@ifrefundefined{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ZREF@ifrefundefined} +% \begin{macrocode} +\def\ZREF@ifrefundefined#1{% + \zref@refused{#1}% + \zref@ifrefundefined{#1}% +} +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\zref@refused} % The problem with undefined references is addressed by % the macro \cs{zref@refused}. This can be used outside @@ -1905,7 +2087,7 @@ the height difference of the two baselines is % \begin{macrocode} \def\zref@ifrefcontainsprop#1#2{% \zref@ifrefundefined{#1}{% - \@secondoftwo + \ltx@secondoftwo }{% \expandafter\ZREF@ifrefcontainsprop \csname Z@E@#2\expandafter\endcsname @@ -1918,9 +2100,9 @@ the height difference of the two baselines is \def\ZREF@ifrefcontainsprop#1#2#3{% \expandafter\ifx\expandafter\ZREF@novalue #1#3#2\ZREF@novalue\ZREF@nil\@empty - \expandafter\@secondoftwo + \expandafter\ltx@secondoftwo \else - \expandafter\@firstoftwo + \expandafter\ltx@firstoftwo \fi } \def\ZREF@novalue{\ZREF@NOVALUE} @@ -1952,9 +2134,9 @@ the height difference of the two baselines is \long\def\zref@wrapper@unexpanded#1{% \let\ZREF@unexpanded\etex@unexpanded #1% - \let\ZREF@unexpanded\@firstofone + \let\ZREF@unexpanded\ltx@firstofone } -\let\ZREF@unexpanded\@firstofone +\let\ZREF@unexpanded\ltx@firstofone % \end{macrocode} % \end{macro} % @@ -1964,15 +2146,15 @@ the height difference of the two baselines is % \begin{macrocode} \long\def\zref@wrapper@babel#1#2{% \ifcsname if@safe@actives\endcsname - \expandafter\@firstofone + \expandafter\ltx@firstofone \else - \expandafter\@secondoftwo + \expandafter\ltx@secondoftwo \fi {% \if@safe@actives - \expandafter\@secondoftwo + \expandafter\ltx@secondoftwo \else - \expandafter\@firstoftwo + \expandafter\ltx@firstoftwo \fi {% \begingroup @@ -2000,7 +2182,7 @@ the height difference of the two baselines is \def\zref@require@unique{% \@ifundefined{c@zref@unique}{% \begingroup - \let\@addtoreset\@gobbletwo + \let\@addtoreset\ltx@gobbletwo \newcounter{zref@unique}% \endgroup % \end{macrocode} @@ -2093,8 +2275,8 @@ the height difference of the two baselines is %<*user> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-user}% - [2009/12/08 v2.7 Module user for zref (HO)]% -\RequirePackage{zref-base}[2009/12/08] + [2010/03/26 v2.8 Module user for zref (HO)]% +\RequirePackage{zref-base}[2010/03/26] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % @@ -2112,8 +2294,8 @@ the height difference of the two baselines is % table of contents. Therefore we have to check this situation. % \begin{macrocode} \newcommand*\zlabel{% - \ifx\label\@gobble - \expandafter\@gobble + \ifx\label\ltx@gobble + \expandafter\ltx@gobble \else \expandafter\zref@wrapper@babel\expandafter\zref@label \fi @@ -2168,8 +2350,8 @@ the height difference of the two baselines is %<*abspage> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-abspage}% - [2009/12/08 v2.7 Module abspage for zref (HO)]% -\RequirePackage{zref-base}[2009/12/08] + [2010/03/26 v2.8 Module abspage for zref (HO)]% +\RequirePackage{zref-base}[2010/03/26] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % @@ -2184,7 +2366,7 @@ the height difference of the two baselines is % \xfile{.aux} files of included \TeX\ files. % \begin{macrocode} \begingroup - \let\@addtoreset\@gobbletwo + \let\@addtoreset\ltx@gobbletwo \newcounter{abspage}% \endgroup \setcounter{abspage}{0}% @@ -2213,8 +2395,8 @@ the height difference of the two baselines is %<*counter> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-counter}% - [2009/12/08 v2.7 Module counter for zref (HO)]% -\RequirePackage{zref-base}[2009/12/08] + [2010/03/26 v2.8 Module counter for zref (HO)]% +\RequirePackage{zref-base}[2010/03/26] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % @@ -2250,8 +2432,9 @@ the height difference of the two baselines is %<*lastpage> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-lastpage}% - [2009/12/08 v2.7 Module lastpage for zref (HO)]% -\RequirePackage{zref-base}[2009/12/08] + [2010/03/26 v2.8 Module lastpage for zref (HO)]% +\RequirePackage{zref-base}[2010/03/26] +\RequirePackage{zref-abspage}[2010/03/26] \RequirePackage{atveryend}[2009/12/07] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} @@ -2279,27 +2462,216 @@ the height difference of the two baselines is \fi } % \end{macrocode} +% \begin{macro}{\zref@iflastpage} +% \begin{macrocode} +\def\zref@iflastpage#1{% + \ifnum\zref@extractdefault{#1}{abspage}{-1}=% + \zref@extractdefault{LastPage}{abspage}{-2} % + \expandafter\ltx@firstoftwo + \else + \expandafter\ltx@secondoftwo + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ziflastpage} +% \begin{macrocode} +\newcommand*{\ziflastpage}{% + \zref@wrapper@babel\ZREF@iflastpage +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{ZREF@iflastpage} +% \begin{macrocode} +\def\ZREF@iflastpage#1{% + \zref@refused{LastPage}% + \zref@refused{#1}% + \zref@iflastpage{#1}% +} +% \end{macrocode} +% \end{macro} % \begin{macrocode} % % \end{macrocode} % % +% \subsection{Module \xmodule{thepage}} +% +% \begin{macrocode} +%<*thepage> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{zref-thepage}% + [2010/03/26 v2.8 Module thepage for zref (HO)]% +\RequirePackage{zref-base}[2010/03/26] +\@ifundefined{ZREF@baseok}{\endinput}{} +% \end{macrocode} +% +% \begin{macrocode} +\RequirePackage{atbegshi} +\RequirePackage{zref-abspage}[2010/03/26] +% \end{macrocode} +% \begin{macrocode} +\zref@newlist{thepage} +\zref@addprop{thepage}{page} +\AtBeginShipout{% + \zref@wrapper@immediate{% + \zref@labelbylist{thepage\the\value{abspage}}{thepage}% + }% +} +% \end{macrocode} +% \begin{macro}{\zref@thepage@name} +% \begin{macrocode} +\ltx@IfUndefined{numexpr}{% + \def\zref@thepage@name#1{thepage\number#1}% +}{% + \def\zref@thepage@name#1{thepage\the\numexpr#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\zref@thepage} +% \begin{macrocode} +\def\zref@thepage#1{% + \zref@extract{\zref@thepage@name{#1}}{page}% +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\zref@thepage@refused} +% \begin{macrocode} +\def\zref@thepage@refused#1{% + \zref@refused{\zref@thepage@name{#1}}% +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\zthepage} +% \begin{macrocode} +\newcommand*{\zthepage}[1]{% + \zref@thepage@refused{#1}% + \zref@thepage{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{Module \xmodule{nextpage}} +% +% \begin{macrocode} +%<*nextpage> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{zref-nextpage}% + [2010/03/26 v2.8 Module nextpage for zref (HO)]% +\RequirePackage{zref-base}[2010/03/26] +\@ifundefined{ZREF@baseok}{\endinput}{} +% \end{macrocode} +% +% \begin{macrocode} +\RequirePackage{zref-abspage}[2010/03/26] +\RequirePackage{zref-thepage}[2010/03/26] +\RequirePackage{zref-lastpage}[2010/03/26] +\RequirePackage{uniquecounter}[2009/12/18] +% \end{macrocode} +% \begin{macrocode} +\UniqueCounterNew{znextpage} + +\newcommand*{\znextpagesetup}{% + \afterassignment\ZREF@np@setup@i + \def\ZREF@np@call@unknown##1% +} +\def\ZREF@np@setup@i{% + \afterassignment\ZREF@np@setup@ii + \def\ZREF@np@call@nonext##1% +} +\def\ZREF@np@setup@ii{% + \def\ZREF@np@call@next##1% +} +\def\ZREF@np@call@unknown#1{#1} +\def\ZREF@np@call@nonext#1{#1} +\def\ZREF@np@call@next#1{#1} +\newcommand*{\znextpage}{% + \UniqueCounterCall{znextpage}{\ZREF@nextpage}% +} +\newcommand*{\znonextpagename}{} +\newcommand*{\zunknownnextpagename}{\Z@D@page} +\def\ZREF@nextpage#1{% + \begingroup + \def\ZREF@refname@this{zref@np#1}% + \zref@labelbyprops\ZREF@refname@this{abspage}% + \chardef\ZREF@call=0 % unknown + \ZREF@ifrefundefined\ZREF@refname@this{% + }{% + \edef\ZREF@pagenum@this{% + \zref@extractdefault\ZREF@refname@this{abspage}{0}% + }% + \edef\ZREF@refname@next{% + \zref@thepage@name{% + \the\numexpr\ZREF@pagenum@this+1% + }% + }% + \ifnum\ZREF@pagenum@this>0 % + \ZREF@ifrefundefined{LastPage}{% + \zref@ifrefundefined\ZREF@refname@next{% + }{% + \chardef\ZREF@call=2 % next page + }% + }{% + \edef\ZREF@pagenum@last{% + \zref@extractdefault{LastPage}{abspage}{0}% + }% + \ifnum\ZREF@pagenum@this<\ZREF@pagenum@last\ltx@space + \ZREF@ifrefundefined\ZREF@refname@next{% + }{% + \chardef\ZREF@call=2 % next page + }% + \else + \ifnum\ZREF@pagenum@this=\ZREF@pagenum@this\ltx@space + \chardef\ZREF@call=1 % no next page + \fi + \fi + }% + \fi + }% + \edef\x{% + \endgroup + \ifcase\ZREF@call + \noexpand\ZREF@np@call@unknown{% + \noexpand\zunknownnextpagename + }% + \or + \noexpand\ZREF@np@call@nonext{% + \noexpand\znonextpagename + }% + \else + \noexpand\ZREF@np@call@next{% + \noexpand\zref@extract{\ZREF@refname@next}{page}% + }% + \fi + }% + \x +} +% \end{macrocode} +% \begin{macrocode} +% +% \end{macrocode} +% +% % \subsection{Module \xmodule{totpages}} % % \begin{macrocode} %<*totpages> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-totpages}% - [2009/12/08 v2.7 Module totpages for zref (HO)]% -\RequirePackage{zref-base}[2009/12/08] + [2010/03/26 v2.8 Module totpages for zref (HO)]% +\RequirePackage{zref-base}[2010/03/26] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % % The absolute page number of the last page is the total % page number. % \begin{macrocode} -\RequirePackage{zref-abspage}[2009/12/08] -\RequirePackage{zref-lastpage}[2009/12/08] +\RequirePackage{zref-abspage}[2010/03/26] +\RequirePackage{zref-lastpage}[2010/03/26] % \end{macrocode} % % \begin{macro}{\ztotpages} @@ -2332,7 +2704,7 @@ the height difference of the two baselines is %<*runs> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-runs}% - [2009/12/08 v2.7 Module runs for zref (HO)]% + [2010/03/26 v2.8 Module runs for zref (HO)]% % \end{macrocode} % % \begin{macro}{\zruns} @@ -2364,8 +2736,8 @@ the height difference of the two baselines is %<*perpage> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-perpage}% - [2009/12/08 v2.7 Module perpage for zref (HO)]% -\RequirePackage{zref-base}[2009/12/08] + [2010/03/26 v2.8 Module perpage for zref (HO)]% +\RequirePackage{zref-base}[2010/03/26] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % @@ -2377,7 +2749,7 @@ the height difference of the two baselines is % For detecting changed pages module \xmodule{abspage} % is loaded. % \begin{macrocode} -\RequirePackage{zref-abspage}[2009/12/08] +\RequirePackage{zref-abspage}[2010/03/26] % \end{macrocode} % % We group the properties for the needed references @@ -2521,8 +2893,8 @@ the height difference of the two baselines is %<*titleref> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-titleref}% - [2009/12/08 v2.7 Module titleref for zref (HO)]% -\RequirePackage{zref-base}[2009/12/08] + [2010/03/26 v2.8 Module titleref for zref (HO)]% +\RequirePackage{zref-base}[2010/03/26] \@ifundefined{ZREF@baseok}{\endinput}{} \RequirePackage{gettitlestring}[2009/12/08] % \end{macrocode} @@ -2692,7 +3064,7 @@ the height difference of the two baselines is \def\ZREF@titleref#1{% \begingroup \zref@refused{#1}% - \let\label\@gobble + \let\label\ltx@gobble \zref@extract{#1}{title}% \endgroup }% @@ -2839,8 +3211,8 @@ the height difference of the two baselines is %<*xr> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-xr}% - [2009/12/08 v2.7 Module xr for zref (HO)]% -\RequirePackage{zref-base}[2009/12/08] + [2010/03/26 v2.8 Module xr for zref (HO)]% +\RequirePackage{zref-base}[2010/03/26] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % \begin{macrocode} @@ -2865,7 +3237,7 @@ the height difference of the two baselines is % Use the setting of \xpackage{hyperref} if available. % \begin{macrocode} \providecommand*{\zref@xr@ext}{% - \@ifundefined{XR@ext}{pdf}{\XR@ext}% + \ltx@ifundefined{XR@ext}{pdf}{\XR@ext}% }% % \end{macrocode} % \end{macro} @@ -3183,14 +3555,14 @@ the height difference of the two baselines is %<*hyperref> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-hyperref}% - [2009/12/08 v2.7 Module hyperref for zref (HO)]% -\RequirePackage{zref-base}[2009/12/08] + [2010/03/26 v2.8 Module hyperref for zref (HO)]% +\RequirePackage{zref-base}[2010/03/26] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % % \begin{macrocode} \zref@newprop{anchor}[]{% - \@ifundefined{@currentHref}{}{\@currentHref}% + \ltx@ifundefined{@currentHref}{}{\@currentHref}% }% \zref@addprop\ZREF@mainlist{anchor}% % \end{macrocode} @@ -3212,8 +3584,8 @@ the height difference of the two baselines is %<*savepos> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-savepos}% - [2009/12/08 v2.7 Module savepos for zref (HO)]% -\RequirePackage{zref-base}[2009/12/08] + [2010/03/26 v2.8 Module savepos for zref (HO)]% +\RequirePackage{zref-base}[2010/03/26] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % @@ -3221,16 +3593,13 @@ the height difference of the two baselines is % % First we check, whether the feature is available. % \begin{macrocode} -\begingroup - \@ifundefined{pdfsavepos}{% - \ZREF@ErrorNoLine{% - \string\pdfsavepos\space is not supported.\MessageBreak - It is provided by pdfTeX (1.40) or XeTeX% - }\ZREF@UpdatePdfTeX - \endgroup - \endinput - }{}% -\endgroup +\ltx@IfUndefined{pdfsavepos}{% + \ZREF@ErrorNoLine{% + \string\pdfsavepos\space is not supported.\MessageBreak + It is provided by pdfTeX (1.40) or XeTeX% + }\ZREF@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 @@ -3318,15 +3687,15 @@ the height difference of the two baselines is %<*dotfill> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-dotfill}% - [2009/12/08 v2.7 Module dotfill for zref (HO)]% -\RequirePackage{zref-base}[2009/12/08] + [2010/03/26 v2.8 Module dotfill for zref (HO)]% +\RequirePackage{zref-base}[2010/03/26] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % % For measuring the width of \cs{zdotfill} we use the features % provided by module \xmodule{savepos}. % \begin{macrocode} -\RequirePackage{zref-savepos}[2009/12/08] +\RequirePackage{zref-savepos}[2010/03/26] % \end{macrocode} % For automatically generated label names we use the unique % counter of module \xmodule{base}. @@ -3415,7 +3784,7 @@ the height difference of the two baselines is \NeedsTeXFormat{LaTeX2e} \nofiles \documentclass{article} -\usepackage{zref-base}[2009/12/08] +\usepackage{zref-base}[2010/03/26] \usepackage{qstest} \IncludeTests{*} \LogTests{log}{*}{*} @@ -3445,7 +3814,7 @@ the height difference of the two baselines is %<*test-runs> \NeedsTeXFormat{LaTeX2e} \documentclass{article} -\usepackage{zref-runs}[2009/12/08] +\usepackage{zref-runs}[2010/03/26] \usepackage{qstest} \IncludeTests{*} \LogTests{log}{*}{*} @@ -3534,9 +3903,11 @@ the height difference of the two baselines is % zref-dotfill.sty & tex/latex/oberdiek/zref-dotfill.sty\\ % zref-hyperref.sty & tex/latex/oberdiek/zref-hyperref.sty\\ % zref-lastpage.sty & tex/latex/oberdiek/zref-lastpage.sty\\ +% zref-nextpage.sty & tex/latex/oberdiek/zref-nextpage.sty\\ % zref-perpage.sty & tex/latex/oberdiek/zref-perpage.sty\\ % zref-runs.sty & tex/latex/oberdiek/zref-runs.sty\\ % zref-savepos.sty & tex/latex/oberdiek/zref-savepos.sty\\ +% zref-thepage.sty & tex/latex/oberdiek/zref-thepage.sty\\ % zref-titleref.sty & tex/latex/oberdiek/zref-titleref.sty\\ % zref-totpages.sty & tex/latex/oberdiek/zref-totpages.sty\\ % zref-user.sty & tex/latex/oberdiek/zref-user.sty\\ @@ -3544,6 +3915,7 @@ the height difference of the two baselines is % zref.pdf & doc/latex/oberdiek/zref.pdf\\ % zref-example.tex & doc/latex/oberdiek/zref-example.tex\\ % zref-example-lastpage.tex & doc/latex/oberdiek/zref-example-lastpage.tex\\ +% zref-example-nextpage.tex & doc/latex/oberdiek/zref-example-nextpage.tex\\ % test/zref-test1.tex & doc/latex/oberdiek/test/zref-test1.tex\\ % test/zref-test-runs.tex & doc/latex/oberdiek/test/zref-test-runs.tex\\ % zref.dtx & source/latex/oberdiek/zref.dtx\\ @@ -3794,6 +4166,17 @@ the height difference of the two baselines is % \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@iflastpage} +% and \cs{ziflastpage} added. +% \item +% Module \xmodule{thepage} added. +% \item +% Module \xmodule{nextpage} added. +% \end{Version} % \end{History} % % \PrintIndex -- cgit v1.2.3