texlive[66449] branches/branch2022.final/Master/texmf-dist: lastpage

commits+karl at tug.org commits+karl at tug.org
Tue Mar 7 23:24:55 CET 2023


Revision: 66449
          http://tug.org/svn/texlive?view=revision&revision=66449
Author:   karl
Date:     2023-03-07 23:24:55 +0100 (Tue, 07 Mar 2023)
Log Message:
-----------
lastpage (7mar23) (branch)

Modified Paths:
--------------
    branches/branch2022.final/Master/texmf-dist/doc/latex/lastpage/README
    branches/branch2022.final/Master/texmf-dist/doc/latex/lastpage/lastpage-example.pdf
    branches/branch2022.final/Master/texmf-dist/doc/latex/lastpage/lastpage-example.tex
    branches/branch2022.final/Master/texmf-dist/doc/latex/lastpage/lastpage.pdf
    branches/branch2022.final/Master/texmf-dist/source/latex/lastpage/lastpage.drv
    branches/branch2022.final/Master/texmf-dist/source/latex/lastpage/lastpage.dtx
    branches/branch2022.final/Master/texmf-dist/source/latex/lastpage/lastpage.ins
    branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpage.sty
    branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpage209.sty

Added Paths:
-----------
    branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpage2e.sty
    branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpageclassic.sty
    branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpagemodern.sty

Modified: branches/branch2022.final/Master/texmf-dist/doc/latex/lastpage/README
===================================================================
--- branches/branch2022.final/Master/texmf-dist/doc/latex/lastpage/README	2023-03-07 22:24:33 UTC (rev 66448)
+++ branches/branch2022.final/Master/texmf-dist/doc/latex/lastpage/README	2023-03-07 22:24:55 UTC (rev 66449)
@@ -1,4 +1,4 @@
-README for lastpage package, 2021/09/03, v1.2n
+README for lastpage package, 2023-03-07, v2.0a
 
 
 TABLE OF CONTENTS
@@ -17,7 +17,7 @@
 1 INTRODUCTION
 ==============
 
-This LaTeX package puts the label LastPage (\AtEndDocument)
+This LaTeX package puts the label LastPage at the end of the document
 into the .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. -
@@ -26,24 +26,25 @@
 has output after this package, or the number of pages
 instead of the last page's name is needed, or the page
 numbers exeed a certain range, there might be problems,
-which can be solved by using the pageslts package instead.
+which can be solved by using the pageslts package instead
+[which needs updating to current LaTeX-format and therefore might fail].
 
 This material is published under the LPPL 1.3c: 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
+Public License, either version 1.3c of this license or (at your option)
+any later version. This version of this license is in
 https://www.latex-project.org/lppl/lppl-1-3c.txt
 and the latest version of this license is in
 https://www.latex-project.org/lppl.txt
-and version 1.3c or later is part of all distributions of LaTeX version
-2005/12/01 or later.
+and version 1.3c or later is part of all distributions of
+LaTeX version 2005-12-01 or later.
 
 
 2 DOWNLOAD
 ==========
 
-`lastpage' is available on CTAN:
-https://www.ctan.org/pkg/lastpage
+"lastpage" is available on CTAN:
+https://ctan.org/pkg/lastpage
 
 Also a ZIP file is provided that contains the files:
 the manual (lastpage.pdf), the example (lastpage-example.tex),
@@ -50,23 +51,21 @@
 the compiled example (lastpage-example.pdf), 
 driver (lastpage.drv), lastpage.dtx,
 installation file (lastpage.ins), 
-the style files (lastpage.sty, lastpage209.sty),
+the style files (lastpage.sty, lastpage209.sty, lastpage23.sty,
+lastpageclassic.sty, lastpagemodern.sty),
 and this README, 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
 
 
 3 INSTALLATION
 ==============
 
-First, please make sure that there is no old version of
-lastpage at some obsolete place in your system.
-
 Installation with ZIP file in TDS format
 ----------------------------------------
-The ZIP file `lastpage.tds.zip' contains the files
+The ZIP file "lastpage.tds.zip" contains the files
 sorted in a TDS tree. Thus you can directly unpack the
 ZIP file inside a TDS tree.
-See https://www.ctan.org/TDS-guidelines for an explanation
+See https://ctan.org/TDS-guidelines for an explanation
 of TDS.
 Example:
   cd /...somewhere.../texmf
@@ -82,18 +81,22 @@
    If necessary, unpack them.
 b) Generate the package and driver files:
      tex lastpage.dtx
-c) Install the file `*.sty' in your TDS tree:
-     cp *.sty TDS:tex/latex/lastpage/
-   Replace `TDS:' by the prefix of your TDS tree
+c) Install the files "*.sty" in your TDS tree:
+     cp lastpage.sty TDS:tex/latex/lastpage/
+     cp lastpage209.sty TDS:tex/latex/lastpage/
+     cp lastpage23.sty TDS:tex/latex/lastpage/
+     cp lastpageclassic.sty TDS:tex/latex/lastpage/
+     cp lastpagemodern.sty TDS:tex/latex/lastpage/
+   Replace "TDS:" by the prefix of your TDS tree
    (texmf directory).
 d) Create the documentation, if necessary, e.g.
      pdflatex lastpage.dtx
      makeindex -s gind.ist lastpage.idx
-     pdflatex undolabl.dtx
+     pdflatex lastpage.dtx
      makeindex -s gind.ist lastpage.idx
      pdflatex lastpage.dtx
-e) Update the databases, if necessary, e.g. for teTeX:
-     mktexlsr .../texmf 
+e) Update the databases if necessary, e.g. for TeXLive
+     texhash or mktexlsr.
 f) Create the lastpage-example.pdf, if necessary, e.g.
      pdflatex lastpage-example.tex
      pdflatex lastpage-example.tex
@@ -110,19 +113,18 @@
 The lastpage package does not depend on other packages,
 but the lastpage.dtx does (for unpacking and constructing
 the documentation), see "7.1 Downloads" in the manual
-https://mirrors.ctan.org/macros/latex/contrib/lastpage/lastpage.pdf
+https://mirror.ctan.org/macros/latex/contrib/lastpage/lastpage.pdf
 
 
 5 PACKAGE COMPATIBILITY
 =======================
 
-lastpage is not compatible with the very old version 2.0
+lastpage is not compatible with the ancient version 2.0
 (and earlier) of the endfloat package. The recent version of
-endfloat is available at
-https://www.ctan.org/pkg/endfloat
+endfloat is available at https://ctan.org/pkg/endfloat
 
 6 AUTHORS/MAINTAINER
-=====================
+====================
 
 * Author of the original main code: 
    Jeffrey P. Goldberg (Thanks!)
@@ -131,7 +133,7 @@
 
 
 7 BUG REPORTS
-==============
+=============
 
 A bug report should contain:
 * Comprehensive problem description. This includes error or
@@ -138,12 +140,12 @@
   warning messages.
 * \errorcontextlines=\maxdimen can be added in the
   TeX code to get more information in TeX error messages.
-* Minimal test file that shows the problem, but does not
-  contain any unnecessary packages and code.
+* Minimal test file that shows the problem,
+  but does not contain any unnecessary packages and code.
 * Used drivers/programs.
 * Version information about used packages and programs.
-* If you are using LaTeX, then add "\listfiles". Then
-  a list of version information is printed at the end
+* If you are using LaTeX, then add "\listfiles" to the document.
+  Then a list of version information is printed at the end
   of the LaTeX run.
 * Please no other files than the minimal test file.
   The other files .log, .dvi, .ps, .pdf are seldom
@@ -158,6 +160,6 @@
 
 
 8 KNOWN PROBLEMS
-=================
+================
 
 Really a lot, see chapter 3 of the documentation!
\ No newline at end of file

Modified: branches/branch2022.final/Master/texmf-dist/doc/latex/lastpage/lastpage-example.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2022.final/Master/texmf-dist/doc/latex/lastpage/lastpage-example.tex
===================================================================
--- branches/branch2022.final/Master/texmf-dist/doc/latex/lastpage/lastpage-example.tex	2023-03-07 22:24:33 UTC (rev 66448)
+++ branches/branch2022.final/Master/texmf-dist/doc/latex/lastpage/lastpage-example.tex	2023-03-07 22:24:55 UTC (rev 66449)
@@ -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,39 +24,50 @@
 %% 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 at 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
 %% 
-\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 at 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,%
@@ -68,17 +75,17 @@
  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
+%%   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 %
@@ -85,16 +92,13 @@
  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
 
@@ -119,48 +123,22 @@
 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}.
-
+\url{https://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)!
-
-\bigskip
-
 \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
+Last page's name (LastPage): \pageref{LastPage}
 
-\noindent 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}
-
 \bigskip
 
 \noindent There was the question:
@@ -207,7 +185,46 @@
 Page \thepage{} is page \makeatletter\lastpage at 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 at 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}
 \endinput
 %%
 %% End of file `lastpage-example.tex'.

Modified: branches/branch2022.final/Master/texmf-dist/doc/latex/lastpage/lastpage.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2022.final/Master/texmf-dist/source/latex/lastpage/lastpage.drv
===================================================================
--- branches/branch2022.final/Master/texmf-dist/source/latex/lastpage/lastpage.drv	2023-03-07 22:24:33 UTC (rev 66448)
+++ branches/branch2022.final/Master/texmf-dist/source/latex/lastpage/lastpage.drv	2023-03-07 22:24:55 UTC (rev 66449)
@@ -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 at 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}

Modified: branches/branch2022.final/Master/texmf-dist/source/latex/lastpage/lastpage.dtx
===================================================================
--- branches/branch2022.final/Master/texmf-dist/source/latex/lastpage/lastpage.dtx	2023-03-07 22:24:33 UTC (rev 66448)
+++ branches/branch2022.final/Master/texmf-dist/source/latex/lastpage/lastpage.dtx	2023-03-07 22:24:55 UTC (rev 66449)
@@ -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 at 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 @@
 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 at 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 @@
   \file{lastpage.ins}{\from{lastpage.dtx}{install}}%
   \file{lastpage.drv}{\from{lastpage.dtx}{driver}}%
   \usedir{tex/latex/lastpage}%
+  \file{lastpage.sty}{\from{lastpage.dtx}{package}}%
   \file{lastpage209.sty}{\from{lastpage.dtx}{lastpage209}}%
-  \file{lastpage.sty}{\from{lastpage.dtx}{package}}%
+  \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 @@
 \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 @@
 %
 %    \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 @@
  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,51 +230,68 @@
 %     }%^^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 at testa,\lastpage at testb,\lastpage at one}
+% \DoNotIndex{\@auxout,\@evenfoot,\@firstofone,\@ifl at 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 at temp,\Hy at unicodefalse}
+% \DoNotIndex{\hypersetup,\if at filesw,\ifHy at hypertexnames,\ifHy at pageanchor,\ifHy at 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 at 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
 %
@@ -293,9 +298,8 @@
 % \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.
 %
@@ -302,7 +306,7 @@
 % \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 @@
 % 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 @@
 % 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).
+% If the total \emph{number} of pages of a document is needed,
+% the kernel already gives this by |\makeatletter\@abspage at last\makeatother|
+% (needs at least two compiler runs).
 %
-% \section{A lot of WARNINGS\label{sec:warn}}
+% \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 (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.})
+% \bigskip
 %
-% \subsection{\texttt{\textbackslash AtEndDocument}\label{ssec:aed}}
-%
-% \indent The output of a \LaTeXe{} run is not independent of the order
+% \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 @@
 % 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,26 +405,23 @@
 % ...
 % \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}}
+% \subsection{Interaction with ancient 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.\\
+% \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).
@@ -446,18 +428,15 @@
 % 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,14 +447,13 @@
 % (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).
@@ -482,44 +460,46 @@
 % 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.)
+% If the total \emph{number} of pages of a document is needed,
+% the kernel already gives this by |\makeatletter\@abspage at 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\}}}}
-%
+% \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 at 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
@@ -526,32 +506,31 @@
 % 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 @@
 % 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 at putlabel}}
-%
 % The \xpackage{hyperref} package redefines the |\lastpage at putlabel| command,
 % and the \xpackage{revtex4} class redefines the |\lastpage at putlabel| command,
 % and the \xpackage{hyperref} package redefines the |\lastpage at putlabel| command,
@@ -600,52 +578,23 @@
 % Because |\lastpage at 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:\\
+% 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{lastpage209.sty}
+% \DescribeMacro{pageslts}\vspace*{-\baselineskip}
 % \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
-%
-% \DescribeMacro{pageslts}
-% \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 @@
 %  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,7 +656,7 @@
 %  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}
@@ -716,7 +663,8 @@
 %  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,
@@ -723,17 +671,17 @@
 %  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,26 +699,38 @@
 %  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 at 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
@@ -777,19 +737,22 @@
 %
 % \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 at 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,17 +760,17 @@
  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 %
@@ -814,16 +777,13 @@
  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,48 +808,22 @@
 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}.
-
+\url{https://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)!
-
-\bigskip
-
 \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
+Last page's name (LastPage): \pageref{LastPage}
 
-\noindent 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}
-
 \bigskip
 
 \noindent There was the question:
@@ -936,82 +870,124 @@
 Page \thepage{} is page \makeatletter\lastpage at 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 at 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}
-%
+% \StopEventually{}
 % \newpage
 %
-% \StopEventually{}
-%
 % \section{The implementation}
+% \DescribeMacro{lastpage.sty}
+% We first need to determine whether we are on \TeX~2.09 or \LaTeX2e:
 %
-% We start off by checking that we are loading into \LaTeXe{} and
-% announcing the name and version of this package.
-%
 %    \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}
+% \DescribeMacro{lastpage209.sty}
+% If we are on \TeX~2.09 (really?!), we load the 2.09 version \pkg{lastpage209.sty}:
 %
-% A short description of the \xpackage{lastpage} package:
-%
 %    \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 at 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 at one{1}
+\gdef\lastpage at one{1}
 %    \end{macrocode}
 %
 % We define |\lastpage at hyper|, |\lastpage at nameref|, |\lastpage at french|, and
@@ -1024,53 +1000,43 @@
 \gdef\lastpage at LTS{0}
 %    \end{macrocode}
 %
-% We define |\lastpage at firstpage| to be \textquotedblleft \texttt{1}\textquotedblright{}.
+% We define |\lastpage at firstpage| to be \textquotedblleft \texttt{1}\textquotedblright{},
+% and before re-definition via the \xfile{.aux} file,
+% |\lastpage at lastpage| and |\lastpage at lastpageHy| are unknown.
 %
 %    \begin{macrocode}
-\def\lastpage at firstpage{1}
+\gdef\lastpage at firstpage{1}
+\gdef\lastpage at lastpage{??}
+\gdef\lastpage at 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 at 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 at tikz{1}}{}%
   \@ifpackageloaded{hyperref}{\gdef\lastpage at hyper{1}}{}%
   \@ifpackageloaded{nameref}{\gdef\lastpage at nameref{1}}{}%
   \@ifpackageloaded{french}{\gdef\lastpage at french{1}}{}%
   \@ifpackageloaded{frenchle}{\gdef\lastpage at french{1}}{}%
-  \@ifpackageloaded{pageslts}{%
-    \PackageWarning{lastpage}{Package pageslts found.\MessageBreak%
-      Therefore the lastpage package is no longer\MessageBreak%
-      necessary.%
-      }%
-    \gdef\lastpage at 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 at LTS{1}%
-   }{}%
+  \@ifpackageloaded{pagesLTS}{\gdef\lastpage at LTS{1}}{}%
+  \@ifpackageloaded{pageslts}{\gdef\lastpage at LTS{1}}{}%
 %    \end{macrocode}
 %
 % |\lastpage at putlabel|, used by older versions of this package,
@@ -1094,8 +1060,6 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \pagebreak
-%
 % \begin{macro}{\lastpage at putl@bel}
 % \indent This command does the writing of the label:
 %
@@ -1174,12 +1138,10 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \pagebreak
-%
 % \begin{macro}{\lastpage at putlabelhyper}%
 % \indent When \xpackage{hyperref} has been loaded, the label is set with the
 % |\lastpage at 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 at putlabelhyper}{%
@@ -1209,15 +1171,14 @@
 %
 %    \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 at pageanchor
-      \ifHy at hypertexnames
-        \ifHy at plainpages
+%% 2010/04/17 v6.80x; newer versions are available.         %%
+    \let\@number\@firstofone%
+    \ifHy at pageanchor%
+      \ifHy at hypertexnames%
+        \ifHy at plainpages%
           \def\Hy at temp{\arabic{page}}%
-        \else
-          \Hy at unicodefalse
+        \else%
+          \Hy at 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 @@
 %% Without the modification, after the first shipout "PD1"  %%
 %% is inserted each time |\pdfstringdef\Hy at 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 @@
 % We will make a mistake here at most once:
 %
 %    \begin{macrocode}
-            \ifx \lastpage at firstpage\lastpage at one
+            \ifx \lastpage at firstpage\lastpage at one\relax%
               \def\Hy at temp{\thepage}%
               \gdef\lastpage at firstpage{0}%
             \else%
@@ -1254,14 +1215,13 @@
 %% Code from pageslts package again:                        %%
           \fi%
 %% Code from hyperref package again:                        %%
-        \fi
-      \else
+        \fi%
+      \else%
         \def\Hy at temp{\the\Hy at pagecounter}%
-      \fi
-    \fi
+      \fi%
+    \fi%
     \immediate\write\@auxout{%
-      \string\newlabel
-        {LastPage}{{}{\thepage}{}{%
+      \string\newlabel{LastPage}{{}{\thepage}{}{%
           \ifHy at pageanchor page.\Hy at temp\fi}{}}%
     }%
 %% End of code from the hyperref package.                   %%
@@ -1271,14 +1231,11 @@
 % whether they have been saved in the \xfile{aux} file.
 %
 %    \begin{macrocode}
-    \immediate\write\@auxout{%
-      \string\xdef\string\lastpage at lastpage{\thepage}}%
+    \immediate\write\@auxout{\string\xdef\string\lastpage at lastpage{\thepage}}%
     \ifHy at pageanchor%
-      \immediate\write\@auxout{%
-        \string\xdef\string\lastpage at lastpageHy{\Hy at temp}}%
+      \immediate\write\@auxout{\string\xdef\string\lastpage at lastpageHy{\Hy at temp}}%
     \else%
-      \immediate\write\@auxout{%
-        \string\gdef\string\lastpage at lastpageHy{}}%
+      \immediate\write\@auxout{\string\gdef\string\lastpage at lastpageHy{}}%
     \fi%
 %    \end{macrocode}
 %
@@ -1295,8 +1252,7 @@
 %
 % \begin{macro}{\lastpage at 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 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \pagebreak
-%
 % \begin{macro}{\lastpage at 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 @@
 \newcommand{\lastpage at fileswtest}[2]{%
   \edef\lastpage at testa{#1}%
   \edef\lastpage at testb{#2}%
-  \ifx\lastpage at testa\lastpage at testb% OK
+  \ifx\lastpage at testa\lastpage at testb%
   \else%
-    \ifx\lastpage at tikz\lastpage at one%
+    \ifx\lastpage at tikz\lastpage at 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 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 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \pagebreak
-%
 % \begin{macro}{\AtEndDocument}
 % \indent |\AtEndDocument| we again (re)define |\lastpage at putlabel|
-% to do nothing and check |\lastpage at lastpage| and |\lastpage at lastpageHy|,
-% whether they are still unchanged, which is OK for the first run only.
+% to do nothing and check |\lastpage at lastpage|,
+% whether it is still unchanged, which is OK for the first run only.
 %
 %    \begin{macrocode}
-\gdef\lastpage at lastpage{\relax}%
-\gdef\lastpage at lastpageHy{\relax}%
-
 \AtEndDocument{%
-  \gdef\lastpage at putlabel{\relax}%
   \ifx\lastpage at LTS\lastpage at one%
   \else%
-    \ifx\lastpage at lastpage\relax%
+    \gdef\lastpage at putlabel{??}%
+    \ifx\lastpage at lastpage\lastpage at putlabel\relax%
       \PackageWarning{lastpage}{Rerun to get the references right}%
     \fi%
-    \ifx\lastpage at lastpageHy\relax%
-      \PackageWarning{lastpage}{Rerun to get the references right}%
-    \fi%
   \fi%
+  \gdef\lastpage at putlabel{\relax}%
 %    \end{macrocode}
 %
 % It is checked whether writing to files is allowed
@@ -1444,25 +1392,381 @@
     \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 at 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 at one{1}
+%    \end{macrocode}
+%
+% We define |\lastpage at firstpage| to be \textquotedblleft \texttt{1}\textquotedblright{},
+% and before re-definition via the \xfile{.aux} file,
+% |\lastpage at lastpage| and |\lastpage at lastpageHy| are unknown.
+%
+%    \begin{macrocode}
+\gdef\lastpage at firstpage{1}
+\gdef\lastpage at lastpage{??}
+\gdef\lastpage at 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 at 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 at 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 at putlabel{\relax}%
+%    \end{macrocode}
+%
+% Because |\lastpage at 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 at 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 at 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 at putlabelhyper}{%
+%    \end{macrocode}
+%
+% and also need to treat documents with \xpackage{nameref} differently:
+%
+%    \begin{macrocode}
+      \IfPackageLoadedTF{nameref}{\lastpage at 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 at lastpage{\thepage}}%
+          \immediate\write\@auxout{\string\gdef\string\lastpage at lastpageHy{}}%
+          \addtocounter{page}{+1}%
+        \endgroup%
+       }%
+     }%
+   }%
+  }
+
+%    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\lastpage at putlabelhyper}%
+% \indent When \xpackage{hyperref} has been loaded, the label is set with the
+% |\lastpage at putlabelhyper| command. If the \xpackage{hyperref} package is used,
+% but page-anchors are disabled, the hyperlinking will not work.
+%
 %    \begin{macrocode}
-%</package>
+\newcommand{\lastpage at putlabelhyper}{%
+  \ifHy at 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 at page\m at 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 at pageanchor%
+      \ifHy at hypertexnames%
+        \ifHy at plainpages%
+          \def\Hy at temp{\arabic{page}}%
+        \else%
+          \Hy at 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 at 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 at firstpage\lastpage at one\relax%
+              \def\Hy at temp{\thepage}%
+              \gdef\lastpage at firstpage{0}%
+            \else%
+%% Code from hyperref package again:                        %%
+                \pdfstringdef\Hy at 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 at temp{\thepage}%
+%% Code from pageslts package again:                        %%
+          \fi%
+%% Code from hyperref package again:                        %%
+        \fi%
+      \else%
+        \def\Hy at temp{\the\Hy at pagecounter}%
+      \fi%
+    \fi%
+    \immediate\write\@auxout{%
+      \string\newlabel{LastPage}{{}{\thepage}{}{%
+          \ifHy at pageanchor page.\Hy at 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 at lastpage{\thepage}}%
+    \ifHy at pageanchor%
+      \immediate\write\@auxout{\string\xdef\string\lastpage at lastpageHy{\Hy at temp}}%
+    \else%
+      \immediate\write\@auxout{\string\gdef\string\lastpage at 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 at 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 at putlabelNR}{%
+  \begingroup%
+    \addtocounter{page}{-1}%
+    \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}{}{}{}}}%
+    \immediate\write\@auxout{\string\xdef\string\lastpage at lastpage{\thepage}}%
+    \immediate\write\@auxout{\string\gdef\string\lastpage at lastpageHy{}}%
+    \addtocounter{page}{+1}%
+  \endgroup%
+  }
+
+%    \end{macrocode}
+% \end{macro}
 % \pagebreak
 %
-% \section{Installation}
+% \begin{macro}{\lastpage at 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{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{macrocode}
+\newcommand{\lastpage at fileswtest}[2]{%
+  \edef\lastpage at testa{#1}%
+  \edef\lastpage at testb{#2}%
+  \ifx\lastpage at testa\lastpage at 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{macro}{\lastpage at fileswtestHy}
+% \indent When the \xpackage{hyperref} package has been loaded,
+% |\lastpage at lastpageHy| must be tested additionally. (And a
+% |\newcommand| is needed, because |\ifHy at pageanchor| is not even
+% defined when \xpackage{hyperref} has not been loaded.)
+%
+%    \begin{macrocode}
+\newcommand{\lastpage at fileswtestHy}{%
+  \ifHy at pageanchor%
+    \lastpage at fileswtest{\Hy at temp}{\lastpage at lastpageHy}%
+  \else%
+    \lastpage at fileswtest{\empty}{\lastpage at lastpageHy}%
+  \fi%
+  }
+
+%    \end{macrocode}
+% \end{macro}
+%
+% \DescribeMacro{enddocument/afterlastpage}
+% \indent |enddocument/afterlastpage| we again (re)define |\lastpage at putlabel|
+% to do nothing, but first use it to check whether |\lastpage at lastpage|
+% is still unchanged, which is OK for the first run only.
+%
+%    \begin{macrocode}
+\AddToHook{enddocument/afterlastpage}{%
+  \IfPackageLoadedTF{pageslts}{\relax}{%
+    \gdef\lastpage at putlabel{??}%
+    \ifx\lastpage at lastpage\lastpage at putlabel\relax%
+      \AddToHook{enddocument/info}{%
+        \PackageWarning{lastpage}{Rerun to get the references right}%
+        }%
+    \fi%
+    }%
+  \gdef\lastpage at 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 at 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 at putl@bel\addtocounter{page}{-1}%
+     }{\IfPackageLoadedTF{frenchle}{%
+         \addtocounter{page}{+1}\lastpage at putl@bel\addtocounter{page}{-1}%
+       }{\lastpage at 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 at fileswtest| and
+% (if \xpackage{hyperref} has been loaded) |\lastpage at fileswtestHy|.
+%
+%    \begin{macrocode}
+    \IfPackageLoadedTF{pageslts}{\relax}{%
+      \lastpage at fileswtest{\thepage}{\lastpage at lastpage}%
+      \IfPackageLoadedTF{hyperref}{\lastpage at 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,48 +1775,83 @@
 % \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}
+% \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}, 2012/11/06, v6.83m,\\
-%   \url{https://www.ctan.org/pkg/hyperref}
-% \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?)
@@ -1519,24 +1858,24 @@
 % \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,21 +1885,13 @@
 % \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{fancyhdr}, 2022/11/09, v4.1,
+%   \url{https://ctan.org/pkg/fancyhdr}
 %
-% \item[-] package \xpackage{nccfancyhdr}, 2004/12/07, v1.1,\\
-%   \url{https://www.ctan.org/pkg/nccfancyhdr}
+% \item[-] package \xpackage{nccfancyhdr}, 2004/12/07, v1.1,
+%   \url{https://ctan.org/pkg/nccfancyhdr}
 % \end{description}
 %
-% \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}
-% \end{description}
-%
 % \DescribeMacro{count1to}
 % \DescribeMacro{nofm}
 % \DescribeMacro{totpages}
@@ -1571,41 +1902,43 @@
 % 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.\\
 %
@@ -1612,45 +1945,49 @@
 % \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 @@
 %
 % \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 @@
 % \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, \dots) relies on
+% file name databases, you must refresh these. For example, \TeX\,Live\ users
+% run \verb|texhash| or \verb|mktexlsr|.
 %
-% 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|.
-%
 % \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 @@
 % \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 @@
 % \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 @@
 %
 % \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 @@
 %             and then the \xpackage{hyperref} package and the \xpackage{revtex4}
 %             class even redefine\\
 %             |\lastpage at 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 @@
 %     \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,12 +2213,12 @@
 %             |\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 at puthyperlabel| to |\lastpage at putlabelhyper| analogous to
 %             |\pagesLTS at 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}
@@ -1890,11 +2225,11 @@
 %     \item Bug fix: also \xpackage{tcilatex} defines the |\hyperref| command,
 %             therefore for \xpackage{hyperref} package detection this had to be
 %             changed to |\Hy at 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 @@
 %     \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 @@
 %     \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,11 +2259,10 @@
 %     \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.
@@ -1937,15 +2269,13 @@
 %     \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,31 +2283,36 @@
 %     \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.)
+% \newpage
 %
-% \pagebreak
-%
 % \PrintIndex
 %
 % \Finale

Modified: branches/branch2022.final/Master/texmf-dist/source/latex/lastpage/lastpage.ins
===================================================================
--- branches/branch2022.final/Master/texmf-dist/source/latex/lastpage/lastpage.ins	2023-03-07 22:24:33 UTC (rev 66448)
+++ branches/branch2022.final/Master/texmf-dist/source/latex/lastpage/lastpage.ins	2023-03-07 22:24:55 UTC (rev 66449)
@@ -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 at 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 @@
 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 at 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 @@
   \file{lastpage.ins}{\from{lastpage.dtx}{install}}%
   \file{lastpage.drv}{\from{lastpage.dtx}{driver}}%
   \usedir{tex/latex/lastpage}%
+  \file{lastpage.sty}{\from{lastpage.dtx}{package}}%
   \file{lastpage209.sty}{\from{lastpage.dtx}{lastpage209}}%
-  \file{lastpage.sty}{\from{lastpage.dtx}{package}}%
+  \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 @@
 \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.}

Modified: branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpage.sty
===================================================================
--- branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpage.sty	2023-03-07 22:24:33 UTC (rev 66448)
+++ branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpage.sty	2023-03-07 22:24:55 UTC (rev 66449)
@@ -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,265 +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 at 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]
-\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).
-
-%% Allows for things like
-%% Page \thepage{} of \pageref{LastPage}
-%% to get
-%% 'Page 7 of 9'.
-%% 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).
-
-%% 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.
-
-\def\lastpage at one{1}
-\gdef\lastpage at hyper{0}
-\gdef\lastpage at nameref{0}
-\gdef\lastpage at french{0}
-\gdef\lastpage at LTS{0}
-\def\lastpage at firstpage{1}
-
-\AtBeginDocument{%
-  \@ifpackageloaded{tikz}{\gdef\lastpage at tikz{1}}{}%
-  \@ifpackageloaded{hyperref}{\gdef\lastpage at hyper{1}}{}%
-  \@ifpackageloaded{nameref}{\gdef\lastpage at nameref{1}}{}%
-  \@ifpackageloaded{french}{\gdef\lastpage at french{1}}{}%
-  \@ifpackageloaded{frenchle}{\gdef\lastpage at french{1}}{}%
-  \@ifpackageloaded{pageslts}{%
-    \PackageWarning{lastpage}{Package pageslts found.\MessageBreak%
-      Therefore the lastpage package is no longer\MessageBreak%
-      necessary.%
-      }%
-    \gdef\lastpage at 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 at LTS{1}%
-   }{}%
-  \gdef\lastpage at putlabel{\relax}%
-  }
-
-\newcommand{\lastpage at putl@bel}{%
-  \@ifundefined{Hy at Warning}{%  hyperref not loaded
-    }{\gdef\lastpage at hyper{1}% hyperref loaded
-     }%
-  \ifx\lastpage at LTS\lastpage at one%
-  \else%
-    \ifx\lastpage at hyper\lastpage at one%
-      \lastpage at putlabelhyper%
-    \else%
-      \ifx\lastpage at nameref\lastpage at one%
-        \lastpage at putlabelNR%
-      \else%
-        \begingroup%
-          \addtocounter{page}{-1}%
-          \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}}}%
-          \immediate\write\@auxout{\string\xdef\string\lastpage at lastpage{\thepage}}%
-          \immediate\write\@auxout{\string\gdef\string\lastpage at lastpageHy{}}%
-          \addtocounter{page}{+1}%
-        \endgroup%
-      \fi%
-    \fi%
-  \fi%
-  }
-
-\newcommand{\lastpage at putlabelhyper}{%
-  \ifHy at pageanchor%
-  \else%
-    \PackageError{lastpage}{hyperref option pageanchor disabled}{%
-      The \string\pageref{LastPage} link doesn't work\MessageBreak%
-      using hyperref with disabled option `pageanchor'.\MessageBreak%
-    }%
-  \fi%
-  \begingroup%
-    \addtocounter{page}{-1}%
-%% 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 at pageanchor
-      \ifHy at hypertexnames
-        \ifHy at plainpages
-          \def\Hy at temp{\arabic{page}}%
-        \else
-          \Hy at 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 at temp{\thepage}|  %%
-%% is executed.                                             %%
-          \ifnum \value{page}=1%
-            \ifx \lastpage at firstpage\lastpage at one
-              \def\Hy at temp{\thepage}%
-              \gdef\lastpage at firstpage{0}%
-            \else%
-%% Code from hyperref package again:                        %%
-                \pdfstringdef\Hy at 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 at temp{\thepage}%
-%% Code from pageslts package again:                        %%
-          \fi%
-%% Code from hyperref package again:                        %%
-        \fi
-      \else
-        \def\Hy at temp{\the\Hy at pagecounter}%
-      \fi
-    \fi
-    \immediate\write\@auxout{%
-      \string\newlabel
-        {LastPage}{{}{\thepage}{}{%
-          \ifHy at pageanchor page.\Hy at temp\fi}{}}%
-    }%
-%% End of code from the hyperref package.                   %%
-    \immediate\write\@auxout{%
-      \string\xdef\string\lastpage at lastpage{\thepage}}%
-    \ifHy at pageanchor%
-      \immediate\write\@auxout{%
-        \string\xdef\string\lastpage at lastpageHy{\Hy at temp}}%
-    \else%
-      \immediate\write\@auxout{%
-        \string\gdef\string\lastpage at lastpageHy{}}%
-    \fi%
-    \addtocounter{page}{+1}%
-  \endgroup%
-  }
-
-\newcommand{\lastpage at putlabelNR}{%
-  \begingroup%
-    \addtocounter{page}{-1}%
-    \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}{}{}{}}}%
-    \immediate\write\@auxout{\string\xdef\string\lastpage at lastpage{\thepage}}%
-    \immediate\write\@auxout{\string\gdef\string\lastpage at lastpageHy{}}%
-    \addtocounter{page}{+1}%
-  \endgroup%
-  }
-
-\newcommand{\lastpage at fileswtest}[2]{%
-  \edef\lastpage at testa{#1}%
-  \edef\lastpage at testb{#2}%
-  \ifx\lastpage at testa\lastpage at testb% OK
-  \else%
-    \ifx\lastpage at tikz\lastpage at one%
-      \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%
-        and would not have changed anyway.\MessageBreak%
-       }%
-    \else%
-      \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 previouse compiler run\MessageBreak%
-        and would not have changed anyway.\MessageBreak%
-       }%
-    \fi%
-  \fi%
-  }
-\newcommand{\lastpage at fileswtestHy}{%
-  \ifHy at pageanchor%
-    \lastpage at fileswtest{\Hy at temp}{\lastpage at lastpageHy}%
-  \else%
-    \lastpage at fileswtest{\empty}{\lastpage at lastpageHy}%
-  \fi%
-  }
-
-\gdef\lastpage at lastpage{\relax}%
-\gdef\lastpage at lastpageHy{\relax}%
-
-\AtEndDocument{%
-  \gdef\lastpage at putlabel{\relax}%
-  \ifx\lastpage at LTS\lastpage at one%
-  \else%
-    \ifx\lastpage at lastpage\relax%
-      \PackageWarning{lastpage}{Rerun to get the references right}%
-    \fi%
-    \ifx\lastpage at lastpageHy\relax%
-      \PackageWarning{lastpage}{Rerun to get the references right}%
-    \fi%
-  \fi%
-  \if at filesw%
-    \message{^^JAED: lastpage setting LastPage^^J}%
-    \@ifundefined{clearpage}{\relax}{\clearpage}%
-    \ifx\lastpage at french\lastpage at one% french or frenchle loaded
-      \addtocounter{page}{+1}\lastpage at putl@bel\addtocounter{page}{-1}%
-    \else% neither one loaded
-      \lastpage at putl@bel%
-    \fi%
-  \else%
-    \ifx\lastpage at LTS\lastpage at one%
-    \else%
-      \lastpage at fileswtest{\thepage}{\lastpage at lastpage}%
-      \ifx\lastpage at hyper\lastpage at one%
-        \lastpage at fileswtestHy%
-      \fi%
-    \fi%
-  \fi%
-  }
-
+%% 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
 \endinput
 %%
 %% End of file `lastpage.sty'.

Modified: branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpage209.sty
===================================================================
--- branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpage209.sty	2023-03-07 22:24:33 UTC (rev 66448)
+++ branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpage209.sty	2023-03-07 22:24:55 UTC (rev 66449)
@@ -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,43 +24,51 @@
 %% 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 at 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
 %% 
- % 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).
+%% 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%
+   \immediate\write\@mainaux{\string\newlabel{LastPage}{{}{\thepage}}}%
   }%
+  \addtocounter{page}{+1}%
+  \origenddocument%
+ }
 \endinput
 %%
 %% End of file `lastpage209.sty'.

Added: branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpage2e.sty
===================================================================
--- branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpage2e.sty	                        (rev 0)
+++ branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpage2e.sty	2023-03-07 22:24:55 UTC (rev 66449)
@@ -0,0 +1,67 @@
+%%
+%% This is file `lastpage2e.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lastpage.dtx  (with options: `lastpage2e')
+%% 
+%% This is a generated file.
+%% 
+%% Project: lastpage
+%% Version: 2023-03-07 v2.0a
+%% Info: Refers to last page's name
+%% 
+%% 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.
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%%    https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%%    https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of
+%% LaTeX version 2005-12-01 or later.
+%% 
+%% This work has the LPPL maintenance status "maintained".
+%% 
+%% The Current Maintainer of this work is H.-Martin Muench.
+%% 
+%% This package was invented by Jeffrey P. Goldberg.
+%% I thought that a replacement was needed and therefore created the pageslts package,
+%% 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 at 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, 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
+%% 
+%% 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 at t@r\fmtversion{2022/11/01}{\RequirePackage{lastpagemodern}}{%
+                                 \RequirePackage{lastpageclassic}}
+\message{^^J}
+\endinput
+%%
+%% End of file `lastpage2e.sty'.


Property changes on: branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpage2e.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpageclassic.sty
===================================================================
--- branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpageclassic.sty	                        (rev 0)
+++ branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpageclassic.sty	2023-03-07 22:24:55 UTC (rev 66449)
@@ -0,0 +1,254 @@
+%%
+%% This is file `lastpageclassic.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lastpage.dtx  (with options: `lastpageclassic')
+%% 
+%% This is a generated file.
+%% 
+%% Project: lastpage
+%% Version: 2023-03-07 v2.0a
+%% Info: Refers to last page's name
+%% 
+%% 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.
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%%    https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%%    https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of
+%% LaTeX version 2005-12-01 or later.
+%% 
+%% This work has the LPPL maintenance status "maintained".
+%% 
+%% The Current Maintainer of this work is H.-Martin Muench.
+%% 
+%% This package was invented by Jeffrey P. Goldberg.
+%% I thought that a replacement was needed and therefore created the pageslts package,
+%% 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 at 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, 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
+%% 
+%% 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"
+
+\gdef\lastpage at one{1}
+\gdef\lastpage at hyper{0}
+\gdef\lastpage at nameref{0}
+\gdef\lastpage at french{0}
+\gdef\lastpage at LTS{0}
+\gdef\lastpage at firstpage{1}
+\gdef\lastpage at lastpage{??}
+\gdef\lastpage at lastpageHy{??}
+
+\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 at tikz{1}}{}%
+  \@ifpackageloaded{hyperref}{\gdef\lastpage at hyper{1}}{}%
+  \@ifpackageloaded{nameref}{\gdef\lastpage at nameref{1}}{}%
+  \@ifpackageloaded{french}{\gdef\lastpage at french{1}}{}%
+  \@ifpackageloaded{frenchle}{\gdef\lastpage at french{1}}{}%
+  \@ifpackageloaded{pagesLTS}{\gdef\lastpage at LTS{1}}{}%
+  \@ifpackageloaded{pageslts}{\gdef\lastpage at LTS{1}}{}%
+  \gdef\lastpage at putlabel{\relax}%
+  }
+
+\newcommand{\lastpage at putl@bel}{%
+  \@ifundefined{Hy at Warning}{%  hyperref not loaded
+    }{\gdef\lastpage at hyper{1}% hyperref loaded
+     }%
+  \ifx\lastpage at LTS\lastpage at one%
+  \else%
+    \ifx\lastpage at hyper\lastpage at one%
+      \lastpage at putlabelhyper%
+    \else%
+      \ifx\lastpage at nameref\lastpage at one%
+        \lastpage at putlabelNR%
+      \else%
+        \begingroup%
+          \addtocounter{page}{-1}%
+          \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}}}%
+          \immediate\write\@auxout{\string\xdef\string\lastpage at lastpage{\thepage}}%
+          \immediate\write\@auxout{\string\gdef\string\lastpage at lastpageHy{}}%
+          \addtocounter{page}{+1}%
+        \endgroup%
+      \fi%
+    \fi%
+  \fi%
+  }
+
+\newcommand{\lastpage at putlabelhyper}{%
+  \ifHy at pageanchor%
+  \else%
+    \PackageError{lastpage}{hyperref option pageanchor disabled}{%
+      The \string\pageref{LastPage} link doesn't work\MessageBreak%
+      using hyperref with disabled option `pageanchor'.\MessageBreak%
+    }%
+  \fi%
+  \begingroup%
+    \addtocounter{page}{-1}%
+%% The following code is from the hyperref package          %%
+%% 2010/04/17 v6.80x; newer versions are available.         %%
+    \let\@number\@firstofone%
+    \ifHy at pageanchor%
+      \ifHy at hypertexnames%
+        \ifHy at plainpages%
+          \def\Hy at temp{\arabic{page}}%
+        \else%
+          \Hy at 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 at temp{\thepage}|  %%
+%% is executed.                                             %%
+          \ifnum \value{page}=1\relax%
+            \ifx \lastpage at firstpage\lastpage at one\relax%
+              \def\Hy at temp{\thepage}%
+              \gdef\lastpage at firstpage{0}%
+            \else%
+%% Code from hyperref package again:                        %%
+                \pdfstringdef\Hy at 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 at temp{\thepage}%
+%% Code from pageslts package again:                        %%
+          \fi%
+%% Code from hyperref package again:                        %%
+        \fi%
+      \else%
+        \def\Hy at temp{\the\Hy at pagecounter}%
+      \fi%
+    \fi%
+    \immediate\write\@auxout{%
+      \string\newlabel{LastPage}{{}{\thepage}{}{%
+          \ifHy at pageanchor page.\Hy at temp\fi}{}}%
+    }%
+%% End of code from the hyperref package.                   %%
+    \immediate\write\@auxout{\string\xdef\string\lastpage at lastpage{\thepage}}%
+    \ifHy at pageanchor%
+      \immediate\write\@auxout{\string\xdef\string\lastpage at lastpageHy{\Hy at temp}}%
+    \else%
+      \immediate\write\@auxout{\string\gdef\string\lastpage at lastpageHy{}}%
+    \fi%
+    \addtocounter{page}{+1}%
+  \endgroup%
+  }
+
+\newcommand{\lastpage at putlabelNR}{%
+  \begingroup%
+    \addtocounter{page}{-1}%
+    \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}{}{}{}}}%
+    \immediate\write\@auxout{\string\xdef\string\lastpage at lastpage{\thepage}}%
+    \immediate\write\@auxout{\string\gdef\string\lastpage at lastpageHy{}}%
+    \addtocounter{page}{+1}%
+  \endgroup%
+  }
+
+\newcommand{\lastpage at fileswtest}[2]{%
+  \edef\lastpage at testa{#1}%
+  \edef\lastpage at testb{#2}%
+  \ifx\lastpage at testa\lastpage at testb%
+  \else%
+    \ifx\lastpage at tikz\lastpage at 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 previous compiler run\MessageBreak%
+        and would not have changed anyway.\MessageBreak%
+       }%
+    \else%
+      \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%
+  \fi%
+  }
+
+\newcommand{\lastpage at fileswtestHy}{%
+  \ifHy at pageanchor%
+    \lastpage at fileswtest{\Hy at temp}{\lastpage at lastpageHy}%
+  \else%
+    \lastpage at fileswtest{\empty}{\lastpage at lastpageHy}%
+  \fi%
+  }
+
+\AtEndDocument{%
+  \ifx\lastpage at LTS\lastpage at one%
+  \else%
+    \gdef\lastpage at putlabel{??}%
+    \ifx\lastpage at lastpage\lastpage at putlabel\relax%
+      \PackageWarning{lastpage}{Rerun to get the references right}%
+    \fi%
+  \fi%
+  \gdef\lastpage at putlabel{\relax}%
+  \if at filesw%
+    \message{^^JAED: lastpage setting LastPage^^J}%
+    \@ifundefined{clearpage}{\relax}{\clearpage}%
+    \ifx\lastpage at french\lastpage at one% french or frenchle loaded
+      \addtocounter{page}{+1}\lastpage at putl@bel\addtocounter{page}{-1}%
+    \else% neither one loaded
+      \lastpage at putl@bel%
+    \fi%
+  \else%
+    \ifx\lastpage at LTS\lastpage at one%
+    \else%
+      \lastpage at fileswtest{\thepage}{\lastpage at lastpage}%
+      \ifx\lastpage at hyper\lastpage at one%
+        \lastpage at fileswtestHy%
+      \fi%
+    \fi%
+  \fi%
+  }
+\endinput
+%%
+%% End of file `lastpageclassic.sty'.


Property changes on: branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpageclassic.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpagemodern.sty
===================================================================
--- branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpagemodern.sty	                        (rev 0)
+++ branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpagemodern.sty	2023-03-07 22:24:55 UTC (rev 66449)
@@ -0,0 +1,237 @@
+%%
+%% This is file `lastpagemodern.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lastpage.dtx  (with options: `lastpagemodern')
+%% 
+%% This is a generated file.
+%% 
+%% Project: lastpage
+%% Version: 2023-03-07 v2.0a
+%% Info: Refers to last page's name
+%% 
+%% 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.
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%%    https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%%    https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of
+%% LaTeX version 2005-12-01 or later.
+%% 
+%% This work has the LPPL maintenance status "maintained".
+%% 
+%% The Current Maintainer of this work is H.-Martin Muench.
+%% 
+%% This package was invented by Jeffrey P. Goldberg.
+%% I thought that a replacement was needed and therefore created the pageslts package,
+%% 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 at 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, 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
+%% 
+%% 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 at 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!
+
+\gdef\lastpage at one{1}
+\gdef\lastpage at firstpage{1}
+\gdef\lastpage at lastpage{??}
+\gdef\lastpage at lastpageHy{??}
+
+\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.}%
+    }{}}%
+  \gdef\lastpage at putlabel{\relax}%
+  }
+
+\newcommand{\lastpage at putl@bel}{%
+  \IfPackageLoadedTF{pageslts}{\relax}{%
+    \IfPackageLoadedTF{hyperref}{\lastpage at putlabelhyper}{%
+      \IfPackageLoadedTF{nameref}{\lastpage at putlabelNR}{%
+        \begingroup%
+          \addtocounter{page}{-1}%
+          \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}}}%
+          \immediate\write\@auxout{\string\xdef\string\lastpage at lastpage{\thepage}}%
+          \immediate\write\@auxout{\string\gdef\string\lastpage at lastpageHy{}}%
+          \addtocounter{page}{+1}%
+        \endgroup%
+       }%
+     }%
+   }%
+  }
+
+\newcommand{\lastpage at putlabelhyper}{%
+  \ifHy at 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%
+  \begingroup%
+    \addtocounter{page}{-1}%
+%% The following code is from the hyperref package          %%
+%% 2010/04/17 v6.80x; newer versions are available.         %%
+    \let\@number\@firstofone%
+    \ifHy at pageanchor%
+      \ifHy at hypertexnames%
+        \ifHy at plainpages%
+          \def\Hy at temp{\arabic{page}}%
+        \else%
+          \Hy at 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 at temp{\thepage}|  %%
+%% is executed.                                             %%
+          \ifnum \value{page}=1\relax%
+            \ifx \lastpage at firstpage\lastpage at one\relax%
+              \def\Hy at temp{\thepage}%
+              \gdef\lastpage at firstpage{0}%
+            \else%
+%% Code from hyperref package again:                        %%
+                \pdfstringdef\Hy at 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 at temp{\thepage}%
+%% Code from pageslts package again:                        %%
+          \fi%
+%% Code from hyperref package again:                        %%
+        \fi%
+      \else%
+        \def\Hy at temp{\the\Hy at pagecounter}%
+      \fi%
+    \fi%
+    \immediate\write\@auxout{%
+      \string\newlabel{LastPage}{{}{\thepage}{}{%
+          \ifHy at pageanchor page.\Hy at temp\fi}{}}%
+    }%
+%% End of code from the hyperref package.                   %%
+    \immediate\write\@auxout{\string\xdef\string\lastpage at lastpage{\thepage}}%
+    \ifHy at pageanchor%
+      \immediate\write\@auxout{\string\xdef\string\lastpage at lastpageHy{\Hy at temp}}%
+    \else%
+      \immediate\write\@auxout{\string\gdef\string\lastpage at lastpageHy{}}%
+    \fi%
+    \addtocounter{page}{+1}%
+  \endgroup%
+  }
+
+\newcommand{\lastpage at putlabelNR}{%
+  \begingroup%
+    \addtocounter{page}{-1}%
+    \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}{}{}{}}}%
+    \immediate\write\@auxout{\string\xdef\string\lastpage at lastpage{\thepage}}%
+    \immediate\write\@auxout{\string\gdef\string\lastpage at lastpageHy{}}%
+    \addtocounter{page}{+1}%
+  \endgroup%
+  }
+
+\newcommand{\lastpage at fileswtest}[2]{%
+  \edef\lastpage at testa{#1}%
+  \edef\lastpage at testb{#2}%
+  \ifx\lastpage at testa\lastpage at 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%
+  }
+
+\newcommand{\lastpage at fileswtestHy}{%
+  \ifHy at pageanchor%
+    \lastpage at fileswtest{\Hy at temp}{\lastpage at lastpageHy}%
+  \else%
+    \lastpage at fileswtest{\empty}{\lastpage at lastpageHy}%
+  \fi%
+  }
+
+\AddToHook{enddocument/afterlastpage}{%
+  \IfPackageLoadedTF{pageslts}{\relax}{%
+    \gdef\lastpage at putlabel{??}%
+    \ifx\lastpage at lastpage\lastpage at putlabel\relax%
+      \AddToHook{enddocument/info}{%
+        \PackageWarning{lastpage}{Rerun to get the references right}%
+        }%
+    \fi%
+    }%
+  \gdef\lastpage at putlabel{\relax}%
+  \if at filesw%
+    \message{^^Jenddocument/afterlastpage: lastpage setting LastPage.^^J}%
+    \IfPackageLoadedTF{french}{%
+         \addtocounter{page}{+1}\lastpage at putl@bel\addtocounter{page}{-1}%
+     }{\IfPackageLoadedTF{frenchle}{%
+         \addtocounter{page}{+1}\lastpage at putl@bel\addtocounter{page}{-1}%
+       }{\lastpage at putl@bel%
+        }%
+      }%
+  \else%
+    \IfPackageLoadedTF{pageslts}{\relax}{%
+      \lastpage at fileswtest{\thepage}{\lastpage at lastpage}%
+      \IfPackageLoadedTF{hyperref}{\lastpage at fileswtestHy}{\relax}%
+     }%
+  \fi%
+  }
+\endinput
+%%
+%% End of file `lastpagemodern.sty'.


Property changes on: branches/branch2022.final/Master/texmf-dist/tex/latex/lastpage/lastpagemodern.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property


More information about the tex-live-commits mailing list.