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