%% %% 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 %% Portions of code copyrighted by other people as marked. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either %% version 1.3c of this license or (at your option) any later %% version. This version of this license is in %% https://www.latex-project.org/lppl/lppl-1-3c.txt %% and the latest version of this license is in %% https://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of %% LaTeX version 2005-12-01 or later. %% %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is H.-Martin Muench. %% %% This package was invented by Jeffrey P. Goldberg. %% I thought that a replacement was needed and therefore created the pageslts package, %% https://ctan.org/pkg/pageslts %% . Nevertheless, for compatibility with existing documents/packages as well as for %% the low amount of resources needed by the lastpage package (no new counter!), %% I updated this package. %% Thanks go to Jeffrey P. Goldberg for allowing me to do this. %% %% While this package allows for things like "Page slash thepage{} of slash pageref{LastPage}" %% to get "Page 7 of 9" or "Page VII of IX", %% the NUMBER of pages is nowadays available via slash @abspage@last from the kernel, %% but with pages for example I to X and then 1 to 10, the number of pages would be "20", %% while the name of the last page is "10". Decide what you need/want! %% %% This work consists of the main source file lastpage.dtx, %% the README, and the derived files %% lastpage.sty, lastpage209.sty, lastpage2e.sty, %% lastpageclassic.sty, lastpagemodern.sty, %% lastpage.pdf, lastpage.ins, lastpage.drv, %% lastpage-example.tex, lastpage-example.pdf. %% %% In memoriam %% Claudia Simone Barth + 1996-01-30 %% Tommy Muench + 2014-01-02 %% Hans-Klaus Muench + 2014-08-24 %% %% Part of the "lastpage" package \NeedsTeXFormat{LaTeX2e}[2022-11-01] \ProvidesPackage{lastpagemodern}[2023-03-07 v2.0a Refers to last page's name (HMM; JPG)] %% allows for things like "Page \thepage{} of \pageref{LastPage}" %% to get "Page 7 of 9" or "Page VII of IX"; %% the NUMBER of pages is available via \@abspage@last, but with pages %% for example I to X and then 1 to 10, the number of pages woud be "20", %% while the name of the last page is "10". Decide what you need/want! \gdef\lastpage@one{1} \gdef\lastpage@firstpage{1} \gdef\lastpage@lastpage{??} \gdef\lastpage@lastpageHy{??} \AddToHook{begindocument/end}{% \IfPackageLoadedTF{endfloat}{% \IfPackageAtLeastTF{endfloat}{1994/06/01}{\relax}{% \PackageError{lastpage}{% Incompatibility with outdated version of endfloat package}{% lastpage is not fully compatible with a version\MessageBreak% before 2.1 of the endfloat package,\MessageBreak% because those versions redefined\MessageBreak% the \string\enddocument\space command.}% }{}}% \gdef\lastpage@putlabel{\relax}% } \newcommand{\lastpage@putl@bel}{% \IfPackageLoadedTF{pageslts}{\relax}{% \IfPackageLoadedTF{hyperref}{\lastpage@putlabelhyper}{% \IfPackageLoadedTF{nameref}{\lastpage@putlabelNR}{% \begingroup% \addtocounter{page}{-1}% \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}}}% \immediate\write\@auxout{\string\xdef\string\lastpage@lastpage{\thepage}}% \immediate\write\@auxout{\string\gdef\string\lastpage@lastpageHy{}}% \addtocounter{page}{+1}% \endgroup% }% }% }% } \newcommand{\lastpage@putlabelhyper}{% \ifHy@pageanchor% \else% \PackageError{lastpage}{hyperref option pageanchor disabled}{% The \string\pageref{LastPage} link does not work\MessageBreak% using hyperref with disabled option `pageanchor'.\MessageBreak% }% \fi% \begingroup% \addtocounter{page}{-1}% %% The following code is from the hyperref package %% %% 2010/04/17 v6.80x; newer versions are available. %% \let\@number\@firstofone% \ifHy@pageanchor% \ifHy@hypertexnames% \ifHy@plainpages% \def\Hy@temp{\arabic{page}}% \else% \Hy@unicodefalse% %% Code not from hyperref package: %% %% The following lines are taken from the pageslts package, %% %% which in turn got them from the hyperref package and %% %% modified them. %% %% Without the modification, after the first shipout "PD1" %% %% is inserted each time |\pdfstringdef\Hy@temp{\thepage}| %% %% is executed. %% \ifnum \value{page}=1\relax% \ifx \lastpage@firstpage\lastpage@one\relax% \def\Hy@temp{\thepage}% \gdef\lastpage@firstpage{0}% \else% %% Code from hyperref package again: %% \pdfstringdef\Hy@temp{\thepage}% %% End of code from the hyperref package. %% \fi% %% The pageslts package would even check for fnsymbol page %% %% numbering scheme and adapt the code correspondingly. %% \else% %% Code from hyperref package again: %% \pdfstringdef\Hy@temp{\thepage}% %% Code from pageslts package again: %% \fi% %% Code from hyperref package again: %% \fi% \else% \def\Hy@temp{\the\Hy@pagecounter}% \fi% \fi% \immediate\write\@auxout{% \string\newlabel{LastPage}{{}{\thepage}{}{% \ifHy@pageanchor page.\Hy@temp\fi}{}}% }% %% End of code from the hyperref package. %% \immediate\write\@auxout{\string\xdef\string\lastpage@lastpage{\thepage}}% \ifHy@pageanchor% \immediate\write\@auxout{\string\xdef\string\lastpage@lastpageHy{\Hy@temp}}% \else% \immediate\write\@auxout{\string\gdef\string\lastpage@lastpageHy{}}% \fi% \addtocounter{page}{+1}% \endgroup% } \newcommand{\lastpage@putlabelNR}{% \begingroup% \addtocounter{page}{-1}% \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}{}{}{}}}% \immediate\write\@auxout{\string\xdef\string\lastpage@lastpage{\thepage}}% \immediate\write\@auxout{\string\gdef\string\lastpage@lastpageHy{}}% \addtocounter{page}{+1}% \endgroup% } \newcommand{\lastpage@fileswtest}[2]{% \edef\lastpage@testa{#1}% \edef\lastpage@testb{#2}% \ifx\lastpage@testa\lastpage@testb% \else% \IfPackageLoadedTF{tikz}{% \PackageWarning{lastpage}% {The lastpage package was not allowed to write to an\MessageBreak% .aux file. This package does not work without access\MessageBreak% to an .aux file.\MessageBreak% It is OK if the .aux file was already updated\MessageBreak% by a previous compiler run\MessageBreak% and would not have changed anyway.\MessageBreak% }% }{\PackageError{lastpage}{No auxiliary file allowed}% {The lastpage package was not allowed to write to an .aux file.\MessageBreak% This package does not work without access to an .aux file.\MessageBreak% Press Ctrl+Z to exit.\MessageBreak% But it is OK if the .aux file was already updated\MessageBreak% by a previous compiler run\MessageBreak% and would not have changed anyway.\MessageBreak% }% }% \fi% } \newcommand{\lastpage@fileswtestHy}{% \ifHy@pageanchor% \lastpage@fileswtest{\Hy@temp}{\lastpage@lastpageHy}% \else% \lastpage@fileswtest{\empty}{\lastpage@lastpageHy}% \fi% } \AddToHook{enddocument/afterlastpage}{% \IfPackageLoadedTF{pageslts}{\relax}{% \gdef\lastpage@putlabel{??}% \ifx\lastpage@lastpage\lastpage@putlabel\relax% \AddToHook{enddocument/info}{% \PackageWarning{lastpage}{Rerun to get the references right}% }% \fi% }% \gdef\lastpage@putlabel{\relax}% \if@filesw% \message{^^Jenddocument/afterlastpage: lastpage setting LastPage.^^J}% \IfPackageLoadedTF{french}{% \addtocounter{page}{+1}\lastpage@putl@bel\addtocounter{page}{-1}% }{\IfPackageLoadedTF{frenchle}{% \addtocounter{page}{+1}\lastpage@putl@bel\addtocounter{page}{-1}% }{\lastpage@putl@bel% }% }% \else% \IfPackageLoadedTF{pageslts}{\relax}{% \lastpage@fileswtest{\thepage}{\lastpage@lastpage}% \IfPackageLoadedTF{hyperref}{\lastpage@fileswtestHy}{\relax}% }% \fi% } \endinput %% %% End of file `lastpagemodern.sty'.