diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/pageslts/pageslts.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/pageslts/pageslts.sty | 1356 |
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 %% |