diff options
author | Karl Berry <karl@freefriends.org> | 2023-03-07 22:24:55 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-03-07 22:24:55 +0000 |
commit | e39915caf0eea9fd8fb3e20b628849ca3c107f55 (patch) | |
tree | 84c0c132957b4868297f146f2cd64d0d131188c0 /Master/texmf-dist/source | |
parent | 405f8ac93dcae9c7e56e13aa55c39f32d45979de (diff) |
lastpage (7mar23) (branch)
git-svn-id: svn://tug.org/texlive/branches/branch2022.final@66449 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r-- | Master/texmf-dist/source/latex/lastpage/lastpage.drv | 55 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/lastpage/lastpage.dtx | 1457 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/lastpage/lastpage.ins | 88 |
3 files changed, 969 insertions, 631 deletions
diff --git a/Master/texmf-dist/source/latex/lastpage/lastpage.drv b/Master/texmf-dist/source/latex/lastpage/lastpage.drv index c9eb7269c88..2b836edc53d 100644 --- a/Master/texmf-dist/source/latex/lastpage/lastpage.drv +++ b/Master/texmf-dist/source/latex/lastpage/lastpage.drv @@ -9,17 +9,13 @@ %% This is a generated file. %% %% Project: lastpage -%% Version: 2021/09/03 v1.2n +%% Version: 2023-03-07 v2.0a +%% Info: Refers to last page's name %% -%% Copyright (C) 2010 - 2021 by -%% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de> +%% Copyright (C) 2010 - 2023 by +%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de> %% Portions of code copyrighted by other people as marked. %% -%% The usual disclaimer applies: -%% If it doesn't work right that's your problem. -%% (Nevertheless, send an e-mail to the maintainer -%% when you find an error in this package.) -%% %% 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 @@ -28,45 +24,46 @@ %% and the latest version of this license is in %% https://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. +%% LaTeX version 2005-12-01 or later. %% %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is H.-Martin Muench. %% -%% This package was invented by -%% Jeffrey P. Goldberg (jeffrey+news at goldmark dot org). +%% This package was invented by Jeffrey P. Goldberg. %% I thought that a replacement was needed and therefore created the pageslts package, -%% https://www.ctan.org/pkg/pageslts +%% https://ctan.org/pkg/pageslts %% . Nevertheless, for compatibility with existing documents/packages as well as for %% the low amount of resources needed by the lastpage package (no new counter!), %% I updated this package. %% Thanks go to Jeffrey P. Goldberg for allowing me to do this. %% +%% While this package allows for things like "Page slash thepage{} of slash pageref{LastPage}" +%% to get "Page 7 of 9" or "Page VII of IX", +%% the NUMBER of pages is nowadays available via slash @abspage@last from the kernel, +%% but with pages for example I to X and then 1 to 10, the number of pages would be "20", +%% while the name of the last page is "10". Decide what you need/want! +%% %% This work consists of the main source file lastpage.dtx, %% the README, and the derived files -%% lastpage.sty, lastpage.pdf, -%% lastpage.ins, lastpage.drv, +%% lastpage.sty, lastpage209.sty, lastpage2e.sty, +%% lastpageclassic.sty, lastpagemodern.sty, +%% lastpage.pdf, lastpage.ins, lastpage.drv, %% lastpage-example.tex, lastpage-example.pdf. %% %% In memoriam -%% Claudia Simone Barth + 1996/01/30 -%% Tommy Muench + 2014/01/02 -%% Hans-Klaus Muench + 2014/08/24 +%% Claudia Simone Barth + 1996-01-30 +%% Tommy Muench + 2014-01-02 +%% Hans-Klaus Muench + 2014-08-24 %% -\NeedsTeXFormat{LaTeX2e}[2014/05/01] +\NeedsTeXFormat{LaTeX2e}[2022-11-01] \ProvidesFile{lastpage.drv}% - [2021/09/03 v1.2n Refers to last page's name (HMM)] -\documentclass{ltxdoc}[2015/03/26]% v2.0w -\usepackage{holtxdoc}[2012/03/21]% v0.24 -%% lastpage may work with earlier versions of LaTeX2e and those -%% class and package, but this was not tested. -%% Please consider updating your LaTeX, class, and package -%% to the most recent version (if they are not already the most -%% recent version). + [2023-03-07 v2.0a Refers to last page's name (HMM)] +\documentclass{ltxdoc}[2022/06/22]% v2.1i Standard LaTeX documentation class +\usepackage{holtxdoc}[2019/12/09]% v0.30 Private additional ltxdoc support (HO) \hypersetup{% pdfsubject={Refers to last page's name (HMM; JPG)},% - pdfkeywords={LaTeX, lastpage, last page, page number, page name, H.-Martin Muench, Jeffrey P. Goldberg},% + pdfkeywords={LaTeX, lastpage, last page, page number, page name},% pdfencoding=auto,% pdflang={en},% breaklinks=true,% @@ -81,10 +78,8 @@ pdfwindowui=true,% pdfnewwindow=true% } -\usepackage{ulem}[2012/05/18]% no version is given in the ulem.sty file \CodelineIndex -\hyphenation{created every-thing ignored} -\gdef\unit#1{\mathord{\thinspace\mathrm{#1}}}% +\hyphenation{every-thing} \begin{document} \DocInput{lastpage.dtx}% \end{document} diff --git a/Master/texmf-dist/source/latex/lastpage/lastpage.dtx b/Master/texmf-dist/source/latex/lastpage/lastpage.dtx index 099d035a999..2b5a5294369 100644 --- a/Master/texmf-dist/source/latex/lastpage/lastpage.dtx +++ b/Master/texmf-dist/source/latex/lastpage/lastpage.dtx @@ -1,46 +1,54 @@ % \iffalse meta-comment % % File: lastpage.dtx -% Version: 2021/09/03 v1.2n +% Version: 2023-03-07 v2.0a +% Info: Refers to last page's name % -% Copyright (C) 2010 - 2021 by -% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de> +% Copyright © 2010 - 2023 by +% H.-Martin Münch <Martin dot Muench at Uni-Bonn dot de> % Portions of code copyrighted by other people as marked. % % This package was invented by Jeffrey P. Goldberg. % I thought that a replacement was needed and therefore created the pageslts package, -% https://www.ctan.org/pkg/pageslts +% https://ctan.org/pkg/pageslts % . Nevertheless, for compatibility with existing documents/packages as well as for % the low amount of resources needed by the lastpage package (no new counter!), % I updated this package. % Thanks go to Jeffrey P. Goldberg for allowing me to do this. % +% While this package allows for things like "Page \thepage{} of \pageref{LastPage}" +% to get "Page 7 of 9" or "Page VII of IX", +% the NUMBER of pages is nowadays available via \@abspage@last from the kernel, +% but with pages for example I to X and then 1 to 10, the number of pages would be "20", +% while the name of the last page is "10". Decide what you need/want! +% % 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 -% http://www.latex-project.org/lppl/lppl-1-3c.txt +% https://www.latex-project.org/lppl/lppl-1-3c.txt % and the latest version of this license is in -% http://www.latex-project.org/lppl.txt +% https://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of -% LaTeX version 2005/12/01 or later. +% LaTeX version 2005-12-01 or later. % % This work has the LPPL maintenance status "maintained". % -% The Current Maintainer of this work is H.-Martin Muench. +% The Current Maintainer of this work is H.-Martin Münch. % % This work consists of the main source file lastpage.dtx, % the README, and the derived files -% lastpage.sty, lastpage.pdf, -% lastpage.ins, lastpage.drv, +% lastpage.sty, lastpage209.sty, lastpage2e.sty, +% lastpageclassic.sty, lastpagemodern.sty, +% lastpage.pdf, lastpage.ins, lastpage.drv, % lastpage-example.tex, lastpage-example.pdf. % -% 'lastpage' is available on CTAN: -% https://www.ctan.org/pkg/lastpage +% "lastpage" is available on CTAN: +% https://ctan.org/pkg/lastpage % % Also a TDS.ZIP file is provided that contains all the files % already sorted in a TDS tree: -% https://mirrors.ctan.org/install/macros/latex/contrib/lastpage.tds.zip +% https://mirror.ctan.org/install/macros/latex/contrib/lastpage.tds.zip % %<*ignore> \begingroup @@ -55,10 +63,10 @@ %</ignore> %<*install> \input docstrip.tex -\Msg{*********************************************************************} -\Msg{* Installation} -\Msg{* Package: lastpage 2021/09/03 v1.2n Refers to last page's name (HMM)} -\Msg{*********************************************************************} +\Msg{**********************************************************************} +\Msg{* Installation *} +\Msg{* Package: lastpage 2023-03-07 v2.0a Refers to last page's name (HMM)*} +\Msg{**********************************************************************} \keepsilent \askforoverwritefalse @@ -69,17 +77,13 @@ This is a generated file. Project: lastpage -Version: 2021/09/03 v1.2n +Version: 2023-03-07 v2.0a +Info: Refers to last page's name -Copyright (C) 2010 - 2021 by - H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de> +Copyright (C) 2010 - 2023 by + H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de> Portions of code copyrighted by other people as marked. -The usual disclaimer applies: -If it doesn't work right that's your problem. -(Nevertheless, send an e-mail to the maintainer - when you find an error in this package.) - 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 @@ -88,31 +92,37 @@ version. This version of this license is in and the latest version of this license is in https://www.latex-project.org/lppl.txt and version 1.3c or later is part of all distributions of -LaTeX version 2005/12/01 or later. +LaTeX version 2005-12-01 or later. This work has the LPPL maintenance status "maintained". The Current Maintainer of this work is H.-Martin Muench. -This package was invented by -Jeffrey P. Goldberg (jeffrey+news at goldmark dot org). +This package was invented by Jeffrey P. Goldberg. I thought that a replacement was needed and therefore created the pageslts package, -https://www.ctan.org/pkg/pageslts +https://ctan.org/pkg/pageslts . Nevertheless, for compatibility with existing documents/packages as well as for the low amount of resources needed by the lastpage package (no new counter!), I updated this package. Thanks go to Jeffrey P. Goldberg for allowing me to do this. +While this package allows for things like "Page slash thepage{} of slash pageref{LastPage}" +to get "Page 7 of 9" or "Page VII of IX", +the NUMBER of pages is nowadays available via slash @abspage@last from the kernel, +but with pages for example I to X and then 1 to 10, the number of pages would be "20", +while the name of the last page is "10". Decide what you need/want! + This work consists of the main source file lastpage.dtx, the README, and the derived files - lastpage.sty, lastpage.pdf, - lastpage.ins, lastpage.drv, + lastpage.sty, lastpage209.sty, lastpage2e.sty, + lastpageclassic.sty, lastpagemodern.sty, + lastpage.pdf, lastpage.ins, lastpage.drv, lastpage-example.tex, lastpage-example.pdf. In memoriam - Claudia Simone Barth + 1996/01/30 - Tommy Muench + 2014/01/02 - Hans-Klaus Muench + 2014/08/24 + Claudia Simone Barth + 1996-01-30 + Tommy Muench + 2014-01-02 + Hans-Klaus Muench + 2014-08-24 \endpreamble \let\MetaPrefix\DoubleperCent @@ -121,8 +131,11 @@ In memoriam \file{lastpage.ins}{\from{lastpage.dtx}{install}}% \file{lastpage.drv}{\from{lastpage.dtx}{driver}}% \usedir{tex/latex/lastpage}% - \file{lastpage209.sty}{\from{lastpage.dtx}{lastpage209}}% \file{lastpage.sty}{\from{lastpage.dtx}{package}}% + \file{lastpage209.sty}{\from{lastpage.dtx}{lastpage209}}% + \file{lastpage2e.sty}{\from{lastpage.dtx}{lastpage2e}}% + \file{lastpageclassic.sty}{\from{lastpage.dtx}{lastpageclassic}}% + \file{lastpagemodern.sty}{\from{lastpage.dtx}{lastpagemodern}}% \usedir{doc/latex/lastpage}% \file{lastpage-example.tex}{\from{lastpage.dtx}{example}}% } @@ -134,7 +147,8 @@ In memoriam \Msg{* To finish the installation you have to move the following} \Msg{* file into a directory searched by TeX:} \Msg{*} -\Msg{* lastpage.sty (or lastpage209.sty for TeX 2.09)} +\Msg{* lastpage.sty, lastpage209.sty, lastpage2e.sty,} +\Msg{* lastpageclassic.sty, and lastpagemodern.sty} \Msg{*} \Msg{* To produce the documentation run the file `lastpage.drv'} \Msg{* through (pdf)LaTeX, e.g.} @@ -168,19 +182,14 @@ In memoriam % % \begin{macrocode} %<*driver> -\NeedsTeXFormat{LaTeX2e}[2014/05/01] +\NeedsTeXFormat{LaTeX2e}[2022-11-01] \ProvidesFile{lastpage.drv}% - [2021/09/03 v1.2n Refers to last page's name (HMM)] -\documentclass{ltxdoc}[2015/03/26]% v2.0w -\usepackage{holtxdoc}[2012/03/21]% v0.24 -%% lastpage may work with earlier versions of LaTeX2e and those -%% class and package, but this was not tested. -%% Please consider updating your LaTeX, class, and package -%% to the most recent version (if they are not already the most -%% recent version). + [2023-03-07 v2.0a Refers to last page's name (HMM)] +\documentclass{ltxdoc}[2022/06/22]% v2.1i Standard LaTeX documentation class +\usepackage{holtxdoc}[2019/12/09]% v0.30 Private additional ltxdoc support (HO) \hypersetup{% pdfsubject={Refers to last page's name (HMM; JPG)},% - pdfkeywords={LaTeX, lastpage, last page, page number, page name, H.-Martin Muench, Jeffrey P. Goldberg},% + pdfkeywords={LaTeX, lastpage, last page, page number, page name},% pdfencoding=auto,% pdflang={en},% breaklinks=true,% @@ -195,36 +204,15 @@ In memoriam pdfwindowui=true,% pdfnewwindow=true% } -\usepackage{ulem}[2012/05/18]% no version is given in the ulem.sty file \CodelineIndex -\hyphenation{created every-thing ignored} -\gdef\unit#1{\mathord{\thinspace\mathrm{#1}}}% +\hyphenation{every-thing} \begin{document} \DocInput{lastpage.dtx}% \end{document} %</driver> % \end{macrocode} -% % \fi % -% \CheckSum{316} -% -% \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{lastpage.drv} % % \begingroup @@ -242,67 +230,83 @@ In memoriam % }%^^A % \expandafter\endgroup\x % -% \DoNotIndex{\",\-,\,,\\,\noindent} -% \DoNotIndex{\documentclass,\usepackage,\ProvidesPackage} -% \DoNotIndex{\NeedsTeXFormat,\plainTeX,\TeX,\LaTeX,\pdfLaTeX} -% \DoNotIndex{\textbf,\textit,\textsf,\texttt,\underline,\mathord,\normalsize} -% \DoNotIndex{\textquotedblleft,\textquotedblright} -% \DoNotIndex{\ifx,\ifnum,\gdef,\href,\pageref,\empty} -% \DoNotIndex{\newpage,\pagebreak,\newline,\linebreak,\nolinebreak,\MessageBreak} -% \DoNotIndex{\smallskip,\medskip,\bigskip,\space,\hfil,\qquad,\thinspace} -% \DoNotIndex{\listfiles,\section,\today,\the,\arabic} -% \DoNotIndex{\makeatletter,\makeatother,\verb} -% \DoNotIndex{\begin,\end,\enddocument,\mathrm} -% \DoNotIndex{\lastpage@testa,\lastpage@testb,\lastpage@one} +% \DoNotIndex{\@auxout,\@evenfoot,\@firstofone,\@ifl@t@r,\@ifpackagelater,\@ifpackageloaded} +% \DoNotIndex{\@ifundefined,\@mainaux,\@number,\@oddfoot} +% \DoNotIndex{\addtocounter,\AddToHook,\arabic,\begin} +% \DoNotIndex{\bigskip,\clearpage,\csname,\documentclass,\empty,\end,\endcsname} +% \DoNotIndex{\enddocument,\ExplSyntaxOff,\ExplSyntaxOn,\fmtversion} +% \DoNotIndex{\g,\gdef,\here,\hfil,\Hy@temp,\Hy@unicodefalse} +% \DoNotIndex{\hypersetup,\if@filesw,\ifHy@hypertexnames,\ifHy@pageanchor,\ifHy@plainpages} +% \DoNotIndex{\ifnum,\IfPackageAtLeastTF,\IfPackageLoadedTF,\ifx,\immediate,\input} +% \DoNotIndex{\label,\lastpage,\lastpage-example.tex,\lastpage.dtx,\lastpage.sty,\lastpagee.sty} +% \DoNotIndex{\lastpageclassic.sty,\lastpagemodern.sty,\LaTeX,\listfiles} +% \DoNotIndex{\makeatletter,\makeatother,\markboth,\message,\MessageBreak} +% \DoNotIndex{\NeedsTeXFormat,\newcommand,\newline,\newpage} +% \DoNotIndex{\noindent,\normalsize,\numexpr,\origenddocument,\PackageError} +% \DoNotIndex{\PackageWarning,\pagenumbering,\pageref,\pdfstringdef,\ProvidesPackage} +% \DoNotIndex{\qquad,\RequirePackage,\section,\slshape,\smallskip,\space,\test,\textbf} +% \DoNotIndex{\textit,\textquotedblleft,\textquotedblright,\textsf,\texttt,\the,\thepage} +% \DoNotIndex{\today,\upshape,\url,\usepackage,\value,\verb,\write} % % \title{The \xpackage{lastpage} package} -% \date{2021/09/03 v1.2n} -% \author{H.-Martin M\"{u}nch\\\xemail{Martin.Muench at Uni-Bonn.de}\\ +% \date{2023-03-07 v2.0a} +% \author{H.-Martin Münch\\\xemail{Martin.Muench at Uni-Bonn.de}\\ % invented by Jeffrey P. Goldberg\\\xemail{jeffrey+news at goldmark.org}} % % \maketitle % % \begin{abstract} -% \noindent This \LaTeX{} package puts the label \texttt{LastPage} -% (|\AtEndDocument|) into the \xfile{.aux} file, allowing the user to refer -% to the last page of a document. This might be particularly useful -% in places like headers or footers.~--\\ -% When more than one page numbering scheme is used, or the fnsymbol page -% numbering scheme is used, or another package has output after this package, -% or the number of pages instead of the last page's name is needed, -% or the page numbers exceed a certain range, there might be problems, -% which can be solved by using the \xpackage{pageslts} package instead. +% \noindent This \LaTeX{} package puts the label \texttt{LastPage} +% at the end of the document into the \xfile{.aux} file, +% allowing the user to refer to the last page of a document. +% This might be particularly useful in places like headers or footers.~--\\ +% While this package allows for things like\\ +% \hbox{\textquotedblleft Page} \hbox{|\thepage{}|} of |\pageref{LastPage}|\textquotedblright{} +% to get \textquotedblleft Page 7 of 9\textquotedblright{} or +% \textquotedblleft Page VII of IX\textquotedblright, +% the \emph{number} of pages is nowadays available via |\@abspage@last| from the kernel, +% but when more than one page numbering scheme is used +% (for example pages I~to X and then 1~to 10, thus number of pages +% \hbox{\textquotedblleft 20\textquotedblright ,} but name of the last page +% \hbox{\textquotedblleft 10\textquotedblright ),} +% or when or the fnsymbol page numbering scheme is used, or another package +% has output after this package, or the page numbers exceed a certain range, +% there might be problems, which can be solved by using the +% \xpackage{pageslts} package instead. % \end{abstract} % % \bigskip % % \noindent Disclaimer for web links: The author is not responsible for any contents -% referred to in this work unless he has full knowledge of illegal contents. -% If any damage occurs by the use of information presented there, only the -% author of the respective pages might be liable, not the one who has referred -% to these pages. +% referred to in this work unless having full knowledge of illegal contents. +% If any damage occurs by the use of information presented there, +% only the author of the respective pages might be liable, +% not the one who has referred to those pages. % % \bigskip % -% \noindent {\color{green} Save per page about $200\unit{ml}$ water, -% $2\unit{g}$ CO$_{2}$ and $2\unit{g}$ wood:\\ -% Therefore please print only if this is really necessary.} +% \textbf{Note: At several places in this manual as alternative the \pkg{pageslts} +% package is \textquotedblleft advertised\textquotedblright. The current version +% 2015/12/21 v1.2f of that package has not yet been updated to the new hook mechanism. +% In special cases (for example }|\pagenumbering{fnsymbol}|\textbf{) the current version +% of that package combined with a current \LaTeX-format fails. Together with about +% 80~other packages (small to large, public as well as private, some probably obsolete) +% it is in the update queue.} % % \newpage % % \tableofcontents % % \section{Introduction} -% % \indent This \LaTeX{} package puts the label \texttt{LastPage} -% (|\AtEndDocument|) into the \xfile{aux} file, allowing the user to refer +% (at end of the document) into the \xfile{aux} file, allowing the user to refer % to the last page of a document via |\pageref{LastPage}|. % This might be particularly useful in places like headers or footers. % % \bigskip % % This package was invented by \textbf{Jeffrey P. Goldberg}, -% and is now maintained by \textsc{H.-Martin M\"{u}nch}. A~big +% and is now maintained by \textsc{H.-Martin Münch}. A~big % \textquotedblleft Thank you!\textquotedblright{} to % \textsc{Jeffrey P. Goldberg} for granting this. % @@ -312,19 +316,13 @@ In memoriam % you might want to have a look at the \xpackage{pageslts} package % (see section~\ref{sec:Alternatives}: Alternatives). % -% \bigskip -% % \section{Usage} -% % \indent Just load the package placing % \begin{quote} % |\usepackage{lastpage}| % \end{quote} -% \noindent in the preamble of your \LaTeXe{} source file or -% \begin{quote} -% |\usepackage{lastpage209}| -% \end{quote} -% \noindent in the preamble of your \LaTeX2.09{} source file.\\ +% \noindent in the preamble of your source file +% (or |\input{lastpage.sty}| if |\usepackage| is unknown).\\ % % \indent For example for various draft forms it is desirable to have a % page reference to the last page, so that e.\,g. page footers can @@ -363,32 +361,23 @@ In memoriam % have got to look in the used class/package(s)/preamble instead of in the % \xpackage{lastpage} package.\\ % -% If the \emph{number} of the last page is needed, this can be extracted -% from the reference with the \xpackage{refcount} package -% (\url{https://www.ctan.org/pkg/refcount}, since version~2.0 of it): -% \begin{verbatim} -% \newcounter{lastpagenumber}% -% \setcounter{lastpagenumber}{\getrefbykeydefault{LastPage}{page}{1}}% -%\end{verbatim} -% but this only works if the last page has an arabic number -% (and it is not necessarily the total number of pages). -% For example it would not work in the example file because of the -% |Roman| pagenumbering scheme:\newline -% |\getrefbykeydefault{LastPage}{page}{1}| would result in |IV| instead of |4|. -% When using the \xpackage{pageslts} package, the counter |pagesLTS.pagenr| -% holds the value of the total number of pages (after a compilation run -% with writing access to the \xfile{.aux} file). -% -% \section{A lot of WARNINGS\label{sec:warn}} -% -% \indent (Short: try using the \xpackage{pageslts} package instead, -% if you have room for some more |\count|ers.\footnote{To determine the number of% -% used and available counters and other registers, the \xpackage{regstats} package% -% might be helpful.}) +% If the total \emph{number} of pages of a document is needed, +% the kernel already gives this by |\makeatletter\@abspage@last\makeatother| +% (needs at least two compiler runs). % +% \section{Some \textsc{Warnings}\label{sec:warn}} % \subsection{\texttt{\textbackslash AtEndDocument}\label{ssec:aed}} +% \indent {\bfseries |\AtEndDocument| is not used by the \pkg{lastpagemodern.sty} +% version of the lastpage package, requiring \LaTeX -format 2022-11-01 +% or newer. Instead |\AddToHook{enddocument/afterlastpage}| is used +% and the problem does not arise.} % -% \indent The output of a \LaTeXe{} run is not independent of the order +% \bigskip +% +% \pkg{lastpageclassic.sty} uses |\AtEndDocument| and +% \pkg{lastpage209.sty} redefines \linebreak |\enddocument|. +% The last two cases are problematic:\\ +% The output of a \LaTeXe{} run is not independent of the order % in which the packages are loaded. It is often the case that the same % formats for which one must put tables and figure at the end, % are the ones in which endnotes are also required. @@ -398,11 +387,7 @@ In memoriam % as well). Clearly it is not safe for any package writer or user % to assume that no material will follow what they put into % |\AtEndDocument|. Therefore a message, which begins with -% \texttt{AED}, is included in every usage of |\AtEndDocument|.~--\\ -% \indent (The \xpackage{pageslts} package solves this problem by using -% |\AfterLastShipout| from \textsc{Heiko Oberdiek's} \xpackage{atveryend} -% package for the references\\ -% |\lastpageref{VeryLastPage}| and |\lastpageref{LastPages}|.)\\ +% \texttt{AED}, is included in every usage of |\AtEndDocument|. % \xpackage{lastpage} uses |\AtEndDocument{|\ldots|\clearpage|\ldots|}|, thus\\ %|\usepackage{lastpage}|\ldots|\AtEndDocument{|\textit{something}|}| % will place \textit{something} after the |\clearpage|. To place it earlier, use\\ @@ -420,44 +405,38 @@ In memoriam % ... % \end{document} % \end{verbatim} -% (might need a protected and/or expanded |\def|). When |\cleapage| leads -% to some output, |\cleapage\textit{something}| instead of |\textit{something}| +% (might need a protected and/or expanded |\def|). When |\clearpage| leads +% to some output, |\clearpage\textit{something}| instead of |\textit{something}| % might be wanted. % -% \subsection{Interaction with very old versions of the \xpackage{endfloat} package\label{sec:endfloat}} -% -% \indent The \emph{very} old version~2.0 (and earlier) of the \xpackage{endfloat} -% package actually redefined the |\enddocument| command, and so interfered -% drastically with the \LaTeXe{} commands which make use of |\AtEndDocument|. -% Newer versions of \xpackage{endfloat} exist -% (at~the time of writing this documentation: v2.5d as of 2011/12/25) -% in modern documentation form, which should be available from -% the same source where you received this file, see subsection~\ref{ss:Downloads}. -% (\textquotedblleft Note that versions~2.1 and beyond will no longer work -% with \LaTeX209{}. Get your administrator to upgrade your site to the -% new standard, \LaTeXe{}. Although version~2.0 (a \LaTeX209{} version) -% will usually work with \LaTeXe{}, it will not do so in combination -% with certain other packages.\textquotedblright{} (\xpackage{endfloat} -% v2.5d, 2011/12/25))\\ -% A note is placed in the style file.\\ +% \subsection{Interaction with ancient versions of the \xpackage{endfloat} package\label{sec:endfloat}} +% +% \indent {\bfseries |\AtEndDocument| is not used by the \pkg{lastpagemodern.sty} +% version of the lastpage package, requiring \LaTeX -format 2022-11-01 +% or newer. Instead |\AddToHook{enddocument/afterlastpage}| is used +% and the problem does not arise.} +% +% \bigskip +% The \emph{ancient} version~2.0 (and earlier; 2.0~from 1992; +% current version at the time of updating this documentation: 2.7~from 2019) +% of the \xpackage{endfloat} package actually redefined the |\enddocument| command, +% and so interfered drastically with the \LaTeXe{} commands which make use of +% |\AtEndDocument|. % If you want your \texttt{LastPage} to label the last page of these end floats, % you need to load \xpackage{lastpage} after loading \xpackage{endfloat} % (or use \texttt{VeryLastPage} from the \xpackage{pageslts} package instead). % If, on the other hand, you \emph{want} \texttt{LastPage} to refer % to the (not so) last page, exclusive of the floats at the end, % then load in the reverse order. Independent from the order of -% \xpackage{lastpage} and \xpackage{endfloat}, you will still need the -% modified\footnote{New versions are available since more than 15~years, -% so it really might be time to update, if you did not do it already.} -% version of \xpackage{endfloat}.\\ +% \xpackage{lastpage} and \xpackage{endfloat}, you will still need +% a version of \xpackage{endfloat} later than 2.0 from 1992.\\ % % Other \LaTeX2.09{} (!) packages also seem to like to redefine % |\enddocument|. In addition to the old \xpackage{endfloat}, % \xpackage{harvard} comes to mind. All of these will need to be -% modified swiftly. \textbf{If possible, update to \LaTeXe{}!} +% modified swiftly. % % \subsection{Page name instead of page number} -% % When any page numbering scheme other than \texttt{arabic} is used % at the page, which |\pageref{LastPage}| refers to, the \textit{name} % and not the \textit{number} of the page is given. For example, @@ -468,90 +447,90 @@ In memoriam % (with \textbf{s} at the end) at your disposal for remediation.) % % \subsection{No write access to the \xfile{aux} file} -% % Some packages (e.\,g. \xpackage{tikz} and \xpackage{selectp}) sometimes prevent % the output to the \xfile{aux} file. In that case a warning is issued. This is % no problem as long as there is another compilation run where the label to the % last page can be placed via the \xfile{aux} file. % -% \subsection{Wrong last page number with more than one page numbering scheme} -% +% \subsection[Wrong last page number with \textgreater 1 page numbering scheme]{% +% Wrong last page number with more than one page numbering scheme} % When more than one page numbering scheme is used, % \texttt{LastPage} does not give the total \textbf{number} of pages % (even if \texttt{arabic} is the page numbering scheme of that page). % For example, for a document with VI+36 pages, it gives % \textquotedblleft 36\textquotedblright{} as reference to the last page. % While this is correct, the total number of pages is $42$.\\ -% \indent (The \xpackage{pageslts} package puts |\lastpageref{LastPages}| -% (with \textbf{s} at the end) at your disposal for remediation.) -% -% \subsection{\texttt{\textbackslash addtocounter\{page\}\{\ldots\} and \texttt{\textbackslash setcounter\{page\}\{\ldots\}}}} -% +% If the total \emph{number} of pages of a document is needed, +% the kernel already gives this by |\makeatletter\@abspage@last\makeatother|. +% The \xpackage{pageslts} package puts |\lastpageref{LastPages}| +% (with \textbf{s} at the end) at your disposal for remediation, +% giving the number of pages and linking to the last page, if linking is provided +% for examaple by the \pkg{hyperref} package. +% +% \subsection{\texttt{\textbackslash addtocounter\{page\}\{\ldots\} and % +% \texttt{\textbackslash setcounter\{page\}\{\ldots\}}}} % When the page number was manipulated by |\addtocounter{page}{...}| or % |\setcounter{page}{...}|, \texttt{LastPage} does not give the total % \textbf{number} of pages (even if \texttt{arabic} is the page numbering % scheme of that page).\\ -% \indent (The \xpackage{pageslts} package puts |\lastpageref{LastPages}| +% The \xpackage{pageslts} package puts |\lastpageref{LastPages}| % (with \textbf{s} at the end) at your disposal for remediation: -% \texttt{LastPages} ignores page number manipulation.) +% \texttt{LastPages} ignores page number manipulation. Also |\@abspage@last| +% from the kernel is not influenced by page number manipulation. % % \subsection{Page number reset by \texttt{\textbackslash pagenumbering\{\ldots\}}} -% % At a page numbering change the page number is reset to one. % Therefore \texttt{LastPage} does not give the total \textbf{number} of pages % (even if \texttt{arabic} is the page numbering scheme of that page). % Furthermore, now two pages have the same name.\\ -% \indent (The \xpackage{pageslts} package does not only put +% The \xpackage{pageslts} package does not only put % |\lastpageref{LastPages}| (with \textbf{s} at the end) at your disposal % for remediation: \texttt{LastPages} also ignores page number manipulation. % It furthermore offers the option |pagecontinue| to continue the -% page numbering, when |\pagenumbering{...}| is used.) +% page numbering, when |\pagenumbering{...}| is used. % % \subsection{Last pages of different page numbering schemes} -% % |\pageref{LastPage}| refers to the (maybe not so) last page of the last % page numbering scheme. References to the respective last page of the other % page numbering schemes are not provided.\\ -% \indent (The \xpackage{pageslts} package does this with labels +% The \xpackage{pageslts} package does this with labels % \texttt{pagesLTS.<numbering scheme>}, where \texttt{<numbering scheme>} is % e.\,g. arabic, roman, Roman, alph, or Alph.\linebreak % For fnsymbol please use |\lastpageref{pagesLTS.fnsymbol}| instead of\\ -% |\pageref{pagesLTS.fnsymbol}|.) +% |\pageref{pagesLTS.fnsymbol}|. % % \subsection{Current page} -% % The command |\thepage| gives the \textbf{name} of the current page % in the current page numbering scheme, which is different from the % current total/absolute page number e.\,g. with a second % page numbering scheme, |\addtocounter{page}{...}|, or |\setcounter{page}{...}|, % and it will not be an arabic number at all, % if the current page numbering scheme is not arabic.\\ -% \indent (The \xpackage{pageslts} package provides the command +% The \xpackage{pageslts} package provides the command % |\theCurrentPage| and for the current number of pages in the current % page numbering scheme\\ -% |\theCurrentPageLocal|.) +% |\theCurrentPageLocal|. The kernel already provides the +% number of pages, which have been shipped out, as |\the\ReadonlyShipoutCounter|. +% The current page is always |ReadonlyShipoutCounter +1|. % % \subsection{First page} -% % There is no special label at the first page. % (This is the \textbf{last}\textsf{page} package, after all.)\\ -% \indent (The \xpackage{pageslts} package creates a label \texttt{pagesLTS.0} -% at the first page of the document.) +% The \xpackage{pageslts} package creates a label \texttt{pagesLTS.0} +% at the first page of the document. % % \subsection{Using the \xpackage{fnsymbol} page numbering scheme\label{ss:fnsymbol}} -% % \indent Using the \texttt{fnsymbol} page numbering scheme can result in problems!\\ % When the page, where |\pageref{lastpage}| points at, is in \texttt{fnsymbol} % page numbering scheme, this package might screw up -- -% and quite totally for that, especially when used together with old versions of the -% \xpackage{hyperref} package (e.\,g. \xpackage{hyperref} v6.80x as of 2010/04/17). -% When testing with version v6.83m as of 2012/11/06 everything seemed to worked fine, -% but this might not always be the case.\\ -% \indent (The \xpackage{pageslts} package with |\lastpageref{lastpage}| and -% appropriate package options should cope even with this case.) +% and quite totally for that, especially when used together with \emph{very old} +% versions of the \xpackage{hyperref} package (e.\,g. \xpackage{hyperref} v6.80x +% as of 2010/04/17). When testing with version v6.83m as of 2012/11/06 everything +% seemed to worked fine, but this might not always be the case.\\ +% The \xpackage{pageslts} package with |\lastpageref{lastpage}| and +% appropriate package options should cope even with this case. % % \subsection{Page counter overflow\label{ss:overflow}} -% % \indent \textquotedblleft The ranges of supported counter values are more or less % restricted. Only \cs{arabic} can be used with any counter value \TeX{} supports. % \begin{quote} @@ -576,12 +555,11 @@ In memoriam % The \xpackage{alphalph} package, 2010/04/18, v2.3, first table, p.~2).\\ % % \noindent When \textit{any} page is out of that range, there will be a counter overflow.\\ -% \indent (\xpackage{lastpage} probably is not the right package to be asked +% \xpackage{lastpage} probably is not the right package to be asked % to correct this anyway, but the \xpackage{pageslts} package -% (with appropriate options) can do this.)\\ +% (with appropriate options) can do this. % % \subsection{Other packages manipulating \texttt{\textbackslash lastpage@putlabel}} -% % The \xpackage{hyperref} package redefines the |\lastpage@putlabel| command, % and the \xpackage{revtex4} class redefines the |\lastpage@putlabel| command, % and the \xpackage{hyperref} package redefines the |\lastpage@putlabel| command, @@ -600,52 +578,23 @@ In memoriam % Because |\lastpage@putlabel| is no longer called, now there should not be any % double definitions of the \texttt{lastpage} label. % -% \newpage -% % \section{Alternatives\label{sec:Alternatives}} -% % There are similar packages, which do (or do not) similar things (or even more). % As I neither know what exactly you want to accomplish when using this package % (e.\,g.~page number vs. page name, hyperlinks or not), nor what resources -% you have (e.\,g.~$\varepsilon$-\TeX{}), here is a list of some possible -% alternatives:\\ -% -% \DescribeMacro{lastpage209.sty} -% \begin{description} -% \item[-] If \LaTeX2.09{} is still used, and if you are unable to switch to -% \LaTeXe{}, the \LaTeX2.09{} compatible \xpackage{lastpage209.sty} can be used, -% which is defined as follows:\\ -% (It is also generated automatically from \xfile{lastpage.dtx} when compiling it.) -% -% \begin{macrocode} -%<*lastpage209> - % FOR LaTeX 2.09 ONLY - FOR LaTeX 2e USE lastpage.sty OR pageslts.sty! - % This is lastpage209.sty invented by Jeffrey P. Goldberg - % (jeffrey+news at goldmark dot org), maintained by - % H.-Martin M\"{u}ench (Martin dot Muench at Uni-Bonn dot de). -\let\origenddocument=\enddocument% -\def\enddocument{\clearpage% - {\addtocounter{page}{-1}% - \immediate\write\@mainaux{\string\newlabel{LastPage}{{}{\thepage}}}}% - \addtocounter{page}{+1}% - \origenddocument% - }% -%</lastpage209> -% \end{macrocode} -% -% (after \textsc{Piet van Oostrum}: Page layout in \LaTeX{}, March~2, 2004, -% section~16; fancyhdr.pdf). Because |\enddocument| is redefined, -% similar problems as with the old version of the \xpackage{endfloat} -% package (see subsection~\ref{sec:endfloat}) will arise.\\ -% \textbf{If possible, update to \LaTeXe{}} (and maybe to the -% \xpackage{pageslts} package)\textbf{!} -% \end{description} -% -% \newpage +% you have (e.\,g.~\TeX, \LaTeX2e, $\varepsilon$-\TeX{}, \LaTeX-format as recent +% as 2022-11-01 or newer), here is a list of some possible alternatives: % -% \DescribeMacro{pageslts} +% \DescribeMacro{pageslts}\vspace*{-\baselineskip} % \begin{description} -% \item[-] The \xpackage{pageslts} package first started as a revision of this +% \item[-] +% \textbf{Note: The current version 2015/12/21 v1.2f of the \pkg{pageslts} package +% has not yet been updated to the new hook mechanism. In special cases (for example }% +% |\pagenumbering{fnsymbol}|\textbf{) the current version of that package combined +% with a current \LaTeX-format fails. Together with about 80~other packages +% (small to large, public as well as private, some probably obsolete) it is +% in the update queue.}\newline +% The \xpackage{pageslts} package first started as a revision of this % \xpackage{lastpage} package, but it became obvious that a replacement was % needed to accomplish what the \xpackage{pageslts} package does. For backward % compatibility, a label named |LastPage| is provided. @@ -694,9 +643,7 @@ In memoriam % Further labels are provided for special cases. % \end{description} % -% \pagebreak -% -% \DescribeMacro{totpages} +% \DescribeMacro{totpages}\vspace{-\baselineskip} % \begin{description} % \item[-] The \xpackage{totpages} package provides a \texttt{totpages} label similar to % \texttt{LastPages}\\ @@ -709,31 +656,32 @@ In memoriam % by mail to determine the postage). % \end{description} % -% \DescribeMacro{nofm.sty} +% \DescribeMacro{nofm.sty}\vspace{-\baselineskip} % \begin{description} % \item[-] \textquotedblleft There is a package \xpackage{nofm.sty} available, % but some versions of it are defective, and most don't work with \xpackage{fancyhdr} % because they take over the complete page layout.\textquotedblright (\textsc{Piet van % % Oostrum}: Page layout in \LaTeX{}, March~2, 2004, section~16; fancyhdr.pdf)\\ % \xpackage{nofm} as of 1991/02/25 (without version number), available at\\ -% \url{https://mirrors.ctan.org/obsolete/macros/latex209/contrib/misc/nofm.sty},\\ +% \href{https://mirror.ctan.org/obsolete/macros/latex209/contrib/misc/nofm.sty}{% +% https://mirror.ctan.org/obsolete/macros/latex209/contrib/misc/nofm.sty}, \linebreak % does not work with e.\,g. \xpackage{hyperref}, redefines |\enddocument| % as well as |\@oddhead|, |\@evenhead|, |\@oddfoot|, and |\@evenfoot|.\\ % If you know the (CTAN) location of a \textbf{working}~(!) version, % please send an e-mail to the \xpackage{lastpage} maintainer, thanks! % \end{description} % -% \DescribeMacro{count1to} +% \DescribeMacro{count1to}\vspace{-\baselineskip} % \begin{description} % \item[-] You may want to have a look at the \xpackage{count1to} package. % \end{description} % -% \DescribeMacro{totalcount} +% \DescribeMacro{totalcount}\vspace{-\baselineskip} % \begin{description} % \item[-] The \xpackage{totalcount} package provides |\totalpages|. % If there are only arabic page numbers consecutively running from 1 to the last page, % this works. But for example -% +% % \begin{quote} %\begin{verbatim} %\documentclass{article} @@ -751,45 +699,60 @@ In memoriam % last page even if \xpackage{hyperref} is used). % \end{description} % -% \DescribeMacro{zref} +% \DescribeMacro{zref}\vspace{-\baselineskip} % \begin{description} % \item[-] The \xpackage{zref} package of \textsc{Heiko Oberdiek} requires -% $\varepsilon$-\TeX{}. \xpackage{lastpage} does not require $\varepsilon$-\TeX{}, -% but if you already have $\varepsilon$-\TeX{}, you may have a look at the extensive -% \xpackage{zref} package, whether it suits your needs better (or additionally or -% whatsoever). +% $\varepsilon$-\TeX{}. \xpackage{lastpageclassic} does not require $\varepsilon$-\TeX{}, +% but if you already have $\varepsilon$-\TeX{} (and use \xpackage{lastpagemodern}), +% you may also have a look at the extensive \xpackage{zref} package, +% whether it suits your needs better (or additionally or whatsoever). % \end{description} % -% \DescribeMacro{memoir} +% \DescribeMacro{memoir}\vspace{-\baselineskip} % \begin{description} -% \item[-] The \xpackage{memoir} class provides |\thelastpage| (page number printed +% \item[-] The \xpackage{memoir} \emph{class} provides |\thelastpage| (page number printed % on last page) and |\thelastsheet| (number of pages). % \end{description} % +% \DescribeMacro{LaTeX-kernel}\vspace{-\baselineskip} +% \begin{description} +% \item[-] The number of pages is nowadays available via |\@abspage@last| +% from the kernel, but when more than one page numbering scheme is used +% (for example pages I~to X and then 1~to 10, thus number of pages +% \hbox{\textquotedblleft 20\textquotedblright ,} but name of the last page +% \hbox{\textquotedblleft 10\textquotedblright ),} +% or when or the fnsymbol page numbering scheme is used, or another package +% has output after this package, or the page numbers exceed a certain range, +% there might be problems. +% \end{description} +% % \bigskip % % \noindent (You programmed or found another alternative, -% which is available at CTAN.org?\\ -% OK, send an e-mail to me with the name, location at CTAN.org, +% which is available at \url{CTAN.org}?\\ +% OK, send an e-mail to me with the name, location at \url{CTAN.org}, % and a short notice, and I will probably include it in the list above.)\\ % % \smallskip % % \noindent About how to get those packages, please see subsection~\ref{ss:Downloads}. % -% \pagebreak -% % \section{Example} % % \begin{macrocode} %<*example> -\documentclass[british]{article}[2014/09/29]% v1.4h -\AtEndDocument{\message{^^JLaTeX Info: Executing hook `AtEndDocument'.}} -\usepackage[draft]{showkeys}[2014/10/28]% v3.17 +\documentclass[british]{article}[2022/07/02]% v1.4n Standard LaTeX document class +\makeatletter +\@ifl@t@r\fmtversion{2022/11/01}{% + \AddToHook{enddocument/afterlastpage}[lastpage]{% + \message{^^JLaTeX Info: Executing hook `enddocument/afterlastpage'.}}% +}{\AtEndDocument{\message{^^JLaTeX Info: Executing hook `AtEndDocument'.}}% + } +\makeatother +\usepackage[draft]{showkeys}[2022/04/12]% v3.18 Show cite and label keys (DPC, MH) %% Use final instead of draft to hide the keys. %% -\usepackage{hyperref}[2012/11/06]% v6.83m -\hypersetup{% - extension=pdf,% +\usepackage{hyperref}[2023-02-07]% v7.00v Hypertext links for LaTeX +\hypersetup{extension=pdf,% plainpages=false,% pdfpagelabels=true,% hyperindex=false,% @@ -797,33 +760,30 @@ In memoriam pdftitle={lastpage package example},% pdfauthor={H.-Martin Muench},% pdfsubject={Example for the lastpage package},% - pdfkeywords={LaTeX, lastpage, H.-Martin Muench},% + pdfkeywords={LaTeX, lastpage},% pdfview=Fit,% pdfstartview=Fit,% pdfpagelayout=SinglePage% } -%% If hyperref is not used, the url package -%% https://www.ctan.org/pkg/url +%% If hyperref is not used, the url package +%% https://ctan.org/pkg/url %% must be loaded for the \url used in this example: %% \usepackage{url} %% or just use \let\url\texttt for the one used url. -\usepackage{lastpage}[2021/09/03]% v1.2n +\usepackage{lastpage}[2023-03-07]% v2.0a \makeatletter \renewcommand{\@evenfoot}{% \normalsize\slshape \today\hfil \upshape % page \thepage{} of \pageref{LastPage}} \renewcommand{\@oddfoot}{\@evenfoot} \makeatother -\gdef\unit#1{\mathord{\thinspace\mathrm{#1}}}% \listfiles \begin{document} \pagenumbering{Roman} - \section*{Example for lastpage} \markboth{Example for lastpage}{Example for lastpage} - This example demonstrates the use of package\newline -\textsf{lastpage}, v1.2n as of 2021/09/03 (HMM; JPG).\newline +\textsf{lastpage}, v2.0a as of 2023-03-07 (HMM; JPG).\newline The package takes no options.\newline For more details please see the documentation!\newline @@ -848,47 +808,21 @@ trademark owner. There is no intention of infringement; the usage is to the benefit of the trademark owner.\newline \textbf{Tip}: Use \textit{logical page numbers} -for the display of the pdf (in Adobe Reader DC 2021.005.20060: -Edit $>$ Preferences $>$ Categories: Page Display $>$ +for the display of the pdf (in Adobe Acrobat Reader 2022.003.20322: +Edit $>$ Preferences $>$ Page Display $>$ Page Content and Information: Use logical page numbers)!\newline If you are more ambitious in respect to your aims with this package, you might want to have a look at the \textsf{pageslts} package:\newline -\url{https://www.ctan.org/pkg/pageslts}. - -\bigskip - -Save per page about $200\unit{ml}$~water, $2\unit{g}$~CO$_{2}$ -and $2\unit{g}$~wood:\newline -Therefore please print only if this is really necessary.\newline -I do NOT think, that it is necessary to print THIS file, really\newline -(at least not after this page)! - +\url{https://ctan.org/pkg/pageslts}. \bigskip \noindent The page (\verb|\thepage|): \thepage \newline - -\noindent Last page's name (LastPage): \pageref{LastPage} - -\newpage - -\noindent The page (\verb|\thepage|): \thepage \newline - -\noindent Last page's name (LastPage): \pageref{LastPage} - +Last page's name (LastPage): \pageref{LastPage} \newpage \noindent The page (\verb|\thepage|): \thepage \newline - -\noindent Last page's name (LastPage): \pageref{LastPage} - -\newpage - -\section*{The End} - -\noindent The page (\verb|\thepage|): \thepage \newline - -\noindent Last page's name (LastPage): \pageref{LastPage} +Last page's name (LastPage): \pageref{LastPage} \bigskip @@ -936,82 +870,124 @@ prints:\newline Page \thepage{} is page \makeatletter\lastpage@lastpage\makeatother.% \newline This can be broken for example by \verb|\pagenumbering{fnsymbol}|. +\newpage + +\noindent The page (\verb|\thepage|): \thepage \newline +Last page's name (LastPage): \pageref{LastPage} +\bigskip + +With modern \LaTeX{} it is possible to say: +\begin{quote} +\begin{verbatim} +\NeedsTeXFormat{LaTeX2e}[2022-11-01] +\documentclass{article} +\pagenumbering{fnsymbol} +\begin{document} +\addtocounter{page}{8}% +\makeatletter% +\ExplSyntaxOn% +\xdef\test{\numexpr\the\g_shipout_readonly_int +1\relax}% +\ExplSyntaxOff% +\ifnum \@abspage@last = \test\relax% +This is the last page.% +\else% +This is not the last page +(or it is but \LaTeX{} needs another compilation run +to detect this). +\fi +\makeatother +\end{document} +\end{verbatim} +\end{quote} + +\newpage +\section*{The End} +\noindent The page (\verb|\thepage|): \thepage \newline +Last page's name (LastPage): \pageref{LastPage} +\bigskip + +To see the content of the \texttt{enddocument/afterlastpage}-hook +(for a recent \LaTeX-format!) use +\verb|\ShowHook{enddocument/afterlastpage}|.% without the \verb||, of course! \end{document} %</example> % \end{macrocode} -% -% \newpage -% % \StopEventually{} +% \newpage % % \section{The implementation} -% -% We start off by checking that we are loading into \LaTeXe{} and -% announcing the name and version of this package. +% \DescribeMacro{lastpage.sty} +% We first need to determine whether we are on \TeX~2.09 or \LaTeX2e: % % \begin{macrocode} %<*package> +%% Part of the "lastpage" package +%% loads either lastpage2.09.sty for TeX 2.09 or lastpage2e.sty for LaTeX 2e +%% with code from https://groups.google.com/g/comp.text.tex/c/-Qmhj1ZI4xM +\def\loadlastpage{\ProvidesPackage{lastpage}[2023/03/07 v2.0a lastpage: 2.09 or 2e? (HMM)]\relax\RequirePackage{lastpage2e}} +\begingroup \expandafter \ifx \csname documentclass\endcsname\relax +\endgroup \expandafter \input{lastpage209.sty} +\else \endgroup \expandafter \loadlastpage +\fi +%</package> % \end{macrocode} % -% \begin{macrocode} -\NeedsTeXFormat{LaTeX2e}[2014/05/01] -\ProvidesPackage{lastpage}% - [2021/09/03 v1.2n Refers to last page's name (HMM; JPG)]% - -%% lastpage may work with earlier versions of LaTeX, -%% but this was not tested. Please consider updating -%% your LaTeX (and packages) to the most recent version -%% (if it is/they are not already the most recent version). - -% \end{macrocode} -% -% A short description of the \xpackage{lastpage} package: +% \DescribeMacro{lastpage209.sty} +% If we are on \TeX~2.09 (really?!), we load the 2.09 version \pkg{lastpage209.sty}: % % \begin{macrocode} -%% Allows for things like -%% Page \thepage{} of \pageref{LastPage} -%% to get -%% 'Page 7 of 9'. +%<*lastpage209> +%% Part of the "lastpage" package +%% FOR LaTeX 2.09 ONLY - FOR LaTeX 2e USE lastpage2e.sty +%% This is lastpage209.sty invented by Jeffrey P. Goldberg, +%% after Piet van Oostrum: Page layout in LaTeX, March 2, 2004, section 16; fancyhdr.pdf; +%% lastpage209.sty maintained by H.-Martin Muench. +\let\origenddocument=\enddocument% +\def\enddocument{\clearpage% + {\addtocounter{page}{-1}% + \immediate\write\@mainaux{\string\newlabel{LastPage}{{}{\thepage}}}% + }% + \addtocounter{page}{+1}% + \origenddocument% + } +%</lastpage209> % \end{macrocode} % -% A last information for the user(s): +% \DescribeMacro{lastpage2e.sty} +% If |\documentclass| is known, we are in \LaTeXe{} - but which one? +% For modern versions with \eTeX{} and hook management etc. +% we load version \pkg{lastpagemodern.sty}, otherwise +% \pkg{lastpageclassic.sty}. We start off by checking that we are +% loading into \LaTeXe{} and announcing the name and version of this package. % % \begin{macrocode} -%% For LaTeX 2.09 use lastpage209.sty. -%% For LaTeX 2e maybe consider upgrading to the pageslts package. -%% lastpage may work with earlier versions of LaTeX2e, -%% but this was not tested. Please consider updating your LaTeX -%% contribution to the most recent version (if it is not already -%% the most recent version). - +%<*lastpage2e> +%% Part of the "lastpage" package +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +\ProvidesPackage{lastpage2e}[2023/03/07 v2.0a Decide which 2e lastpage version to use (HMM)] +\@ifl@t@r\fmtversion{2022/11/01}{\RequirePackage{lastpagemodern}}{% + \RequirePackage{lastpageclassic}} +\message{^^J} +%</lastpage2e> % \end{macrocode} % -% The very old version~2.0 (and earlier) of the \xpackage{endfloat} -% package actually redefined the |\enddocument| command, -% and so interfered drastically with the \LaTeXe{} commands which -% make use of |\AtEndDocument|. Newer versions of \xpackage{endfloat} -% exists (at the time of writing this documentation: v2.5d as of 2011/12/25) -% in modern documentation form, which are available from CTAN.org -% (see subsection~\ref{ss:Downloads}). -% A~note is placed here. (The \xpackage{pageslts} package even checks whether -% a (very) old \xpackage{endfloat} package is in use. If it is, a warning or -% even an error message is given, depending on \xpackage{endfloat} version.) +% \DescribeMacro{lastpageclassic.sty} +% In case of older \LaTeX-formats \pkg{lastpageclassic.sty} is loaded: % % \begin{macrocode} -%% The recent version of the endfloat package is v2.5d as of 2011/12/25. -%% The lastpage package is not fully compatible with version 2.0 -%% (and earlier) of the endfloat package, because those versions -%% redefined the \enddocument command. +%<*lastpageclassic> +%% Part of the "lastpage" package +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +\ProvidesPackage{lastpageclassic}[2023/03/07 v2.0a Refers to last page's name (HMM; JPG)] +%% allows for things like "Page \thepage{} of \pageref{LastPage}" to get "Page 7 of 9" % \end{macrocode} % -% There are no options to be introduced.\\ -% % \indent For comparisons, \textquotedblleft one\textquotedblright{} is defined % (|\@ne| does not work for this). % % \begin{macrocode} -\def\lastpage@one{1} +\gdef\lastpage@one{1} % \end{macrocode} % % We define |\lastpage@hyper|, |\lastpage@nameref|, |\lastpage@french|, and @@ -1024,53 +1000,43 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. \gdef\lastpage@LTS{0} % \end{macrocode} % -% We define |\lastpage@firstpage| to be \textquotedblleft \texttt{1}\textquotedblright{}. +% We define |\lastpage@firstpage| to be \textquotedblleft \texttt{1}\textquotedblright{}, +% and before re-definition via the \xfile{.aux} file, +% |\lastpage@lastpage| and |\lastpage@lastpageHy| are unknown. % % \begin{macrocode} -\def\lastpage@firstpage{1} +\gdef\lastpage@firstpage{1} +\gdef\lastpage@lastpage{??} +\gdef\lastpage@lastpageHy{??} % \end{macrocode} % -% \pagebreak -% % \begin{macro}{\AtBeginDocument} -% \indent |\AtBeginDocument| it is checked whether various packages are loaded.\\ -% (|\@ifpackageloaded| cannot be used later than |\AtBeginDocument|.)\\ -% If this is the case, |\lastpage@<package abbreviation>| is defined as -% \texttt{1} (otherwise it stays \texttt{0}).\\ -% The \xpackage{ltxcmds} package provides |\ltx@ifpackageloaded|, which can be used -% also after |\AtBeginDocument|, but \xpackage{lastpage} tries to not load other packages. +% \indent |\AtBeginDocument| we give a waring about ancient versions of the \pkg{endfloat} package. +% Then it is checked whether various packages are loaded. +% (|\@ifpackageloaded| cannot be used later than |\AtBeginDocument|.) +% If this is the case,\\ +% |\lastpage@<package abbreviation>| is defined as \texttt{1} +% (otherwise it stays~\texttt{0}). % % \begin{macrocode} \AtBeginDocument{% + \@ifpackageloaded{endfloat}{% + \@ifpackagelater{endfloat}{1993/04/30}{\relax}{% + \PackageError{lastpage}{% + Incompatibility with outdated version of endfloat package}{% + lastpage is not fully compatible with a version\MessageBreak% + before 2.1 of the endfloat package,\MessageBreak% + because those versions redefined\MessageBreak% + the \string\enddocument\space command.}% + }{}}% \@ifpackageloaded{tikz}{\gdef\lastpage@tikz{1}}{}% \@ifpackageloaded{hyperref}{\gdef\lastpage@hyper{1}}{}% \@ifpackageloaded{nameref}{\gdef\lastpage@nameref{1}}{}% \@ifpackageloaded{french}{\gdef\lastpage@french{1}}{}% \@ifpackageloaded{frenchle}{\gdef\lastpage@french{1}}{}% - \@ifpackageloaded{pageslts}{% - \PackageWarning{lastpage}{Package pageslts found.\MessageBreak% - Therefore the lastpage package is no longer\MessageBreak% - necessary.% - }% - \gdef\lastpage@LTS{1}% - }{\PackageInfo{lastpage}{% - Please have a look at the pageslts package at\MessageBreak% - https://www.ctan.org/pkg/pageslts\MessageBreak% - !}% - }% - \@ifpackageloaded{pagesLTS}{% - \PackageWarning{lastpage}{% - Outdated pagesLTS package found.\MessageBreak% - Please replace by a recent version of\MessageBreak% - pageslts package, see e.g. at\MessageBreak% - https://www.ctan.org/pkg/pageslts\MessageBreak% - !\MessageBreak% - With pagesLTS as well as pageslts package\MessageBreak% - the lastpage package is no longer necessary.\MessageBreak% - }% - \gdef\lastpage@LTS{1}% - }{}% + \@ifpackageloaded{pagesLTS}{\gdef\lastpage@LTS{1}}{}% + \@ifpackageloaded{pageslts}{\gdef\lastpage@LTS{1}}{}% % \end{macrocode} % % |\lastpage@putlabel|, used by older versions of this package, @@ -1094,8 +1060,6 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % \end{macrocode} % \end{macro} % -% \pagebreak -% % \begin{macro}{\lastpage@putl@bel} % \indent This command does the writing of the label: % @@ -1174,12 +1138,10 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % \end{macrocode} % \end{macro} % -% \pagebreak -% % \begin{macro}{\lastpage@putlabelhyper}% % \indent When \xpackage{hyperref} has been loaded, the label is set with the % |\lastpage@putlabelhyper| command. If the \xpackage{hyperref} package is used, -% but pageanchors are disabled, the hyperlinking will not work. +% but page-anchors are disabled, the hyperlinking will not work. % % \begin{macrocode} \newcommand{\lastpage@putlabelhyper}{% @@ -1209,15 +1171,14 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % % \begin{macrocode} %% The following code is from the hyperref package %% -%% [2010/04/17 v6.80x; newer versions are available] %% -%% by Heiko Oberdiek (Big Thanks!). %% - \let\@number\@firstofone - \ifHy@pageanchor - \ifHy@hypertexnames - \ifHy@plainpages +%% 2010/04/17 v6.80x; newer versions are available. %% + \let\@number\@firstofone% + \ifHy@pageanchor% + \ifHy@hypertexnames% + \ifHy@plainpages% \def\Hy@temp{\arabic{page}}% - \else - \Hy@unicodefalse + \else% + \Hy@unicodefalse% %% Code not from hyperref package: %% %% The following lines are taken from the pageslts package, %% %% which in turn got them from the hyperref package and %% @@ -1225,7 +1186,7 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. %% Without the modification, after the first shipout "PD1" %% %% is inserted each time |\pdfstringdef\Hy@temp{\thepage}| %% %% is executed. %% - \ifnum \value{page}=1% + \ifnum \value{page}=1\relax% % \end{macrocode} % % We do not count the pages ourselves, and so they could have been changed by @@ -1238,7 +1199,7 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % We will make a mistake here at most once: % % \begin{macrocode} - \ifx \lastpage@firstpage\lastpage@one + \ifx \lastpage@firstpage\lastpage@one\relax% \def\Hy@temp{\thepage}% \gdef\lastpage@firstpage{0}% \else% @@ -1254,14 +1215,13 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. %% Code from pageslts package again: %% \fi% %% Code from hyperref package again: %% - \fi - \else + \fi% + \else% \def\Hy@temp{\the\Hy@pagecounter}% - \fi - \fi + \fi% + \fi% \immediate\write\@auxout{% - \string\newlabel - {LastPage}{{}{\thepage}{}{% + \string\newlabel{LastPage}{{}{\thepage}{}{% \ifHy@pageanchor page.\Hy@temp\fi}{}}% }% %% End of code from the hyperref package. %% @@ -1271,14 +1231,11 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % whether they have been saved in the \xfile{aux} file. % % \begin{macrocode} - \immediate\write\@auxout{% - \string\xdef\string\lastpage@lastpage{\thepage}}% + \immediate\write\@auxout{\string\xdef\string\lastpage@lastpage{\thepage}}% \ifHy@pageanchor% - \immediate\write\@auxout{% - \string\xdef\string\lastpage@lastpageHy{\Hy@temp}}% + \immediate\write\@auxout{\string\xdef\string\lastpage@lastpageHy{\Hy@temp}}% \else% - \immediate\write\@auxout{% - \string\gdef\string\lastpage@lastpageHy{}}% + \immediate\write\@auxout{\string\gdef\string\lastpage@lastpageHy{}}% \fi% % \end{macrocode} % @@ -1295,8 +1252,7 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % % \begin{macro}{\lastpage@putlabelNR} % \indent The \xpackage{nameref} package redefines |\label| to have five arguments -% instead of two, therefore -% \newline +% instead of two, therefore\newline % |\newlabel{LastPage}{{}{\thepage}{}{}{}}| % instead of\newline % |\newlabel{LastPage}{{}{\thepage}}| must be used: @@ -1315,8 +1271,6 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % \end{macrocode} % \end{macro} % -% \pagebreak -% % \begin{macro}{\lastpage@fileswtest} % \indent Later it will be determined whether it is allowed to write % to the \xfile{aux} file. If it was \emph{not} allowed, it is checked @@ -1333,15 +1287,15 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. \newcommand{\lastpage@fileswtest}[2]{% \edef\lastpage@testa{#1}% \edef\lastpage@testb{#2}% - \ifx\lastpage@testa\lastpage@testb% OK + \ifx\lastpage@testa\lastpage@testb% \else% - \ifx\lastpage@tikz\lastpage@one% + \ifx\lastpage@tikz\lastpage@one\relax% \PackageWarning{lastpage}% {The lastpage package was not allowed to write to an\MessageBreak% .aux file. This package does not work without access\MessageBreak% to an .aux file.\MessageBreak% It is OK if the .aux file was already updated\MessageBreak% - by a previouse compiler run\MessageBreak% + by a previous compiler run\MessageBreak% and would not have changed anyway.\MessageBreak% }% \else% @@ -1350,12 +1304,13 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. This package does not work without access to an .aux file.\MessageBreak% Press Ctrl+Z to exit.\MessageBreak% But it is OK if the .aux file was already updated\MessageBreak% - by a previouse compiler run\MessageBreak% + by a previous compiler run\MessageBreak% and would not have changed anyway.\MessageBreak% }% \fi% \fi% } + % \end{macrocode} % \end{macro} % @@ -1377,28 +1332,21 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % \end{macrocode} % \end{macro} % -% \pagebreak -% % \begin{macro}{\AtEndDocument} % \indent |\AtEndDocument| we again (re)define |\lastpage@putlabel| -% to do nothing and check |\lastpage@lastpage| and |\lastpage@lastpageHy|, -% whether they are still unchanged, which is OK for the first run only. +% to do nothing and check |\lastpage@lastpage|, +% whether it is still unchanged, which is OK for the first run only. % % \begin{macrocode} -\gdef\lastpage@lastpage{\relax}% -\gdef\lastpage@lastpageHy{\relax}% - \AtEndDocument{% - \gdef\lastpage@putlabel{\relax}% \ifx\lastpage@LTS\lastpage@one% \else% - \ifx\lastpage@lastpage\relax% - \PackageWarning{lastpage}{Rerun to get the references right}% - \fi% - \ifx\lastpage@lastpageHy\relax% + \gdef\lastpage@putlabel{??}% + \ifx\lastpage@lastpage\lastpage@putlabel\relax% \PackageWarning{lastpage}{Rerun to get the references right}% \fi% \fi% + \gdef\lastpage@putlabel{\relax}% % \end{macrocode} % % It is checked whether writing to files is allowed @@ -1444,25 +1392,381 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. \fi% \fi% } +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +%</lastpageclassic> +% \end{macrocode} +% \newpage +% +% \DescribeMacro{lastpagemodern.sty} +% In case of a recent \LaTeX-format, \pkg{lastpagemodern.sty} is loaded: +% +% \begin{macrocode} +%<*lastpagemodern> +%% Part of the "lastpage" package +\NeedsTeXFormat{LaTeX2e}[2022-11-01] +\ProvidesPackage{lastpagemodern}[2023-03-07 v2.0a Refers to last page's name (HMM; JPG)] +%% allows for things like "Page \thepage{} of \pageref{LastPage}" +%% to get "Page 7 of 9" or "Page VII of IX"; +%% the NUMBER of pages is available via \@abspage@last, but with pages +%% for example I to X and then 1 to 10, the number of pages woud be "20", +%% while the name of the last page is "10". Decide what you need/want! + +% \end{macrocode} +% +% \indent For comparisons, \textquotedblleft one\textquotedblright{} is defined +% (|\@ne| does not work for this). +% +% \begin{macrocode} +\gdef\lastpage@one{1} +% \end{macrocode} +% +% We define |\lastpage@firstpage| to be \textquotedblleft \texttt{1}\textquotedblright{}, +% and before re-definition via the \xfile{.aux} file, +% |\lastpage@lastpage| and |\lastpage@lastpageHy| are unknown. +% +% \begin{macrocode} +\gdef\lastpage@firstpage{1} +\gdef\lastpage@lastpage{??} +\gdef\lastpage@lastpageHy{??} + +% \end{macrocode} +% +% \DescribeMacro{\AddToHook\{begindocument/end\}} +% \indent At |begindocument/end| we give a warning about ancient versions +% of the \pkg{endfloat} package. +% +% \begin{macrocode} +\AddToHook{begindocument/end}{% + \IfPackageLoadedTF{endfloat}{% + \IfPackageAtLeastTF{endfloat}{1994/06/01}{\relax}{% + \PackageError{lastpage}{% + Incompatibility with outdated version of endfloat package}{% + lastpage is not fully compatible with a version\MessageBreak% + before 2.1 of the endfloat package,\MessageBreak% + because those versions redefined\MessageBreak% + the \string\enddocument\space command.}% + }{}}% +% \end{macrocode} +% +% |\lastpage@putlabel|, used by older versions of this package, +% is redefined e.\,g. by \xpackage{revtex}, \xpackage{hyperref}, +% \xpackage{frenchle}, and \xpackage{PPRcorners}. +% While now |\lastpage@putl@bel| is used instead, \xpackage{revtex} +% or \xpackage{hyperref} could also define a label \texttt{LastPage}, +% which then would be multiply defined. (Which is no big issue, +% if it is associated with the same page.) Therefore we define +% +% \begin{macrocode} + \gdef\lastpage@putlabel{\relax}% +% \end{macrocode} +% +% Because |\lastpage@putlabel| might be (re)defined later, depending on the order +% in which the packages are loaded, we will do this again at the end of the document. +% +% \begin{macrocode} + } + +% \end{macrocode} +% +% \begin{macro}{\lastpage@putl@bel} +% \indent This command does the writing of the label. +% If the \xpackage{pageslts} package is used, this \xpackage{lastpage} package is +% not needed at all. The \xpackage{LastPage} label would even be defined twice. +% Thus, if \xpackage{pageslts} is used, here nothing is done. +% +% \begin{macrocode} +\newcommand{\lastpage@putl@bel}{% + \IfPackageLoadedTF{pageslts}{\relax}{% +% \end{macrocode} +% +% Otherwise the label is set:\\ +% We have got to distinguish whether \xpackage{hyperref} has been loaded or not: +% +% \begin{macrocode} + \IfPackageLoadedTF{hyperref}{\lastpage@putlabelhyper}{% +% \end{macrocode} +% +% and also need to treat documents with \xpackage{nameref} differently: +% +% \begin{macrocode} + \IfPackageLoadedTF{nameref}{\lastpage@putlabelNR}{% +% \end{macrocode} +% +% When those packages have not been loaded, we just write the +% simple label into the \xfile{aux} file (and store the value of the page): +% +% \begin{macrocode} + \begingroup% + \addtocounter{page}{-1}% + \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}}}% + \immediate\write\@auxout{\string\xdef\string\lastpage@lastpage{\thepage}}% + \immediate\write\@auxout{\string\gdef\string\lastpage@lastpageHy{}}% + \addtocounter{page}{+1}% + \endgroup% + }% + }% + }% + } % \end{macrocode} % \end{macro} % +% \begin{macro}{\lastpage@putlabelhyper}% +% \indent When \xpackage{hyperref} has been loaded, the label is set with the +% |\lastpage@putlabelhyper| command. If the \xpackage{hyperref} package is used, +% but page-anchors are disabled, the hyperlinking will not work. +% % \begin{macrocode} -%</package> +\newcommand{\lastpage@putlabelhyper}{% + \ifHy@pageanchor% + \else% + \PackageError{lastpage}{hyperref option pageanchor disabled}{% + The \string\pageref{LastPage} link does not work\MessageBreak% + using hyperref with disabled option `pageanchor'.\MessageBreak% + }% + \fi% +% \end{macrocode} +% +% Since the page has been put out, we are on the page \textit{after} that page. +% We therefore subtract one from the page counter. (For the compiler, +% this is equal to |\advance\c@page\m@ne|, but for human readers of the code +% it is probably easier to understand.) +% +% \begin{macrocode} + \begingroup% + \addtocounter{page}{-1}% +% \end{macrocode} +% +% Simply using |\label| for \texttt{LastPage} would not work, +% because labels wait for the output routines to work, and there +% may be no more invocations of the output routines. To force +% the write out, we need to do an |\immediate| write into the \xfile{aux} file. +% +% \begin{macrocode} +%% The following code is from the hyperref package %% +%% 2010/04/17 v6.80x; newer versions are available. %% + \let\@number\@firstofone% + \ifHy@pageanchor% + \ifHy@hypertexnames% + \ifHy@plainpages% + \def\Hy@temp{\arabic{page}}% + \else% + \Hy@unicodefalse% +%% Code not from hyperref package: %% +%% The following lines are taken from the pageslts package, %% +%% which in turn got them from the hyperref package and %% +%% modified them. %% +%% Without the modification, after the first shipout "PD1" %% +%% is inserted each time |\pdfstringdef\Hy@temp{\thepage}| %% +%% is executed. %% + \ifnum \value{page}=1\relax% +% \end{macrocode} +% +% We do not count the pages ourselves, and so they could have been changed by +% e.\,g. |\pagenumbering{...}|, |\addtocounter{page}{...}|,\\ +% |\setcounter{page}{...}|. Thus the page might have the number one +% while not being the first page at all. Using the (obsolete) \xpackage{everyshi} +% package would help, but this package should not require other packages. +% The \xpackage{pageslts} package does a better handling, but requires +% some other packages.\\ +% We will make a mistake here at most once: +% +% \begin{macrocode} + \ifx \lastpage@firstpage\lastpage@one\relax% + \def\Hy@temp{\thepage}% + \gdef\lastpage@firstpage{0}% + \else% +%% Code from hyperref package again: %% + \pdfstringdef\Hy@temp{\thepage}% +%% End of code from the hyperref package. %% + \fi% +%% The pageslts package would even check for fnsymbol page %% +%% numbering scheme and adapt the code correspondingly. %% + \else% +%% Code from hyperref package again: %% + \pdfstringdef\Hy@temp{\thepage}% +%% Code from pageslts package again: %% + \fi% +%% Code from hyperref package again: %% + \fi% + \else% + \def\Hy@temp{\the\Hy@pagecounter}% + \fi% + \fi% + \immediate\write\@auxout{% + \string\newlabel{LastPage}{{}{\thepage}{}{% + \ifHy@pageanchor page.\Hy@temp\fi}{}}% + }% +%% End of code from the hyperref package. %% +% \end{macrocode} +% +% We also save the values, so that we can later (next rerun) check, +% whether they have been saved in the \xfile{aux} file. +% +% \begin{macrocode} + \immediate\write\@auxout{\string\xdef\string\lastpage@lastpage{\thepage}}% + \ifHy@pageanchor% + \immediate\write\@auxout{\string\xdef\string\lastpage@lastpageHy{\Hy@temp}}% + \else% + \immediate\write\@auxout{\string\gdef\string\lastpage@lastpageHy{}}% + \fi% +% \end{macrocode} +% +% After the writeout we restore the page number again, +% since there might be other things still to be done. +% +% \begin{macrocode} + \addtocounter{page}{+1}% + \endgroup% + } + % \end{macrocode} +% \end{macro} % +% \begin{macro}{\lastpage@putlabelNR} +% \indent The \xpackage{nameref} package redefines |\label| to have five arguments +% instead of two, therefore +% \newline +% |\newlabel{LastPage}{{}{\thepage}{}{}{}}| +% instead of\newline +% |\newlabel{LastPage}{{}{\thepage}}| must be used: +% +% \begin{macrocode} +\newcommand{\lastpage@putlabelNR}{% + \begingroup% + \addtocounter{page}{-1}% + \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}{}{}{}}}% + \immediate\write\@auxout{\string\xdef\string\lastpage@lastpage{\thepage}}% + \immediate\write\@auxout{\string\gdef\string\lastpage@lastpageHy{}}% + \addtocounter{page}{+1}% + \endgroup% + } + +% \end{macrocode} +% \end{macro} % \pagebreak % -% \section{Installation} +% \begin{macro}{\lastpage@fileswtest} +% \indent Later it will be determined whether it is allowed to write +% to the \xfile{aux} file. If it was \emph{not} allowed, it is checked +% whether the label was already set via the \xfile{aux} file in some +% earlier compilation run. (There are packages where the document +% is compiled with access to the \xfile{aux} file, and then there is +% an additional compiler run, where the \xfile{aux} file cannot be changed, +% but in that run there is also no need to change it.) The \xpackage{tikz} +% package is somewhat different, therefore we only give a warning instead +% of an error (and hope that there is another compiler run where the +% \xfile{aux} file can be written). +% +% \begin{macrocode} +\newcommand{\lastpage@fileswtest}[2]{% + \edef\lastpage@testa{#1}% + \edef\lastpage@testb{#2}% + \ifx\lastpage@testa\lastpage@testb% + \else% + \IfPackageLoadedTF{tikz}{% + \PackageWarning{lastpage}% + {The lastpage package was not allowed to write to an\MessageBreak% + .aux file. This package does not work without access\MessageBreak% + to an .aux file.\MessageBreak% + It is OK if the .aux file was already updated\MessageBreak% + by a previous compiler run\MessageBreak% + and would not have changed anyway.\MessageBreak% + }% + }{\PackageError{lastpage}{No auxiliary file allowed}% + {The lastpage package was not allowed to write to an .aux file.\MessageBreak% + This package does not work without access to an .aux file.\MessageBreak% + Press Ctrl+Z to exit.\MessageBreak% + But it is OK if the .aux file was already updated\MessageBreak% + by a previous compiler run\MessageBreak% + and would not have changed anyway.\MessageBreak% + }% + }% + \fi% + } + +% \end{macrocode} +% \end{macro} % -% \begin{center} -% {\large \textbf{First, please make sure that there is no old version of}} -% {\large \textbf{\textsf{lastpage}{} at some obsolete place in your system!}} -% \end{center} +% \begin{macro}{\lastpage@fileswtestHy} +% \indent When the \xpackage{hyperref} package has been loaded, +% |\lastpage@lastpageHy| must be tested additionally. (And a +% |\newcommand| is needed, because |\ifHy@pageanchor| is not even +% defined when \xpackage{hyperref} has not been loaded.) % -% \subsection{Downloads\label{ss:Downloads}} +% \begin{macrocode} +\newcommand{\lastpage@fileswtestHy}{% + \ifHy@pageanchor% + \lastpage@fileswtest{\Hy@temp}{\lastpage@lastpageHy}% + \else% + \lastpage@fileswtest{\empty}{\lastpage@lastpageHy}% + \fi% + } + +% \end{macrocode} +% \end{macro} +% +% \DescribeMacro{enddocument/afterlastpage} +% \indent |enddocument/afterlastpage| we again (re)define |\lastpage@putlabel| +% to do nothing, but first use it to check whether |\lastpage@lastpage| +% is still unchanged, which is OK for the first run only. +% +% \begin{macrocode} +\AddToHook{enddocument/afterlastpage}{% + \IfPackageLoadedTF{pageslts}{\relax}{% + \gdef\lastpage@putlabel{??}% + \ifx\lastpage@lastpage\lastpage@putlabel\relax% + \AddToHook{enddocument/info}{% + \PackageWarning{lastpage}{Rerun to get the references right}% + }% + \fi% + }% + \gdef\lastpage@putlabel{\relax}% +% \end{macrocode} +% \pagebreak +% +% It is checked whether writing to files is allowed +% (otherwise, only an error message is issued and nothing is done). +% +% \begin{macrocode} + \if@filesw% +% \end{macrocode} +% +% We put in a |\message| to show, in what order things (which were called) +% are done. +% +% \begin{macrocode} + \message{^^Jenddocument/afterlastpage: lastpage setting LastPage.^^J}% + \IfPackageLoadedTF{french}{% + \addtocounter{page}{+1}\lastpage@putl@bel\addtocounter{page}{-1}% + }{\IfPackageLoadedTF{frenchle}{% + \addtocounter{page}{+1}\lastpage@putl@bel\addtocounter{page}{-1}% + }{\lastpage@putl@bel% + }% + }% + \else% +% \end{macrocode} +% +% When writing to files is not allowed, nothing can be done. But when +% the label was already set via the \xfile{aux} file, nothing needs +% to be done. We check for this with |\lastpage@fileswtest| and +% (if \xpackage{hyperref} has been loaded) |\lastpage@fileswtestHy|. % +% \begin{macrocode} + \IfPackageLoadedTF{pageslts}{\relax}{% + \lastpage@fileswtest{\thepage}{\lastpage@lastpage}% + \IfPackageLoadedTF{hyperref}{\lastpage@fileswtestHy}{\relax}% + }% + \fi% + } +%</lastpagemodern> +% \end{macrocode} +% \pagebreak +% +% \section{Installation} +% \subsection{Downloads\label{ss:Downloads}} % Everything is available at \url{https://www.ctan.org}, % but may need additional packages themselves.\\ % @@ -1471,72 +1775,107 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % \begin{description} % \item[-] \TeX Format \LaTeXe{}: \url{https://www.CTAN.org} % -% \item[-] document class \xclass{ltxdoc}, 2015/03/26, v2.0w,\\ -% \url{https://www.ctan.org/pkg/ltxdoc} +% \item[-] document class \xclass{ltxdoc}, 2022/06/22, v2.1i, +% \url{https://ctan.org/pkg/ltxdoc} % -% \item[-] package \xpackage{holtxdoc}, 2012/03/21, v0.24,\\ -% \url{https://www.ctan.org/pkg/holtxdoc} -% -% \item[-] package \xpackage{hypdoc}, 2011/08/19, v1.11,\\ -% \url{https://www.ctan.org/pkg/hypdoc} +% \item[-] package \xpackage{holtxdoc}, 2019/12/09, v0.30, +% \url{https://ctan.org/pkg/holtxdoc} % \end{description} % % \DescribeMacro{lastpage.sty} -% The |lastpage.sty| for \LaTeXe{} (i.\,e. each document using -% the \xpackage{lastpage} package) requires: +% The |lastpage.sty| (i.\,e. each document using the \xpackage{lastpage} package) +% requires: % \begin{description} -% \item[-] \TeX Format \LaTeXe{}, \url{https://www.CTAN.org} +% \item[-] \TeX, \url{https://www.CTAN.org} % -% \item[-] package \xpackage{lastpage}, 2021/09/03, v1.2n,\\ -% \url{https://www.ctan.org/pkg/lastpage} -% \end{description} -% and can use -% \begin{description} -% \item[-] package \xpackage{hyperref}, 2012/11/06, v6.83m,\\ -% \url{https://www.ctan.org/pkg/hyperref} +% \item[-] package \xpackage{lastpage}, 2023-03-07, v2.0a, +% \url{https://ctan.org/pkg/lastpage} % \end{description} % % \DescribeMacro{lastpage209.sty} % The |lastpage209.sty| for \LaTeX2.09{} (i.\,e. each document using % the \xpackage{lastpage209} package) requires: % \begin{description} -% \item[-] \TeX Format \LaTeX{}, v2.09 +% \item[-] \TeX-format \LaTeX{}, v2.09 % -% \item[-] package \xpackage{lastpage209}, 2021/09/03, v1.2n, included in\\ -% \hspace*{-2em}\url{http://mirrors.ctan.org/install/macros/latex/contrib/lastpage.tds.zip}% +% \item[-] package \xpackage{lastpage209}, 2023-03-07, v2.0a, +% \url{https://ctan.org/pkg/lastpage} % \end{description} % and does not work with \xpackage{hyperref}, which needs \LaTeX2e{}.\\ % +% \DescribeMacro{lastpage2e.sty} +% The |lastpage2e.sty| for \LaTeXe{} (i.\,e. each document using +% the \xpackage{lastpage2e} package) requires: +% \begin{description} +% \item[-] \TeX-format \LaTeXe{} 1994/12/01 or newer, +% \url{https://www.CTAN.org} +% +% \item[-] package \xpackage{lastpage}, 2023-03-07, v2.0a, +% \url{https://ctan.org/pkg/lastpage} +% \end{description} +% +% \DescribeMacro{lastpageclassic.sty} +% The |lastpageclassic.sty| for \LaTeXe{} (i.\,e. each document using +% the \xpackage{lastpageclassic} package) requires: +% \begin{description} +% \item[-] \TeX-format \LaTeXe{} between 1994/12/01 and 2022/11/01,\\ +% \url{https://www.CTAN.org} +% +% \item[-] package \xpackage{lastpage}, 2023-03-07, v2.0a, +% \url{https://ctan.org/pkg/lastpage} +% \end{description} +% and can use +% \begin{description} +% \item[-] package \xpackage{hyperref}, 2023-02-07, v7.00v, +% \url{https://ctan.org/pkg/hyperref} +% \end{description} +% +% \DescribeMacro{lastpagemodern.sty} +% The |lastpagemodern.sty| for \LaTeXe{} (i.\,e. each document using +% the \xpackage{lastpagemodern} package) requires: +% \begin{description} +% \item[-] \TeX-format \LaTeXe{} 2022-11-01 or newer, +% \url{https://www.CTAN.org} +% +% \item[-] package \xpackage{lastpage}, 2023-03-07, v2.0a, +% \url{https://ctan.org/pkg/lastpage} +% \end{description} +% and can use +% \begin{description} +% \item[-] package \xpackage{hyperref}, 2023-02-07, v7.00v, +% \url{https://ctan.org/pkg/hyperref} +% \end{description} +% % \DescribeMacro{lastpage-example.tex} % The |lastpage-example.tex| requires the same file as all % documents using the \xpackage{lastpage} package, i.\,e. % \begin{description} -% \item[-] package \xpackage{lastpage}, 2021/09/03, v1.2n,\\ -% \url{https://www.ctan.org/pkg/lastpage}\\ +% \item[-] package \xpackage{lastpage}, 2023-03-07, v2.0a, +% \url{https://ctan.org/pkg/lastpage}\\ % (Well, it is the example file for this package, and because you are reading the % documentation for the \xpackage{lastpage} package, it can be assumed that you already % have some version of it -- is it the current one?) % \end{description} % and additionally: % \begin{description} -% \item[-] class \xpackage{article}, 2014/09/29, v1.4h,\\ -% \url{https://www.ctan.org/pkg/article} +% \item[-] class \xpackage{article}, 2022/07/02, v1.4n, from \xpackage{classes}: +% \url{https://ctan.org/pkg/classes} % -% \item[-] package \xpackage{showkeys}, 2014/10/28, v3.17,\\ -% \url{https://www.ctan.org/pkg/showkeys} +% \item[-] package \xpackage{showkeys}, 2022/04/12, v3.18, +% \url{https://ctan.org/pkg/showkeys} % -% \item[-] package \xpackage{hyperref}, 2012/11/06, 6.83m,\\ -% \url{https://www.ctan.org/pkg/hyperref} +% \item[-] package \xpackage{hyperref}, 2023-02-07, v7.00v, +% \url{https://ctan.org/pkg/hyperref} % \end{description} % % \DescribeMacro{endfloat} % The \xpackage{endfloat} package is not required, but because -% the \xpackage{lastpage} package is incompatible with \textit{very} old versions +% the \xpackage{lastpage} package is incompatible with \textit{ancient} versions % of the \xpackage{endfloat} package (see subsection~\ref{sec:endfloat}), -% here the recent one is listed: +% here the recent one (at the time of writing this documentation) is listed: % \begin{description} -% \item[-] package \xpackage{endfloat}, v2.5d, 2011/12/25,\\ -% \url{https://www.ctan.org/pkg/endfloat} +% \item[-] package \xpackage{endfloat}, 2019/04/15, v2.7, +% \url{https://ctan.org/pkg/endfloat} % \end{description} % % \DescribeMacro{fancyhdr} @@ -1546,19 +1885,11 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % \xpackage{fancyheadings}), but because they were mentioned, also they are listed % here: % \begin{description} -% \item[-] package \xpackage{fancyhdr}, 2005/03/22, v3.2,\\ -% \url{https://www.ctan.org/pkg/fancyhdr} -% -% \item[-] package \xpackage{nccfancyhdr}, 2004/12/07, v1.1,\\ -% \url{https://www.ctan.org/pkg/nccfancyhdr} -% \end{description} +% \item[-] package \xpackage{fancyhdr}, 2022/11/09, v4.1, +% \url{https://ctan.org/pkg/fancyhdr} % -% \DescribeMacro{regstats} -% For counting the used counters (and other registers), the \xpackage{regstats} -% package was mentioned (it is not required). It can be found at: -% \begin{description} -% \item[-] package \xpackage{regstats}, 2012/01/07, v1.0h,\\ -% \url{https://www.ctan.org/pkg/regstats} +% \item[-] package \xpackage{nccfancyhdr}, 2004/12/07, v1.1, +% \url{https://ctan.org/pkg/nccfancyhdr} % \end{description} % % \DescribeMacro{count1to} @@ -1571,86 +1902,92 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % As possible alternatives in section~\ref{sec:Alternatives}, Alternatives, % there are listed (newer versions might be available): % \begin{description} -% \item[-] package \xpackage{pageslts}, 2014/01/19, v1.2c,\\ -% \url{https://www.ctan.org/pkg/pageslts} +% \item[-] package \xpackage{pageslts}, 2015/12/21, v1.2f, +% \url{https://ctan.org/pkg/pageslts} % % \item[-] package \xpackage{papermas}, 2011/08/22, v1.0h; the \xpackage{papermas} % package can be considered as kind of add-on to the \xpackage{pageslts} package.\\ -% \url{https://www.ctan.org/pkg/papermas} +% \url{https://ctan.org/pkg/papermas} % -% \item[-] package \xpackage{count1to}, 2009/05/24, v2.1,\\ -% \url{https://www.ctan.org/pkg/count1to} +% \item[-] package \xpackage{count1to}, 2009/05/24, v2.1, +% \url{https://ctan.org/pkg/count1to} % -% \item[-] package \xpackage{nofm}, 1991/02/25, v?.?,\\ -% \url{https://mirrors.ctan.org/obsolete/macros/latex209/contrib/misc/nofm.sty}, +% \item[-] package \xpackage{nofm}, 1991/02/25, +% \href{https://mirror.ctan.org/obsolete/macros/latex209/contrib/misc/nofm.sty}{% +% https://mirror.ctan.org/obsolete/macros/latex209/}% +% \href{https://mirror.ctan.org/obsolete/macros/latex209/contrib/misc/nofm.sty}{% +% contrib/misc/nofm.sty}, % does not work with e.\,g. \xpackage{hyperref} % -% \item[-] package \xpackage{totpages}, 2005/09/19, v2.00,\\ -% \url{https://www.ctan.org/pkg/totpages} +% \item[-] package \xpackage{totpages}, 2005/09/19, v2.00, +% \url{https://ctan.org/pkg/totpages} % -% \item[-] package \xpackage{totalcount}, 2018/01/21, v1.0a,\\ -% \url{https://www.ctan.org/pkg/totalcount}. +% \item[-] package \xpackage{totalcount}, 2018/01/21, v1.0a, +% \url{https://ctan.org/pkg/totalcount} % -% \item[-] package \xpackage{zref}, 2012/04/04, v2.24,\\ -% \url{https://www.ctan.org/pkg/zref}, -% requires $\varepsilon$-\TeX{}. +% \item[-] package \xpackage{zref}, 2022-04-07, v2.34, +% \url{https://ctan.org/pkg/zref} % -% \item[-] class \xpackage{memoir}, 2021/06/16, v3.7p,\\ -% \url{https://ctan.org/tex-archive/macros/latex/contrib/memoir/}. +% \item[-] class \xpackage{memoir}, 2022-11-17, 3.7.19, +% \url{https://ctan.org/pkg/memoir}. % \end{description} % % \DescribeMacro{Oberdiek} % \DescribeMacro{holtxdoc} % \DescribeMacro{zref} -% All packages of \textsc{Heiko Oberdiek's} bundle `oberdiek' +% All packages of the `oberdiek' bundle % (especially \xpackage{holtxdoc} and \xpackage{zref}) % are also available in a TDS compliant ZIP archive:\\ -% \url{http://mirrors.ctan.org/install/macros/latex/contrib/oberdiek.tds.zip}.\\ +% \url{https://mirror.ctan.org/install/macros/latex/contrib/oberdiek.tds.zip}.\\ % It is probably best to download and use this, because the packages in there % are quite probably both recent and compatible among themselves.\\ % % \DescribeMacro{hyperref} % \noindent \xpackage{hyperref} is not included in that bundle and needs to be % downloaded separately,\\ -% \url{http://mirrors.ctan.org/install/macros/latex/contrib/hyperref.tds.zip}.\\ +% \url{https://mirror.ctan.org/install/macros/latex/contrib/hyperref.tds.zip}.\\ % -% \DescribeMacro{M\"{u}nch} +% \DescribeMacro{Münch} % A hyperlinked list of my (other) packages can be found at\\ -% \url{https://www.ctan.org/author/muench-hm}.\\ +% \url{https://ctan.org/author/muench-hm}. +% \pagebreak % % \subsection{Package, unpacking TDS} -% \paragraph{Package.} This package is available on CTAN.org. +% \paragraph{Package.} This package is available on \url{https://www.CTAN.org}. % \begin{description} -% \item[\url{http://mirrors.ctan.org/macros/latex/contrib/lastpage/lastpage.dtx}]\hspace*{0.1cm} \\ +% \item[\url{https://mirror.ctan.org/macros/latex/contrib/lastpage/lastpage.dtx}]\hspace*{0.1cm} \\ % The source file. -% \item[\url{http://mirrors.ctan.org/macros/latex/contrib/lastpage/lastpage.pdf}]\hspace*{0.1cm} \\ +% \item[\url{https://mirror.ctan.org/macros/latex/contrib/lastpage/lastpage.pdf}]\hspace*{0.1cm} \\ % The documentation. -% \item[\url{http://mirrors.ctan.org/macros/latex/contrib/lastpage/lastpage-example.pdf}]\hspace*{0.1cm} \\ +% \item[\url{https://mirror.ctan.org/macros/latex/contrib/lastpage/lastpage-example.pdf}]\hspace*{0.1cm} % The compiled example file, as it should look like. -% \item[\url{http://mirrors.ctan.org/macros/latex/contrib/lastpage/README}]\hspace*{0.1cm} \\ +% \item[\url{https://mirror.ctan.org/macros/latex/contrib/lastpage/README}]\hspace*{0.1cm} \\ % The README file. % \end{description} % There is also a |lastpage.tds.zip| available: % \begin{description} -% \item[\url{http://mirrors.ctan.org/install/macros/latex/contrib/lastpage.tds.zip}]\hspace*{0.1cm} \\ +% \item[\url{https://mirror.ctan.org/install/macros/latex/contrib/lastpage.tds.zip}]\hspace*{0.1cm} % Everything in TDS compliant, compiled format % \end{description} % which additionally contains\\ % \begin{tabular}{ll} -% lastpage.ins & The installation file.\\ -% lastpage.drv & The driver to generate the documentation.\\ -% lastpage.sty & The \xext{sty}le file.\\ -% lastpage209.sty & The \xext{sty}le file for \LaTeX2.09{} \textbf{only}.\\ +% lastpage.ins & The installation file.\\ +% lastpage.drv & The driver to generate the documentation.\\ +% lastpage.sty & The \xext{sty}le file.\\ +% lastpage209.sty & The \xext{sty}le file for \LaTeX2.09{} \textbf{only}.\\ +% lastpage2e.sty & The \xext{sty}le file to determine which 2e-style to use.\\ +% lastpageclassic.sty & The \xext{sty}le file for older \LaTeX-formats.\\ +% lastpagemodern.sty & The \xext{sty}le file for the recent \LaTeX-format.\\ % lastpage-example.tex & The example file.% % \end{tabular} % % \bigskip % -% \noindent For required other packages see the preceding subsection. +% \noindent For required other packages please see the preceding subsection. % % \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting % \docstrip{} archive. The files are extracted by running the -% \xext{dtx} through \plainTeX{}: +% \xext{.dtx} through \plainTeX{}: % \begin{quote} % \verb|tex lastpage.dtx| % \end{quote} @@ -1659,18 +1996,19 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % % \paragraph{TDS.} Now the different files must be moved into % the different directories in your installation TDS tree -% (also known as \xfile{texmf} tree), \textbf{but first you should delete -% the old \xpackage{lastpage} files (which are probably located in other directories)}. -% You can make a backup of the old files before deleting them, of course. +% (also known as \xfile{texmf} tree): % \begin{quote} % \def\t{^^A % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % lastpage.sty & tex/latex/lastpage.sty\\ +% lastpage209.sty & tex/latex/lastpage.sty\\ +% lastpage2e.sty & tex/latex/lastpage.sty\\ +% lastpageclassic.sty & tex/latex/lastpage.sty\\ +% lastpagemodern.sty & tex/latex/lastpage.sty\\ % lastpage.pdf & doc/latex/lastpage.pdf\\ % lastpage-example.tex & doc/latex/lastpage-example.tex\\ % lastpage-example.pdf & doc/latex/lastpage-example.pdf\\ % lastpage.dtx & source/latex/lastpage.dtx\\ -% lastpage209.sty & tex/latex/lastpage209.sty for \LaTeX2.09\\ % \end{tabular}^^A % }^^A % \sbox0{\t}^^A @@ -1734,16 +2072,14 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % \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. +% place, see the documentation of \docstrip{}. % % \subsection{Refresh file name databases} -% -% If your \TeX~distribution (\TeX live, \mikTeX, \teTeX, \dots) relies on -% file name databases, you must refresh these. For example, \teTeX{} users run -% \verb|texhash| or \verb|mktexlsr|. +% 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} @@ -1751,7 +2087,7 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % \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 +% \docstrip{} does not need \LaTeX ), then inform the autodetect routine % about your intention: % \begin{quote} % \verb|latex \let\install=y\input{lastpage.dtx}| @@ -1782,7 +2118,6 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % \end{quote} % % \subsection{Compiling the example} -% % The example file, \textsf{lastpage-example.tex}, can be compiled via\\ % \indent |latex lastpage-example.tex|\\ % or (recommended)\\ @@ -1791,14 +2126,14 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % % \section{Acknowledgements} % -% I (\textsc{H.-Martin M\"{u}nch}) would like to thank +% I (\textsc{H.-Martin Münch}) would like to thank % \textsc{Jeffrey P. Goldberg} (jeffrey+news at goldmark dot org) for -% inventing the \xpackage{lastpage} package as well as for granting me +% inventing the \xpackage{lastpage} package as well as for allowing me % to update it. Further I would like to thank \textsc{Heiko Oberdiek} -% for providing a~lot~(!) of useful packages (from which I also got everything +% for providing a~lot~(!) of useful packages (from which I also learned everything % I know about creating a file in \xfile{dtx} format, OK, say it: copying), % and the \Newsgroup{comp.text.tex} and \Newsgroup{de.comp.text.tex} -% newsgroups for their help in all things \TeX{}. Thanks for bug reports go +% newsgroups for their help in all things \TeX{}. Thanks for bug reports % to \textsc{Ulrike Fischer}, \textsc{Sebastian Bank}, \textsc{James Hedges}, % \textsc{Mikhail Titov}, and \textsc{Micha\l{} Herman}. % Thanks to \textsc{Sven Siegmund} for pointing out a necessary further @@ -1834,13 +2169,13 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % and then the \xpackage{hyperref} package and the \xpackage{revtex4} % class even redefine\\ % |\lastpage@putlabel| (at least \xpackage{hyperref} version -% \sout{ 2010/09/13, v6.81n}\uwave{ 2012/11/06, v6.83m}, and -% REV\TeX{}4 version 2010/07/25, v4.1r, still do this). +% 2012/11/06, v6.83m, and +% REV\TeX{}4 version 2010/07/25, v4.1r, still did this). % \end{Version} % \begin{Version}{2010/02/18 v1.1} -% \item Proposed |LastPages| label by \textsc{H.-Martin M\"{u}nch} +% \item Proposed |LastPages| label by \textsc{H.-Martin Münch} % on \Newsgroup{comp.text.tex}, see e.\,g. -% \url{http://groups.google.com/group/comp.text.tex/msg/4407493da9c747f0?dmode=source}; +% \url{https://groups.google.com/g/comp.text.tex/c/Ad8pO2Rw_HY/m/8EfHqT1JB0QJ}; % now available in the \xpackage{pageslts} package. % \end{Version} % \begin{Version}{2010/07/29 v1.2a} @@ -1851,14 +2186,14 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % \item Replacement of |\filedate|, |-version|, |-name|,\ldots{} because % of \LaTeX{}~bug 2705:\\ % Synopsis: Possible problem with |\fileversion| and |\filedate|\\ -% \url{http://www.latex-project.org/cgi-bin/ltxbugs2html?category=LaTeX&responsible=anyone&state=anything&keyword=lastpage&pr=latex%2F2705&search=} +% \url{https://www.latex-project.org/cgi-bin/ltxbugs2html?category=LaTeX&responsible=anyone&state=anything&keyword=lastpage&pr=latex/2705} % \item Example |lastpage-example.tex|. % \item Alternatives listing (section \ref{sec:Alternatives}). % \item Listing of \TeX{} sources (subsection \ref{ss:Downloads}). -% \item A lot (!) of details. +% \item Really a lot of details. % \item Complete rewriting of the documentation. % \item Everything in \texttt{DTX} framework. -% \item Included a |\CheckSum|. +% \item Included a |\CheckSum|. [Removed in v2.0a.] % \item Complete rewriting of the README file. % \end{Version} % \begin{Version}{2010/08/12 v1.2b} @@ -1878,23 +2213,23 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % |\AtBeginDocument|, when placing the \texttt{lastpage} label it is also % checked for the |\hyperref| command, in case \xpackage{hyperref} was not % loaded at |\begin{document}| yet. (Bug reported by \textsc{Sebastian Bank}, -% thanks!) -% \item Changed the |\unit| definition (got rid of an old |\rm|). +% thanks!) [lastpagemodern.sty just uses |\IfPackageLoadedTF{hyperref}|.] +% \item Changed the |\unit| definition (got rid of an old |\rm|). [Removed in v2.0a.] % \item Changed |\lastpage@puthyperlabel| to |\lastpage@putlabelhyper| analogous to % |\pagesLTS@putlabelhyper| of the \xpackage{pageslts} package. % \item Updated version number and date of \xpackage{pagesLTS} package (especially -% for the check for outdated versions). +% for the check for outdated versions). [Removed in v2.0a.] % \item Removed wrong \%\ from the driver file. % \end{Version} % \begin{Version}{2010/08/25 v1.2d} % \item Bug fix: also \xpackage{tcilatex} defines the |\hyperref| command, % therefore for \xpackage{hyperref} package detection this had to be % changed to |\Hy@Warning|. +% [lastpagemodern just uses |\IfPackageLoadedTF{hyperref}|.] % \end{Version} % \begin{Version}{2010/09/12 v1.2e} -% \item \textsc{James Hedges} (Thanks!) pointed out, that there was no -% instruction in the documentation about suppressing hyperlinks: -% added (also to the example). +% \item \textsc{James Hedges} pointed out, that there was no instruction in the +% documentation about suppressing hyperlinks: added (also to the example). % \item Diverse small changes. % \end{Version} % \begin{Version}{2010/09/24 v1.2f} @@ -1902,9 +2237,7 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % \item New version of REV\TeX{}4\ 2010/07/25, v4.1r, old problem. % \item New version of \xpackage{pagesLTS} package, 2010/09/22, v1.1k. % \item Moved the package from \texttt{.../latex/muench/lastpage/...} to\\ -% \texttt{.../latex/lastpage/...}.\\ -% (Please make sure that any old versions of the \xpackage{lastpage} -% package are properly uninstalled from your system.) +% \texttt{.../latex/lastpage/...}. % \end{Version} % \begin{Version}{2011/02/01 v1.2g} % \item Updated to version 2010/04/24 v0.19 of the \xpackage{holtxdoc} package. @@ -1916,7 +2249,7 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % \item The \xpackage{holtxdoc} package was fixed, therefore the warning % in \xfile{drv} could be removed.~-- Adapted the style of this documentation % to new \textsc{Oberdiek} \xfile{dtx} style. -% \item New versions of \xpackage{pagesLTS}, \xpackage{ulem}, \xpackage{hyperref},% +% \item New versions of \xpackage{pagesLTS}, \xpackage{ulem}, \xpackage{hyperref}, % \xpackage{papermas} packages. % \item Corrected references in the README and manual. % \end{Version} @@ -1926,26 +2259,23 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % \item Some details. % \end{Version} % \begin{Version}{2011/08/31 v1.2j} -% \item Updated to \TeX{} live 2011 (for compiling the documentation and example). +% \item Updated to \TeX{} Live 2011 (for compiling the documentation and example). % \item New version of \xpackage{papermas} package, 2011/08/22, v1.0h. % \item Adapted for the use together with packages, which sometimes prevent writing -% to the \xfile{aux} file. (Bug reported by \textsc{Mikhail Titov}, thanks!) -% \item Minor details. +% to the \xfile{aux} file. (Bug reported by \textsc{Mikhail Titov}.) % \end{Version} % \begin{Version}{2011/09/01 v1.2k} % \item Fixed |\thepage{}| to |\thepage{} |, where there should be a space. % \item New version of the \xpackage{hyperref} package, 2011/08/19, v6.82h, but % still problem with links to pages with % page-\textquotedblleft number\textquotedblright{} in \texttt{fnsymbol} -% pagenumbering scheme. -% \uwave{Seems to be fixed since v6.83m as of 2012/11/06.} +% pagenumbering scheme. [Seems to be fixed since v6.83m as of 2012/11/06.] % \item Documentation update about \textquotedblleft No write access to the % \xfile{aux} file\textquotedblright . % \item New version of \xpackage{regstats} package available. -% \item Some small details. % \end{Version} % \begin{Version}{2013/01/28 v1.2l} -% \item Updated to \TeX{} live 2012 (for compiling the documentation and example). +% \item Updated to \TeX{} Live 2012 (for compiling the documentation and example). % \item New versions of the packages % \xpackage{endfloat}, \xpackage{holtxdoc}, \xpackage{hypdoc}, % \xpackage{hyperref}, \xpackage{pageslts}, \xpackage{regstats}, @@ -1953,30 +2283,35 @@ This can be broken for example by \verb|\pagenumbering{fnsymbol}|. % \item The \xpackage{nameref} package redefines |\label| to have five arguments % instead of two, therefore |\newlabel{LastPage}{{}{\thepage}{}{}{}}| instead of % |\newlabel{LastPage}{{}{\thepage}}| must be used. -% (Bug reported at \url{http://tex.stackexchange.com/q/95541/6865}, +% (Bug reported at \url{https://tex.stackexchange.com/q/95541}, % thanks to Micha\l{} Herman!) Fixed. -% \item Updates to several details, also in the documentation. % \end{Version} % \begin{Version}{2015/03/29 v1.2m} -% \item Updated to \TeX{} live 2014 (for compiling the documentation and example) -% and installed the available updates. Therefore I can no longer test -% whether \xpackage{lastpage} works with earlier versions of \LaTeX{}. -% (It probably does, but there is no guarantee.) -% \item Updates to a lot (!) of details in the documentation (manual \& README), -% very small changes in code. +% \item Updated to \TeX{} Live 2014 (for compiling the documentation and example). +% \item Updates to really a lot of details in the documentation (manual \& README). % \end{Version} % \begin{Version}{2021/09/03 v1.2n} % \item Updates to the documentation (manual \& README), to the example, and % several small changes in code. +% \item This version has been archived at +% \url{https://web.archive.org/web/20230305193232/https://mirror.ctan.org/install/macros/latex/contrib/lastpage.tds.zip}. +% \end{Version} +% \begin{Version}{2023-03-07 v2.0a} +% \item Removed use of \pkg{ulem}. +% \item Removed |\unit|. +% \item \pkg{lastpage} should now determine automatically, whether to load +% its \TeX~2.09 version, classic \LaTeX2e-version, or modern version +% with \eTeX, hook-management etc. +% \item Converted to UTF-8. +% \item Updated to \LaTeX{} format 2022-11-01. +% \item Extensive updates to the documentation (manual \& README) and to the example. % \end{Version} % \end{History} -% % \bigskip % % When you find a mistake or have a suggestion for an improvement of this package, % please send an e-mail to the maintainer, thanks! (Please see BUG REPORTS in the README.) -% -% \pagebreak +% \newpage % % \PrintIndex % diff --git a/Master/texmf-dist/source/latex/lastpage/lastpage.ins b/Master/texmf-dist/source/latex/lastpage/lastpage.ins index 9e2416d37c2..cb8d0cbde41 100644 --- a/Master/texmf-dist/source/latex/lastpage/lastpage.ins +++ b/Master/texmf-dist/source/latex/lastpage/lastpage.ins @@ -9,17 +9,13 @@ %% This is a generated file. %% %% Project: lastpage -%% Version: 2021/09/03 v1.2n +%% Version: 2023-03-07 v2.0a +%% Info: Refers to last page's name %% -%% Copyright (C) 2010 - 2021 by -%% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de> +%% Copyright (C) 2010 - 2023 by +%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de> %% Portions of code copyrighted by other people as marked. %% -%% The usual disclaimer applies: -%% If it doesn't work right that's your problem. -%% (Nevertheless, send an e-mail to the maintainer -%% when you find an error in this package.) -%% %% 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 @@ -28,37 +24,43 @@ %% and the latest version of this license is in %% https://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of -%% LaTeX version 2005/12/01 or later. +%% LaTeX version 2005-12-01 or later. %% %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is H.-Martin Muench. %% -%% This package was invented by -%% Jeffrey P. Goldberg (jeffrey+news at goldmark dot org). +%% This package was invented by Jeffrey P. Goldberg. %% I thought that a replacement was needed and therefore created the pageslts package, -%% https://www.ctan.org/pkg/pageslts +%% https://ctan.org/pkg/pageslts %% . Nevertheless, for compatibility with existing documents/packages as well as for %% the low amount of resources needed by the lastpage package (no new counter!), %% I updated this package. %% Thanks go to Jeffrey P. Goldberg for allowing me to do this. %% +%% While this package allows for things like "Page slash thepage{} of slash pageref{LastPage}" +%% to get "Page 7 of 9" or "Page VII of IX", +%% the NUMBER of pages is nowadays available via slash @abspage@last from the kernel, +%% but with pages for example I to X and then 1 to 10, the number of pages would be "20", +%% while the name of the last page is "10". Decide what you need/want! +%% %% This work consists of the main source file lastpage.dtx, %% the README, and the derived files -%% lastpage.sty, lastpage.pdf, -%% lastpage.ins, lastpage.drv, +%% lastpage.sty, lastpage209.sty, lastpage2e.sty, +%% lastpageclassic.sty, lastpagemodern.sty, +%% lastpage.pdf, lastpage.ins, lastpage.drv, %% lastpage-example.tex, lastpage-example.pdf. %% %% In memoriam -%% Claudia Simone Barth + 1996/01/30 -%% Tommy Muench + 2014/01/02 -%% Hans-Klaus Muench + 2014/08/24 +%% Claudia Simone Barth + 1996-01-30 +%% Tommy Muench + 2014-01-02 +%% Hans-Klaus Muench + 2014-08-24 %% \input docstrip.tex -\Msg{*********************************************************************} -\Msg{* Installation} -\Msg{* Package: lastpage 2021/09/03 v1.2n Refers to last page's name (HMM)} -\Msg{*********************************************************************} +\Msg{**********************************************************************} +\Msg{* Installation *} +\Msg{* Package: lastpage 2023-03-07 v2.0a Refers to last page's name (HMM)*} +\Msg{**********************************************************************} \keepsilent \askforoverwritefalse @@ -69,17 +71,13 @@ This is a generated file. Project: lastpage -Version: 2021/09/03 v1.2n +Version: 2023-03-07 v2.0a +Info: Refers to last page's name -Copyright (C) 2010 - 2021 by - H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de> +Copyright (C) 2010 - 2023 by + H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de> Portions of code copyrighted by other people as marked. -The usual disclaimer applies: -If it doesn't work right that's your problem. -(Nevertheless, send an e-mail to the maintainer - when you find an error in this package.) - 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 @@ -88,31 +86,37 @@ version. This version of this license is in and the latest version of this license is in https://www.latex-project.org/lppl.txt and version 1.3c or later is part of all distributions of -LaTeX version 2005/12/01 or later. +LaTeX version 2005-12-01 or later. This work has the LPPL maintenance status "maintained". The Current Maintainer of this work is H.-Martin Muench. -This package was invented by -Jeffrey P. Goldberg (jeffrey+news at goldmark dot org). +This package was invented by Jeffrey P. Goldberg. I thought that a replacement was needed and therefore created the pageslts package, -https://www.ctan.org/pkg/pageslts +https://ctan.org/pkg/pageslts . Nevertheless, for compatibility with existing documents/packages as well as for the low amount of resources needed by the lastpage package (no new counter!), I updated this package. Thanks go to Jeffrey P. Goldberg for allowing me to do this. +While this package allows for things like "Page slash thepage{} of slash pageref{LastPage}" +to get "Page 7 of 9" or "Page VII of IX", +the NUMBER of pages is nowadays available via slash @abspage@last from the kernel, +but with pages for example I to X and then 1 to 10, the number of pages would be "20", +while the name of the last page is "10". Decide what you need/want! + This work consists of the main source file lastpage.dtx, the README, and the derived files - lastpage.sty, lastpage.pdf, - lastpage.ins, lastpage.drv, + lastpage.sty, lastpage209.sty, lastpage2e.sty, + lastpageclassic.sty, lastpagemodern.sty, + lastpage.pdf, lastpage.ins, lastpage.drv, lastpage-example.tex, lastpage-example.pdf. In memoriam - Claudia Simone Barth + 1996/01/30 - Tommy Muench + 2014/01/02 - Hans-Klaus Muench + 2014/08/24 + Claudia Simone Barth + 1996-01-30 + Tommy Muench + 2014-01-02 + Hans-Klaus Muench + 2014-08-24 \endpreamble \let\MetaPrefix\DoubleperCent @@ -121,8 +125,11 @@ In memoriam \file{lastpage.ins}{\from{lastpage.dtx}{install}}% \file{lastpage.drv}{\from{lastpage.dtx}{driver}}% \usedir{tex/latex/lastpage}% - \file{lastpage209.sty}{\from{lastpage.dtx}{lastpage209}}% \file{lastpage.sty}{\from{lastpage.dtx}{package}}% + \file{lastpage209.sty}{\from{lastpage.dtx}{lastpage209}}% + \file{lastpage2e.sty}{\from{lastpage.dtx}{lastpage2e}}% + \file{lastpageclassic.sty}{\from{lastpage.dtx}{lastpageclassic}}% + \file{lastpagemodern.sty}{\from{lastpage.dtx}{lastpagemodern}}% \usedir{doc/latex/lastpage}% \file{lastpage-example.tex}{\from{lastpage.dtx}{example}}% } @@ -134,7 +141,8 @@ In memoriam \Msg{* To finish the installation you have to move the following} \Msg{* file into a directory searched by TeX:} \Msg{*} -\Msg{* lastpage.sty (or lastpage209.sty for TeX 2.09)} +\Msg{* lastpage.sty, lastpage209.sty, lastpage2e.sty,} +\Msg{* lastpageclassic.sty, and lastpagemodern.sty} \Msg{*} \Msg{* To produce the documentation run the file `lastpage.drv'} \Msg{* through (pdf)LaTeX, e.g.} |