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