summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/pageslts/pageslts.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/pageslts/pageslts.sty')
-rw-r--r--Master/texmf-dist/tex/latex/pageslts/pageslts.sty1356
1 files changed, 606 insertions, 750 deletions
diff --git a/Master/texmf-dist/tex/latex/pageslts/pageslts.sty b/Master/texmf-dist/tex/latex/pageslts/pageslts.sty
index 47897b3b710..79435b056d4 100644
--- a/Master/texmf-dist/tex/latex/pageslts/pageslts.sty
+++ b/Master/texmf-dist/tex/latex/pageslts/pageslts.sty
@@ -9,10 +9,11 @@
%% This is a generated file.
%%
%% Project: pageslts
-%% Version: 2015/12/21 v1.2f
+%% Version: 2025-01-10 v2.0d
+%% Info: Variants of last page labels
%%
-%% Copyright (C) 2010 - 2015 by
-%% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de>
+%% Copyright (C) 2010 - 2025 by
+%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de>
%% Portions of code copyrighted by other people as marked.
%%
%% IMPORTANT NOTICE:
@@ -25,6 +26,9 @@
%% * Alph - Uppercase letters: A, B, C, D,...
%% * fnsymbol - Footnote symbols: *, ^^e2^^80^^a0 (ddagger), ^^e2^^80^^a1 (dddagger),
%% ^^c2^^a7 (mathsection),...
+%% * silly - from sillypage package
+%% * gobble - gobbles the page numbers;
+%% maybe backslash thispagestyle{empty} is more useful?
%% ). The command backslash pagenumbering is renewed, but no change
%% should be visible to the output text, because only labels are added.
%% backslash OrigPagenumbering can be used to get the original meaning
@@ -32,20 +36,15 @@
%% see the change in the page numbering scheme and will make mistakes.
%% The package takes options.
%%
-%% 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
%% 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".
%%
@@ -53,7 +52,7 @@
%%
%% This package first started as a revision of the lastpage
%% package of Jeffrey P. Goldberg (jeffrey+news at goldmark dot org),
-%% but it became obvious that a replacement was needed.
+%% but I thought a replacement was needed.
%%
%% This work consists of the main source file pageslts.dtx,
%% the README, and the derived files
@@ -62,15 +61,14 @@
%% pageslts-example.tex, pageslts-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}[2015/01/01]
-\ProvidesPackage{pageslts}[2015/12/21 v1.2f
- Refers to special pages' numbers/names (HMM)]
+\NeedsTeXFormat{LaTeX2e}[2024-11-01]
+\ProvidesPackage{pageslts}[2025-01-10 v2.0d Refers to special pages' numbers/names (HMM)]
-%% Allows for things like\\
+%% Allows for things like\par
%% |Page \thepage\ (\theCurrentPage; local: \theCurrentPageLocal) of %
%% \lastpageref{pagesLTS.roman}(\lastpageref{pagesLTS.roman.local}) + %
%% \lastpageref{pagesLTS.Roman}(\lastpageref{pagesLTS.Roman.local}) + %
@@ -78,129 +76,88 @@
%% \lastpageref{pagesLTS.fnsymbol}(\lastpageref{pagesLTS.fnsymbol.local}) + %
%% \lastpageref{pagesLTS.alph}(\lastpageref{pagesLTS.alph.local}) + %
%% \lastpageref{pagesLTS.Alph}(\lastpageref{pagesLTS.Alph.local}) = %
-%% \lastpageref{LastPages} pages.|\\
-%% to get\\
+%% \lastpageref{LastPages} pages.|\par
+%% to get\par
%% 'Page d (57; local: 4) of ii(2) + XX(20) + *(1) + 30(30) + e(5) + C(3) = 61 pages.'.
-\@ifpackageloaded{pagesLTS}{%
- \def\pagesLTS@doubleload{p@gesLTSlo@ded}
- \ifx\pagesLTS@loaded\pagesLTS@doubleload%
- \PackageError{pageslts}{Requested pagesLTS instead of pageslts}{%
- You have requested package `pagesLTS'. This package is now named `pageslts'.\MessageBreak%
- Requesting `pagesLTS' as well as `pageslts' leads to loading the same package\MessageBreak%
- twice (and results in errors). Loading of `pageslts' will therefore be\MessageBreak%
- abandoned now. To fix this problem, please look in the \jobname.log file for\MessageBreak%
- LaTeX Warning: You have requested package `pagesLTS',\MessageBreak%
- \space \space \space \space \space \space \space \space \space \space \space \space \space%
- \space \space but the package provides `pageslts'.\MessageBreak%
- and change the package call in the calling style/document.\MessageBreak%
- If a style file made the mistake, please inform its maintainer and/or the\MessageBreak%
- maintainer of the pageslts package about it (after making sure you have\MessageBreak%
- the recent version of that style file).\MessageBreak%
- Thank you and sorry for the inconvenience!\MessageBreak%
- }
- \endinput
- \fi
- }{% \relax
- }
+\DeclareKeys[pagesLTS]
+ {alphMult .store = \pagesLTS@alphMult ,
+ alphMult .usage = preamble ,
+ AlphMulti .store = \pagesLTS@AlphMulti ,
+ AlphMulti .usage = preamble ,
+ pagecontinue .if = pagesLTS@pagecontinue ,
+ pagecontinue .usage = load ,
+ romanMult .if = pagesLTS@romanMult ,
+ romanMult .usage = load ,
+ RomanMulti .if = pagesLTS@RomanMulti ,
+ RomanMulti .usage = load ,
+ fnsymbolmult .if = pagesLTS@fnsymbolmult ,
+ fnsymbolmult .usage = load
+ }
-\gdef\pagesLTS@loaded{p@gesLTSlo@ded}
+\SetKeys[pagesLTS]{alphMult=ab,AlphMulti=AB,pagecontinue=true,romanMult=true,RomanMulti=true,fnsymbolmult=true}
-\RequirePackage{ltxcmds}[2011/11/09]% v1.22
-\RequirePackage{atveryend}[2011/06/30]% v1.8
-\AtBeginDocument{%
- %% https://tex.stackexchange.com/a/45654/6865
- %% and https://tex.stackexchange.com/q/261445/6865
- \def\pagesLTS@etb{etoolbox.sty}%
- \let\pagesLTS@ave\@empty%
- \@for\@pageslts@currname:=\@filelist\do{%
- \ifx\@pageslts@currname\pagesLTS@etb\relax%
- \def\pagesLTS@ave{atveryend.sty}%
- \fi%
- \ifx\@pageslts@currname\pagesLTS@ave%
- \@ifpackagelater{atveryend}{2015/08/01}{%\relax
- \PackageInfo{pageslts}{etoolbox package loaded before atveryend package\MessageBreak%
- With atveryend version 1.8 of 2011/06/30 this caused a problem,\MessageBreak%
- which is probably solved in the new version used here.\MessageBreak%
- To play it safe, you could load the atveryend package\MessageBreak%
- before the etoolbox package.\MessageBreak%
- }%
- }{% else
- \PackageError{pageslts}{etoolbox package loaded before atveryend package}{%
- You can use both packages, but when etoolbox is loaded before atveryend,\MessageBreak%
- atveryend no longer detects \string\enddocument\space\MessageBreak%
- and hook "AtVeryVeryEnd" is not executed.\MessageBreak%
- Just load the atveryend package before the etoolbox package!\MessageBreak%
- }%
- }%
- \fi%
+\DeclareUnknownKeyHandler[pagesLTS]{%
+ \PackageError{pageslts}{Unknown option "\CurrentOption"}{%
+ LaTeX has been asked to set an option called\MessageBreak%
+ '#1' \if\relax\detokenize{#2}\relax\else with value '#2'\fi\MessageBreak%
+ but the package "pageslts" has not created an option with this name.\MessageBreak%
+ Try typing <return> to proceed.\MessageBreak%
+ If that doesn't work, type X <return> to quit.%
}%
}
-\RequirePackage{everyshi}[2001/05/15]% v3.00
-\RequirePackage{letltxmacro}[2010/09/02]% v1.4
-\RequirePackage{kvoptions}[2011/06/30]% v3.11
-\RequirePackage{undolabl}[2015/03/29]% v1.0l
-\RequirePackage{rerunfilecheck}[2011/04/15]% v1.7
-%% pageslts package uses Prelim@EveryShipout code from the
-%% prelim2e package [2009/05/29 v1.3] by Martin Schr\"{o}der, thanks!
-
-%% pageslts may work with earlier versions of LaTeX2e and those packages,
-%% but this was not tested. Please consider updating your LaTeX
-%% and packages to the most recent version (if they are not already
-%% the most recent version).
-%% The recent version of the endfloat package is v2.5d as of 2011/12/25.
-%% The pageslts package is not fully compatible with version 2.0
-%% (and earlier) of the endfloat package, because those versions
-%% redefined the \enddocument command.
+\ProcessKeyOptions[pagesLTS]
-\SetupKeyvalOptions{family = pagesLTS,prefix = pagesLTS@}
-\DeclareBoolOption[true]{pagecontinue}% \pagesLTS@pagecontinue
-\DeclareStringOption[ab]{alphMult}
-\DeclareStringOption[AB]{AlphMulti}
-\DeclareBoolOption[true]{romanMult}
-\DeclareBoolOption[true]{RomanMulti}
-\DeclareBoolOption[true]{fnsymbolmult}
+\@ifl@t@r\fmtversion{2024-11-01}{}{\PackageError{pageslts}{%
+ LaTeX format 2024-11-01 or newer needed}{%
+ Needed LaTeX format version: 2024-11-01 or newer.\MessageBreak%
+ Found\space\space LaTeX format version: \fmtversion.\MessageBreak%
+ Please update your TeX distribution!\MessageBreak%
+ Loading of pageslts package is aborted.}
+ \expandafter\endinput}
-\ProcessKeyvalOptions*
+\RequirePackage{undolabl}[2024-12-05]
+\IfPackageLoadedTF{undolabl}{\IfPackageAtLeastF{undolabl}{2024-12-05}{%
+ \PackageError{pageslts}{undolabl package version too old}{%
+ Required version: 2024-12-05 v1.0n or newer,\MessageBreak%
+ found version:\space\space\space\space\csname ver@undolabl.sty\endcsname.%
+}}}{\PackageError{pageslts}{undolabl package not loaded}{%
+ The undolabl package is required by pageslts but was not loaded.}%
+ }
\def\pagesLTS@zero{0}
\def\pagesLTS@one{1}
\def\pagesLTS@two{2}
\def\pagesLTS@three{3}
+\def\pagesLTS@ab{ab}
+\def\pagesLTS@bb{bb}
+\def\pagesLTS@ABi{AB}
+\def\pagesLTS@BBi{BB}
-\ifpagesLTS@pagecontinue%
- \PackageInfo{pageslts}{Option pagecontinue enabled\MessageBreak%
- (maybe by default):\MessageBreak%
+\ifpagesLTS@pagecontinue
+ \PackageNoteNoLine{pageslts}{Option pagecontinue enabled (maybe by default):\MessageBreak%
The pageslts package will continue the page numbering,\MessageBreak%
when the same page numbering scheme is used twice.\MessageBreak%
If you do not want this, call pageslts with option\MessageBreak%
- pagecontinue=false (or use \string\setcounter{page}=1).\MessageBreak%
- }
+ pagecontinue=false (or use \string\setcounter{page}=1)}
\else
- \PackageWarningNoLine{pageslts}{Option pagecontinue is false:\MessageBreak%
+ \PackageNoteNoLine{pageslts}{Option pagecontinue is false:\MessageBreak%
The pageslts package was used, but the option\MessageBreak%
pagecontinue was set to false.\MessageBreak%
If you want the page numbers to be continued,\MessageBreak%
when the same page numbering scheme is used twice,\MessageBreak%
please call pageslts with option pagecontinue=true,\MessageBreak%
otherwise the page number is reset to one each time\MessageBreak%
- the page numbering scheme is changed.\MessageBreak%
- For details please see the documentation%
- }
+ the page numbering scheme is changed}
\fi
-\def\pagesLTS@ab{ab}
-\def\pagesLTS@bb{bb}
-\def\pagesLTS@ABi{AB}
-\def\pagesLTS@BBi{BB}
-
\ifx\pagesLTS@alphMult\pagesLTS@ab%
\else
\ifx\pagesLTS@alphMult\pagesLTS@bb%
\else
\ifx\pagesLTS@alphMult\pagesLTS@zero%
- \PackageWarningNoLine{pageslts}{%
+ \PackageNoteNoLine{pageslts}{%
Option alphMult=0 found:\MessageBreak%
The pageslts package was used, but the option\MessageBreak%
alphMult was set to 0 (zero).\MessageBreak%
@@ -209,18 +166,14 @@
For automatic continuation, please use the\MessageBreak%
alphalph package and call pageslts\MessageBreak%
with option alphMult=ab (for aa, ab, ac, ad,...) or\MessageBreak%
- with option alphMult=bb (for aa, bb, cc, dd,...).\MessageBreak%
- For details please see the documentation!%
- }
+ with option alphMult=bb (for aa, bb, cc, dd,...)}
\else
\PackageError{pageslts}{Unknown option value}{%
The pageslts package was used with option\MessageBreak%
- alphMult= \pagesLTS@alphMult . Only values\MessageBreak%
- ab, bb, and 0 (zero) are valid.\MessageBreak%
- The default ab is set.\MessageBreak%
- For details please see the documentation!%
- }
- \setkeys{pagesLTS}{alphMult=ab}
+ alphMult=\meaning\pagesLTS@alphMult .\MessageBreak%
+ Only values 'ab', 'bb', and '0' (zero) are valid.\MessageBreak%
+ Now the default 'ab' is being set.}
+ \SetKeys[pagesLTS]{alphMult=ab}
\fi
\fi
\fi
@@ -230,7 +183,7 @@
\ifx\pagesLTS@AlphMulti\pagesLTS@BBi%
\else
\ifx\pagesLTS@AlphMulti\pagesLTS@zero%
- \PackageWarningNoLine{pageslts}{%
+ \PackageNoteNoLine{pageslts}{%
Option AlphMulti=0 found:\MessageBreak%
The pageslts package was used, but the option\MessageBreak%
AlphMulti was set to 0 (zero).\MessageBreak%
@@ -239,89 +192,67 @@
For automatic continuation, please use the\MessageBreak%
alphalph package and call pageslts\MessageBreak%
with option AlphMulti=AB (for AA, AB, AC, AD,...) or\MessageBreak%
- with option AlphMulti=BB (for AA, BB, CC, DD,...).\MessageBreak%
- For details please see the documentation!%
- }
+ with option AlphMulti=BB (for AA, BB, CC, DD,...)}
\else
\PackageError{pageslts}{Unknown option value}{%
The pageslts package was used with option\MessageBreak%
- AlphMulti= \pagesLTS@AlphMulti . Only values\MessageBreak%
- AB, BB, and 0 (zero) are valid.\MessageBreak%
- The default AB is set.\MessageBreak%
- For details please see the documentation!%
- }
- \setkeys{pagesLTS}{AlphMulti=AB}
+ AlphMulti=\meaning\pagesLTS@AlphMulti .\MessageBreak%
+ Only values 'AB', 'BB', and '0' (zero) are valid.\MessageBreak%
+ The default 'AB' is set.}
+ \SetKeys[pagesLTS]{AlphMulti=AB}
\fi
\fi
\fi
-\ifx\pagesLTS@alphMult\pagesLTS@zero% \relax
-\else \RequirePackage{alphalph}[2011/05/13]% v2.4
-\fi
+\ifx\pagesLTS@alphMult\pagesLTS@zero\else\RequirePackage{alphalph}[2019/12/09]\fi
+\ifx\pagesLTS@AlphMulti\pagesLTS@zero\else\RequirePackage{alphalph}[2019/12/09]\fi
+\ifpagesLTS@fnsymbolmult\RequirePackage{alphalph}[2019/12/09]\fi
-\ifx\pagesLTS@AlphMulti\pagesLTS@zero% \relax
-\else \RequirePackage{alphalph}[2011/05/13]% v2.4
-\fi
-
-\ifpagesLTS@fnsymbolmult%
- \RequirePackage{alphalph}[2011/05/13]% v2.4
-\fi
-
-\ifpagesLTS@romanMult%
- \PackageInfo{pageslts}{Option romanMult enabled\MessageBreak%
- (maybe by default):\MessageBreak%
+\ifpagesLTS@romanMult
+ \PackageNoteNoLine{pageslts}{Option romanMult enabled (maybe by default):\MessageBreak%
The pageslts package will extend the page numbering\MessageBreak%
of the roman scheme below i with\MessageBreak%
0, -i, -ii, -iii, -iv,...\MessageBreak%
If you do not want this, call pageslts with option\MessageBreak%
- romanMult=false.\MessageBreak%
- }
+ romanMult=false}
\else
- \PackageWarningNoLine{pageslts}{Option romanMult is set to false:\MessageBreak%
- The pageslts package was used, but the option\MessageBreak%
- romanMult was set to false.\MessageBreak%
- If you want the page numbering of the roman scheme\MessageBreak%
- to be extended below i,\MessageBreak%
- please call pageslts with option romanMult=true,\MessageBreak%
- otherwise zero and negative page numbers of the\MessageBreak%
- roman scheme will need to be defined otherwise.\MessageBreak%
- For details please see the documentation!\MessageBreak%
- }
+ \PackageNoteNoLine{pageslts}{Option romanMult is set to false:\MessageBreak%
+ The pageslts package was used, but the option\MessageBreak%
+ romanMult was set to false.\MessageBreak%
+ If you want the page numbering of the roman scheme\MessageBreak%
+ to be extended below i,\MessageBreak%
+ please call pageslts with option romanMult=true,\MessageBreak%
+ otherwise zero and negative page numbers of the\MessageBreak%
+ roman scheme will need to be defined otherwise}
\fi
-\ifpagesLTS@RomanMulti%
- \PackageInfo{pageslts}{Option RomanMulti enabled\MessageBreak%
- (maybe by default):\MessageBreak%
+\ifpagesLTS@RomanMulti
+ \PackageNoteNoLine{pageslts}{Option RomanMulti enabled (maybe by default):\MessageBreak%
The pageslts package will extend the page numbering\MessageBreak%
of the Roman scheme below I with\MessageBreak%
0, -I, -II, -III, -IV,...\MessageBreak%
If you do not want this, call pageslts with option\MessageBreak%
- RomanMulti=false.\MessageBreak%
- }
+ RomanMulti=false}
\else
- \PackageWarningNoLine{pageslts}{Option RomanMulti is set to false:\MessageBreak%
+ \PackageNoteNoLine{pageslts}{Option RomanMulti is set to false:\MessageBreak%
The pageslts package was used, but the option\MessageBreak%
RomanMulti was set to false.\MessageBreak%
If you want the page numbering of the Roman scheme\MessageBreak%
to be extended below i,\MessageBreak%
please call pageslts with option RomanMulti=true,\MessageBreak%
otherwise zero and negative page numbers of the\MessageBreak%
- Roman scheme will need to be defined otherwise.\MessageBreak%
- For details please see the documentation!\MessageBreak%
- }
+ Roman scheme will need to be defined otherwise}
\fi
-\ifpagesLTS@fnsymbolmult%
- \PackageInfo{pageslts}{Option fnsymbolmult enabled\MessageBreak%
- (maybe by default):\MessageBreak%
+\ifpagesLTS@fnsymbolmult
+ \PackageNoteNoLine{pageslts}{Option fnsymbolmult enabled (maybe by default):\MessageBreak%
The pageslts package will extend the page numbering\MessageBreak%
of the footnotesymbol scheme using the alphalph\MessageBreak%
package.\MessageBreak%
If you do not want this, call pageslts with option\MessageBreak%
- fnsymbolmult=false.\MessageBreak%
- }
+ fnsymbolmult=false}
\else
- \PackageWarningNoLine{pageslts}{%
+ \PackageNoteNoLine{pageslts}{%
Option fnsymbolmult is set to false:\MessageBreak%
The pageslts package was used, but the option\MessageBreak%
fnsymbolmult was set to false.\MessageBreak%
@@ -329,9 +260,7 @@
scheme to be extended using the alphalph package,\MessageBreak%
please call pageslts with option fnsymbolmult=true,\MessageBreak%
otherwise page numbers of the footnotesymbol scheme\MessageBreak%
- greater than nine will need to be defined otherwise.\MessageBreak%
- For details please see the documentation!\MessageBreak%
- }
+ greater than nine will need to be defined otherwise}
\fi
\def\pagesLTS@pnc{0}
@@ -339,13 +268,18 @@
\def\pagesLTS@fns{fnsymbol}
\def\pagesLTS@alph{alph}
\def\pagesLTS@Alph{Alph}
+\def\pagesLTS@gobble{gobble}
+\def\pagesLTS@silly{silly}
\def\pagesLTS@rerun{0}
-\def\pagesLTS@eso{0}
-\def\pagesLTS@esov{0}
+\def\pagesLTS@esoFs{0}
+\def\pagesLTS@esovFs{0}
+\def\pagesLTS@esoSy{0}
+\def\pagesLTS@esovSy{0}
+\def\pagesLTS@esoGbl{0}
+\def\pagesLTS@esovGbl{0}
\def\lastpageref{\lastpagereftxt}
\def\pagesLTS@undolable{none}
\def\pncmissing{0}
-\def\pagesLTS@SK{0}
\def\pagesLTS@messageNPN{%
The pageslts package was used, but\MessageBreak%
\string\pagenumbering \MessageBreak%
@@ -353,49 +287,27 @@
(maybe earlier or later).\MessageBreak%
Please use \string\pagenumbering \MessageBreak%
(with an argument like arabic, roman, Roman,\MessageBreak%
- fnsymbol, alph, or Alph) at the beginning\MessageBreak%
- of your document! Otherwise your document\MessageBreak%
- will probably compile, but the pageslts\MessageBreak%
- package might not be able to get all labels\MessageBreak%
- for the references to the respective pages\MessageBreak%
- right.\MessageBreak%
+ fnsymbol, alph, Alph, gobble,\MessageBreak%
+ or silly (requiring sillypage package))\MessageBreak%
+ at the beginning of your document!\MessageBreak%
+ Otherwise your document will probably compile,\MessageBreak%
+ but the pageslts package might not be able\MessageBreak%
+ to get all labels for the references\MessageBreak%
+ to the respective pages right.\MessageBreak%
}
-\AtBeginDocument{%
- \if@filesw%
- \else%
- \@ifpackageloaded{tikz}{%
- \PackageWarning{pageslts}%
- {It 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%
- }%
- }{\PackageError{pageslts}{No writing to auxiliary file allowed}%
- {It 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 previouse compiler runs\MessageBreak%
- and would not have changed anyway.\MessageBreak%
- (In that case just press Enter or Return\MessageBreak%
- to continue the compilation.)\MessageBreak%
- }%
- }%
- \fi%
- }
-
-\LetLtxMacro{\OrigPagenumbering}{\pagenumbering}
-
\newcounter{CurrentPage}
\setcounter{CurrentPage}{1}
\def\theCurrentPageLocal{\arabic{pagesLTS.current.local.\pagesLTS@pnc}}
\newcounter{pagesLTS.pagenr}
+\setcounter{pagesLTS.pagenr}{1}
\newcounter{pagesLTS.current.local.0}
\setcounter{pagesLTS.current.local.0}{1}
\newcounter{pagesLTS.pnc.0}
+\newcounter{pagesLTS.tmpcounter}
+\def\pagesLTSlastpage{1}
+\def\pagesLTSlastpageHy{1}
+\def\pagesLTS.lastpage{\pagesLTSlastpage}
\newcommand{\xroman}[1]{%
\ifnum\value{#1}>0%
@@ -421,34 +333,33 @@
\fi%
}
-\newcommand{\XXRoman}[1]{\XRoman{#1}%
- \PackageError{pageslts}{Old command \string\XXRoman\space found}{Replaced by \string\XRoman.}%
- }
-
-\newcommand{\pagesLTS@ifcounter}[1]{%
- \@ifundefined{c@#1}{\newcounter{#1}}{\relax}%
+\newcommand{\pagesLTS@providecounter}[1]{\@ifundefined{c@#1}{\newcounter{#1}}{}}
+\NewCommandCopy{\pagesLTS@ifcounter}{\pagesLTS@providecounter}
+\AddToHook{begindocument}{%
+ \AddToHookWithArguments{cmd/pagesLTS@ifcounter/before}{%
+ \PackageError{pageslts}{Old command \string\pagesLTS@ifcounter\space used}{%
+ Replace by \string\pagesLTS@providecounter.}%
+ }%
}
\newcommand{\lastpages}[2]{%
- \pagesLTS@ifcounter{pagesLTS.#1.#2.local.cnt}%
+ \pagesLTS@providecounter{pagesLTS.#1.#2.local.cnt}%
\arabic{pagesLTS.#1.#2.local.cnt}%
}
\newcommand{\pagesLTS@writelabel}[1]{%
\addtocounter{page}{+1}%
- \pagesLTS@putlabel{pagesLTS.#1}{\thepage}{1}
- \addtocounter{page}{-1}%
- \ifx\pagesLTS@pnc\pagesLTS@zero% \relax
+ \pagesLTS@putlabel{pagesLTS.#1}{\thepage}{1}%
+ \ifx\pagesLTS@pnc\pagesLTS@zero%
\else%
- \addtocounter{page}{+1}%
- \pagesLTS@putlabel{pagesLTS.#1.local}{\theCurrentPageLocal}{1}
- \addtocounter{page}{-1}%
+ \pagesLTS@putlabel{pagesLTS.#1.local}{\theCurrentPageLocal}{1}%
\fi%
+ \addtocounter{page}{-1}%
}
-%% The following code is from Heiko Oberdiek [2010/04/18], %%
-%% expanding his alphalph package as of 2010/04/18, v2.3. (Thanks!) %%
+%% The following code is from Heiko Oberdiek [2010/04/18], %%
+%% expanding his alphalph package as of 2010/04/18, v2.3. (Thanks!) %%
\newcommand*{\erroralphalph}[2]{%
\ifnum\value{#2}>0%
#1{\value{#2}}%
@@ -460,15 +371,15 @@
\fi%
\fi%
}
-%% End of code from Heiko Oberdiek %%
-%% Check and Error/Warning messages have been moved to \EveryShipout, %%
-%% because messages inside e.g. the \pageref command can cause trouble. %%
+%% End of code from Heiko Oberdiek %%
+%% Check and Error/Warning messages have been moved to hook "shipout/foreground" %%
+%% because messages inside e.g. the \pageref command can cause trouble. %%
\newcommand{\expandPagenumbering}[1]{%
\let\Origthepage\thepage%
\def\pagesLTS@tmpC{arabic}%
- \ifx\pagesLTS@pnc\pagesLTS@tmpC% \relax
+ \ifx\pagesLTS@pnc\pagesLTS@tmpC%
\else%
\def\pagesLTS@tmpC{roman}%
\ifx\pagesLTS@pnc\pagesLTS@tmpC%
@@ -478,24 +389,33 @@
\else%
\def\pagesLTS@tmpC{Roman}%
\ifx\pagesLTS@pnc\pagesLTS@tmpC%
- \ifpagesLTS@RomanMulti%
- \renewcommand*{\thepage}{\XRoman{page}}%
- \fi%
+ \IfPackageLoadedTF{romanbarpagenumber}{%
+ \ifpagesLTS@RomanMulti%
+ \renewcommand*{\thepage}{\Roman@bar{\XRoman{page}}}%
+ \else%
+ \renewcommand*{\thepage}{\Roman@bar{\Roman{page}}}%
+ \fi%
+ }{\ifpagesLTS@RomanMulti%
+ \renewcommand*{\thepage}{\XRoman{page}}%
+ \fi%
+ }%
\else%
\ifx\pagesLTS@pnc\pagesLTS@alph%
\ifx\pagesLTS@alphMult\pagesLTS@ab%
\renewcommand*{\thepage}{\erroralphalph{\alphalph}{page}}%
- \else \ifx\pagesLTS@alphMult\pagesLTS@bb%
- \renewcommand*{\thepage}{\erroralphalph{\alphMult}{page}}%
- \fi%
+ \else%
+ \ifx\pagesLTS@alphMult\pagesLTS@bb%
+ \renewcommand*{\thepage}{\erroralphalph{\alphMult}{page}}%
+ \fi%
\fi%
\else%
\ifx\pagesLTS@pnc\pagesLTS@Alph%
\ifx\pagesLTS@AlphMulti\pagesLTS@ABi%
\renewcommand*{\thepage}{\erroralphalph{\AlphAlph}{page}}%
- \else \ifx\pagesLTS@AlphMulti\pagesLTS@BBi%
- \renewcommand*{\thepage}{\erroralphalph{\AlphMult}{page}}%
- \fi%
+ \else%
+ \ifx\pagesLTS@AlphMulti\pagesLTS@BBi%
+ \renewcommand*{\thepage}{\erroralphalph{\AlphMult}{page}}%
+ \fi%
\fi%
\else%
\ifx\pagesLTS@pnc\pagesLTS@fns%
@@ -503,104 +423,138 @@
\renewcommand*{\thepage}{\erroralphalph{\fnsymbolmult}{page}}%
\fi%
\else%
- \PackageError{pageslts}{unknown page numbering scheme}{%
- The pageslts package encountered the unknown\MessageBreak%
- page numbering scheme\MessageBreak%
- `#1'. \MessageBreak%
- If this is no typing mistake, it might work\MessageBreak%
- - or it might not work.\MessageBreak%
- \@ehc%
- }
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
+ \ifx\pagesLTS@pnc\pagesLTS@silly%
+ \else%
+ \ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \IfPackageLoadedT{hyperref}{%
+ \renewcommand*{\thepage}{\texorpdfstring{\null}{{}}%
+ \csname @gobble\endcsname \c@page}}%
+ \else%
+ \PackageError{pageslts}{unknown page numbering scheme}{%
+ The pageslts package encountered the unknown\MessageBreak%
+ page numbering scheme\MessageBreak%
+ \meaning#1. \MessageBreak%
+ If this is no typing mistake, it might work\MessageBreak%
+ - or it might not work.\MessageBreak%
+ \@ehc}%
+ \fi\fi\fi\fi\fi\fi\fi\fi%
\let\pagesLTS@tmpC\undefined%
}
+\NewCommandCopy{\OrigPagenumbering}{\pagenumbering}
+
\renewcommand{\pagenumbering}[1]{%
\edef\pagesLTS@tmpA{#1}%
- \ifx\pagesLTS@pnc\pagesLTS@fns%
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}%
- \fi%
- \ifx\pagesLTS@tmpA\pagesLTS@fns%
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}%
- \fi%
- \ifx\pagesLTS@pnc\pagesLTS@tmpA% \relax
+ \ifx\pagesLTS@pnc\pagesLTS@tmpA%
\else%
- \ifnum \value{CurrentPage}>1%
+ \ifx\pagesLTS@tmpA\pagesLTS@fns%
+ \pagesLTS@providecounter{pagesLTS.fnsymbol.local}%
+ \fi%
+ \ifx\pagesLTS@tmpA\pagesLTS@silly%
+ \IfPackageLoadedF{sillypage}{\PackageError{pageslts}{%
+ silly pagenumbering requested, sillypage package not loaded}{%
+ When using \string\pagenumbering{silly},\MessageBreak%
+ load the sillypage package.}}%
+ \pagesLTS@providecounter{pagesLTS.silly.local}%
+ \fi%
+ \ifx\pagesLTS@tmpA\pagesLTS@gobble%
+ \pagesLTS@providecounter{pagesLTS.gobble.local}%
+ \fi%
+ \ifnum\value{CurrentPage}>1%
\addtocounter{page}{-1}%
\addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{-1}%
\newcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}%
\setcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
\value{pagesLTS.current.local.\pagesLTS@pnc}}%
\ifx\pagesLTS@pnc\pagesLTS@fns%
- \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}>1%
- \mathchardef\pagesLTS@tmpa=\arabic{pagesLTS.pnc.0}%
- \setcounter{pagesLTS.pnc.0}{\value{pagesLTS.pnc.\pagesLTS@pnc}}%
- \addtocounter{pagesLTS.pnc.0}{-1}%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}>1%
+ \setcounter{pagesLTS.tmpcounter}{\numexpr\value{pagesLTS.pnc.\pagesLTS@pnc}-1\relax}%
\addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
- -\value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.0}.local.count}}%
- \setcounter{pagesLTS.pnc.0}{\pagesLTS@tmpa}%
+ -\value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.tmpcounter}.local.count}}%
\fi%
\else%
- \pagesLTS@writelabel{\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}}%
- \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}<2%
- \pagesLTS@writelabel{\pagesLTS@pnc}%
+ \ifx\pagesLTS@pnc\pagesLTS@silly%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}>1%
+ \setcounter{pagesLTS.tmpcounter}{\numexpr\value{pagesLTS.pnc.\pagesLTS@pnc}-1\relax}%
+ \addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
+ -\value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.tmpcounter}.local.count}}%
+ \fi%
\else%
- \mathchardef\pagesLTS@tmpa=\arabic{pagesLTS.pnc.0}%
- \setcounter{pagesLTS.pnc.0}{\value{pagesLTS.pnc.\pagesLTS@pnc}}%
- \addtocounter{pagesLTS.pnc.0}{-1}%
- \pagesLTS@ifcounter{pagesLTS.\pagesLTS@pnc.done}%
- \addtocounter{pagesLTS.\pagesLTS@pnc.done}{%
- \value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.0}.local.count}}%
- \addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
- -\value{pagesLTS.\pagesLTS@pnc.done}}%
- \setcounter{pagesLTS.pnc.0}{\pagesLTS@tmpa}%
+ \ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}>1%
+ \setcounter{pagesLTS.tmpcounter}{\numexpr\value{pagesLTS.pnc.\pagesLTS@pnc}-1\relax}%
+ \addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
+ -\value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.tmpcounter}.local.count}}%
+ \fi%
+ \else%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}<2%
+ \pagesLTS@writelabel{\pagesLTS@pnc}%
+ \fi%
+ \fi%
\fi%
- \if@filesw%
- \immediate\write\@auxout{\string
- \pagesLTS@ifcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.cnt}}%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}>1%
+ \ifpagesLTS@pagecontinue%
+ \setcounter{pagesLTS.tmpcounter}{\numexpr\value{pagesLTS.pnc.\pagesLTS@pnc}-1\relax}%
+ \pagesLTS@providecounter{pagesLTS.\pagesLTS@pnc.done}%
+ \addtocounter{pagesLTS.\pagesLTS@pnc.done}{%
+ \value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.tmpcounter}.local.count}}%
+ \addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
+ -\value{pagesLTS.\pagesLTS@pnc.done}}%
+ \fi%
\fi%
- \edef\pagesLTS@tmpB{\arabic{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}}%
+ \pagesLTS@writelabel{\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}}%
\if@filesw%
\immediate\write\@auxout{\string
+ \pagesLTS@providecounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.cnt}}%
+ \edef\pagesLTS@tmpB{\arabic{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}}%
+ \immediate\write\@auxout{\string
\setcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.cnt}{\pagesLTS@tmpB}}%
\fi%
\fi%
- \pagesLTS@ifcounter{pagesLTS.double.\pagesLTS@pnc}%
+ \pagesLTS@providecounter{pagesLTS.double.\pagesLTS@pnc}%
\setcounter{pagesLTS.double.\pagesLTS@pnc}{\value{page}}%
\addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{+1}%
\addtocounter{page}{+1}%
\xdef\pagesLTS@pnc{#1}%
+ \ifpagesLTS@pagecontinue%
+ \else%
+ \pagesLTS@providecounter{pagesLTS.current.local.\pagesLTS@pnc}%
+ \setcounter{pagesLTS.current.local.\pagesLTS@pnc}{1}%
+ \fi%
\OrigPagenumbering{#1}%
\expandPagenumbering{#1}%
- \pagesLTS@ifcounter{pagesLTS.pnc.\pagesLTS@pnc}%
+ \pagesLTS@providecounter{pagesLTS.pnc.\pagesLTS@pnc}%
\addtocounter{pagesLTS.pnc.\pagesLTS@pnc}{1}%
- \pagesLTS@ifcounter{pagesLTS.double.\pagesLTS@pnc}%
+ \pagesLTS@providecounter{pagesLTS.double.\pagesLTS@pnc}%
\addtocounter{pagesLTS.double.\pagesLTS@pnc}{1}%
\ifpagesLTS@pagecontinue%
\setcounter{page}{\value{pagesLTS.double.\pagesLTS@pnc}}%
\else%
\setcounter{page}{1}%
\fi%
- \pagesLTS@ifcounter{pagesLTS.current.local.\pagesLTS@pnc}%
- \ifnum \value{pagesLTS.double.\pagesLTS@pnc}=1%
+ \pagesLTS@providecounter{pagesLTS.current.local.\pagesLTS@pnc}%
+ \ifnum\value{pagesLTS.double.\pagesLTS@pnc}=1%
\setcounter{pagesLTS.current.local.\pagesLTS@pnc}{1}%
\fi%
\else%
- %% before the first page has shipped out
+ \ifx\pagesLTS@pnc\pagesLTS@zero\relax%
+ \else%
+ \PackageNoteNoLine{pageslts}{%
+ \string\pagenumbering\space used more than once before the end\MessageBreak%
+ of the first page, maybe in the preamble.\MessageBreak%
+ Resetting all unused page numbering schemes now}%
+ \setcounter{pagesLTS.pnc.\pagesLTS@pnc}{0}%
+ \setcounter{pagesLTS.double.\pagesLTS@pnc}{0}%
+ \setcounter{pagesLTS.current.local.\pagesLTS@pnc}{0}%
+ \fi%
\xdef\pagesLTS@pnc{#1}%
- \global\c@page \@ne\relax%
- \global\def\thepage{\csname \expandafter @\pagesLTS@pnc \endcsname \c@page}%
- \expandPagenumbering{#1}
- \pagesLTS@ifcounter{pagesLTS.pnc.\pagesLTS@pnc}%
+ \OrigPagenumbering{#1}%
+ \expandPagenumbering{#1}%
+ \pagesLTS@providecounter{pagesLTS.pnc.\pagesLTS@pnc}%
\setcounter{pagesLTS.pnc.\pagesLTS@pnc}{1}%
- \pagesLTS@ifcounter{pagesLTS.double.\pagesLTS@pnc}%
+ \pagesLTS@providecounter{pagesLTS.double.\pagesLTS@pnc}%
\setcounter{pagesLTS.double.\pagesLTS@pnc}{1}%
- \pagesLTS@ifcounter{pagesLTS.current.local.\pagesLTS@pnc}%
+ \pagesLTS@providecounter{pagesLTS.current.local.\pagesLTS@pnc}%
\setcounter{pagesLTS.current.local.\pagesLTS@pnc}{1}%
\fi%
\gdef\pagesLTS@called{1}%
@@ -609,7 +563,7 @@
\let\pagesLTS@tmpB\undefined%
}
-%% analogous to \HyPsd@pageref from the hyperref package by Heiko Oberdiek:
+%% analogous to \HyPsd@pageref from the hyperref package:
\def\lastpagereftxt#1{\pagesLTS@@pageref#1*\END}
\def\pagesLTS@@pageref#1*#2\END{%
@@ -627,85 +581,29 @@
\def\pagesLTS@tmpA{#1}%
\def\pagesLTS@tmpB{pagesLTS.fnsymbol.local}%
\ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}%
- \ltx@ifpackageloaded{hyperref}{%
- \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}%
- {\arabic{pagesLTS.fnsymbol.local}}%
- }{\arabic{pagesLTS.fnsymbol.local}}%
- \else%
- \pageref{#1}%
- \fi%
- \let\pagesLTS@tmpA\undefined%
- \let\pagesLTS@tmpB\undefined%
- }
-
-\newcommand{\lastpagereftextstar}[1]{%
- \def\pagesLTS@tmpA{#1}%
- \def\pagesLTS@tmpB{pagesLTS.fnsymbol.local}%
- \ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}%
- \arabic{pagesLTS.fnsymbol.local}%
- \else%
- \ltx@ifpackageloaded{hyperref}{\pageref*{#1}}{\pageref{#1}}%
- \fi%
- \let\pagesLTS@tmpA\undefined%
- \let\pagesLTS@tmpB\undefined%
- }
-
-\def\lastpagerefend#1{\pagesLTS@@pagerefend#1*\END}
-
-\def\pagesLTS@@pagerefend#1*#2\END{%
- \ifx\\#2\\% no star
- \pagesLTS@@@pagerefend{#1}%
- \else% star
- \expandafter\pagesLTS@@@pagerefendstar%
- \fi%
-}
-
-\def\pagesLTS@@@pagerefend#1{\l@stpagerefend{#1}}
-\def\pagesLTS@@@pagerefendstar#1{\l@stpagerefendstar{#1}}
-
-\newcommand{\l@stpagerefend}[1]{%
- \def\pagesLTS@tmpA{#1}%
- \def\pagesLTS@tmpB{pagesLTS.fnsymbol.local}%
- \ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}%
- \ltx@ifpackageloaded{hyperref}{%
+ \pagesLTS@providecounter{pagesLTS.fnsymbol.local}%
+ \IfPackageLoadedTF{hyperref}{%
\href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}%
{\arabic{pagesLTS.fnsymbol.local}}%
}{\arabic{pagesLTS.fnsymbol.local}}%
\else%
- \def\pagesLTS@tmpB{pagesLTS.fnsymbol}%
+ \def\pagesLTS@tmpB{pagesLTS.silly.local}%
\ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{%
- \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}%
- {\pagesLTS.lastpage}%
- }{\pageref{pagesLTS.fnsymbol}}%
+ \pagesLTS@providecounter{pagesLTS.silly.local}%
+ \IfPackageLoadedTF{hyperref}{%
+ \href{\#pagesLTS.silly.local.\arabic{pagesLTS.silly.local}}%
+ {\arabic{pagesLTS.silly.local}}%
+ }{\arabic{pagesLTS.silly.local}}%
\else%
- \def\pagesLTS@tmpB{LastPage}%
+ \def\pagesLTS@tmpB{pagesLTS.gobble.local}%
\ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{%
- \href{\#pagesLTS.fnsymbol.local.\pagesLTS@eso}%
- {\pagesLTS.lastpage}%
- }{\pageref{LastPage}}%
+ \pagesLTS@providecounter{pagesLTS.gobble.local}%
+ \IfPackageLoadedTF{hyperref}{%
+ \href{\#pagesLTS.gobble.local.\arabic{pagesLTS.gobble.local}}%
+ {\arabic{pagesLTS.gobble.local}}%
+ }{\arabic{pagesLTS.gobble.local}}%
\else%
- \def\pagesLTS@tmpB{VeryLastPage}%
- \ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{%
- \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}%
- {\pagesLTS.lastpage}%
- }{\pageref{VeryLastPage}}%
- \else%
- \def\pagesLTS@tmpB{LastPages}%
- \ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{%
- \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}%
- {\arabic{pagesLTS.pagenr}}%
- }{\pageref{LastPages}}%
- \else%
- \pageref{#1}%
- \fi%
- \fi%
+ \pageref{#1}%
\fi%
\fi%
\fi%
@@ -713,35 +611,24 @@
\let\pagesLTS@tmpB\undefined%
}
-\newcommand{\l@stpagerefendstar}[1]{%
+\newcommand{\lastpagereftextstar}[1]{%
\def\pagesLTS@tmpA{#1}%
\def\pagesLTS@tmpB{pagesLTS.fnsymbol.local}%
\ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}%
- \arabic{pagesLTS.fnsymbol.local}%
+ \pagesLTS@providecounter{pagesLTS.fnsymbol.local}%
+ \arabic{pagesLTS.fnsymbol.local}%
\else%
- \def\pagesLTS@tmpB{pagesLTS.fnsymbol}%
+ \def\pagesLTS@tmpB{pagesLTS.silly.local}%
\ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{\pageref*{pagesLTS.fnsymbol}}{%
- \pageref{pagesLTS.fnsymbol}}%
+ \pagesLTS@providecounter{pagesLTS.silly.local}%
+ \arabic{pagesLTS.silly.local}%
\else%
- \def\pagesLTS@tmpB{LastPage}%
+ \def\pagesLTS@tmpB{pagesLTS.gobble.local}%
\ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{\pageref*{LastPage}}{\pageref{LastPage}}%
+ \pagesLTS@providecounter{pagesLTS.gobble.local}%
+ \arabic{pagesLTS.gobble.local}%
\else%
- \def\pagesLTS@tmpB{VeryLastPage}%
- \ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{\pageref*{VeryLastPage}}{%
- \pageref{VeryLastPage}}%
- \else%
- \def\pagesLTS@tmpB{LastPages}%
- \ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{\pageref*{LastPages}}{\pageref{LastPages}}%
- \else%
- \ltx@ifpackageloaded{hyperref}{\pageref*{#1}}{\pageref{#1}}%
- \fi%
- \fi%
- \fi%
+ \IfPackageLoadedTF{hyperref}{\pageref*{#1}}{\pageref{#1}}%
\fi%
\fi%
\fi%
@@ -750,73 +637,87 @@
}
\newcommand\overrideLTSlabel[2]{%
- \@bsphack
- \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}>1%
- \edef\pagesLTStmpA{#1}%
- \edef\pagesLTStmpB{pagesLTS.\pagesLTS@pnc.local}%
- \ifx\pagesLTStmpA\pagesLTStmpB%
- \immediate\write\@auxout{\string\undonewlabel{#1}}%
- \@overriddenmessage s{#1}%
+ \@bsphack%
+ \if@filesw%
+ \edef\pagesLTS@tmpC{#1}%
+ \edef\pagesLTS@tmpD{pagesLTS.\pagesLTS@pnc.local}%
+ \ifx\pagesLTS@tmpC\pagesLTS@tmpD%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}>1%
+ \immediate\write\@auxout{\string\undonewlabel{#1}}\@overriddenmessage s{#1}%
+ \else%
+ \edef\pagesLTS@tmpD{fnsymbol}%
+ \ifx\pagesLTS@pnc\pagesLTS@tmpD%
+ \immediate\write\@auxout{\string\undonewlabel{#1}}\@overriddenmessage s{#1}%
+ \fi%
+ \edef\pagesLTS@tmpD{gobble}%
+ \ifx\pagesLTS@pnc\pagesLTS@tmpD%
+ \immediate\write\@auxout{\string\undonewlabel{#1}}\@overriddenmessage s{#1}%
+ \fi%
+ \edef\pagesLTS@tmpD{silly}%
+ \ifx\pagesLTS@pnc\pagesLTS@tmpD%
+ \immediate\write\@auxout{\string\undonewlabel{#1}}\@overriddenmessage s{#1}%
+ \fi%
\fi%
\fi%
\pagesLTS@putlabel{#1}{#2}{0}%
+ \fi%
\@esphack%
}
-\newcommand{\@pagesLTS@Prelim@EveryShipout}{%
-%% The following code is from the prelim2e package %%
-%% [2009/05/29 v1.3] by Martin Schr\"{o}der (Thanks!): %%
- \bgroup
- \dimen\z@=\wd\@cclv
- \dimen\@ne=\ht\@cclv
- \dimen\tw@=\dp\@cclv
- \dimen\thr@@=\dimen1
- \advance\dimen\thr@@ by \dimen\tw@
- \global\setbox\@cclv\vbox to \dimen\thr@@{%
- \hb@xt@\dimen\z@{%
- \box\@cclv%
- \hss%
+\newcommand{\pagesLTS@EveryShipout}{%
+ \begingroup%
+ \ifx\pagesLTS@pnc\pagesLTS@fns%
+ \pagesLTS@providecounter{pagesLTS.fnsymbol.cont}%
+ \addtocounter{pagesLTS.fnsymbol.cont}{1}%
+ \IfPackageLoadedT{hyperref}{\phantomsection%
+ \hypertarget{pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.cont}}{}%
}%
- \vbox to \z@{%
- \hb@xt@\dimen\z@{%
- \let\protect\relax
-%% Code not from prelim2e package: %%
- \ifx\pagesLTS@pnc\pagesLTS@fns%
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.cont}%
- \addtocounter{pagesLTS.fnsymbol.cont}{1}%
- \ltx@ifpackageloaded{hyperref}{%
- \phantomsection%
- \hypertarget{pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.cont}}{}%
- }{}%
- \ifnum \pagesLTS@esov=\pagesLTS@zero%
- \label{pagesLTS.fnsymbol}%
- \else%
- \overridelabel{pagesLTS.fnsymbol}%
- \fi%
+ \ifnum\pagesLTS@esovFs=\pagesLTS@zero%
+ \if@filesw\label{pagesLTS.fnsymbol}\fi%
+ \pagesLTS@putlabel{pagesLTS.fnsymbol.local}{\theCurrentPageLocal}{0}%
+ \else%
+ \overridelabel{pagesLTS.fnsymbol}%
+ \overrideLTSlabel{pagesLTS.fnsymbol.local}{\theCurrentPageLocal}%
+ \fi%
+ \else%
+ \ifx\pagesLTS@pnc\pagesLTS@silly%
+ \pagesLTS@providecounter{pagesLTS.silly.cont}%
+ \addtocounter{pagesLTS.silly.cont}{1}%
+ \IfPackageLoadedT{hyperref}{\phantomsection%
+ \hypertarget{pagesLTS.silly.local.\arabic{pagesLTS.silly.cont}}{}%
+ }%
+ \ifnum\pagesLTS@esovSy=\pagesLTS@zero%
+ \if@filesw\label{pagesLTS.silly}\fi%
+ \pagesLTS@putlabel{pagesLTS.silly.local}{\theCurrentPageLocal}{0}%
+ \else%
+ \overridelabel{pagesLTS.silly}%
+ \overrideLTSlabel{pagesLTS.silly.local}{\theCurrentPageLocal}%
+ \fi%
+ \else%
+ \ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \pagesLTS@providecounter{pagesLTS.gobble.cont}%
+ \addtocounter{pagesLTS.gobble.cont}{1}%
+ \IfPackageLoadedT{hyperref}{\phantomsection%
+ \hypertarget{pagesLTS.gobble.local.\arabic{pagesLTS.gobble.cont}}{}%
+ }%
+ \ifnum\pagesLTS@esovGbl=\pagesLTS@zero%
+ \if@filesw\label{pagesLTS.gobble}\fi%
+ \pagesLTS@putlabel{pagesLTS.gobble.local}{\theCurrentPageLocal}{0}%
\else%
- \ltx@ifpackageloaded{hyperref}{\phantomsection}{}%
- \if@filesw%
- \overridelabel{pagesLTS.\pagesLTS@pnc}%
- \addtocounter{page}{+1}%
- \overrideLTSlabel{pagesLTS.\pagesLTS@pnc.local}{\theCurrentPageLocal}%
- \addtocounter{page}{-1}%
- \fi%
+ \overridelabel{pagesLTS.gobble}%
+ \overrideLTSlabel{pagesLTS.gobble.local}{\theCurrentPageLocal}%
\fi%
-%% Code from prelim2e package again: %%
- }%
- \vss%
- }%
- \vss%
- }%
- \wd\@cclv=\dimen\z@
- \ht\@cclv=\dimen\@ne
- \dp\@cclv=\dimen\tw@
- \egroup
-%% End of code from the prelim2e package. %%
+ \else%
+ \IfPackageLoadedT{hyperref}{\phantomsection}%
+ \if@filesw%
+ \overridelabel{pagesLTS.\pagesLTS@pnc}%
+ \overrideLTSlabel{pagesLTS.\pagesLTS@pnc.local}{\theCurrentPageLocal}%
+ \fi\fi\fi\fi%
+ \endgroup%
}
-\EveryShipout{%
- \ifnum\value{page}>0% \relax
+\AddToHook{shipout/foreground}{%
+ \ifnum\value{page}>0%
\else%
\ifnum\value{page}=0%
\PackageWarning{pageslts}{%
@@ -838,125 +739,165 @@
this will lead to a counter overflow.\MessageBreak%
}%
\else%
- \PackageError{pageslts}{%
+ \PackageError{pageslts}{Counter page has no recognized value}{%
Counter `page' does not have a recognized value:\MessageBreak%
`\the\value{page}'\MessageBreak%
- \@ehd \MessageBreak%
+ \@ehd\MessageBreak%
}%
\fi%
\fi%
\fi%
- \ifnum \value{CurrentPage}=1% This is the first shipout!
+ \ifnum\value{CurrentPage}=1%
\ifx\pagesLTS@called\pagesLTS@zero%
- \global\def\pncmissing{1}%
- \mathchardef\pagesLTS@tmpD=\arabic{page}%
-%% Code from Andres L\"{o}h, Universiteit Utrecht (NL) %%
+ \gdef\pncmissing{1}%
+ \setcounter{pagesLTS.tmpcounter}{\value{page}}%
+%% Code from Andres L\"{o}h, Universiteit Utrecht (NL) %%
\def\extract#1{\expandafter\extract@ #1\END}%
\def\extract@#1\csname @#2\endcsname#3\END{#2}%
\edef\pagesLTS@tmpQ{\extract\thepage}%
-%% End of code from Andres L\"{o}h %%
- \let\pagesLTS@tmpP\pagesLTS@tmpQ%
+%% End of code from Andres L\"{o}h %%
\def\pagesLTS@pnc{0}%
- \pagenumbering{\pagesLTS@tmpP}%
- \setcounter{page}{\pagesLTS@tmpD}%
+ \expandafter\pagenumbering\expandafter{\pagesLTS@tmpQ}%
+ \setcounter{page}{\value{pagesLTS.tmpcounter}}%
\fi%
\pagesLTS@writelabel{0}%
\fi%
\ifx\pagesLTS@pnc\pagesLTS@fns%
- \@pagesLTS@Prelim@EveryShipout%
- \gdef\pagesLTS@esov{\arabic{pagesLTS.fnsymbol.cont}}%
+ \pagesLTS@EveryShipout%
+ \xdef\pagesLTS@esovFs{\arabic{pagesLTS.fnsymbol.cont}}%
\else%
- \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}>1%
- \@pagesLTS@Prelim@EveryShipout%
- \fi%
- \fi%
+ \ifx\pagesLTS@pnc\pagesLTS@silly%
+ \pagesLTS@EveryShipout%
+ \xdef\pagesLTS@esovSy{\arabic{pagesLTS.silly.cont}}%
+ \else%
+ \ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \pagesLTS@EveryShipout%
+ \xdef\pagesLTS@esovGbl{\arabic{pagesLTS.gobble.cont}}%
+ \else%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}>1%
+ \pagesLTS@EveryShipout%
+ \fi\fi\fi\fi%
\addtocounter{CurrentPage}{1}%
\addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{1}%
}
-\newcommand{\pagesLTS@putlabelhyper}[2]{%
- \ifHy@pageanchor \relax%
- \else%
- \PackageError{pagesLTS}{hyperref option pageanchor disabled}{%
- The \string\lastpageref{#1} link doesn't work\MessageBreak%
- using hyperref with disabled option `pageanchor'.\MessageBreak%
- }%
- \fi
-%% The following code is from the hyperref package %%
-%% [2010/04/17 v6.80x; newer versions are available] %%
-%% by Heiko Oberdiek (Big Thanks!). %%
- \if@filesw
- \begingroup
- \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 modified from the hyperref package. %%
-%% Without the modification, after the first shipout "PD1" is %%
-%% inserted each time |\pdfstringdef\Hy@temp{\thepage}| is %%
-%% executed (if |fnsymbol| is not used). %%
- \ifnum \value{CurrentPage}=1%
- \ifx\pagesLTS@pnc\pagesLTS@fns%
- \pdfstringdef\Hy@temp{\thepage}%
- \else%
- \def\Hy@temp{\thepage}%
- \fi%
- \else%
- \pdfstringdef\Hy@temp{\thepage}%
- \fi%
-%% Code from hyperref package again: %%
- \fi
- \else
- \def\Hy@temp{\the\Hy@pagecounter}%
- \fi
- \fi
-%% End of code from the hyperref package. %%
-%% (The following four lines are modified %%
-%% from the hyperref package.) %%
- \immediate\write\@auxout{\string
- \newlabel{#1}{{}{#2}{}{\ifHy@pageanchor page.\Hy@temp\fi}{}}}%
- \endgroup%
- \fi%
+%% Code provided by Prof. Enrico Gregorio at https://tex.stackexchange.com/a/542425
+\long\def\protected@iwrite#1#2#3{%
+ \begingroup%
+ #2%
+ \let\protect\@unexpandable@protect%
+ \edef\reserved@a{\immediate\write#1{#3}}%
+ \reserved@a%
+ \endgroup%
+ \if@nobreak\ifvmode\nobreak\fi\fi%
}
+\newcommand{\pagesLTS@makeHy}{%
+ \xdef\pagesLTS@Hptest{Doc-Start}%
+ \ifx\pagesLTS@Hptest\@currentHpage\relax%
+ \gdef\pagesLTS@Hy{\@currentHpage}%
+ \else%
+ \edef\pagesLTS@Hptest{\@currentHpage}%
+ \ifx\pagesLTS@Hptest\empty\relax%
+ \else%
+ \edef\pagesLTS@Hptest{page.}%
+ \ifx\@currentHpage\pagesLTS@Hptest\relax%
+ \ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \PackageNoteNoLine{pageslts}{%
+ With gobbled page numbers "\string\@currentHpage "\MessageBreak%
+ is just "page." without number.\MessageBreak%
+ "\string\pagesLTSlastpageHy " is now let empty}%
+ \else%
+ \PackageWarningNoLine{pageslts}{%
+ \string\@currentHpage\space is just "page." without number.\MessageBreak%
+ \string\pagesLTSlastpageHy\space is now let empty}%
+ \fi%
+ \else%
+ \gdef\pagesLTS@Hy{\pagesLTS@rmpage{\@currentHpage}}%
+ \ifx\pagesLTSlastpageHy\empty\relax%
+ \PackageWarningNoLine{pageslts}{%
+ \string\@currentHpage\space is\MessageBreak%
+ \meaning\@currentHpage\MessageBreak%
+ not beginning with "page.",\MessageBreak%
+ \string\pagesLTSlastpageHy\space is now let empty}%
+ \fi\fi\fi\fi%
+ }%
+
+%% Code provided by David Carlisle at https://tex.stackexchange.com/a/721877
+\def\pagesLTS@rmpage#1{%
+ \expandafter\xpagesLTS@rmpage\expanded{#1}\xpagesLTS@rmpage page.%
+ \xpagesLTS@rmpage\xxpagesLTS@rmpage{#1}}
+\def\xpagesLTS@rmpage #1page.#2\xpagesLTS@rmpage#3\xxpagesLTS@rmpage#4{%
+ \if$\detokenize{#1}$#2%\else#4
+ \fi}
+
\newcommand{\pagesLTS@putlabel}[3]{%
\addtocounter{page}{-1}%
- \ifx\pagesLTS@SK\pagesLTS@one\relax%
- \message{^^J}%
- \message{Package pageslts Warning: Package showkeys without option final loaded,}%
- \ifnum\value{pagesLTS.pagenr}<1%
- \message{(pageslts) but label #1 on page \thepage\space(about \theCurrentPage)}%
- \else%
- \message{(pageslts) but label #1 on page \thepage\space(about \theCurrentPage\space of \arabic{pagesLTS.pagenr})}%
+ \IfPackageLoadedT{showkeys}{%
+ \IfPackageLoadedWithOptionsF{showkeys}{final}{%
+ \ifnum\value{pagesLTS.pagenr}<1%
+ \PackageWarningNoLine{pageslts}{%
+ Package showkeys without option final loaded,\MessageBreak%
+ but label #1 on page \thepage\space(about \theCurrentPage)\MessageBreak%
+ cannot be shown, because pageslts does not use \string\label,\MessageBreak%
+ but writes directly to the \jobname.aux file}%
+ \else%
+ \PackageWarningNoLine{pageslts}{%
+ Package showkeys without option final loaded,\MessageBreak%
+ but label #1 on page \thepage\space(about \theCurrentPage\space of \arabic{pagesLTS.pagenr})\MessageBreak%
+ cannot be shown, because pageslts does not use \string\label,\MessageBreak%
+ but writes directly to the \jobname.aux file}%
+ \fi%
+ }%
+ }%
+ \IfPackageLoadedTF{hyperref}{%
+ \ifHy@pageanchor\else%
+ \PackageWarningNoLine{pagesLTS}{%
+ The \string\lastpageref{#1} link does not work\MessageBreak%
+ using hyperref with disabled option `pageanchor'.\MessageBreak%
+ Better enable `pageanchor' or use\MessageBreak%
+ \string\lastpageref*{...} (not generating a link)%
+ }%
\fi%
- \message{(pageslts) cannot be shown, because pageslts does not use \string\label,}%
- \message{(pageslts) but writes directly to the \jobname.aux file. ^^J}%
- \fi%
- \ltx@ifpackageloaded{hyperref}{\pagesLTS@putlabelhyper{#1}{#2}}{% else
\if@filesw%
- \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}<2%
- \ltx@ifpackageloaded{nameref}{%
- \immediate\write\@auxout{\string\newlabel{#1}{{}{#2}{}{}{}}}}{% else
- \immediate\write\@auxout{\string\newlabel{#1}{{}{#2}}}}%
+ \begingroup%
+ \protected@iwrite\@auxout{}{\string\newlabel{#1}{%
+ {\@currentlabel}{#2}{\@currentlabelname}%
+ {\ifx\pagesLTS@pnc\pagesLTS@fns%
+ \@currentHref%
+ \else\ifx\pagesLTS@pnc\pagesLTS@silly%
+ \@currentHref%
+ \else\ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \@currentHref%
+ \else\ifHy@pageanchor\@currentHpage\fi%
+ \fi\fi\fi%
+ }%
+ {\@kernel@reserved@label@data}}}%
+ \endgroup%
+ \fi%
+ }{%
+ \if@filesw%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}<2%
+ \protected@iwrite\@auxout{}{\string\newlabel{#1}{%
+ {\@currentlabel}{#2}{\@currentlabelname}%
+ {\@currentHref}{\@kernel@reserved@label@data}}%
+ }%
\else%
- \edef\pagesLTStmpA{#1}%
- \edef\pagesLTStmpB{pagesLTS.\pagesLTS@pnc.local}%
- \ifx\pagesLTStmpA\pagesLTStmpB%
- \edef\pagesLTStmpA{#3}%
- \ifx\pagesLTStmpA\pagesLTS@one%
+ \edef\pagesLTS@tmpC{#1}%
+ \edef\pagesLTS@tmpD{pagesLTS.\pagesLTS@pnc.local}%
+ \ifx\pagesLTS@tmpC\pagesLTS@tmpD%
+ \edef\pagesLTS@tmpC{#3}%
+ \ifx\pagesLTS@tmpC\pagesLTS@one%
\immediate\write\@auxout{\string\undonewlabel{#1}}%
\fi%
\fi%
- \ltx@ifpackageloaded{nameref}{%
- \immediate\write\@auxout{\string\newlabel{#1}{{}{#2}{}{}{}}}}{% else
- \immediate\write\@auxout{\string\newlabel{#1}{{}{#2}}}}%
+ \protected@iwrite\@auxout{}{\string\newlabel{#1}{%
+ {\@currentlabel}{#2}{\@currentlabelname}%
+ {\@currentHref}{\@kernel@reserved@label@data}}%
+ }%
\fi%
\fi%
- }%
+ }%
\addtocounter{page}{+1}%
}
@@ -965,298 +906,213 @@
\addtocounter{CurrentPage}{-1}%
\addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{-1}%
\ifx\pagesLTS@pnc\pagesLTS@zero%
- \PackageWarning{pagesLTS}{No page numbering scheme found:\MessageBreak%
- \pagesLTS@messageNPN }%
+ \PackageWarningNoLine{pagesLTS}{No page numbering scheme found:\MessageBreak%
+ \pagesLTS@messageNPN}%
\else%
\pagesLTS@writelabel{\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}}%
- \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}<2%
- \ifx\pagesLTS@pnc\pagesLTS@fns% \relax
- \else%
- \pagesLTS@writelabel{\pagesLTS@pnc}%
- \fi%
- \fi%
- \fi%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}<2%
+ \ifx\pagesLTS@pnc\pagesLTS@fns%
+ \else\ifx\pagesLTS@pnc\pagesLTS@silly%
+ \else\ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \else\pagesLTS@writelabel{\pagesLTS@pnc}%
+ \fi\fi\fi\fi\fi%
\addtocounter{page}{+1}%
\pagesLTS@putlabel{LastPages}{\theCurrentPage}{1}%
\addtocounter{CurrentPage}{+1}%
- \addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{1}%
+ \addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{+1}%
}
-\AtBeginDocument{%
+\AddToHook{begindocument/end}{%
+ \IfPackageLoadedT{lastpage}{%
+ \PackageNoteNoLine{pageslts}{Packages lastpage and pageslts used:\MessageBreak%
+ Are you sure that you want to load both packages?}%
+ }%
+ \IfPackageLoadedTF{hyperref}{%
+ \ProvideTextCommand{\textasteriskcentered}{PD1}{*}%
+ \IfPackageAtLeastF{hyperref}{2024-11-05}{%
+ \PackageError{pageslts}{hyperref package version too old}{%
+ Required version: 2024-11-05 v7.01l or newer,\MessageBreak%
+ found version:\space\space\space\space\csname ver@hyperref.sty\endcsname.}}%
+ }{\PackageNoteNoLine{pageslts}{Package hyperref not loaded.\MessageBreak%
+ pageslts would support hyperref.\MessageBreak%
+ The page references will NOT be hyperlinked}%
+ }%
+ \IfPackageLoadedT{alphalph}{%
+ \newalphalph{\AlphMult}[mult]{\@Alph}{26}%
+ \newalphalph{\alphMult}[mult]{\@alph}{26}%
+ \newalphalph{\fnsymbolmult}[mult]{\@fnsymbol}{5}%
+ }%
\if@filesw%
- \immediate\write\@auxout{\string\gdef\string\pagesLTS@loaded{p@gesLTSnotlo@ded}}%
- \fi%
- \@ifpackageloaded{endfloat}%
- {\@ifpackagelater{endfloat}{1992/03/31}% April 1992 v2.0
- {\@ifpackagelater{endfloat}{2011/12/24}{% 2011/12/25 v2.5d
- \relax}%
- {\PackageWarningNoLine{pageslts}{Old endfloat package detected:\MessageBreak%
- There is a newer version of the endfloat package available.\MessageBreak%
- Please consider updating your version.\MessageBreak%
- The pageslts package might be incompatible with\MessageBreak%
- your current endfloat package.\MessageBreak%
- }%
- }%
- }{\PackageError{pageslts}{Incompatible, very old endfloat package detected.}%
- {The very old version 2.0 (and earlier) of the\MessageBreak%
- endfloat package actually redefined the \string\enddocument ,\MessageBreak%
- and so interfered drastically with the LaTeX2e commands\MessageBreak%
- which make use of \string\AtEndDocument .\MessageBreak%
- Newer versions of the endfloat package exists\MessageBreak%
- (at least: v2.5d as of 2011/12/25)\MessageBreak%
- in modern documentation form,\MessageBreak%
- which should be available from CTAN.\MessageBreak%
- Please update your endfloat package\MessageBreak%
- for use with the pageslts package.\MessageBreak %
- }%
- }%
- }{}%
- \@ifpackageloaded{lastpage}%
- {\@ifpackagelater{lastpage}{2010/07/28}% 2010/07/29 v1.2a
- {\@ifpackagelater{lastpage}{2013/01/27}% 2013/01/28 v1.2l
- {\PackageWarning{pageslts}{lastpage package detected.\MessageBreak%
- With pageslts package in use, lastpage has no function.\MessageBreak%
- Just remove the lastpage package from your document.\MessageBreak%
- }%
- }{%
- \PackageWarning{pageslts}{Old lastpage package detected.\MessageBreak%
- With pageslts package in use, lastpage has no function.\MessageBreak%
- Just remove the lastpage package from your document.\MessageBreak%
- At least update it!\MessageBreak%
- }%
- }%
- }{%
- \PackageWarning{pageslts}{Incompatible package lastpage detected:\MessageBreak%
- Package pageslts was loaded, but also an old\MessageBreak%
- version of the lastpage package.\MessageBreak%
- pageslts has all functionality of the lastpage\MessageBreak%
- package (and more), so just remove the lastpage\MessageBreak%
- package from your document.\MessageBreak%
- (At least update it!)\MessageBreak%
- pageslts will now ''kill'' the lastpage@putlabel\MessageBreak%
- command of the lastpage package.\MessageBreak%
- }%
- \gdef\lastpage@putlabel{\relax}%
- }%
- }{}%
- \ltx@ifpackageloaded{alphalph}%
- {\newalphalph{\AlphMult}[mult]{\@Alph}{26}%
- \newalphalph{\alphMult}[mult]{\@alph}{26}%
- \newalphalph{\fnsymbolmult}[mult]{\@fnsymbol}{5}%
- }{}%
- \ltx@ifpackageloaded{hyperref}{%
- \@ifpackageloaded{pdfpages}%
- {\PackageWarningNoLine{pageslts}{Package pdfpages detected.\MessageBreak%
- Using hyperref with pdfpages can cause problems. See\MessageBreak%
- https://www.ctan.org/pkg/pax\MessageBreak%
- for the Pdf Annotations eXtractor, pax%
- }%
- }{% \relax
+ \else%
+ \IfPackageLoadedTF{tikz}{%
+ \PackageWarning{pageslts}%
+ {It 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{pageslts}{No writing to auxiliary file allowed}%
+ {It 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 previous compiler runs\MessageBreak%
+ and would not have changed anyway.\MessageBreak%
+ (In that case just press Enter or Return\MessageBreak%
+ to continue the compilation.)\MessageBreak%
}%
- \@ifpackageloaded{undolabl}%
- {\@ifpackagelater{undolabl}{2010/07/14}% 2010/07/15 v1.0d
- {\@ifpackagelater{undolabl}{2015/03/29}% 2015/03/29 v1.0l
- {% recent version as of the time of last revision of this package: OK
- }{% old, but not obsolete version
- \PackageWarningNoLine{pageslts}{Old version of undolabl package used.\MessageBreak%
- See https://www.ctan.org/pkg/undolabl\MessageBreak%
- for a new version.\MessageBreak%
- }%
- }
- }{\PackageError{pageslts}{Incompatible, obsolete version of undolabl package used.}{%
- See https://www.ctan.org/pkg/undolabl\MessageBreak%
- for a new version.\MessageBreak%
- Type X <return> to quit.\MessageBreak%
- }%
- }
- }{\PackageError{pageslts}{Package undolabl missing}{%
- Package undolabl not found.\MessageBreak%
- The pageslts package needs the undolabl package.\MessageBreak%
- See https://www.ctan.org/pkg/undolabl\MessageBreak%
- Type X <return> to quit.\MessageBreak%
- }%
- }
- \@ifpackagelater{hyperref}{2012/11/05}{% 2012/11/06 v6.83m
- \relax}{%
- \PackageWarningNoLine{pageslts}{Old hyperref package detected:\MessageBreak%
- There is a newer version of the\MessageBreak%
- hyperref package available:\MessageBreak%
- https://www.ctan.org/pkg/hyperref\MessageBreak%
- Please consider updating your version.\MessageBreak%
- }%
- }%
- %% pageslts supports the use of the package hyperref by
- %% Heiko Oberdiek (hyperref version 2012/11/06 v6.83m).
- %% pageslts may work with earlier versions of this packages,
- %% but this was not tested.
- }{%
- \PackageWarning{pageslts}{Package hyperref NOT detected.\MessageBreak%
- pageslts would support hyperref. The page references\MessageBreak%
- will NOT be hyperlinked!\MessageBreak }%
}%
- \ltx@ifpackageloaded{showkeys}{%
- \@ifpackagewith{showkeys}{final}{}{\gdef\pagesLTS@SK{1}}}{% else \relax
- }%
+ \fi%
}
-\AtEndDocument{%
- \ltx@ifpackageloaded{showkeys}{%
- \ifx\pagesLTS@SK\pagesLTS@one\relax%
- \else%
- \providecommand*\pagesLTS@sklf[1]{}%
- \ifx\showkeyslabelformat\pagesLTS@sklf\relax%
- \else%
- \PackageError{pageslts}{Package showkeys loaded after pageslts}{%
- The showkeys package with option "final" has been loaded\MessageBreak%
- after the pageslts package.\MessageBreak%
- Please first load showkeys and then pageslts}%
- \fi%
- \fi%
- }{% else no showcase, \relax
+\def\pagesLTS@skld{0}
+\IfPackageLoadedT{showkeys}{\IfPackageLoadedWithOptionsF{showkeys}{final}{%
+ \def\pagesLTS@skld{1}}%
+ }%
+
+\AddToHook{enddocument/afterlastpage}{%
+ \IfPackageLoadedT{showkeys}{\IfPackageLoadedWithOptionsF{showkeys}{final}{%
+ \ifx\pagesLTS@skld\pagesLTS@one\relax%
+ \else\PackageError{pageslts}{Package showkeys loaded after pageslts}{%
+ The showkeys package with option "final" has been loaded\MessageBreak%
+ after the pageslts package.\MessageBreak%
+ Please first load showkeys and then pageslts}%
+ \fi}%
}%
\ifx\pncmissing\pagesLTS@one\relax%
- \PackageError{pageslts}{pagenumbering scheme missing}{\pagesLTS@messageNPN }%
+ \PackageError{pageslts}{pagenumbering scheme missing}{\pagesLTS@messageNPN}%
\fi%
- \message{^^J%
- AED: pageslts setting LastPage ^^J}%
- \clearpage%
+ \PackageInfo{pageslts}{enddocument/afterlastpage (AED): pageslts setting LastPage}%
\ifx\pagesLTS@pnc\pagesLTS@fns%
\def\pagesLTS@tmpA{\arabic{pagesLTS.fnsymbol.local}}%
- \ifnum \pagesLTS@eso=\pagesLTS@tmpA%
+ \ifnum\pagesLTS@esoFs=\pagesLTS@tmpA%
\gdef\pagesLTS@rerun{0}%
\else%
\gdef\pagesLTS@rerun{1}%
\fi%
\if@filesw%
- \immediate\write\@auxout{\string\gdef\string\pagesLTS@eso{\pagesLTS@tmpA}}%
+ \immediate\write\@auxout{\string\gdef\string\pagesLTS@esoFs{\pagesLTS@tmpA}}%
\fi%
- \fi%
+ \else%
+ \ifx\pagesLTS@pnc\pagesLTS@silly%
+ \def\pagesLTS@tmpA{\arabic{pagesLTS.silly.local}}%
+ \ifnum\pagesLTS@esoSy=\pagesLTS@tmpA%
+ \gdef\pagesLTS@rerun{0}%
+ \else%
+ \gdef\pagesLTS@rerun{1}%
+ \fi%
+ \if@filesw%
+ \immediate\write\@auxout{\string\gdef\string\pagesLTS@esoSy{\pagesLTS@tmpA}}%
+ \fi%
+ \else%
+ \ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \def\pagesLTS@tmpA{\arabic{pagesLTS.gobble.local}}%
+ \ifnum\pagesLTS@esoGbl=\pagesLTS@tmpA%
+ \gdef\pagesLTS@rerun{0}%
+ \else%
+ \gdef\pagesLTS@rerun{1}%
+ \fi%
+ \if@filesw%
+ \immediate\write\@auxout{\string\gdef\string\pagesLTS@esoGbl{\pagesLTS@tmpA}}%
+ \fi\fi\fi\fi%
\pagesLTS@putlabel{LastPage}{\thepage}{1}%
\let\pagesLTS@tmpA\undefined%
- }
-
-\AfterLastShipout{%
\if@filesw%
- \ifx\pagesLTS@esov\pagesLTS@zero%
+ \ifx\pagesLTS@esovFs\pagesLTS@zero\relax%
\else%
- \immediate\write\@auxout{\string
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}}%
- \immediate\write\@auxout{\string
- \setcounter{pagesLTS.fnsymbol.local}{\pagesLTS@esov}}%
+ \immediate\write\@auxout{\string\pagesLTS@providecounter{pagesLTS.fnsymbol.local}}%
+ \immediate\write\@auxout{\string\setcounter{pagesLTS.fnsymbol.local}{\pagesLTS@esovFs}}%
+ \fi%
+ \ifx\pagesLTS@esovSy\pagesLTS@zero\relax%
+ \else%
+ \immediate\write\@auxout{\string\pagesLTS@providecounter{pagesLTS.silly.local}}%
+ \immediate\write\@auxout{\string\setcounter{pagesLTS.silly.local}{\pagesLTS@esovSy}}%
+ \fi%
+ \ifx\pagesLTS@esovGbl\pagesLTS@zero\relax%
+ \else%
+ \immediate\write\@auxout{\string\pagesLTS@providecounter{pagesLTS.gobble.local}}%
+ \immediate\write\@auxout{\string\setcounter{pagesLTS.gobble.local}{\pagesLTS@esovGbl}}%
\fi%
- \ltx@ifpackageloaded{hyperref}{%
- \ifx\pagesLTS@pnc\pagesLTS@fns%
- \immediate\write\@auxout{\string
- \gdef\string\lastpageref{\string\lastpagerefend}}%
- \fi%
- }{}%
\fi%
- \pagesLTS@ifcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}%
+ \pagesLTS@providecounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}%
\setcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
\value{pagesLTS.current.local.\pagesLTS@pnc}}%
- \addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{-1}
- \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}>1%
- \mathchardef\pagesLTS@tmpD=\arabic{pagesLTS.pnc.0}%
- \setcounter{pagesLTS.pnc.0}{\value{pagesLTS.pnc.\pagesLTS@pnc}}%
- \@tempcnta=\value{pagesLTS.pnc.0}\relax%
+ \addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{-1}%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}>1%
+ \setcounter{pagesLTS.tmpcounter}{\value{pagesLTS.pnc.\pagesLTS@pnc}}%
+ \@tempcnta=\value{pagesLTS.tmpcounter}\relax%
\loop%
\ifnum\@tempcnta>1\relax%
- \addtocounter{pagesLTS.pnc.0}{-1}%
+ \addtocounter{pagesLTS.tmpcounter}{-1}%
\addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
- -\value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.0}.local.count}}%
- \@tempcnta=\value{pagesLTS.pnc.0}\relax%
+ -\value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.tmpcounter}.local.count}}%
+ \@tempcnta=\value{pagesLTS.tmpcounter}\relax%
\repeat%
- \setcounter{pagesLTS.pnc.0}{\pagesLTS@tmpD}%
\fi%
\if@filesw%
\immediate\write\@auxout{\string
- \pagesLTS@ifcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.cnt}}%
+ \pagesLTS@providecounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.cnt}}%
\edef\pagesLTS@tmpA{\arabic{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}}%
\immediate\write\@auxout{\string
\setcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.cnt}{\pagesLTS@tmpA}}%
- \let\pagesLTS@tmpA\undefined%
\fi%
\addtocounter{page}{-1}%
- \edef\pagesLTS@tmpA{\thepage}%
+ \def\pagesLTS@tmpA{\thepage}%
\if@filesw%
- \immediate\write\@auxout{\string
- \gdef\string\pagesLTS.lastpage{\pagesLTS@tmpA}}%
+ \protected@iwrite\@auxout{}{\string\gdef\string\pagesLTSlastpage{\pagesLTS@tmpA}}%
+ \gdef\pagesLTS@Hy{}%
+ \IfPackageLoadedT{hyperref}{\ifHy@pageanchor\pagesLTS@makeHy\fi}%
+ \protected@iwrite\@auxout{}{\string\gdef\string\pagesLTSlastpageHy{\pagesLTS@Hy}}%
\fi%
\addtocounter{page}{+1}%
\addtocounter{CurrentPage}{-1}%
\edef\pagesLTS@tmpB{\arabic{CurrentPage}}%
\if@filesw%
- \immediate\write\@auxout{\string
- \setcounter{pagesLTS.pagenr}{\pagesLTS@tmpB}}%
+ \immediate\write\@auxout{\string\setcounter{pagesLTS.pagenr}{\pagesLTS@tmpB}}%
\fi%
\addtocounter{CurrentPage}{+1}%
- \message{^^J%
- AED: pageslts setting VeryLastPage via AfterLastShipout ^^J}%
+ \PackageInfo{pageslts}{enddocument/afterlastpage (AED): pageslts setting VeryLastPage}%
\pagesLTS@putlabel{VeryLastPage}{\thepage}{1}%
- \message{^^J%
- AED: pageslts setting LastPages via AfterLastShipout ^^J}%
+ \PackageInfo{pageslts}{enddocument/afterlastpage (AED): pageslts setting LastPages}%
\pagesLTS@putlabels%
- \typeout{^^J}%
\ifodd\pagesLTS@tmpB%
- \@PackageInfoNoLine{pageslts}{Total number of pages is odd}%
+ \PackageNoteNoLine{pageslts}{Total number of pages is odd}%
\else%
- \@PackageInfoNoLine{pageslts}{Total number of pages is even}%
+ \PackageNoteNoLine{pageslts}{Total number of pages is even}%
\fi%
- \typeout{^^J}%
- \let\pagesLTS@tmpA\undefined%
- \let\pagesLTS@tmpB\undefined%
}
-\AtEndAfterFileList{%
- \ifx\pagesLTS@rerun\pagesLTS@one%
- \PackageWarningNoLine{pageslts}{%
- Label(s) may have changed.\MessageBreak%
- Rerun to get cross-references right%
- }%
- \fi%
- }
-
-\newcommand{\pagesLTS@ifundefinedorrelax}[1]{%
- % Modified Markus Kohm code for use without e-TeX
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname #1\endcsname\relax%
- \expandafter\ifx\csname #1\endcsname\relax%
- \expandafter\expandafter\expandafter\@firstoftwo
- \else%
- \expandafter\expandafter\expandafter\@secondoftwo
- \fi%
- \else%
- \expandafter\@firstoftwo
- \fi%
- }
-
-\pagesLTS@ifundefinedorrelax{frontmatter}{% \relax
-}{% else
- \ltx@GlobalPrependToMacro{\frontmatter}{\pagesLTS@prefrontmatter}%
- \ltx@GlobalAppendToMacro{\frontmatter}{\pagesLTS@postfrontmatter}%
- }
-
-\newcommand{\pagesLTS@prefrontmatter}{%
+\AddToHook{cmd/frontmatter/before}{%
\xdef\pagesLTS@FMBpncn{\pagesLTS@pnc}%
\xdef\pagesLTS@FMBpncp{\arabic{pagesLTS.current.local.\pagesLTS@pnc}}%
}
-\newcommand{\pagesLTS@postfrontmatter}{%
+\AddToHook{cmd/frontmatter/after}{%
\xdef\pagesLTS@FMEpncn{\pagesLTS@pnc}%
\ifx\pagesLTS@FMBpncn\pagesLTS@FMEpncn%
\else%
\ifx\pagesLTS@FMBpncn\pagesLTS@zero%
\else%
\ifx\pagesLTS@FMBpncp\pagesLTS@one%
- \PackageError{pageslts}{\string\pagenumbering\space before \string\frontmatter}{%
- Do not use \string\pagenumbering{\pagesLTS@FMBpncn} before \string\frontmatter \MessageBreak%
+ \PackageWarning{pageslts}{\string\pagenumbering\space before \string\frontmatter:\MessageBreak%
+ Do not use \string\pagenumbering{\pagesLTS@FMBpncn} before \string\frontmatter\MessageBreak%
on the same page!\MessageBreak%
- \string\frontmatter\space (re)defines the page numbering scheme to \pagesLTS@FMEpncn , \MessageBreak%
- thus earlier use of \string\pagenumbering{\pagesLTS@FMBpncn} on the same page is useless anyway.}%
+ \string\frontmatter\space (re)defines the page numbering scheme to \pagesLTS@FMEpncn ,\MessageBreak%
+ thus earlier use of \string\pagenumbering{\pagesLTS@FMBpncn} %
+ on the same page is useless anyway\MessageBreak}%
\fi%
\fi%
\fi%
-}
+ }
+
+\AddToHook{enddocument/info}{%
+ \ifx\pagesLTS@rerun\pagesLTS@one%
+ \PackageWarningNoLine{pageslts}{Label(s) may have changed.\MessageBreak%
+ Rerun to get cross-references right}%
+ \fi%
+ }
\endinput
%%