diff options
author | Karl Berry <karl@freefriends.org> | 2011-08-13 22:16:14 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-08-13 22:16:14 +0000 |
commit | 6b87575670fd3d76e2deb61631f32402f3b59a27 (patch) | |
tree | 1cac454180659b0064c90a25d4b4222980eb5130 /Master | |
parent | de948fd0d23b011d22f685fc2b3a16e1113ca2bc (diff) |
pageslts (12aug11, was pagesLTS)
git-svn-id: svn://tug.org/texlive/trunk@23534 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/pageslts/README | 225 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pageslts/pageslts-example.pdf | bin | 0 -> 317994 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/pageslts/pageslts-example.tex | 975 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pageslts/pageslts.pdf | bin | 0 -> 623047 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/pageslts/ltxdoc.cfg | 120 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/pageslts/pageslts.drv | 96 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/pageslts/pageslts.dtx | 5274 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/pageslts/pageslts.ins | 160 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/pageslts/pageslts.sty | 1238 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tlpkg-ctan-check | 2 | ||||
-rwxr-xr-x | Master/tlpkg/libexec/ctan2tds | 3 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc | 2 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/pageslts.tlpsrc | 0 |
13 files changed, 8092 insertions, 3 deletions
diff --git a/Master/texmf-dist/doc/latex/pageslts/README b/Master/texmf-dist/doc/latex/pageslts/README new file mode 100644 index 00000000000..8163842d035 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pageslts/README @@ -0,0 +1,225 @@ +README for pageslts package, 2011/08/08, v1.2a + + +TABLE OF CONTENTS +================= + +1 Introduction +2 Download +3 Installation +4 Additional Packages +5 Package Compatibility +6 Author/Maintainer +7 Bug Reports +8 Known Problems + + +1 INTRODUCTION +============== + +This package puts the labels LastPage (\AtEndDocument) and +VeryLastPage (\AfterLastShipout) into the .aux file, +allowing the user to refer to the (very) last page of a +document. This might be particularly useful in places like +headers or footers. +When more than one page numbering scheme is used, these +references do not give the total number of pages. For this +case the label LastPages is introduced. Additionally, at the +last page of each page numbering scheme a label +pagesLTS.<numbering scheme> is placed, where +<numbering scheme> is e. g. arabic, roman, Roman, alph, or +Alph. For fnsymbol please use +\lastpageref{pagesLTS.fnsymbol} instead of +\pageref{pagesLTS.fnsymbol}. When the same numbering scheme +is used twice, the page numbers are either reset to one or +continued automatically, depending on the option given when +the package is called. The command \theCurrentPage prints +the current total/absolute page number - in contrast to +\thepage, which gives only the page name in the current page +numbering scheme. \theCurrentPageLocal gives the current +number of pages in the current page numbering scheme. +\thepage and \theCurrentPageLocal are different e. g. when +\addtocounter{pageg}{...} or \setcounter{page}{...} were +used. +At the first page of the document a label pagesLTS.0 is +created. This label can be referred to, too. Further labels +are provided for special cases. +The alphalph package is supported, i. e. page numbers alph +or Alph > 26 and fnyambol > 9 can be used (with according +options set). Even zero and negative page numbers can be +used with arabic, alph, Alph, roman, Roman, and fnsymbol +page numbering (with alphalph package and according +options). +\pageref* and \pageref*, for using hyperref but suppressing +links, are supported. +This material is subject to the LaTeX Project Public License +(LPPL). See http://www.ctan.org/tex-archive/help/Catalogue/ +licenses.lppl.html for the details of that license. + + +2 DOWNLOAD +========== + +`pageslts' is available on CTAN: + CTAN:macros/latex/contrib/pageslts/ + +Also a ZIP file is provided that contains the files, already +sorted in a TDS tree (should become available on CTAN soon): + CTAN:install/macros/latex/contrib/pageslts.tds.zip + +`CTAN:' means one of the `Comprehensive TeX Archive Network' +nodes or one of its mirrors. This is explained in + http://www.tex.ac.uk/cgi-bin/texfaq2html?label=archives + +The CTAN stuff will be mirrored automatically from the +ftp server, so + ftp://ftp.tug.org/pub/tex/pageslts/ +corresponds to + CTAN:macros/latex/contrib/pageslts/ + + +3 INSTALLATION +============== + +Installation with ZIP file in TDS format +---------------------------------------- +The ZIP file `pageslts.tds.zip' contains the files sorted +in a TDS tree. Thus you can directly unpack the ZIP file +inside a TDS tree. + (See CTAN:tds.zip for an explanation of TDS.) +Example: + cd /...somewhere.../texmf + unzip /...downloadpath.../pageslts.tds.zip +Do not forget to refresh the file name database of this +TDS tree. +Example: + texhash /...somewhere.../texmf + +Manual installation +------------------- +a) Download the pageslts files from CTAN or the TUG server. + If necessary, unpack them. +b) Generate the package and driver files: + tex pageslts.ins +c) Install the files `*.sty' and `*.cfg' in your TDS tree: + cp *.sty *.cfg TDS:tex/latex/pageslts/ + Replace `TDS:' by the prefix of your TDS tree + (texmf directory). +d) Copy the documentation files to + "TDS:doc/latex/pageslts/": + README, pageslts.pdf,pageslts-example.tex, + pageslts-example.pdf. +e) Update the databases if necessary, e. g. for teTeX: + mktexlsr .../texmf + + +4 ADDITIONAL PACKAGES +===================== + +Depending on the driver and option settings, pageslts loads +other packages: + +For unpacking the pageslts.dtx file and constructing the +documentation it is required: +- TeXFormat LaTeX2e, 1994/06/01, v2e +- document class ltxdoc, 2007/11/11, v2.0u, + CTAN:macros/latex/base/ltxdoc.dtx +- package holtxdoc, 2011/02/04, v0.21 + CTAN:macros/latex/contrib/oberdiek/holtxdoc.dtx +- package hypdoc, 2010/03/26, v1.9, + CTAN:macros/latex/contrib/oberdiek/hypdoc.dtx +- package geometry, 2010/09/12, v5.6, + CTAN:macros/latex/contrib/geometry/geometry.dtx +- package ulem, 2011/03/18, (no version number given), + CTAN:macros/latex/contrib/ulem/ + +The pageslts.sty for LATEX2e (i. e. all documents using the + pageslts package) requires: +- TeXFormat LaTeX2e, 1994/06/01, v2e +- package atveryend, 2010/03/24, v1.5, + CTAN:macros/latex/contrib/oberdiek/atveryend.dtx +- package everyshi, 2001/05/15, v3.00, + CTAN:macros/latex/contrib/ms/everyshi.dtx +- package kvoptions, 2010/02/22, v3.7, + CTAN:macros/latex/contrib/oberdiek/kvoptions.dtx +- package undolabl, 2011/08/08, v1.0j, + CTAN:macros/latex/contrib/undolabl/undolabl.dtx + +The pageslts-example.tex requires the same files as all + documents using the pageslts package, and additionally: +- package alphalph, 2010/04/18, v2.3, + CTAN:macros/latex/generic/oberdiek/alphalph.dtx +- package lipsum, 2011/04/14, v1.2, + CTAN:macros/latex/contrib/lipsum/lipsum.dtx +- package showkeys, 2007/08/07, v3.15, + CTAN:macros/latex/required/tools/showkeys.dtx +- package hyperref, 2011/04/17, v6.82g, + CTAN:macros/latex/contrib/hyperref.zip +- package pageslts, 2011/08/08, v2.0a, + CTAN:macros/latex/contrib/pageslts/pageslts.dtx + (Well, it is the example file for this package, and + because you are reading the README for the pageslts + package, it can be assumed that you already have some + version of it - is it the current one?) + +which again load other packages +(see the result of the \listfiles command in the log-file + of the example). + + +5 PACKAGE COMPATIBILITY +======================= + +* endfloat package + pageslts is not compatible with very old versions of + endfloat(2.0 and older). + Just get the recent version of the endfloat package + from CTAN. + +* lastpage package + \usepackage[pagecontinue=false]{pageslts} + can simulate the behaviour of the lastpage package. + Loading old (!) versions of the lastpage package before + the pageslts package before the hyperref package results + in multiply definitions of the LastPage label. + +* undolabl package + Version >= 1.0h is needed. + +6 AUTHOR/MAINTAINER +===================== + +* H.-Martin Münch + + +7 BUG REPORTS +============== + +A bug report should contain: +* Comprehensive problem description. This includes error or + warning messages. + * \errorcontextlines=\maxdimen can be added in the + TeX code to get more information in TeX error messages. +* Minimal test file that shows the problem, but does not + contain any unnecessary packages and code. +* Used drivers/programs. +* Version information about used packages and programs. + * If you are using LaTeX, then add "\listfiles". Then + a list of version information is printed at the end + of the LaTeX run. +* Please no other files than the minimal test file. + The other files .log, .dvi, .ps, .pdf are seldom + necessary, so send them only on request. +* Please .zip or .tar.gz your file(s) before sending them! + +Bug address +----------- +Bug reports can be send to the maintainer: + H.-Martin Münch + <Martin [dot] Muench [at] Uni-Bonn [dot] de> + + +8 KNOWN PROBLEMS +================= + +* as yet: none...
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/pageslts/pageslts-example.pdf b/Master/texmf-dist/doc/latex/pageslts/pageslts-example.pdf Binary files differnew file mode 100644 index 00000000000..e811f853058 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pageslts/pageslts-example.pdf diff --git a/Master/texmf-dist/doc/latex/pageslts/pageslts-example.tex b/Master/texmf-dist/doc/latex/pageslts/pageslts-example.tex new file mode 100644 index 00000000000..f3ff31f2a99 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pageslts/pageslts-example.tex @@ -0,0 +1,975 @@ +%% +%% This is file `pageslts-example.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pageslts.dtx (with options: `example') +%% +%% This is a generated file. +%% +%% IMPORTANT NOTICE: +%% On the first page backslash pagenumbering should be called +%% (with the appropriate argument out of e.g. +%% * roman - Lowercase Roman numerals: i, ii, iii, iv,... +%% * Roman - Uppercase Roman numerals: I, II, III, IV,... +%% * arabic - Arabic numerals: 1, 2, 3, 4,... +%% * alph - Lowercase letters: a, b, c, d,... +%% * Alph - Uppercase letters: A, B, C, D,... +%% * fnsymbol - Footnote symbols: *, ^^86 (ddagger), ^^87 (dddagger), +%% ^^a7 (mathsection),... +%% ). 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 +%% of backslash pagenumbering, but in that case this package does not +%% see the change in the page numbering scheme and will make mistakes. +%% The package takes options. +%% +%% The usual disclaimers apply: +%% 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 +%% and the latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainer of this work is H.-Martin Muench +%% (Martin dot Muench at Uni-Bonn dot de). +%% +%% This package first started as a revision of the lastpage +%% package of Jeffrey P. Goldberg (jeffrey+news at goldmark dot org), +%% but it became obviouse that a replacement was needed. +%% +%% This work consists of the main source file pageslts.dtx +%% and the derived files +%% pageslts.sty, pageslts.pdf, pageslts.ins, pageslts.drv, +%% pageslts-example.tex. +%% +\documentclass[british]{article} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{lipsum}[2011/04/14]% v1.2 +\usepackage[draft]{showkeys}[2007/08/07]% v3.15 +%% Use final instead of draft to hide the keys. %% +\usepackage{hyperref}[2011/04/17]% v6.82g +\hypersetup{% + extension=pdf,% + plainpages=false,% + pdfpagelabels=true,% + hyperindex=false,% + pdflang={en},% + pdftitle={pageslts package example},% + pdfauthor={Hans-Martin Muench},% + pdfsubject={Example for the pageslts package},% + pdfkeywords={LaTeX, pageslts, Hans-Martin Muench},% + pdfview=Fit,% + pdfstartview=Fit,% + pdfpagelayout=SinglePage,% + bookmarksopen=true% +} +\usepackage[pagecontinue=true,alphMult=ab,AlphMulti=AB,fnsymbolmult=true,romanMult=true,RomanMulti=true]{pageslts}[2011/08/08]% v1.2a +%% These are the default options. %% +\makeatletter + \renewcommand{\@evenfoot}% + {Page \thepage\ (\theCurrentPage; local: \theCurrentPageLocal) of % + \lastpageref{pagesLTS.roman}(\lastpageref{pagesLTS.roman.local}) + % + \lastpageref{pagesLTS.Roman}(\lastpageref{pagesLTS.Roman.local}) + % + \lastpageref{pagesLTS.arabic}(\lastpageref{pagesLTS.arabic.local}) + % + \lastpageref{pagesLTS.fnsymbol}(\lastpageref{pagesLTS.fnsymbol.local}) + % + \lastpageref{pagesLTS.alph}(\lastpageref{pagesLTS.alph.local}) + % + \lastpageref{pagesLTS.Alph}(\lastpageref{pagesLTS.Alph.local}) = % + \lastpageref{LastPages} pages.% + } + \renewcommand{\@oddfoot}{\@evenfoot} + \def\pagesLTSexampleArabic{3} + \def\pagesLTSexamplealph{23} + \gdef\unit#1{\mathord{\thinspace\mathrm{#1}}}% +\makeatother +\listfiles +\begin{document} +\pagenumbering{roman} +%% Note the first \pagenumbering immediately behind \begin{document}! %% +%%\addtocounter{page}{-2} %% + +\section*{Example for pageslts} +\addcontentsline{toc}{section}{Example for pageslts} +\markboth{Example for pageslts}{Example for pageslts} + +This example demonstrates the most common uses of package\\ +\textsf{pageslts}, v1.2a as of 2011/08/08 (HMM).\\ +The used options were \texttt{pagecontinue=true}, +\texttt{alphMult=ab}, \texttt{AlphMulti=AB}, \linebreak +\texttt{fnsymbolmult=true}, +\texttt{romanMult=true}, and \texttt{RomanMulti=true} +(the default ones).\\ +For more details please see the documentation!\\ + +\label{keys} To hide the \pageref{keys}{\qquad } use option +\texttt{final} instead of \texttt{draft} with the \textsf{showkeys} +package (or remove the package call from the preamble of +this document).\\ + +\textbf{Hyperlinks or not:} If the \textsf{hyperref} package is loaded, +the references are also hyperlinked:\\ +\smallskip +Page \thepage\ (\theCurrentPage; local: \theCurrentPageLocal) of % +\lastpageref{pagesLTS.roman}(\lastpageref{pagesLTS.roman.local}) + % +\lastpageref{pagesLTS.Roman}(\lastpageref{pagesLTS.Roman.local}) + % +\lastpageref{pagesLTS.arabic}(\lastpageref{pagesLTS.arabic.local}) + % +\lastpageref{pagesLTS.fnsymbol}(\lastpageref{pagesLTS.fnsymbol.local}) + % +\lastpageref{pagesLTS.alph}(\lastpageref{pagesLTS.alph.local}) + % +\lastpageref{pagesLTS.Alph}(\lastpageref{pagesLTS.Alph.local}) = % +\lastpageref{LastPages} pages.\\ +If the \textsf{hyperref} package is loaded, but the hyperlinks of the +references shall be suppressed, \verb|\pageref*{...}| +and \verb|\lastpageref*{...}| can be used:\\ +Page \thepage\ (\theCurrentPage; local: \theCurrentPageLocal) of % +\lastpageref*{pagesLTS.roman}(\lastpageref*{pagesLTS.roman.local}) + % +\lastpageref*{pagesLTS.Roman}(\lastpageref*{pagesLTS.Roman.local}) + % +\lastpageref*{pagesLTS.arabic}(\lastpageref*{pagesLTS.arabic.local}) + % +\lastpageref*{pagesLTS.fnsymbol}(\lastpageref*{pagesLTS.fnsymbol.local}) + % +\lastpageref*{pagesLTS.alph}(\lastpageref*{pagesLTS.alph.local}) + % +\lastpageref*{pagesLTS.Alph}(\lastpageref*{pagesLTS.Alph.local}) = % +\lastpageref*{LastPages} pages.\\ + +\textbf{Trademarks} appear throughout this example without any +trademark symbol; they are the property of their respective +trademark owner. There is no intention of infringement; the +usage is to the benefit of the trademark owner.\\ + +\textbf{Tip}: Use \textit{logical page numbers} for +the display of the pdf!\\ +(In Adobe Reader X (10.1.0): \underline{E}dit $>$ +Prefere\underline{n}ces (Ctrl+k) $>$ Page Display $>$ +Page Content and Information $>$ Use logical page +\nolinebreak{\underline{n}umbers.)}\\ + +You want negative page numbers? Not only arabic, but even roman, +Roman, alph, Alph or fnsymbol ones? No problem, e.\,g. just give a\\ +\verb|\addtocounter{page}{|-\textit{some number}\verb|}| in the +source code of this example file (or uncomment the prepared line)! + +\bigskip + +Save per page about $200\unit{ml}$ water, $2\unit{g}$ CO$_{2}$ +and $2\unit{g}$ wood:\\ +Therefore please print only if this is really necessary. + +\pagebreak + +\tableofcontents + +\newpage + +\pagenumbering{roman} +%% in case the page numbering is changed before, +%% otherwise pagesLTS.current.local.roman on this page +%% would be undefined + +\section{roman} + +\noindent (\texttt{roman} page numbering was started before, +becaue the page numbering scheme was needed to start at +the first page, of course.)\\ + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): +\lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ +You can get this also in other formats: +\roman{CurrentPage}, \Roman{CurrentPage}, \arabic{CurrentPage}, +\fnsymbol{CurrentPage}, \alph{CurrentPage}, \Alph{CurrentPage}. + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ +You can get also this in other formats, too: +\roman{pagesLTS.current.local.roman}, \Roman{pagesLTS.current.local.roman}, +\arabic{pagesLTS.current.local.roman}, \fnsymbol{pagesLTS.current.local.roman}, +\alph{pagesLTS.current.local.roman}, \Alph{pagesLTS.current.local.roman}, +but probably it only makes sense if page numbering scheme and format are +the same, e.\,g.\\ +\verb|\Roman{pagesLTS.current.local.Roman}|\\ +or \verb|\Alph{pagesLTS.current.local.Alph}|. \verb|\arabic{...}| could +make sense even if combined with another page numbering scheme. +And this is exactly what \verb|\theCurrentPageLocal| does:\\ +\nolinebreak{\verb|\def\theCurrentPageLocal{\arabic{pagesLTS.current.local.\pagesLTS@pnc}}|.}\\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +When the option \texttt{pagecontinue=false} is used with the +\textsf{pageslts} package, the \verb|\lastpageref{pagesLTS.Roman}| will +point to the same page as before, but this will have a lower number.\\ +The \verb|\lastpageref{pagesLTS.Roman.local}| will not change, +because the number of pages does not change (only the page numbers).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{lastpage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-3] + +\newpage + +\pagenumbering{Roman} + +\section{Roman\label{Roman}} +\subsection{Common Roman page numbering} + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): +\lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-4] + +\newpage + +\subsection{Last page of first Roman sector} +\verb|\lastpageref{pagesLTS.Roman}| does \textbf{not} +refer to this page (but there: \lastpageref{pagesLTS.Roman}), +because the option \texttt{pagecontinue=true} +was chosen. When a reference to this page is wanted,\\ +\verb|\lastpageref{pagesLTS.Roman.1}| can be used: \lastpageref{pagesLTS.Roman.1}.\\ + +\bigskip +There are \lastpages{Roman}{1}~pages (\verb|\lastpages{Roman}{1}|) +in this first Roman sector.\\ +The Roman page numbering scheme is continued later in section~\ref{Roman2})! + +\newpage + +\pagenumbering{arabic} + +\section{arabic} + +\subsection{Standard page numbering} + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): +\lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pagesLTS} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-4] +\newpage + +\subsection[Empty page style]{Also an empty page style is no problem\ % +for the current or total page count} + +\bigskip + +\thispagestyle{empty} + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): +\lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-4] + +\newpage + +\subsection[addtocounter, setcounter]{Neither\ % +\texttt{\textbackslash addtocounter\{page\}} nor\ % +\texttt{\textbackslash setcounter\{page\}} is a problem for the\ % +current or total page numbers} + +(Here is an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| +in the source code.)\\ +\addtocounter{page}{\pagesLTSexampleArabic} + +\noindent The page (from \verb|\thepage| command): \thepage \\ + +\noindent Current page (from \verb|\theCurrentPage|\ % +command), i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (from \verb|\theCurrentPageLocal|\ % +command), i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal\\ + +\noindent Last page's number (LastPages): \lastpageref{LastPages}{\hskip3em } +(= total number of pages)\\ + +\lipsum[1-7] + +\newpage + +\pagenumbering{fnsymbol} + +\section{fnsymbol} + +Adobe Reader X (10.1.0) does not show the correct page names +for all pages with \texttt{fnsymbol} page numbering scheme: + +\begin{center} +\begin{tabular}{c|c|c|c|c} +page & page & \multicolumn{2}{c|}{shown by the Reader} & with \textsf{alphalph} package and \\ +number & name & without & with & with \textsf{pageslts} package \\ + & & \multicolumn{2}{c|}{\textsf{alphalph} \&\ \textsf{pageslts}} & with \texttt{fnsymbolmult} option \\ \hline +$-2$ & \texttt{LaTeX Error} & & \ensuremath {-\ } & \ensuremath {- \dagger } \\ +$-1$ & \texttt{LaTeX Error} & & \ensuremath {- *} & \ensuremath {- *} \\ + $0$ & (ignored by \LaTeX) & & 0 & 0 \\ + $1$ & \ensuremath {*} & * & \ensuremath {*} & \ensuremath {*} \\ + $2$ & \ensuremath {\dagger } & & & \ensuremath {\dagger } \\ + $3$ & \ensuremath {\ddagger } & & & \ensuremath {\ddagger } \\ + $4$ & \ensuremath {\mathsection } & & & \ensuremath {\mathsection } \\ + $5$ & \ensuremath {\mathparagraph } & & & \ensuremath {\mathparagraph } \\ + $6$ & \ensuremath {\delimiter "026B30D } & "026B30D & \ensuremath {**} & \ensuremath {**} \\ + $7$ & \ensuremath {**} & ** & & \ensuremath {\dagger \dagger } \\ + $8$ & \ensuremath {\dagger \dagger } & & & \ensuremath {\ddagger \ddagger } \\ + $9$ & \ensuremath {\ddagger \ddagger } & & & \ensuremath {\mathsection \mathsection } \\ +$10$ & \texttt{LaTeX Error} & & & \ensuremath {\mathparagraph \mathparagraph }\\ +$11$ & \texttt{LaTeX Error} & & \ensuremath {***} & \ensuremath {***} \\ +$12$ & \texttt{LaTeX Error} & & & \ensuremath {\dagger \dagger \dagger } \\ +\end{tabular} +\end{center} + +\noindent and so on, while at least the (\ldots\ of \ldots ) part +of the page number is displayed correctly.\\ + +\bigskip + +Without option \texttt{fnsymbolmult=true} of the \textsf{pageslts} package +(and the help of \textsc{Heiko Oberdiek}'s \textsf{alphalph} package), +after page~9 (\textquotedblleft \ensuremath {\ddagger \ddagger }\textquotedblright ) +(and also for negative page numbers) there would just appear a +\begin{quote} +\begin{verbatim} +LaTeX Error: Counter too large +See the LaTeX manual or LaTeX Companion for explanation. +You've lost some text. Try typing <return> to proceed. +If that doesn't work, type X <return> to quit. +\end{verbatim} +\end{quote} +Now the page numbers after 5 (\ensuremath {\mathparagraph }) are +continued with the doubled \textquotedblleft number\textquotedblright\ of +the first, second, third,\ldots\ page (\ensuremath {**}, +\ensuremath {\dagger \dagger }, \ensuremath {\ddagger \ddagger }, +\ensuremath {\mathsection \mathsection }, +\ensuremath {\mathparagraph \mathparagraph }), +and after the tenth page the \textquotedblleft number\textquotedblright\ is +tripled (\ensuremath {***}, \ensuremath {\dagger \dagger \dagger },\ldots). +Page zero is named 0 and negative pages just named like the positive ones +with addition of a minus sign~($-$). + +\bigskip + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): +\lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-60] + +\newpage + +\pagenumbering{Roman} + +\section{Roman - again!\label{Roman2}} + +The page number would start with \textquotedblleft I\textquotedblright\ again -- +but for the \textsf{pageslts} package (with option \texttt{pagecontinue=true}, +or with option just \texttt{pagecontinue}, or even just +\nolinebreak{with\textbf{out}} option \texttt{pagecontinue=false}). +This package remembered the (\arabic{pagesLTS.double.Roman}-1)\footnote{% +OK, here you have to compute this value for yourself, but\ % +subtracting one should be managable for \TeX{}nicians.} pages already +done in Roman output, and therefore continues with page +\textquotedblleft \thepage \textquotedblright .\\ +If you want to start with \textquotedblleft I\textquotedblright\ all +over again, you will have two pages with the same name, +but nevertheless you can do this by using option \texttt{pagecontinue=false} +or a \verb|\setcounter{page}{1}|\ here (not demonstrated in this example file).\\ + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): + \lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never +\verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-6] + +\newpage + +\verb|\lastpageref{pagesLTS.Roman}| does \textbf{not} +refer to this page (but there: \lastpageref{pagesLTS.Roman}), +because the option \texttt{pagecontinue=true} +was chosen. When a reference to this page is wanted,\\ +\verb|\lastpageref{pagesLTS.Roman.2}| can be used: \lastpageref{pagesLTS.Roman.2}.\\ + +\bigskip +There are \lastpages{Roman}{2}~pages (\verb|\lastpages{Roman}{2}|) in this +second Roman sector.\\ +The Roman page numbering scheme is continued later in section~\ref{Roman3})! + +\newpage + +\pagenumbering{alph} + +\section{alph\label{alph}} + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): + \lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-4] + +\newpage + +Without option \texttt{alphMult=ab} of the \textsf{pageslts} (and the help of +\textsc{Heiko Oberdiek's} \textsf{alphalph} package), after page +\textquotedblleft z\textquotedblright\ there would just appear a +\begin{quote} +\begin{verbatim} +LaTeX Error: Counter too large +See the LaTeX manual or LaTeX Companion for explanation. +You've lost some text. Try typing <return> to proceed. +If that doesn't work, type X <return> to quit. +\end{verbatim} +\end{quote} +Now the page numbers are continued aa, ab, ac,\ldots\ (aa, bb, cc,\ldots\ is +also possible, see the \textsf{pageslts} documentation).\\ +To demonstrate this, we add a\\ +\verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}|\\ +in the source code here. + +\addtocounter{page}{\pagesLTSexamplealph} + +\bigskip + +\lipsum[1-18] + +\newpage + +\pagenumbering{Roman} + +\section{Roman - third time!\label{Roman3}} + +The page number would start with +\textquotedblleft I\textquotedblright\ again -- but +for the \textsf{pageslts} package (with option \texttt{pagecontinue=true}, +or with option just \texttt{pagecontinue}, or even just +\nolinebreak{with\textbf{out}} option \texttt{pagecontinue=false}). +This package remembered the +(\arabic{pagesLTS.double.Roman}-1)\footnote{OK, here\ % +you have to compute this value for yourself, but\ % +subtracting one should be managable for \TeX nicians.} pages already +done in Roman output, and therefore continues with page +\textquotedblleft \thepage \textquotedblright .\\ +If you want to start with \textquotedblleft I\textquotedblright\ all +over again, you will have (at least) two pages with the same name, +but nevertheless you can do this by using option +\texttt{pagecontinue=false} instead of \texttt{pagecontinue=true} +(not demonstrated here).\\ + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): + \lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-3] + +\newpage + +\lastpageref{pagesLTS.Roman} +(\verb|\lastpageref{pagesLTS.Roman}|) +\textbf{does} refers to this page, because the option +\texttt{pagecontinue=true} was chosen. Also\\ +\verb|\lastpageref{pagesLTS.Roman.3}| can be used: \lastpageref{pagesLTS.Roman.3}.\\ + +\bigskip + +There are \lastpages{Roman}{3}~pages (\verb|\lastpages{Roman}{3}|) in this +third Roman sector.\\ + +\newpage + +\pagenumbering{Alph} + +\section{Alph} + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): + \lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-3] + +Without option \texttt{alphMulti=AB} of the \textsf{pageslts} (and the help of +\textsc{Heiko Oberdiek's} \textsf{alphalph} package), after page +\textquotedblleft Z\textquotedblright\ there would just appear a +\begin{quote} +\begin{verbatim} +LaTeX Error: Counter too large +See the LaTeX manual or LaTeX Companion for explanation. +You've lost some text. Try typing <return> to proceed. +If that doesn't work, type X <return> to quit. +\end{verbatim} +\end{quote} +Now the page numbers are continued AA, AB, AC,\ldots\ (AA, BB, CC,\ldots\ is +also possible, see the \textsf{pageslts} documentation).\\ +This is not demonstrated here, but see section~\ref{alph}. + +\newpage + +\section{The End} + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): + \lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\medskip + +\noindent Page \thepage\ (\theCurrentPage; local: \theCurrentPageLocal) of % +\lastpageref{pagesLTS.roman} (\lastpageref{pagesLTS.roman.local}) + % +\lastpageref{pagesLTS.Roman} (\lastpageref{pagesLTS.Roman.local}) + % +\lastpageref{pagesLTS.arabic} (\lastpageref{pagesLTS.arabic.local}) + % +\lastpageref{pagesLTS.fnsymbol} (\lastpageref{pagesLTS.fnsymbol.local}) + % +\lastpageref{pagesLTS.alph} (\lastpageref{pagesLTS.alph.local}) + % +\lastpageref{pagesLTS.Alph} (\lastpageref{pagesLTS.Alph.local}) = % +\lastpageref{LastPages} pages. + +\end{document} +\endinput +%% +%% End of file `pageslts-example.tex'. diff --git a/Master/texmf-dist/doc/latex/pageslts/pageslts.pdf b/Master/texmf-dist/doc/latex/pageslts/pageslts.pdf Binary files differnew file mode 100644 index 00000000000..de9ca34db9e --- /dev/null +++ b/Master/texmf-dist/doc/latex/pageslts/pageslts.pdf diff --git a/Master/texmf-dist/source/latex/pageslts/ltxdoc.cfg b/Master/texmf-dist/source/latex/pageslts/ltxdoc.cfg new file mode 100644 index 00000000000..5d637924daf --- /dev/null +++ b/Master/texmf-dist/source/latex/pageslts/ltxdoc.cfg @@ -0,0 +1,120 @@ +%% +%% This is file `ltxdoc.cfg', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pageslts.dtx (with options: `ltxdoc') +%% +%% This is a generated file. +%% +%% IMPORTANT NOTICE: +%% On the first page backslash pagenumbering should be called +%% (with the appropriate argument out of e.g. +%% * roman - Lowercase Roman numerals: i, ii, iii, iv,... +%% * Roman - Uppercase Roman numerals: I, II, III, IV,... +%% * arabic - Arabic numerals: 1, 2, 3, 4,... +%% * alph - Lowercase letters: a, b, c, d,... +%% * Alph - Uppercase letters: A, B, C, D,... +%% * fnsymbol - Footnote symbols: *, ^^86 (ddagger), ^^87 (dddagger), +%% ^^a7 (mathsection),... +%% ). 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 +%% of backslash pagenumbering, but in that case this package does not +%% see the change in the page numbering scheme and will make mistakes. +%% The package takes options. +%% +%% The usual disclaimers apply: +%% 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 +%% and the latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainer of this work is H.-Martin Muench +%% (Martin dot Muench at Uni-Bonn dot de). +%% +%% This package first started as a revision of the lastpage +%% package of Jeffrey P. Goldberg (jeffrey+news at goldmark dot org), +%% but it became obviouse that a replacement was needed. +%% +%% This work consists of the main source file pageslts.dtx +%% and the derived files +%% pageslts.sty, pageslts.pdf, pageslts.ins, pageslts.drv, +%% pageslts-example.tex. +%% +\NeedsTeXFormat{LaTeX2e}[2009/09/24] +\ProvidesFile{ltxdoc.cfg}[2011/08/08 v1.2a configuration file for pageslts (HMM)] + %% Code from original ltxdoc.cfg [2007/01/08 latex-tds: ltxdoc.cls configuration (HO)], %% + % copyrighted 2006, 2007 Heiko Oberdiek, part of project `latex-tds'. + % That file may be distributed and/or modified under the + % conditions of the LaTeX Project Public License, either version 1.3 + % of this license or (at your option) any later version. + % The latest version of this license is in + % http://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. + % That work has the LPPL maintenance status `maintained'. + % The Current Maintainer of that work is Heiko Oberdiek. + \PassOptionsToClass{a4paper}{article} + \AtEndOfClass{% + \RequirePackage[numbered]{hypdoc}[2010/03/26]% v1.9 + \pdfstringdefDisableCommands{% + \let\env\relax % longtable.dtx + \let\mytt\relax % tabularx.dtx + }% + \addtolength{\topmargin}{-10mm}% + \addtolength{\textheight}{20mm}% + % Depending on the page style, the head or foot area + % are put into the text area. + % Usually the page style is the default "plain". + % tools/verbatim.dtx uses "myheadings". + \def\string@plain{plain}% + \def\string@myheadings{myheadings}% + \def\current@pagestyle{plain}% + \let\ltxdoc@cfg@pagestyle\pagestyle + \def\pagestyle#1{% + \def\current@pagestyle{#1}% + \ltxdoc@cfg@pagestyle{#1}% + }% + \edef\ltxdoc@cfg@jobname{\jobname}% + \def\ltxdoc@cfg@longtable{longtable}% + \@onelevel@sanitize\ltxdoc@cfg@longtable + \ifx\ltxdoc@cfg@jobname\ltxdoc@cfg@longtable + \def\current@pagestyle{both}% + \fi + \let\ltxdoc@cfg@document\document + \def\document{% + \ifx\current@pagestyle\string@plain + \addtolength{\textheight}{\headheight}% + \addtolength{\textheight}{\headsep}% + \setlength{\headheight}{0pt}% + \setlength{\headsep}{0pt}% + \global\textheight\textheight + \global\headheight\headheight + \global\headsep\headsep + \fi + \ifx\current@pagestyle\string@myheadings + \addtolength{\textheight}{\footskip}% + \global\textheight\textheight + \fi + \ltxdoc@cfg@document + }% + %% End of code from original ltxdoc.cfg [2007/01/08 latex-tds: ltxdoc.cls configuration (HO)] %% + %% Place additional code here. %% + } + +\endinput +%% +%% End of file `ltxdoc.cfg'. diff --git a/Master/texmf-dist/source/latex/pageslts/pageslts.drv b/Master/texmf-dist/source/latex/pageslts/pageslts.drv new file mode 100644 index 00000000000..212f45fddb5 --- /dev/null +++ b/Master/texmf-dist/source/latex/pageslts/pageslts.drv @@ -0,0 +1,96 @@ +%% +%% This is file `pageslts.drv', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pageslts.dtx (with options: `driver') +%% +%% This is a generated file. +%% +%% IMPORTANT NOTICE: +%% On the first page backslash pagenumbering should be called +%% (with the appropriate argument out of e.g. +%% * roman - Lowercase Roman numerals: i, ii, iii, iv,... +%% * Roman - Uppercase Roman numerals: I, II, III, IV,... +%% * arabic - Arabic numerals: 1, 2, 3, 4,... +%% * alph - Lowercase letters: a, b, c, d,... +%% * Alph - Uppercase letters: A, B, C, D,... +%% * fnsymbol - Footnote symbols: *, ^^86 (ddagger), ^^87 (dddagger), +%% ^^a7 (mathsection),... +%% ). 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 +%% of backslash pagenumbering, but in that case this package does not +%% see the change in the page numbering scheme and will make mistakes. +%% The package takes options. +%% +%% The usual disclaimers apply: +%% 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 +%% and the latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainer of this work is H.-Martin Muench +%% (Martin dot Muench at Uni-Bonn dot de). +%% +%% This package first started as a revision of the lastpage +%% package of Jeffrey P. Goldberg (jeffrey+news at goldmark dot org), +%% but it became obviouse that a replacement was needed. +%% +%% This work consists of the main source file pageslts.dtx +%% and the derived files +%% pageslts.sty, pageslts.pdf, pageslts.ins, pageslts.drv, +%% pageslts-example.tex. +%% +\NeedsTeXFormat{LaTeX2e}[2009/09/24] +\ProvidesFile{pageslts.drv}[2011/08/08 v1.2a + Refers to special pages' numbers/names (HMM)]% +\documentclass[landscape]{ltxdoc}[2007/11/11]% v2.0u +\usepackage{geometry}[2010/09/12]% v5.6 +\usepackage{holtxdoc}[2011/02/04]% v0.21 +%% pageslts may work with earlier versions of LaTeX2e and those +%% class and packages, but this was not tested. +%% Please consider updating your LaTeX, class, and packages +%% to the most recent version (if they are not already the most +%% recent version). +\hypersetup{% + pdfsubject={Refers to special pages' numbers/names (HMM)},% + pdfkeywords={LaTeX, pageslts, pagesLTS, lastpage, page number, page name, Hans-Martin Muench},% + pdfencoding=auto,% + pdflang={en},% + breaklinks=true,% + linktoc=all,% + pdfstartview=FitH,% + pdfpagelayout=OneColumn,% + bookmarksnumbered=true,% + bookmarksopen=true,% + bookmarksopenlevel=2,% + pdfmenubar=true,% + pdftoolbar=true,% + pdfwindowui=true,% + pdfnewwindow=true% +} +\usepackage{ulem}[2011/03/18]% no version given in the ulem.sty file +\setlength\hfuzz{1pt} % Ignore slight overfulls. +\CodelineIndex +\EnableCrossrefs +\hyphenation{created every-thing ignored} +\gdef\unit#1{\mathord{\thinspace\mathrm{#1}}}% +\begin{document} + \DocInput{pageslts.dtx}% +\end{document} +\endinput +%% +%% End of file `pageslts.drv'. diff --git a/Master/texmf-dist/source/latex/pageslts/pageslts.dtx b/Master/texmf-dist/source/latex/pageslts/pageslts.dtx new file mode 100644 index 00000000000..eb2b4e02c55 --- /dev/null +++ b/Master/texmf-dist/source/latex/pageslts/pageslts.dtx @@ -0,0 +1,5274 @@ +% \iffalse meta-comment +% +% pageslts package +% file version: v1.2a +% file date: 2011/08/08 +% documentation date: 2011/08/08 +% +% Copyright (C) 2010, 2011 H.-Martin M\"{u}nch (Martin dot Muench at Uni-Bonn dot de) +% Portions of code copyrighted by other people as marked. +% +% This package first started as a revision of the lastpage +% package of Jeffrey P. Goldberg (jeffrey+news at goldmark dot org), +% but it became obviouse that a replacement was needed. +% +% 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 +% and the latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work is H.-Martin Muench. +% +% This work consists of the main source file pageslts.dtx +% and the derived files +% pageslts.sty, pageslts.ins, pageslts.drv, +% pageslts-example.tex, pageslts.pdf. +% +% Unpacking: +% (a) If pageslts.ins is present: +% tex pageslts.ins +% (b) Without pageslts.ins: +% tex pageslts.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{pageslts.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If pageslts.drv is present: +% (pdf)latex pageslts.drv +% makeindex -s gind.ist pageslts.idx +% (pdf)latex pageslts.drv +% makeindex -s gind.ist pageslts.idx +% (pdf)latex pageslts.drv +% (b) Without pageslts.drv: +% (pdf)latex pageslts.dtx +% makeindex -s gind.ist pageslts.idx +% (pdf)latex pageslts.dtx +% makeindex -s gind.ist pageslts.idx +% (pdf)latex pageslts.dtx +% +% The class ltxdoc loads the configuration file ltxdoc.cfg +% if available. Here you can specify further options, e.g. +% use DIN A4 as paper format: +% \PassOptionsToClass{a4paper}{article} +% +% Installation: +% TDS:tex/latex/pageslts/pageslts.sty +% TDS:doc/latex/pageslts/pageslts.pdf +% TDS:doc/latex/pageslts/pageslts-example.tex +% TDS:source/latex/pageslts/pageslts.dtx +% +%<*ignore> +\begingroup + \def\x{LaTeX2e}% +\expandafter\endgroup +\ifcase 0\ifx\install y1\fi\expandafter + \ifx\csname processbatchFile\endcsname\relax\else1\fi + \ifx\fmtname\x\else 1\fi\relax +\else\csname fi\endcsname +%</ignore> +%<*install> +\input docstrip.tex + +\obeyspaces +\Msg{******************************************************} +\Msg{* Installation *} +\Msg{* Package: pageslts v1.2a 2011/08/08 LaTeX2e package *} +\Msg{* Refers to special pages' numbers/names (HMM) *} +\Msg{******************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +IMPORTANT NOTICE: +On the first page backslash pagenumbering should be called +(with the appropriate argument out of e.g. + * roman - Lowercase Roman numerals: i, ii, iii, iv,... + * Roman - Uppercase Roman numerals: I, II, III, IV,... + * arabic - Arabic numerals: 1, 2, 3, 4,... + * alph - Lowercase letters: a, b, c, d,... + * Alph - Uppercase letters: A, B, C, D,... + * fnsymbol - Footnote symbols: *, (ddagger), (dddagger), + § (mathsection),... +). 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 +of backslash pagenumbering, but in that case this package does not +see the change in the page numbering scheme and will make mistakes. +The package takes options. + +The usual disclaimers apply: +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 +and the latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3c or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +The Current Maintainer of this work is H.-Martin Muench +(Martin dot Muench at Uni-Bonn dot de). + +This package first started as a revision of the lastpage +package of Jeffrey P. Goldberg (jeffrey+news at goldmark dot org), +but it became obviouse that a replacement was needed. + +This work consists of the main source file pageslts.dtx +and the derived files + pageslts.sty, pageslts.pdf, pageslts.ins, pageslts.drv, + pageslts-example.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{pageslts.ins}{\from{pageslts.dtx}{install}}% + \file{pageslts.drv}{\from{pageslts.dtx}{driver}}% + \file{ltxdoc.cfg}{\from{pageslts.dtx}{ltxdoc}}% + \usedir{tex/latex/pageslts}% + \file{pageslts.sty}{\from{pageslts.dtx}{package}}% + \usedir{doc/latex/pageslts}% + \file{pageslts-example.tex}{\from{pageslts.dtx}{example}}% +} + +\obeyspaces +\Msg{**************************************************************} +\Msg{* *} +\Msg{* To finish the installation you have to move the following *} +\Msg{* file into a directory searched by TeX: *} +\Msg{* *} +\Msg{* pageslts.sty *} +\Msg{* *} +\Msg{* To produce the documentation run the file `pageslts.drv' *} +\Msg{* through (pdf)LaTeX, e.g. *} +\Msg{* pdflatex pageslts.drv *} +\Msg{* makeindex -s gind.ist pageslts.idx *} +\Msg{* pdflatex pageslts.drv *} +\Msg{* makeindex -s gind.ist pageslts.idx *} +\Msg{* pdflatex pageslts.drv *} +\Msg{* *} +\Msg{* At least three runs are necessary e. g. to get the *} +\Msg{* references right! *} +\Msg{* *} +\Msg{* Happy TeXing! *} +\Msg{* *} +\Msg{**************************************************************} + +\endbatchfile + +%</install> +%<*ignore> +\fi +%</ignore> +% +% \section{The documentation driver file} +% +% The next bit of code contains the documentation driver file for +% \TeX{}, i.\,e., the file that will produce the documentation you +% are currently reading. It will be extracted from this file by the +% \texttt{docstrip} programme. That is, run \LaTeX\ on \texttt{docstrip} +% and specify the \texttt{driver} option when \texttt{docstrip} +% asks for options. +% +% \begin{macrocode} +%<*driver> +\NeedsTeXFormat{LaTeX2e}[2009/09/24] +\ProvidesFile{pageslts.drv}[2011/08/08 v1.2a + Refers to special pages' numbers/names (HMM)]% +\documentclass[landscape]{ltxdoc}[2007/11/11]% v2.0u +\usepackage{geometry}[2010/09/12]% v5.6 +\usepackage{holtxdoc}[2011/02/04]% v0.21 +%% pageslts may work with earlier versions of LaTeX2e and those +%% class and packages, but this was not tested. +%% Please consider updating your LaTeX, class, and packages +%% to the most recent version (if they are not already the most +%% recent version). +\hypersetup{% + pdfsubject={Refers to special pages' numbers/names (HMM)},% + pdfkeywords={LaTeX, pageslts, pagesLTS, lastpage, page number, page name, Hans-Martin Muench},% + pdfencoding=auto,% + pdflang={en},% + breaklinks=true,% + linktoc=all,% + pdfstartview=FitH,% + pdfpagelayout=OneColumn,% + bookmarksnumbered=true,% + bookmarksopen=true,% + bookmarksopenlevel=2,% + pdfmenubar=true,% + pdftoolbar=true,% + pdfwindowui=true,% + pdfnewwindow=true% +} +\usepackage{ulem}[2011/03/18]% no version given in the ulem.sty file +\setlength\hfuzz{1pt} % Ignore slight overfulls. +\CodelineIndex +%\PageIndex % instead of \CodelineIndex to get the page numbers +\EnableCrossrefs +%\DisableCrossrefs % Say \DisableCrossrefs if index is ready. +%\RecordChanges % Gather update information. +%\OnlyDescription % Comment out for implementation details. +\hyphenation{created every-thing ignored} +\gdef\unit#1{\mathord{\thinspace\mathrm{#1}}}% +\begin{document} + \DocInput{pageslts.dtx}% +\end{document} +%</driver> +% \end{macrocode} +% +% \begin{macrocode} +%<*ltxdoc> +\NeedsTeXFormat{LaTeX2e}[2009/09/24] +\ProvidesFile{ltxdoc.cfg}[2011/08/08 v1.2a configuration file for pageslts (HMM)] + %% Code from original ltxdoc.cfg [2007/01/08 latex-tds: ltxdoc.cls configuration (HO)], %% + % copyrighted 2006, 2007 Heiko Oberdiek, part of project `latex-tds'. + % That file may be distributed and/or modified under the + % conditions of the LaTeX Project Public License, either version 1.3 + % of this license or (at your option) any later version. + % The latest version of this license is in + % http://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. + % That work has the LPPL maintenance status `maintained'. + % The Current Maintainer of that work is Heiko Oberdiek. + \PassOptionsToClass{a4paper}{article} + \AtEndOfClass{% + \RequirePackage[numbered]{hypdoc}[2010/03/26]% v1.9 + \pdfstringdefDisableCommands{% + \let\env\relax % longtable.dtx + \let\mytt\relax % tabularx.dtx + }% + \addtolength{\topmargin}{-10mm}% + \addtolength{\textheight}{20mm}% + % Depending on the page style, the head or foot area + % are put into the text area. + % Usually the page style is the default "plain". + % tools/verbatim.dtx uses "myheadings". + \def\string@plain{plain}% + \def\string@myheadings{myheadings}% + \def\current@pagestyle{plain}% + \let\ltxdoc@cfg@pagestyle\pagestyle + \def\pagestyle#1{% + \def\current@pagestyle{#1}% + \ltxdoc@cfg@pagestyle{#1}% + }% + \edef\ltxdoc@cfg@jobname{\jobname}% + \def\ltxdoc@cfg@longtable{longtable}% + \@onelevel@sanitize\ltxdoc@cfg@longtable + \ifx\ltxdoc@cfg@jobname\ltxdoc@cfg@longtable + \def\current@pagestyle{both}% + \fi + \let\ltxdoc@cfg@document\document + \def\document{% + \ifx\current@pagestyle\string@plain + \addtolength{\textheight}{\headheight}% + \addtolength{\textheight}{\headsep}% + \setlength{\headheight}{0pt}% + \setlength{\headsep}{0pt}% + \global\textheight\textheight + \global\headheight\headheight + \global\headsep\headsep + \fi + \ifx\current@pagestyle\string@myheadings + \addtolength{\textheight}{\footskip}% + \global\textheight\textheight + \fi + \ltxdoc@cfg@document + }% + %% End of code from original ltxdoc.cfg [2007/01/08 latex-tds: ltxdoc.cls configuration (HO)] %% + %% Place additional code here. %% + } + +%</ltxdoc> +% \end{macrocode} +% +% \fi +% +% \CheckSum{1753} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \GetFileInfo{pageslts.drv} +% +% \begingroup +% \def\x{\#,\$,\^,\_,\~,\ ,\&,\{,\},\%}% +% \makeatletter +% \@onelevel@sanitize\x +% \expandafter\endgroup +% \expandafter\DoNotIndex\expandafter{\x} +% \expandafter\DoNotIndex\expandafter{\string\ } +% \begingroup +% \makeatletter +% \lccode`9=32\relax +% \lowercase{%^^A +% \edef\x{\noexpand\DoNotIndex{\@backslashchar9}}%^^A +% }%^^A +% \expandafter\endgroup\x +% \DoNotIndex{\documentclass,\usepackage,\hfuzz,\small,\tt,\begin,\end} +% \DoNotIndex{\NeedsTeXFormat,\filedate,\fileversion,\DoNotIndex} +% \DoNotIndex{\def,\edef,\divide,\advance,\multiply} +% \DoNotIndex{\",\-,\,,\\,\hskip,\H,\ldots,\indent,\noindent,\textbackslash} +% \DoNotIndex{\textbf,\textit,\textquotedblleft,\textquotedblright,\textsf,\texttt} +% \DoNotIndex{\ifthenelse,\and,\equal,\whiledo,\if,\ifx,\ifnum,\else,\fi} +% \DoNotIndex{\CodelineIndex,\EnableCrossrefs,\DisableCrossrefs} +% \DoNotIndex{\DocInput,\AltMacroFont} +% \DoNotIndex{\@ne,\tw@,\thr@@} +% \DoNotIndex{\newpage,\pagebreak,\newline,\linebreak,\nolinebreak} +% \DoNotIndex{\lipsum,\MessageBreak,\pageref,\protect} +% \DoNotIndex{\RecordChanges,\OnlyDescription} +% \DoNotIndex{\smallskip,\medskip,\bigskip,\space} +% \DoNotIndex{\item} +% \DoNotIndex{\plainTeX,\TeX,\LaTeX,\pdfLaTeX} +% \DoNotIndex{option: pagecontinue} +% \DoNotIndex{{pagesLTS.arabic, pagesLTS.roman, pagesLTS.Roman, pagesLTS.alph, pagesLTS.Alph,\ldots }} +% +% \title{The \xpackage{pageslts} package\footnote{This file% +% has version number v1.2a, last% +% revised 2011/08/08, documentation dated 2011/08/08.}} +% \author{H.-Martin M\"{u}nch\\ +% (\texttt{Martin dot Muench at Uni-Bonn dot de})} +% \date{2011/08/08} +% +% \maketitle +% +% \begin{abstract} +% This package puts the labels \texttt{LastPage} +% (|\AtEndDocument|) and \texttt{VeryLastPage} (|\AfterLastShipout|) +% into the \xfile{.aux} file, allowing the user to refer +% to the (very) last page of a document. This might be +% particularly useful in places like headers or footers. +% When more than one page numbering scheme is used, +% these references do not give the total \textit{number} of pages. +% For this case the label \texttt{LastPages} is introduced. +% Additionally, at the last page of each page numbering +% scheme a label \texttt{pagesLTS.<numbering scheme>} is +% placed, where \texttt{<numbering scheme>} is e.\,g. +% arabic, roman, Roman, alph, or Alph. For fnsymbol +% please use |\lastpageref{pagesLTS.fnsymbol}| +% instead of |\pageref{pagesLTS.fnsymbol}|. +% When the same numbering scheme is used twice, +% the page numbers are either reset to one or continued +% automatically, depending on the option given when the package +% is called. The command |\theCurrentPage| +% prints the current total/absolute page number -- in contrast to +% |\thepage|, which gives only the page +% \textit{name} in the current page numbering scheme. +% |\theCurrentPageLocal| gives the current +% number of pages in the current page numbering scheme. +% |\thepage| and |\theCurrentPageLocal| are different e.\,g. +% when |\addtocounter{page}{|\ldots|}| or +% |\setcounter{page}{|\ldots|}| were used. +% At the first page of the document a label \texttt{pagesLTS.0} is +% created. This label can be referred to, too. +% Further labels are provided for special cases.\\ +% The \xpackage{alphalph} package is supported, i.\,e. +% page numbers alph or Alph $>26$ and fnyambol $>9$ +% can be used (with according options set). Even zero +% and negative page numbers can be used with \texttt{arabic}, +% \texttt{alph}, \texttt{Alph}, \texttt{roman}, \texttt{Roman}, +% and \texttt{fnsymbol} page numbering (with \xpackage{alphalph} package +% and according options).\\ +% |\pageref*| and |\lastpageref*|, for using \xpackage{hyperref} +% but suppressing links, are supported. +% \end{abstract} +% +% \bigskip +% +% \noindent \textbf{Please make sure to first deinstall the obsolete +% \xpackage{pagesLTS} package before installing this \xpackage{pageslts} +% package!}\\ +% (There is at least one operating system which otherwise automatically +% renames \xfile{pageslts} to \xfile{pagesLTS}.) +% +% \bigskip +% +% \noindent Right after |\begin{document}| a |\pagenumbering{|\ldots|}| should +% be called -- with the appropriate argument out of e.\,g.\\ +% arabic (Arabic numerals: 1, 2, 3, 4,\ldots),\\ +% roman (Lowercase Roman numerals: i, ii, iii, iv,\ldots), +% Roman (Uppercase Roman numerals: I, II, III, IV,\ldots),\\ +% alph (Lowercase letters: a, b, c, d,\ldots), +% Alph (Uppercase letters: A, B, C, D,\ldots),\\ +% fnsymbol (Footnote symbols: $*$, $\dagger $, $\ddagger $, $\mathsection $,\ldots). +% +% \bigskip +% +% \noindent This package first started as a revision of the +% \xpackage{lastpage} package of \textbf{Jeffrey P. Goldberg} (Thanks!), +% but then it became obviouse that a replacement was needed. +% +% \bigskip +% +% \noindent Disclaimer for web links: The author is not responsible for any contents +% referred to in this work unless he has full knowledge of illegal contents. +% If any damage occurs by the use of information presented there, only the +% author of the respective pages might be liable, not the one who has referred +% to these pages. +% +% \bigskip +% +% \noindent Save per page about $200\unit{ml}$ water, +% $2\unit{g}$ CO$_{2}$ and $2\unit{g}$ wood: +% Therefore please print only if this is really necessary. +% +% \bigskip +% +% \tableofcontents +% +% \newpage +% +% \section{Introduction} +% +% \indent This package puts the labels \texttt{LastPage} +% (|\AtEndDocument|) (same as my \xpackage{LastPage} package, invented by +% \textsc{Jeffrey P. Goldberg}) and \texttt{VeryLastPage} (|\AfterLastShipout|) +% into the \xfile{.aux} file, allowing the user to refer to the (very) +% last page of a document via |\lastpageref{LastPage}| and +% |\lastpageref{VeryLastPage}|. This might be particularly useful in +% places like headers or footers. When more than one page numbering scheme +% is used, these references do not give the total \textit{number} of pages. +% For this case the label \texttt{LastPages} is introduced (similar to the +% label \texttt{TotPages} of the \xpackage{TotPages} package, but +% the label \texttt{LastPages} is set later in the document). +% Additionally, at the last page of each page numbering scheme a label +% \texttt{pagesLTS.<}\textit{numbering scheme}\texttt{>} is placed, +% where \texttt{<}\textit{numbering scheme}\texttt{>} is e.\,g. +% arabic, roman, Roman, alph, or Alph. For fnsymbol please use +% |\lastpageref{pagesLTS.fnsymbol}| instead of |\pageref{pagesLTS.fnsymbol}|. +% When the same numbering scheme is used twice, the page numbers are +% either reset to one or continued automatically, depending on the option +% given when the package is called. The command |\theCurrentPage| prints +% the current total/absolute page number - in contrast to |\thepage|, +% which gives only the page \textit{name} in the current page numbering +% scheme. |\theCurrentPageLocal| gives the current number of pages +% in the current page numbering scheme. |\thepage| and |\theCurrentPageLocal| +% are different e.\,g. when |\addtocounter{page}{|\ldots|}| or +% |\setcounter{page}{|\ldots|}| were used. (See also \LaTeX\ bug~3421: +% 3rd~page is even (twoside, titlepage, abstract), +% \url{http://www.latex-project.org/cgi-bin/ltxbugs2html?category=LaTeX&responsible=anyone&state=anything&keyword=pagenumber&pr=latex%2F3421&search=}.) +% At the first page of the document a label \texttt{pagesLTS.0} is +% created. This label can be referred to, too. Further labels are +% provided for special cases.\\ +% The \xpackage{alphalph} package is supported, i.\,e. page numbers +% \texttt{alph} or \texttt{Alph} $>26$ and \texttt{fnyambol} $>9$ can +% be used (with the according options set). Even zero or negative page +% numbers can be used with \texttt{arabic}, \texttt{alph}, \texttt{Alph}, and +% \texttt{fnsymbol} page numbering (with \xpackage{alphalph} package +% and according options), and zero \texttt{roman} and \texttt{Roman} pages, +% too. +% +% \bigskip +% \noindent Right after |\begin{document}| a |\pagenumbering{|\ldots|}| +% should be called -- with the appropriate argument out of e.\,g.\\ +% arabic (Arabic numerals: 1, 2, 3, 4,\ldots),\\ +% roman (Lowercase Roman numerals: i, ii, iii, iv,\ldots), +% Roman (Uppercase Roman numerals: I, II, III, IV,\ldots),\\ +% alph (Lowercase letters: a, b, c, d,\ldots), +% Alph (Uppercase letters: A, B, C, D,\ldots),\\ +% fnsymbol (Footnote symbols: $*$, $\dagger $, $\ddagger $, $\mathsection $,\ldots). +% +% \bigskip +% \noindent This package first started as a revision of the +% \xpackage{lastpage} package of \textsc{Jeffrey P. Goldberg} (Thanks!), +% but then it became obviouse that a replacement was needed to accomplish +% what this package does. +% +% \bigskip +% \noindent \textbf{Trademarks} appear throughout this documentation +% without any trademark symbol; they are the property of their respective +% trademark owner. There is no intention of infringement; the usage is +% to the benefit of the trademark owner. +% +% \bigskip +% \phantomsection +% \DescribeMacro{logical page numbers} +% \noindent \textbf{Tip}: For the display of the \xfile{pdf}~file use +% \textbf{logical page numbers} together with \xpackage{hyperref}! +% \label{logical page numbers} +% \begin{description} +% \item [-] In Adobe Reader X (10.1.0) enable:\\ +% \underline{E}dit $>$ Prefere\underline{n}ces (Ctrl+k) +% $>$ Page Display $>$ Page Content and Information +% $>$ Use logical page \nolinebreak{\underline{n}umbers\ .} +% +% \item[-] Use the \xpackage{hyperref} package with option |plainpages=false|\,. +% \end{description} +% The display will be e.\,g.\ \textquotedblleft 7~(7~of~9)\textquotedblright, +% or, in case of Roman instead of arabic numbers, +% \textquotedblleft VII~(7~of~9)\textquotedblright, and when different +% page numbers are used (see below) e.\,g. arabic after 10~Roman pages: +% \textquotedblleft 17~(27~of~30)\textquotedblright. +% Please try this with the compiled \xpackage{pageslts-example} file! +% +% \bigskip +% \noindent The name of the \xpackage{pageslts} package refers to +% Last, Total, and page numbering Schemes pages. \xpackage{pagesLTS} +% was a former name of this package. +% +% \pagebreak +% +% \section{Usage} +% +% \indent Just load the package placing +% \begin{quote} +% |\usepackage[<|\textit{options}|>]{pageslts}| +% \end{quote} +% \noindent in the preamble of your \LaTeXe\ source file +% (about |\AtEndDocument| see subsection~\ref{ssec:aed}) +% and place a |\pagenumbering{...}| with appropriate argument +% (e.\,g.~arabic, roman, Roman, fnsymbol, alph, or Alph) +% right behind |\begin{document}| (see subsubsection~\ref{sss:nopnc})!\\ +% +% \indent For example for various draft forms it is desirable to have a +% page reference to the last page, so that e.\,g. page footers can +% contain something like \textquotedblleft page $N$ of $K$\textquotedblright, +% where $N$ is the current page and $K$ is the last page. Once the package +% is loaded, anywhere in the text references can be made to the labels +% \texttt{LastPage}, \texttt{VeryLastPage}, and \texttt{LastPages} +% (most times with |\pageref{...}|, but more save with |\lastpageref{...}|). +% In particular one can use the \xpackage{fancyhdr} or \xpackage{nccfancyhdr} +% package, or redefinitions of the page headings and footings to get +% a reference to the (very) last page.\\ +% \DescribeMacro{\pageref*} +% \DescribeMacro{\lastpageref*} +% If the \xpackage{hyperref} package is used, the references are hyperlinked +% to their aims. If these hyperlinks shall be suppressed, |\pageref*{...}| +% and |\lastpageref*{...}| can be used. +% +% \subsection{Options} +% \DescribeMacro{options} +% \indent The \xpackage{pageslts} package takes the following options: +% +% \subsubsection{pagecontinue\label{sss:pagecontinue}} +% \DescribeMacro{pagecontinue} +% \indent When option \texttt{pagecontinue=false} is \textbf{not} given +% (i.\,e. \texttt{pagecontinue} or \texttt{pagecontinue=true} +% or no \texttt{pagecontinue} option at all), at each +% |\pagenumbering{...}| command the number of the page will be continued +% with the page number following the last page of the same page numbering +% scheme. For example, if there are V~Roman pages in the frontmatter, +% some arabic ones in the mainmatter, and then Roman ones again in the +% backmatter, the last ones will start with VI instead of~I again.\\ +% \indent If you want to start with I (or i, 1, a, A, *,\ldots ) again, +% set option \texttt{pagecontinue=false}. If you want to generally continue +% the numbers, but for some page numbering scheme do not want this, +% use \texttt{pagecontinue=true} and say |\setcounter{page}{1}| +% after |\pagenumbering{...}| for that page numbering scheme. +% +% \subsubsection{alphMult, AlphMulti, fnsymbolmult\label{sss:alphalph}} +% +% \indent The page number printed in +% \nolinebreak{\texttt{fnsymbol}\footnote{% +% \ensuremath {*},% +% \ensuremath {\dagger },% +% \ensuremath {\ddagger },% +% \ensuremath {\mathsection },% +% \ensuremath {\mathparagraph },% +% \ensuremath {\delimiter "026B30D },% +% \ensuremath {**},% +% \ensuremath {\dagger \dagger },% +% \ensuremath {\ddagger \ddagger }}} +% must be $>0$ and $<10$ and those printed in +% \nolinebreak{\texttt{alph}\footnote{a, b, c, d, e, f, g, h,% +% i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z}} and +% \nolinebreak{\texttt{Alph}\footnote{A, B, C, D, E, F, G, H,% +% I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z}} must +% be $>0$ and $<27$. After page~Z\quad \LaTeX\ \textit{should} +% continue with AA, AB, AC,\ldots\ Some people prefer +% AA, BB, CC,\ldots, but in hexadecimal it is $AA_{16}=170_{10}$ +% and $171_{10}=AB_{16}$, whereas $BB_{16}=187_{10}$. In any way +% it should continue at all (maybe even with an user option to +% choose between the two continuations), but instead only gives +% an error: +% \begin{quote} +% |LaTeX Error: Counter too large|\\ +% |See the LaTeX manual or LaTeX Companion for explanation.|\\ +% |You've lost some text. Try typing <return> to proceed.|\\ +% |If that doesn't work, type X <return> to quit.| +% \end{quote} +% But thanks to the \xpackage{alphalph} package by \textsc{Heiko Oberdiek} +% these limitation no longer hold. With his |\erroralph| command +% now even negative or zero page +% \textquotedblleft numbers\textquotedblright\ are possible.\\ +% +% \DescribeMacro{alphMult} +% The string option \texttt{alphMult} takes three values: |ab|, |bb|, |0|: +% \begin{description} +% \item[ab] After page z, the page +% \textquotedblleft numbers\textquotedblright\ continue with +% aa, ab, ac, ad,\ldots, fxshrxw (the default), and before a with +% 0, -a, -b,\ldots, -z, -aa, -ab,\ldots, -fxshrxw ($=-21\,474\,836\,47$). +% \item[bb] After page z, the page +% \textquotedblleft numbers\textquotedblright\ continue with +% aa, bb, cc, dd,\ldots, and before a with +% 0, -a, -b,\ldots, -z, -aa, -bb,\ldots\\ +% (Internally up~to $\pm 55\,834\,558$ is allowed, but when printed will +% exceed the \LaTeX\ capacity even for smaller numbers -- +% in the example file this happens at about $6\,500$.)\\ +% (If you have a document with more than $6\,500$~pages, you might +% think about splitting it in volumes. And page +% \textquotedblleft numbers\textquotedblright\ with about 100~digits +% are probably not easy to grasp for the reader, too.)\\ +% \item[0] (zero) The \xpackage{pageslts} package does nothing, +% thus the user is free to define the page +% \textquotedblleft numbers\textquotedblright\ after~z and before~a.\\ +% (But if the user does not do anything at all, the\\ +% \ |LaTeX Error: Counter too large|\\ +% will appear again.) +% \end{description} +% +% \DescribeMacro{AlphMulti} +% The string option \texttt{AlphMulti} takes three values: |AB|, |BB|, |0|: +% \begin{description} +% \item[AB] After page Z, the page +% \textquotedblleft numbers\textquotedblright\ continue with +% AA, AB, AC, AD,\ldots, FXSHRXW (the default), and before A with +% 0, -A, -B,\ldots, -Z, -AA, -AB,\ldots, -FXSHRXW. +% \item[BB] After page Z, the page +% \textquotedblleft numbers\textquotedblright\ continue with +% AA, BB, CC, DD,\ldots, and before A with +% 0, -A, -B,\ldots, -Z, -AA, -BB,\ldots \\ +% (About the limits please see |alphMult| above.) +% \item[0] (zero) The \xpackage{pageslts} package does nothing, +% thus the user is free to define the page +% \textquotedblleft numbers\textquotedblright\ after~Z and before~A.\\ +% (But if the user does not do anything at all, the\\ +% \ |LaTeX Error: Counter too large|\\ +% will appear again.) +% \end{description} +% +% \DescribeMacro{fnsymbolmult} +% When option \texttt{fnsymbolmult=false} is \textbf{not} given +% (i.\,e. \texttt{fnsymbolmult} or \texttt{fnsymbolmult=true} +% or no \texttt{fnsymbolmult} option at all), +% after 5 (\ensuremath {\mathparagraph }) the page +% \textquotedblleft number\textquotedblright\ is continued with +% the doubled \textquotedblleft number\textquotedblright\ of the +% first, second, third,\ldots\ page (\ensuremath {**}, +% \ensuremath {\dagger \dagger }, \ensuremath {\ddagger \ddagger }, +% \ensuremath {\mathsection \mathsection }, +% \ensuremath {\mathparagraph \mathparagraph }), +% and after the tenth page the +% \textquotedblleft number\textquotedblright\ is tripled +% (\ensuremath {***}, \ensuremath {\dagger \dagger \dagger },\ldots). +% Compile the \textsf{pageslts-example.tex} with \pdfLaTeX\ and +% see the resulting \xfile{pdf} file.\\ +% Before \ensuremath {*} (page~1) the page +% \textquotedblleft numbers\textquotedblright\ are continued with +% 0, \ensuremath {- * }, \ensuremath {- \dagger },\ldots, +% \ensuremath {- \mathparagraph }, \ensuremath {- **}, +% \ensuremath {- \dagger \dagger },\ldots \\ +% If this is not wanted, set option \texttt{fnsymbolmult=false}, +% and \xpackage{pageslts} will do nothing and allow the user to change +% the page \textquotedblleft number\textquotedblright . (But if the +% user does not do anything at all, the\\ +% \ |LaTeX Error: Counter too large|\\ +% will appear again.)\\ +% While in \LaTeXe\ arabic (page) numbers are possible up~to +% |MAX|\,$ = 2\,147\,483\,647$ (cf.~the \xpackage{alphalph} package),\\ +% |\erroralphalph{\fnsymbolmult}{...}| numbers are possible up~to +% 10\,737\,415 only. If this number is not only used internally +% but printed, after number about 11\,705 (which is +% 2\,341 times \ensuremath {\mathparagraph }) the \LaTeXe\ capacity +% is exeeded, depending on the remaining file and its use of +% \TeX\ capacity, of course. (If you have a document with more than +% 11\,705~pages, you might think about splitting it in volumes. +% And page \textquotedblleft numbers\textquotedblright\ with +% 2\,341~digits are probably not easy to grasp for the reader, too.)\\ +% +% \subsubsection{romanMult, RomanMulti\label{sss:romanMult}} +% +% \DescribeMacro{romanMult} +% \DescribeMacro{RomanMulti} +% The options \texttt{romanMult(=true)} and \texttt{RomanMulti(=true)} +% expand the |\roman| and |\Roman| page numbering scheme to values +% below one ($<1$), i.\,e. 0, -i, -ii, -iii, -iv,\ldots\ and +% 0, -I, -II, -III, -IV,\ldots, respectively.\\ +% Again the \TeX\ capacity will be exceeded before +% \nolinebreak{$\pm$ |MAX|\,}$ = \pm 2\,147\,483\,647$, and even if +% $1\,000\,000\,000$ is internally possible, this would print +% $1\,000\,000$ times the letter~\textsf{m} (or~\textsf{M}), +% which would require either very small print or quite huge paper size.\\ +% (If you have a document with so many pages, you might think +% about splitting it in volumes. And page +% \textquotedblleft numbers\textquotedblright\ with +% thousands of digits are probably not easy to grasp for the reader, +% too.)\\ +% If the expansion below $1$ is not wanted, set options +% \texttt{romanMult=false} and/or \texttt{RomanMulti=false}, +% and \xpackage{pageslts} will do nothing and allow the user +% to change the page \textquotedblleft number\textquotedblright . +% (But if the user does not do anything at all, \LaTeX\ will just +% ignore the values - not even a warning will be issued.) +% +% \subsubsection{Arabic page numbers} +% +% \DescribeMacro{Arabic page numbers} +% In \LaTeXe\ arabic (page) numbers are already possible between +% |-MAX...MAX|, where |MAX|\,$ = 2\,147\,483\,647$ (cf.~the +% \xpackage{alphalph} package), without any expansion necessary. +% (But if you have a document with so many pages, you might think +% about splitting it in volumes!) +% +% \subsection{Labels} +% +% \DescribeMacro{pagesLTS.0} +% \indent At the first page a label \texttt{pagesLTS.0} is created. +% If |\pagenumbering{...}| is used right after +% |\begin{document}|, this is much easier for the +% \xpackage{pageslts} package (and chances for successful placing +% of all labels are much higher; +% \nolinebreak{cf.~subsubsection~\ref{sss:once}).}\\ +% +% \DescribeMacro{LastPage} +% |\AtEndDocument| (see subsection~\ref{ssec:aed}) this package defines +% a label, \texttt{LastPage}, which the user can refer to with the\linebreak +% |\lastpageref{LastPage}| command. While |\pageref{LastPage}| is also +% possible (especially for backward compatibility with the \xpackage{LastPage} +% package), this is discouraged, because it will not work when it is used +% together with the \xpackage{hyperref} package and the \xpackage{fnsymbol} +% page numbering scheme. (The \xpackage{LastPage} package did not work with +% this combination, too, so if you want to, you can reproduce the old error +% -- but you do not have to do it, but can use |\lastpageref{LastPage}|.)\\ +% +% \DescribeMacro{VeryLastPage} +% |\AfterLastShipout| the label \texttt{VeryLastPage} is defined, which +% the user can also refer to with the |\lastpageref{VeryLastPage}| command. +% Depending on usage of |\AtEndDocument| by other packages, \texttt{LastPage} +% might not point to the very last page, but |\lastpageref{VeryLastPage}| +% should do this (cf.~subsection~\ref{ssec:aed}).\\ +% +% \DescribeMacro{LastPages} +% \DescribeMacro{page number} +% \DescribeMacro{number of pages} +% When more than one page numbering scheme is used, neither \texttt{LastPage} +% nor \texttt{VeryLastPage} give the total \textbf{number} of pages. +% For example, for a document with VI+36 pages, both give +% \textquotedblleft 36\textquotedblright\ as reference to the last page. +% While this is correct, the total number of pages is 42, and this is given +% by the reference to \texttt{LastPage\underline{s}}: +% \nolinebreak{|\lastpageref{LastPage|\underline{|s|}|}|} (note the +% \textquotedblleft s\textquotedblright\ at the end). When the +% page number was manipulated by |\addtocounter{page}{...}| +% or |\setcounter{page}{...}|, \texttt{LastPages} ignores this. +% (At a page numbering change the page is reset to one (without option +% |pagecontinue|). This is done by |\setcounter{page}{1}|, thus this is +% ignored, too.)\\ +% |\pageref{totpages}| of the \xpackage{totpages} package is similar to +% |\lastpageref{LastPages}|, but while the target for |\pageref{totpages}| +% is placed |\AtEndDocument|, the target for |\lastpageref{LastPages}| is +% placed |\AfterLastShipout|, therefore |\lastpageref{LastPages}| is safer +% to really get the total page number.\\ +% +% \pagebreak +% +% \DescribeMacro{\theCurrentPage} +% |\theCurrentPage| gives the current total/absolute page, in contrast to +% |\thepage|, which gives only the page \textit{name} in the current page +% numbering scheme. For example, when there are Roman VII pages in the +% frontmatter and afterwards in the mainmatter you are at arabic page~9, +% then |\theCurrentPage| is~16, whereas |\thepage| is~9. When the page +% \textquotedblleft number\textquotedblright\ (name) is manipulated by +% |\addtocounter{page}{...}| or |\setcounter{page}{...}|, |\theCurrentPage| +% \nolinebreak{ignores} this. Because \texttt{CurrentPage} is a normal +% counter, you can also say e.\,g.~|\Roman{CurrentPage}| to get the value +% in Roman page numbering scheme (e.\,g.~VIII for~8).\\ +% +% \phantomsection +% \label{CurrentPageLocal} +% \DescribeMacro{\theCurrentPageLocal} +% |\theCurrentPageLocal| gives the current (arabic) number of pages in the +% current page numbering scheme. |\thepage| and |\theCurrentPageLocal| are +% different e.\,g. when |\addtocounter{page}{...}| or +% |\setcounter{page}{...}| were used.\\ +% |\theCurrentPageLocal| can be printed in other formats, e.\,g. +% |\roman{pagesLTS.current.local.roman}|, but probably it only makes +% sense if page numbering scheme and format are the same, e.\,g. +% |\Roman{pagesLTS.current.local.Roman}| or\\ +% |\Alph{pagesLTS.current.local.Alph}|.\\ +% |\arabic{pagesLTS.current.local.|\ldots|}| probably make sense even +% when combined with another page numbering scheme. And this is exactly +% what |\theCurrentPageLocal| does:\\ +% |\def\theCurrentPageLocal{\arabic{pagesLTS.current.local.\pagesLTS@pnc}}|.\\ +% +% \DescribeMacro{pagesLTS. page numbering scheme . number } +% If you want to refer to the last page of the first, second,\ldots\ use +% of a page numbering scheme, you can refer to \linebreak +% |pagesLTS.<page numbering scheme>.<number>|, e.\,g. +% |\lastpageref{pagesLTS.Roman.1}|, where |<number>| is the occurrence +% of the page numbering scheme. For details please see +% page~\pageref{pagesLTS.pnscheme.nr}.\\ +% +% \bigskip +% \DescribeMacro{\lastpageref} +% For pages with the \texttt{fnsymbol} page numbering scheme, +% |\lastpageref{...}| \nolinebreak{instead} of |\pageref{...}| +% \textit{must} be used. This is required for pages some\-where +% inside of the document as well as the (very) last page(s). +% Because |\lastpageref{...}| is a synonym for |\pageref{...}|, +% where no \xpackage{fnsymbol} page numbering scheme is used, +% it is save(r) to use it for all references to labels provided +% by the \xpackage{pageslts} package. +% +% \subsection[\texttt{\textbackslash pagenumbering\{\ldots \}}]{% +% \texttt{\textbackslash pagenumbering\{\ldots \}}} +% \DescribeMacro{\pagenumbering} +% \subsubsection{If \texttt{\textbackslash pagenumbering\{\ldots \}} is \textbf{not} used\label{sss:nopnc}} +% +% \indent When the \xpackage{pageslts} package is used, but |\pagenumbering{...}| +% (with an argument like arabic, roman, Roman, fnsymbol, alph, or Alph) +% is not used, there should be no problem, except that you might need +% more~(!) compiler runs to get all references right, and some references +% might even be missing (see below). The \xpackage{pageslts} +% package tries to determine the page numbering scheme at the first +% shipout, but success is not guaranteed. Thus please use |\pagenumbering{...}| +% at the beginning of your document!\\ +% \indent Without |\pagenumbering{<something>}| (|<something>| e.\,g. = arabic) +% at the beginning of the document, the page numbers might be given in +% arabic \textit{by} (class) \textit{default}, but the \xpackage{pageslts} +% package does not know about this without |\pagenumbering{arabic}|.~--\\ +% \indent The label \texttt{pagesLTS.0} is created at the first +% page even if no |\pagenumbering{...}| command is given. +% Maybe have a look at the \xfile{.aux} file after compiling your +% document to detect further labels (of other packages, too).\\ +% +% \pagebreak +% +% \subsubsection{If \texttt{\textbackslash pagenumbering\{\ldots \}} is used once\label{sss:once}} +% +% \DescribeMacro{pagesLTS.0} +% At the first page a label \texttt{pagesLTS.0} is created. +% If |\pagenumbering{...}| is used right after |\begin{document}|, +% this is much easier for the \xpackage{pageslts} package +% (and chances for successful placing of all labels are much higher). +% +% \subsubsection{If \texttt{\textbackslash pagenumbering\{\ldots \}} is used more than once} +% +% \indent Everything from the preceding subsubsections applies and additionally +% the following:\\ +% \indent When different page numbering schemes are used, e.\,g. +% Roman numbers for the frontmatter and arabic numbers for the +% mainmatter, please use |\pagenumbering{...}| for each of them! +% Even if you do this, the reference to neither the label \texttt{LastPage} +% nor the label \texttt{VeryLastPage} gives the \textbf{total} +% number of pages, but only the number of pages of the last used page +% numbering scheme (which could be exactly what you want, e.\,g. if +% you want to refer to the last page itself and do not want to +% give the total number of pages).\\ +% \DescribeMacro{LastPages} +% \indent For remediation the label +% \nolinebreak{\texttt{LastPage}\textbf{\underline{s}}} +% (with \textquotedblleft s\textquotedblright\ at its end) is +% introduced. Please then refer to this label by +% |\lastpageref{LastPages}| instead of \texttt{LastPage} or +% \texttt{VeryLastPage}.\\ +% +% \DescribeMacro{pagesLTS.arabic} +% \DescribeMacro{pagesLTS.roman} +% \DescribeMacro{pagesLTS.Roman} +% \DescribeMacro{pagesLTS.alph} +% \DescribeMacro{pagesLTS.Alph} +% \DescribeMacro{pagesLTS.fnsymbol} +% Additionally, at the last page of each page numbering scheme a label +% \texttt{pagesLTS.<numbering scheme>} is placed, where +% \texttt{<numbering scheme>} is e.\,g.\ arabic, roman, Roman, alph, +% Alph,\ldots .\\ +% For the \textbf{fnsymbol} page numbering scheme +% |\lastpageref{pagesLTS.fnsymbol}| is needed instead of +% |\pageref{pagesLTS.fnsymbol}|. You can and should use +% |\lastpageref{...}| also for the other page numbering schemes.\\ +% +% \bigskip +% +% While at the time of the last revision of the \xpackage{pageslts} package +% no other page numbering schemes were known to the maintainer, +% this package in principle works with every scheme which is +% recognized by the original |\pagenumbering| command. +% But the \xpackage{hyperref} package only then works with crazy page names, +% if the references to those pages are given in a certain way, thus the +% combination of a new page numbering scheme, the \xpackage{hyperref} +% and the \xpackage{pageslts} package might not work.~-- +% The \xpackage{pageslts} package by itself also works with schemes, +% which the original |\pagenumbering{...}| does not recognize, but because +% the original |\pagenumbering{...}| is called by the \xpackage{pageslts} +% package, this might cause an error, see subsection~\ref{sec:unknown}! +% (And if the number format is unknown to \LaTeX{}, the pages will have +% no number, and therefore cannot be referenced. You might be able to +% help yourself by using the \xpackage{hyperref} package and +% manually placing |\hypertarget|s and |\href|s.) +% +% \subsubsection{If the same \texttt{\textbackslash pagenumbering\{\ldots \}}\ % +% scheme is used more than once\label{sss:twice}} +% +% \indent Everything from the preceding subsubsections applies and additionally +% the following:\\ +% \DescribeMacro{pagecontinue} +% \indent If the same page numbering scheme is used twice (or even more often) +% in one document (e.\,g. in the frontmatter Roman: I--V, in the +% mainmatter arabic: 1--20, and in the backmatter again Roman: VI--X), +% the second time it is used, the page numbering is either continued (option +% \texttt{pagecontinue} or \texttt{pagecontinue=true} or no option +% \texttt{pagecontinue}; the default) or reset to one (option +% \texttt{pagecontinue=false}). It is even possible to use +% a~page numbering scheme more than twice.\\ +% +% \phantomsection +% \label{pagesLTS.pnscheme.nr} +% \DescribeMacro{pagesLTS. page numbering scheme . number } +% If you want to refer to the last page of the first, second,\ldots\ use +% of a page numbering scheme, page~V in the example above, you can refer to +% |pagesLTS.<page numbering scheme>.<number>|, e.\,g. +% |\lastpageref{pagesLTS.Roman.1}|, where |<number>| is the occurrence +% of the page numbering scheme.\\ +% +% \pagebreak +% +% If you want to refer to the first page of a page numbering scheme, +% just place a label there, e.\,g.\\ +% \indent |\pagenumbering{Roman}| \\ +% \indent |\section{Section title\label{RomanSection}}| \\ +% (You know where you use |\pagenumbering{...}| and this is the +% \xpackage{pageslts} package, not the \xpackage{firstpage} one).\\ +% +% When you want to give the number of pages of each +% \textquotedblleft sector\textquotedblright\ of the page numbering +% scheme, you can use\\ +% \DescribeMacro{pagesLTS. page numbering scheme . number .local.cnt} +% |\lastpages{<page numbering scheme>}{<number>}|, \\ +% where |<page numbering scheme>| is e.\,g. Roman, arabic,\ldots\ and +% |<number>| the \textquotedblleft sector\textquotedblright\ number, +% e.\,g.~|\lastpages{Roman}{2}|.\\ +% (Internally, the counter has the format +% |pagesLTS.<page numbering scheme>.<number>.local.cnt|.) +% +% \noindent If you used the page numbering scheme Roman for three times, +% you could say +% \begin{verbatim} +% Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}\\ +% There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +% \lastpages{Roman}{1}~pages in the first Roman sector +% (\pageref{Roman} -- \lastpageref{pagesLTS.Roman.1}),\\ +% \lastpages{Roman}{2}~pages in the second Roman sector +% (\pageref{Roman2} -- \lastpageref{pagesLTS.Roman.2}), and\\ +% \lastpages{Roman}{3}~pages in the third Roman sector +% (\pageref{Roman3} -- \lastpageref{pagesLTS.Roman.3}.\\ +% \end{verbatim} +% to get +% \begin{quote} +% Last Roman page (pagesLTS.Roman): VIII\\ +% There are 8 pages with Roman numbers:\\ +% 3 pages in the first Roman sector (I -- III),\\ +% 4 pages in the second Roman sector (IV -- VII), and\\ +% 3 pages in the third Roman sector (VIII -- X).\\ +% \end{quote} +% (see e.\,g. the compiled \textsf{pageslts-example} file).\\ +% +% If you want to continue one page numbering scheme, but later on +% (third use of it, or for another page numbering scheme) want to +% reset the page number, just say |\setcounter{page}{1}| there.\\ +% +% \pagebreak +% +% \noindent In your document the code +% \begin{verbatim} +% \makeatletter +% \renewcommand{\@evenfoot}% +% {\normalsize\slshape DRAFT \today\hfil \upshape page {\thepage} (\theCurrentPage) of\ % +% \lastpageref{pagesLTS.Roman} + \lastpageref{pagesLTS.arabic}\ = \lastpageref{LastPages} pages% +% } +% \renewcommand{\@oddfoot}{\@evenfoot} +% \makeatother +%\end{verbatim} +% \noindent creates footers like\\ +% +% \textquotedblleft\mbox{\textsl{DRAFT \today}\hspace{1cm}page V (5) of VII + 35 = 42 pages}\textquotedblright\\ +% +% \noindent or\\ +% +% \textquotedblleft\mbox{\textsl{DRAFT \today}\hspace{1cm}page 10 (17) of VII + 35 = 42 pages}\textquotedblright\\ +% +% \noindent in the compiled document (cf.~the \texttt{pageslts-example} file). +% +% \noindent Code like +% \begin{verbatim} +% This book has \lastpageref{pagesLTS.Roman}+\lastpageref{pagesLTS.arabic} pages (\lastpageref{LastPages} pages in total). +% \end{verbatim} +% \noindent produces output like +% \begin{quote} +% This book has X+85 pages (95 pages in total). +% \end{quote} +% \noindent (when using the \xpackage{hyperref} package, +% the references are even hyperlinked).\\ +% +% If |\addtocounter{page}{...}| or |\setcounter{page}{...}| have been used, +% the local version of \texttt{CurrentPage} can be used, |\theCurrentPageLocal|, +% see subsection~\ref{CurrentPageLocal}.\\ +% +% \subsection{\xpackage{papermas}(s) package\label{ss:papermas}} +% There is a kind of an add-on to this package, the \xpackage{papermas} +% package, which can be used to compute the number of sheets of paper +% needed to print a document (you can print more than one page of a +% document on one sheet of paper) as well as the approximate mass +% of the printout. Please see the \ref{ss:Downloads} subsection. +% +% \newpage +% +% \section{A few warnings\label{sec:warn}} +% +% \subsection{Hyperref and repeated page numbers} +% +% When two (or more) different page numbering schemes are used, or the page number +% is reset, or for any other reason there are two pages with the same number +% (maybe in different format, e.\,g. $1$ and \textsc{I}), and \xpackage{hyperref} has +% not been configured right, this can cause problems. Use \xpackage{hyperref} with +% \texttt{plainpages=false} and \texttt{pdfpagelabels=true}, and everything should +% be fine.\\ +% More details can be found at +% \ \url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=pdfpagelabels}. +% +% \subsection{\texttt{\textbackslash AtEndDocument}\label{ssec:aed}} +% +% \indent The output of a \LaTeXe\ run is not independent of the order +% in which packages are loaded. It is often the case that the same +% formats for which one must put tables and figure at the end, +% are the ones in which endnotes are also required. +% If one wants to use |\AtEndDocument| here as well (as done for +% |\lastpageref{LastPage}|), then it is easy to get to three separate +% uses of |\AtEndDocument| (assuming one uses this for the endnotes +% as well). Clearly it is not safe for any package writer or user +% to assume that no material will follow what they put into +% |\AtEndDocument|. Therefore a message, which begins with +% \texttt{AED}, is included in every usage of |\AtEndDocument|, +% and it is tried to minimize any side effects the usage may have.\\ +% +% As now \textsc{Heiko Oberdiek}'s \texttt{atveryend} package is used, +% the references |\lastpageref{VeryLastPage}| and |\lastpageref{LastPages}| +% should work all right. About how to get the \texttt{atveryend} package, +% please see subsection~\ref{ss:Downloads}. +% +% \subsection{Interaction with very old versions of the \xpackage{endfloat} package\label{sec:endfloat}} +% +% \indent The \emph{very} old version~2.0 (and earlier) of the \xpackage{endfloat} +% package actually redefined the |\enddocument| command, +% and so interferred drastically with the \LaTeXe\ commands which make use +% of |\AtEndDocument|. Newer versions of \xpackage{endfloat} exists +% (at the time of writing this documentation: v2.4i as of 1995/10/11) +% in modern documentation form, which should be available from +% the same source where you received this file, see subsection~\ref{ss:Downloads}.\\ +% A note is placed in the style file at the |\RequirePackage| section, +% and later it is even checked whether a (very) old \xpackage{endfloat} +% package is in use. If it is, a warning or even an error message +% is given, depending on \xpackage{endfloat} version. +% This assumes, that the old versions of endfloat at least gave +% a version date, of course.\\ +% If you want your \texttt{LastPage} to label the last page of +% these end floats, you need to load \xpackage{pageslts} \emph{after} +% loading \xpackage{endfloat}, or to use \texttt{VeryLastPage} instead. +% If, on the other hand, you \emph{want} \texttt{LastPage} to refer +% to the (not so) last page, exclusive of the the floats at the end, +% then load in the reverse order. Independent from the order of +% \xpackage{pageslts} and \xpackage{endfloat}, you will still need the +% modified\footnote{The \textquotedblleft new\textquotedblright\ version +% is over $15$~years old, so it might be time to update to this +% version, if you did not do it already.} version of \xpackage{endfloat}.\\ +% Using the +% \nolinebreak{\texttt{LastPage}\textbf{\underline{s}}\ (\textit{s}!)}\ label +% should get you to the last page in all cases: |\lastpageref{LastPages}|.\\ +% +% Other \LaTeX209\ (!) packages also seem to like to redefine +% |\enddocument|. In addition to the old \xpackage{endfloat}, +% \xpackage{harvard} comes to mind. All of these will need to be +% modified swiftly. \textbf{If possible, update to \LaTeXe{}!} +% +% \pagebreak +% +% \subsection{\xpackage{showkeys} package\label{ssec:showkeys}} +% +% When the \xpackage{showkeys} package has been loaded in \texttt{draft} mode, +% in the margin for each label a~box is displayed with the name of the label. +% \xpackage{showkeys} accomplishes this by redefining |\label|, but +% \xpackage{pageslts} does not use |\label|, but writes directly to the +% {\nobreak |\jobname|\xfile{.aux}-}\allowbreak file, and this is generally done +% \emph{after} the according page has shipped out, therefore no box can be placed +% on the \emph{preceding} page. At~least \xpackage{pageslts} gives a warning, that +% \xpackage{showkeys} cannot present the respective label. +% +% \subsection{\xpackage{lastpage} package\label{ssec:lastpage}} +% +% This package first started as a revision of the \xpackage{lastpage} +% package of \textsc{Jeffrey P. Goldberg} (jeffrey+news at goldmark dot org), +% but it became obviouse that a replacement was needed to accomplish what this +% package does. For backward compatibility, a~label named |LastPage| is provided. +% Thus |\usepackage{lastpage}| can be replaced by\\ +% |\usepackage[pagecontinue=false,alphMult=0,AlphMulti=0,fnsymbolmult=false,romanMult=false,RomanMulti=false]{pageslts}|,\\ +% if the behaviour of the \xpackage{lastpage} package should be simulated. +% Using \textbf{old}~(!) versions of the \xpackage{lastpage} before the \xpackage{pageslts} +% before the \xpackage{hyperref} [2011/04/17 v6.82g] +% package results in multiply definitions of the |LastPage| label. +% While the \xpackage{pageslts} package cancels the command |\lastpage@putlabel| +% from the old \xpackage{lastpage} package (because it does this itself, and better), +% \xpackage{hyperref} redefines |\lastpage@putlabel| and thereby reintroduces it again +% (\xpackage{hyperref} should probably check for the version of the \xpackage{lastpage} +% package and/or whether the \xpackage{pageslts} package was also loaded.) +% +% \subsection{Using an unknown page numbering scheme\label{sec:unknown}} +% +% \indent I do not know whether \LaTeXe\ can handle another page numbering +% scheme (e.\,g.~hebraic), but if you want to use it, this should be +% no problem for the \xpackage{pageslts} package. But the original +% |\pagenumbering{...}| as well as the \xpackage{hyperref} package +% (if~used) might want to vote against it, especially when used together +% with the \xpackage{pageslts} package. Especially especially +% (\textit{sic}!) if the last page uses this new page numbering scheme, +% you should check everything double (at least).\\ +% (And if the number format is unknown to \LaTeX{}, the pages will have +% no number, and therefore cannot be referenced. You might be able to +% help yourself by using the \xpackage{hyperref} package and +% manually placing |\hypertarget|s and |\href|s.) +% +% \subsection{Page counter overflow\label{ss:overflow}} +% +% \indent Without the use of the \xpackage{alphalph} package, the\\ +% \textquotedblleft ranges of supported counter values are more or less +% restricted. Only \cs{arabic} can be used with any counter +% value \TeX\ supports. +% \begin{quote} +% \catcode`\|=12 % +% \begin{tabular}{@{}l|l|l|l@{}} +% Presentation & Supported & Ignored & Error message\\ +% command & domain & values & `Counter too large'\\ +% \hline +% \cs{arabic} +% & \ttfamily -MAX..MAX & &\\ +% \cs{roman}, \cs{Roman} +% & \ttfamily 1..MAX & \ttfamily -MAX..0 &\\ +% \cs{alph}, \cs{Alph} +% & \ttfamily 1..26 & 0 & \ttfamily -MAX..-1, 27..MAX\\ +% \cs{fnsymbol} +% & \ttfamily 1..9 & 0 & \ttfamily -MAX..-1, 10..MAX\\ +% \hline +% \end{tabular}\\[1ex] +% \texttt{MAX} = \texttt{2147483647} +% \end{quote} +% \textquotedblright\ (\textsc{Heiko Oberdiek}: +% The \xpackage{alphalph} package, 2010/04/18, v2.3, first table, p.~2).\\ +% Please see subsubsections~\ref{sss:alphalph} and \ref{sss:romanMult} for +% instructions how to overcome these limitations. +% +% \newpage +% +% \subsection{Using the \xpackage{fnsymbol} page numbering scheme\label{ss:fnsymbol}} +% +% \indent Using the \texttt{fnsymbol} page numbering scheme can result in +% problems -- big ones!\\ +% \textbf{When using this page numbering scheme, it is very important to use} +% \ |\lastpageref{...}| \textbf{instead of}\ |\pageref{...}| \textbf{for any% +% link to any label provided by the \xpackage{pageslts} package.}\\ +% While the \xpackage{pageslts} package tries really very hard to circumvent +% any problem, other packages might skrew up -- and quite totally for that. +% So,~you have been warned!\\ +% +% \begin{description} +% \item[-] There can be a counter overflow, see preceding subsection~\ref{ss:overflow}. +% +% \item[-] Adobe Reader X (10.1.0) does not show the correct page names +% for all pages with \texttt{fnsymbol} page numbering scheme: +% +% \begin{center} +% \begin{tabular}{c|c|c|c|c} +% page & page & \multicolumn{2}{c|}{shown by the Reader} & with \xpackage{alphalph} package and \\ +% number & name & without & with & with \xpackage{pageslts} package \\ +% & & \multicolumn{2}{c|}{\xpackage{alphalph} \&\ \xpackage{pageslts}} & with \texttt{fnsymbolmult} option \\ \hline +% $-2$ & \texttt{LaTeX Error} & & \ensuremath {-\ } & \ensuremath {- \dagger } \\ +% $-1$ & \texttt{LaTeX Error} & & \ensuremath {- *} & \ensuremath {- *} \\ +% $0$ & (ignored by \LaTeX) & & 0 & 0 \\ +% $1$ & \ensuremath {*} & * & \ensuremath {*} & \ensuremath {*} \\ +% $2$ & \ensuremath {\dagger } & & & \ensuremath {\dagger } \\ +% $3$ & \ensuremath {\ddagger } & & & \ensuremath {\ddagger } \\ +% $4$ & \ensuremath {\mathsection } & & & \ensuremath {\mathsection } \\ +% $5$ & \ensuremath {\mathparagraph } & & & \ensuremath {\mathparagraph } \\ +% $6$ & \ensuremath {\delimiter "026B30D } & "026B30D & \ensuremath {**} & \ensuremath {**} \\ +% $7$ & \ensuremath {**} & ** & & \ensuremath {\dagger \dagger } \\ +% $8$ & \ensuremath {\dagger \dagger } & & & \ensuremath {\ddagger \ddagger } \\ +% $9$ & \ensuremath {\ddagger \ddagger } & & & \ensuremath {\mathsection \mathsection } \\ +% $10$ & \texttt{LaTeX Error} & & & \ensuremath {\mathparagraph \mathparagraph }\\ +% $11$ & \texttt{LaTeX Error} & & \ensuremath {***} & \ensuremath {***} \\ +% $12$ & \texttt{LaTeX Error} & & & \ensuremath {\dagger \dagger \dagger } \\ +% \end{tabular} +% \end{center} +% +% \noindent and so on, while at least the (\ldots\ of \ldots ) +% part of the page number is displayed correctly (see +% page~\pageref{logical page numbers}, tip about logical page numbers). +% When the \xpackage{alphalph} package and the \xpackage{pageslts} package with +% |fnsymbolmult| option are used, page names like +% \ensuremath {- *}, 0, \ensuremath {*}, \ensuremath {**} are +% also presented correctly by the Reader. +% \end{description} +% +% \newpage +% +% \section{Alternatives\label{sec:Alternatives}} +% +% There are similar packages, which do (or do not) similar things. As I +% neither know what exactly you want to accomplish when using this package +% (e.\,g.~page number vs. page name, hyperlinks or not), nor what resources +% you have (e.\,g.~\eTeX{}), here is a list of some possible alternatives:\\ +% +% \DescribeMacro{LastPage} +% \begin{description} +% \item[-] The \xpackage{LastPage} package also provides the +% \texttt{LastPage} label (but not \texttt{VeryLastPage} or +% \texttt{LastPages}). If you only want this and have a quite +% limited amount of \TeX\ resources, you might want to use that +% package instead. +% +% \item[-] If \LaTeX2.09\ is still used, and if you are unable +% to switch to \LaTeXe{}, the \LaTeX2.09\ compatible +% \xpackage{lastpage209.sty} can be used (which is also contained +% in the recent \xpackage{LastPage} package). +% \end{description} +% +% \DescribeMacro{totpages} +% \begin{description} +% \item[-] The \xpackage{totpages} package provides a +% \texttt{totpages} label similar to \texttt{LastPages}, +% but |\AtEndDocument| instead of |\AfterLastShipout|. Therefore +% you should stay with \xpackage{pageslts}. The \xpackage{totpages} +% package additionally computes the number of paper sheets needed to +% (double) print the document (with one, two, three,\ldots\ pages +% on one sheet of paper). This can also be accomplished with the +% \xpackage{papermas} package. +% \end{description} +% +% \DescribeMacro{totcount} +% \begin{description} +% \item[-] The \xpackage{totcount} package provides the last value +% of a counter, thus also the value of the \texttt{page} counter. +% You do not get a hyperlink to the last page, only the numerical +% value of the last page name is given (i.\,e. X+72 pages gives 72 +% instead of 82 as total number of pages), and the number of pages +% can be changed e.\,g. by |\addtocounter|. +% \end{description} +% +% \DescribeMacro{nofm} +% \begin{description} +% \item[-] \textquotedblleft There is a package \xpackage{nofm.sty} +% available, but some versions of it are defective, and most don't +% work with \xpackage{fancyhdr} because they take over the complete +% page layout.\textquotedblright\ (\textsc{Piet van Oostrum}: +% Page layout in \LaTeX{}, March~2, 2004, section~16; fancyhdr.pdf)\\ +% \xpackage{nofm} as of 1991/02/25 (without version number), available at\\ +% \url{ftp://tug.ctan.org/pub/tex-archive/obsolete/macros/latex209/contrib/misc/nofm.sty},\\ +% does not work with e.\,g. \xpackage{hyperref}, redefines |\enddocument| +% as well as |\@oddhead|, |\@evenhead|, |\@oddfoot|, and |\@evenfoot|.\\ +% If you know the (\CTAN{}) location of a \textbf{working}~(!) version, +% please send me an e-mail, thanks! +% \end{description} +% +% \DescribeMacro{count1to} +% \begin{description} +% \item[-] You may want to have a look at the \xpackage{count1to} package. +% \end{description} +% +% \DescribeMacro{zref} +% \begin{description} +% \item[-] The \xpackage{zref} package of \textsc{Heiko Oberdiek} requires +% \eTeX{}. \xpackage{pageslts} does not require \eTeX{}, but if you +% already have \eTeX{}, you may have a look at the extensive +% \xpackage{zref} package, whether it suits your needs better +% (or additionally or whatsoever). +% \end{description} +% +% \bigskip +% +% \noindent (You programmed or found another alternative, +% which is available at \CTAN{}?\\ +% OK, send an e-mail to me with the name, location at \CTAN{}, and +% a short notice, and I will probably include it in the list above.)\\ +% +% \smallskip +% +% \noindent About how to get those packages, please see subsection~\ref{ss:Downloads}. +% +% \newpage +% +% \section{Example} +% +% \begin{macrocode} +%<*example> +\documentclass[british]{article} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{lipsum}[2011/04/14]% v1.2 +\usepackage[draft]{showkeys}[2007/08/07]% v3.15 +%% Use final instead of draft to hide the keys. %% +\usepackage{hyperref}[2011/04/17]% v6.82g +\hypersetup{% + extension=pdf,% + plainpages=false,% + pdfpagelabels=true,% + hyperindex=false,% + pdflang={en},% + pdftitle={pageslts package example},% + pdfauthor={Hans-Martin Muench},% + pdfsubject={Example for the pageslts package},% + pdfkeywords={LaTeX, pageslts, Hans-Martin Muench},% + pdfview=Fit,% + pdfstartview=Fit,% + pdfpagelayout=SinglePage,% + bookmarksopen=true% +} +\usepackage[pagecontinue=true,alphMult=ab,AlphMulti=AB,fnsymbolmult=true,romanMult=true,RomanMulti=true]{pageslts}[2011/08/08]% v1.2a +%% These are the default options. %% +\makeatletter + \renewcommand{\@evenfoot}% + {Page \thepage\ (\theCurrentPage; local: \theCurrentPageLocal) of % + \lastpageref{pagesLTS.roman}(\lastpageref{pagesLTS.roman.local}) + % + \lastpageref{pagesLTS.Roman}(\lastpageref{pagesLTS.Roman.local}) + % + \lastpageref{pagesLTS.arabic}(\lastpageref{pagesLTS.arabic.local}) + % + \lastpageref{pagesLTS.fnsymbol}(\lastpageref{pagesLTS.fnsymbol.local}) + % + \lastpageref{pagesLTS.alph}(\lastpageref{pagesLTS.alph.local}) + % + \lastpageref{pagesLTS.Alph}(\lastpageref{pagesLTS.Alph.local}) = % + \lastpageref{LastPages} pages.% + } + \renewcommand{\@oddfoot}{\@evenfoot} + \def\pagesLTSexampleArabic{3} + \def\pagesLTSexamplealph{23} + \gdef\unit#1{\mathord{\thinspace\mathrm{#1}}}% +\makeatother +\listfiles +\begin{document} +\pagenumbering{roman} +%% Note the first \pagenumbering immediately behind \begin{document}! %% +%%\addtocounter{page}{-2} %% + +\section*{Example for pageslts} +\addcontentsline{toc}{section}{Example for pageslts} +\markboth{Example for pageslts}{Example for pageslts} + +This example demonstrates the most common uses of package\\ +\textsf{pageslts}, v1.2a as of 2011/08/08 (HMM).\\ +The used options were \texttt{pagecontinue=true}, +\texttt{alphMult=ab}, \texttt{AlphMulti=AB}, \linebreak +\texttt{fnsymbolmult=true}, +\texttt{romanMult=true}, and \texttt{RomanMulti=true} +(the default ones).\\ +For more details please see the documentation!\\ + +\label{keys} To hide the \pageref{keys}{\qquad } use option +\texttt{final} instead of \texttt{draft} with the \textsf{showkeys} +package (or remove the package call from the preamble of +this document).\\ + +\textbf{Hyperlinks or not:} If the \textsf{hyperref} package is loaded, +the references are also hyperlinked:\\ +\smallskip +Page \thepage\ (\theCurrentPage; local: \theCurrentPageLocal) of % +\lastpageref{pagesLTS.roman}(\lastpageref{pagesLTS.roman.local}) + % +\lastpageref{pagesLTS.Roman}(\lastpageref{pagesLTS.Roman.local}) + % +\lastpageref{pagesLTS.arabic}(\lastpageref{pagesLTS.arabic.local}) + % +\lastpageref{pagesLTS.fnsymbol}(\lastpageref{pagesLTS.fnsymbol.local}) + % +\lastpageref{pagesLTS.alph}(\lastpageref{pagesLTS.alph.local}) + % +\lastpageref{pagesLTS.Alph}(\lastpageref{pagesLTS.Alph.local}) = % +\lastpageref{LastPages} pages.\\ +If the \textsf{hyperref} package is loaded, but the hyperlinks of the +references shall be suppressed, \verb|\pageref*{...}| +and \verb|\lastpageref*{...}| can be used:\\ +Page \thepage\ (\theCurrentPage; local: \theCurrentPageLocal) of % +\lastpageref*{pagesLTS.roman}(\lastpageref*{pagesLTS.roman.local}) + % +\lastpageref*{pagesLTS.Roman}(\lastpageref*{pagesLTS.Roman.local}) + % +\lastpageref*{pagesLTS.arabic}(\lastpageref*{pagesLTS.arabic.local}) + % +\lastpageref*{pagesLTS.fnsymbol}(\lastpageref*{pagesLTS.fnsymbol.local}) + % +\lastpageref*{pagesLTS.alph}(\lastpageref*{pagesLTS.alph.local}) + % +\lastpageref*{pagesLTS.Alph}(\lastpageref*{pagesLTS.Alph.local}) = % +\lastpageref*{LastPages} pages.\\ + +\textbf{Trademarks} appear throughout this example without any +trademark symbol; they are the property of their respective +trademark owner. There is no intention of infringement; the +usage is to the benefit of the trademark owner.\\ + +\textbf{Tip}: Use \textit{logical page numbers} for +the display of the pdf!\\ +(In Adobe Reader X (10.1.0): \underline{E}dit $>$ +Prefere\underline{n}ces (Ctrl+k) $>$ Page Display $>$ +Page Content and Information $>$ Use logical page +\nolinebreak{\underline{n}umbers.)}\\ + +You want negative page numbers? Not only arabic, but even roman, +Roman, alph, Alph or fnsymbol ones? No problem, e.\,g. just give a\\ +\verb|\addtocounter{page}{|-\textit{some number}\verb|}| in the +source code of this example file (or uncomment the prepared line)! + +\bigskip + +Save per page about $200\unit{ml}$ water, $2\unit{g}$ CO$_{2}$ +and $2\unit{g}$ wood:\\ +Therefore please print only if this is really necessary. + +\pagebreak + +\tableofcontents + +\newpage + +\pagenumbering{roman} +%% in case the page numbering is changed before, +%% otherwise pagesLTS.current.local.roman on this page +%% would be undefined + +\section{roman} + +\noindent (\texttt{roman} page numbering was started before, +becaue the page numbering scheme was needed to start at +the first page, of course.)\\ + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): +\lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ +You can get this also in other formats: +\roman{CurrentPage}, \Roman{CurrentPage}, \arabic{CurrentPage}, +\fnsymbol{CurrentPage}, \alph{CurrentPage}, \Alph{CurrentPage}. + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ +You can get also this in other formats, too: +\roman{pagesLTS.current.local.roman}, \Roman{pagesLTS.current.local.roman}, +\arabic{pagesLTS.current.local.roman}, \fnsymbol{pagesLTS.current.local.roman}, +\alph{pagesLTS.current.local.roman}, \Alph{pagesLTS.current.local.roman}, +but probably it only makes sense if page numbering scheme and format are +the same, e.\,g.\\ +\verb|\Roman{pagesLTS.current.local.Roman}|\\ +or \verb|\Alph{pagesLTS.current.local.Alph}|. \verb|\arabic{...}| could +make sense even if combined with another page numbering scheme. +And this is exactly what \verb|\theCurrentPageLocal| does:\\ +\nolinebreak{\verb|\def\theCurrentPageLocal{\arabic{pagesLTS.current.local.\pagesLTS@pnc}}|.}\\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +When the option \texttt{pagecontinue=false} is used with the +\textsf{pageslts} package, the \verb|\lastpageref{pagesLTS.Roman}| will +point to the same page as before, but this will have a lower number.\\ +The \verb|\lastpageref{pagesLTS.Roman.local}| will not change, +because the number of pages does not change (only the page numbers).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{lastpage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-3] + +\newpage + +\pagenumbering{Roman} + +\section{Roman\label{Roman}} +\subsection{Common Roman page numbering} + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): +\lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-4] + +\newpage + +\subsection{Last page of first Roman sector} +\verb|\lastpageref{pagesLTS.Roman}| does \textbf{not} +refer to this page (but there: \lastpageref{pagesLTS.Roman}), +because the option \texttt{pagecontinue=true} +was chosen. When a reference to this page is wanted,\\ +\verb|\lastpageref{pagesLTS.Roman.1}| can be used: \lastpageref{pagesLTS.Roman.1}.\\ + +\bigskip +There are \lastpages{Roman}{1}~pages (\verb|\lastpages{Roman}{1}|) +in this first Roman sector.\\ +The Roman page numbering scheme is continued later in section~\ref{Roman2})! + +\newpage + +\pagenumbering{arabic} + +\section{arabic} + +\subsection{Standard page numbering} + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): +\lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pagesLTS} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-4] +\newpage + +\subsection[Empty page style]{Also an empty page style is no problem\ % +for the current or total page count} + +\bigskip + +\thispagestyle{empty} + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): +\lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-4] + +\newpage + +\subsection[addtocounter, setcounter]{Neither\ % +\texttt{\textbackslash addtocounter\{page\}} nor\ % +\texttt{\textbackslash setcounter\{page\}} is a problem for the\ % +current or total page numbers} + +(Here is an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| +in the source code.)\\ +\addtocounter{page}{\pagesLTSexampleArabic} + +\noindent The page (from \verb|\thepage| command): \thepage \\ + +\noindent Current page (from \verb|\theCurrentPage|\ % +command), i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (from \verb|\theCurrentPageLocal|\ % +command), i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal\\ + +\noindent Last page's number (LastPages): \lastpageref{LastPages}{\hskip3em } +(= total number of pages)\\ + +\lipsum[1-7] + +\newpage + +\pagenumbering{fnsymbol} + +\section{fnsymbol} + +Adobe Reader X (10.1.0) does not show the correct page names +for all pages with \texttt{fnsymbol} page numbering scheme: + +\begin{center} +\begin{tabular}{c|c|c|c|c} +page & page & \multicolumn{2}{c|}{shown by the Reader} & with \textsf{alphalph} package and \\ +number & name & without & with & with \textsf{pageslts} package \\ + & & \multicolumn{2}{c|}{\textsf{alphalph} \&\ \textsf{pageslts}} & with \texttt{fnsymbolmult} option \\ \hline +$-2$ & \texttt{LaTeX Error} & & \ensuremath {-\ } & \ensuremath {- \dagger } \\ +$-1$ & \texttt{LaTeX Error} & & \ensuremath {- *} & \ensuremath {- *} \\ + $0$ & (ignored by \LaTeX) & & 0 & 0 \\ + $1$ & \ensuremath {*} & * & \ensuremath {*} & \ensuremath {*} \\ + $2$ & \ensuremath {\dagger } & & & \ensuremath {\dagger } \\ + $3$ & \ensuremath {\ddagger } & & & \ensuremath {\ddagger } \\ + $4$ & \ensuremath {\mathsection } & & & \ensuremath {\mathsection } \\ + $5$ & \ensuremath {\mathparagraph } & & & \ensuremath {\mathparagraph } \\ + $6$ & \ensuremath {\delimiter "026B30D } & "026B30D & \ensuremath {**} & \ensuremath {**} \\ + $7$ & \ensuremath {**} & ** & & \ensuremath {\dagger \dagger } \\ + $8$ & \ensuremath {\dagger \dagger } & & & \ensuremath {\ddagger \ddagger } \\ + $9$ & \ensuremath {\ddagger \ddagger } & & & \ensuremath {\mathsection \mathsection } \\ +$10$ & \texttt{LaTeX Error} & & & \ensuremath {\mathparagraph \mathparagraph }\\ +$11$ & \texttt{LaTeX Error} & & \ensuremath {***} & \ensuremath {***} \\ +$12$ & \texttt{LaTeX Error} & & & \ensuremath {\dagger \dagger \dagger } \\ +\end{tabular} +\end{center} + +\noindent and so on, while at least the (\ldots\ of \ldots ) part +of the page number is displayed correctly.\\ + +\bigskip + +Without option \texttt{fnsymbolmult=true} of the \textsf{pageslts} package +(and the help of \textsc{Heiko Oberdiek}'s \textsf{alphalph} package), +after page~9 (\textquotedblleft \ensuremath {\ddagger \ddagger }\textquotedblright ) +(and also for negative page numbers) there would just appear a +\begin{quote} +\begin{verbatim} +LaTeX Error: Counter too large +See the LaTeX manual or LaTeX Companion for explanation. +You've lost some text. Try typing <return> to proceed. +If that doesn't work, type X <return> to quit. +\end{verbatim} +\end{quote} +Now the page numbers after 5 (\ensuremath {\mathparagraph }) are +continued with the doubled \textquotedblleft number\textquotedblright\ of +the first, second, third,\ldots\ page (\ensuremath {**}, +\ensuremath {\dagger \dagger }, \ensuremath {\ddagger \ddagger }, +\ensuremath {\mathsection \mathsection }, +\ensuremath {\mathparagraph \mathparagraph }), +and after the tenth page the \textquotedblleft number\textquotedblright\ is +tripled (\ensuremath {***}, \ensuremath {\dagger \dagger \dagger },\ldots). +Page zero is named 0 and negative pages just named like the positive ones +with addition of a minus sign~($-$). + +\bigskip + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): +\lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-60] + +\newpage + +\pagenumbering{Roman} + +\section{Roman - again!\label{Roman2}} + +The page number would start with \textquotedblleft I\textquotedblright\ again -- +but for the \textsf{pageslts} package (with option \texttt{pagecontinue=true}, +or with option just \texttt{pagecontinue}, or even just +\nolinebreak{with\textbf{out}} option \texttt{pagecontinue=false}). +This package remembered the (\arabic{pagesLTS.double.Roman}-1)\footnote{% +OK, here you have to compute this value for yourself, but\ % +subtracting one should be managable for \TeX{}nicians.} pages already +done in Roman output, and therefore continues with page +\textquotedblleft \thepage \textquotedblright .\\ +If you want to start with \textquotedblleft I\textquotedblright\ all +over again, you will have two pages with the same name, +but nevertheless you can do this by using option \texttt{pagecontinue=false} +or a \verb|\setcounter{page}{1}|\ here (not demonstrated in this example file).\\ + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): + \lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never +\verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-6] + +\newpage + +\verb|\lastpageref{pagesLTS.Roman}| does \textbf{not} +refer to this page (but there: \lastpageref{pagesLTS.Roman}), +because the option \texttt{pagecontinue=true} +was chosen. When a reference to this page is wanted,\\ +\verb|\lastpageref{pagesLTS.Roman.2}| can be used: \lastpageref{pagesLTS.Roman.2}.\\ + +\bigskip +There are \lastpages{Roman}{2}~pages (\verb|\lastpages{Roman}{2}|) in this +second Roman sector.\\ +The Roman page numbering scheme is continued later in section~\ref{Roman3})! + +\newpage + +\pagenumbering{alph} + +\section{alph\label{alph}} + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): + \lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-4] + +\newpage + +Without option \texttt{alphMult=ab} of the \textsf{pageslts} (and the help of +\textsc{Heiko Oberdiek's} \textsf{alphalph} package), after page +\textquotedblleft z\textquotedblright\ there would just appear a +\begin{quote} +\begin{verbatim} +LaTeX Error: Counter too large +See the LaTeX manual or LaTeX Companion for explanation. +You've lost some text. Try typing <return> to proceed. +If that doesn't work, type X <return> to quit. +\end{verbatim} +\end{quote} +Now the page numbers are continued aa, ab, ac,\ldots\ (aa, bb, cc,\ldots\ is +also possible, see the \textsf{pageslts} documentation).\\ +To demonstrate this, we add a\\ +\verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}|\\ +in the source code here. + +\addtocounter{page}{\pagesLTSexamplealph} + +\bigskip + +\lipsum[1-18] + +\newpage + +\pagenumbering{Roman} + +\section{Roman - third time!\label{Roman3}} + +The page number would start with +\textquotedblleft I\textquotedblright\ again -- but +for the \textsf{pageslts} package (with option \texttt{pagecontinue=true}, +or with option just \texttt{pagecontinue}, or even just +\nolinebreak{with\textbf{out}} option \texttt{pagecontinue=false}). +This package remembered the +(\arabic{pagesLTS.double.Roman}-1)\footnote{OK, here\ % +you have to compute this value for yourself, but\ % +subtracting one should be managable for \TeX nicians.} pages already +done in Roman output, and therefore continues with page +\textquotedblleft \thepage \textquotedblright .\\ +If you want to start with \textquotedblleft I\textquotedblright\ all +over again, you will have (at least) two pages with the same name, +but nevertheless you can do this by using option +\texttt{pagecontinue=false} instead of \texttt{pagecontinue=true} +(not demonstrated here).\\ + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): + \lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-3] + +\newpage + +\lastpageref{pagesLTS.Roman} +(\verb|\lastpageref{pagesLTS.Roman}|) +\textbf{does} refers to this page, because the option +\texttt{pagecontinue=true} was chosen. Also\\ +\verb|\lastpageref{pagesLTS.Roman.3}| can be used: \lastpageref{pagesLTS.Roman.3}.\\ + +\bigskip + +There are \lastpages{Roman}{3}~pages (\verb|\lastpages{Roman}{3}|) in this +third Roman sector.\\ + +\newpage + +\pagenumbering{Alph} + +\section{Alph} + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): + \lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\lipsum[1-3] + +Without option \texttt{alphMulti=AB} of the \textsf{pageslts} (and the help of +\textsc{Heiko Oberdiek's} \textsf{alphalph} package), after page +\textquotedblleft Z\textquotedblright\ there would just appear a +\begin{quote} +\begin{verbatim} +LaTeX Error: Counter too large +See the LaTeX manual or LaTeX Companion for explanation. +You've lost some text. Try typing <return> to proceed. +If that doesn't work, type X <return> to quit. +\end{verbatim} +\end{quote} +Now the page numbers are continued AA, AB, AC,\ldots\ (AA, BB, CC,\ldots\ is +also possible, see the \textsf{pageslts} documentation).\\ +This is not demonstrated here, but see section~\ref{alph}. + +\newpage + +\section{The End} + +\noindent First page (\verb|\lastpageref{pagesLTS.0}|): + \lastpageref{pagesLTS.0}\\ + +\noindent The page (\verb|\thepage|): \thepage \\ + +\noindent Current page (\verb|\theCurrentPage|), +i.\,e. counted continuously from the first page): \theCurrentPage \\ + +\noindent CurrentPageLocal (\verb|\theCurrentPageLocal|), +i.\,e. counted continuously from the first page of the +current page numbering sheme): \theCurrentPageLocal \\ + +\noindent Last roman page (pagesLTS.roman): \lastpageref{pagesLTS.roman}{\hskip4em } +(There are \lastpageref{pagesLTS.roman.local} pages with roman numbers.)\\ + +\noindent Last Roman page (pagesLTS.Roman): \lastpageref{pagesLTS.Roman}{\hskip3em } +(There are \lastpageref{pagesLTS.Roman.local}~pages with Roman numbers:\\ +\lastpages{Roman}{1}~pages in the first Roman sector +(\pageref{Roman}{\hskip3em }-\lastpageref{pagesLTS.Roman.1}{\hskip3em }),\\ +\lastpages{Roman}{2}~pages in the second Roman sector +(\pageref{Roman2}{\hskip3em }-\lastpageref{pagesLTS.Roman.2}{\hskip3em }), and\\ +\lastpages{Roman}{3}~pages in the third Roman sector +(\pageref{Roman3}{\hskip3em }-\lastpageref{pagesLTS.Roman.3}{\hskip3em }).\\ + +\noindent Last arabic page (pagesLTS.arabic): \lastpageref{pagesLTS.arabic}{\hskip5em } +(There are only \lastpageref{pagesLTS.arabic.local} pages with arabic numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexampleArabic\verb|}| was used.)\\ + +\noindent Last fnsymbol page (pagesLTS.fnsymbol): \lastpageref{pagesLTS.fnsymbol} \\ +(\verb|\lastpageref{pagesLTS.fnsymbol}| -- never \verb|\pageref{pagesLTS.fnsymbol}|!)\\ +(There are \lastpageref{pagesLTS.fnsymbol.local} pages with fnsymbol numbers.)\\ + +\noindent Last alph page (pagesLTS.alph): \lastpageref{pagesLTS.alph}{\hskip4em } +(There are only \lastpageref{pagesLTS.alph.local} pages with alph numbers, +because an \verb|\addtocounter{page}{|\pagesLTSexamplealph\verb|}| was used.)\\ + +\noindent Last Alph page (pagesLTS.Alph): \lastpageref{pagesLTS.Alph}{\hskip4em } +(There are \lastpageref{pagesLTS.Alph.local} pages with Alph numbers.)\\ + +\noindent Last page's \textit{name} (LastPage): \lastpageref{LastPage}\\ + +\noindent Very last page's \textit{name} (VeryLastPage): \lastpageref{VeryLastPage}\\ +(\texttt{LastPage} and \texttt{VeryLastPage} are identical, unless +a package with output \linebreak +\verb|\AtEndDocument| after the \textsf{pageslts} package was added.)\\ + +\noindent Last page's \textit{number} (LastPages): \lastpageref{LastPages}{\hskip3em } +(=~total number of pages)\\ + +\medskip + +\noindent Page \thepage\ (\theCurrentPage; local: \theCurrentPageLocal) of % +\lastpageref{pagesLTS.roman} (\lastpageref{pagesLTS.roman.local}) + % +\lastpageref{pagesLTS.Roman} (\lastpageref{pagesLTS.Roman.local}) + % +\lastpageref{pagesLTS.arabic} (\lastpageref{pagesLTS.arabic.local}) + % +\lastpageref{pagesLTS.fnsymbol} (\lastpageref{pagesLTS.fnsymbol.local}) + % +\lastpageref{pagesLTS.alph} (\lastpageref{pagesLTS.alph.local}) + % +\lastpageref{pagesLTS.Alph} (\lastpageref{pagesLTS.Alph.local}) = % +\lastpageref{LastPages} pages. + +\end{document} +%</example> +% \end{macrocode} +% +% \bigskip +% +% \StopEventually{} +% +% \section{The implementation} +% +% (This and the source code of the example file are the reasons +% for printing the documentation in landscape format instead of portrait.)\\ +% +% We start off by checking that we are loading into \LaTeXe{} and +% announcing the name and version of this package. +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e}[1994/06/01] +\ProvidesPackage{pageslts}[2011/08/08 v1.2a + Refers to special pages' numbers/names (HMM)] + +% \end{macrocode} +% +% A short description of the \xpackage{pageslts} package: +% +% \begin{macrocode} +%% Allows for things like\\ +%% |Page \thepage\ (\theCurrentPage; local: \theCurrentPageLocal) of % +%% \lastpageref{pagesLTS.roman}(\lastpageref{pagesLTS.roman.local}) + % +%% \lastpageref{pagesLTS.Roman}(\lastpageref{pagesLTS.Roman.local}) + % +%% \lastpageref{pagesLTS.arabic}(\lastpageref{pagesLTS.arabic.local}) + % +%% \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\\ +%% 'Page d (57; local: 4) of ii(2) + XX(20) + *(1) + 30(30) + e(5) + C(3) = 61 pages.'. + +% \end{macrocode} +% +% The package is now named `pageslts' but had been named `pagesLTS' before. +% \LaTeX\ does not load a package two times, but it is case sensitive, +% i.\,e. \emph{would} load `pageslts' and `pagesLTS', resulting in +% possible problems. Therefore we check for a loaded `pagesLTS' package +% (assuming |\pagesLTS@loaded| is not |p@gesLTSlo@ded| and not defined to +% |p@gesLTSlo@ded| by another package). This check might work only for +% the second and following compilation runs. +% +% \begin{macrocode} +\@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 + } + +\gdef\pagesLTS@loaded{p@gesLTSlo@ded} + +% \end{macrocode} +% +% For its |\AfterLastShipout| (as well as its |\AtEndAfterFileList|) command +% we need the \xpackage{atveryend} package by \textsc{Heiko Oberdiek} +% (see subsection~\ref{ss:Downloads}): +% +% \begin{macrocode} +\RequirePackage{atveryend}[2011/04/23]% v1.7 +% \end{macrocode} +% +% For its |\EveryShipout| command we need the \xpackage{everyshi} +% package by \textsc{Martin Schr\"{o}der} (see subsection~\ref{ss:Downloads}): +% +% \begin{macrocode} +\RequirePackage{everyshi}[2001/05/15]% v3.00 +% \end{macrocode} +% +% For the handling of the options we need the \xpackage{kvoptions} +% package by \textsc{Heiko Oberdiek} (see subsection~\ref{ss:Downloads}): +% +% \begin{macrocode} +\RequirePackage{kvoptions}[2010/02/22]% v3.7 +% \end{macrocode} +% +% The \xpackage{undolabl} package of \textsc{H.-Martin M\"{u}nch} (i.\,e. myself), +% with code from \textsc{Ulrich Diez}, (see subsection~\ref{ss:Downloads}) +% is needed to overwrite labels, when the same page numbering scheme +% is used twice (or even more often). +% +% \begin{macrocode} +\RequirePackage{undolabl}[2011/08/08]% v1.0j +% \end{macrocode} +% +% We use the \xpackage{rerunfilecheck} package by \textsc{Heiko Oberdiek} +% to make sure that the user gets and sees the rerun warnings (if any). +% +% \begin{macrocode} +\RequirePackage{rerunfilecheck}[2011/04/15]% v1.7 +% \end{macrocode} +% +% We must not forget to give the source of |Prelim@EveryShipout|: +% +% \begin{macrocode} +%% pageslts package uses Prelim@EveryShipout code from the +%% prelim2e package [2009/05/29 v1.3] by Martin Schr\"{o}der, thanks! + +% \end{macrocode} +% +% About the \xpackage{prelim2e} package by \textsc{Martin Schr\"{o}der} +% see subsection~\ref{ss:Downloads}.\\ +% +% A last information for the user(s): +% +% \begin{macrocode} +%% pageslts may work with earlier versions of those packages, +%% but this was not tested. Please consider updating your packages +%% to the most recent version (if they are not already the most +%% recent version). + +% \end{macrocode} +% See subsection~\ref{ss:Downloads} about how to get them.\\ +% +% \pagebreak +% +% The very old version~2.0 (and earlier) of the \xpackage{endfloat} +% package actually redefined the |\enddocument| command, +% and so interferred drastically with the \LaTeXe\ commands which +% make use of |\AtEndDocument|. Newer versions of \xpackage{endfloat} +% exists (at the time of writing this documentation: v2.4i as of 1995/10/11) +% in modern documentation form, which are available from \CTAN{} +% (see subsection~\ref{ss:Downloads}). +% A~note is placed here, and later it is checked whether a (very) old +% \xpackage{endfloat} package is in use. If it is, a warning or even +% an error message is given, depending on \xpackage{endfloat} version. +% This assumes, that the old versions of endfloat at least gave +% a version date, of course. +% +% \begin{macrocode} +%% The recent version of the endfloat package is v2.4i as of 1995/10/11. +%% The pageslts package is not fully compatible with version 2.0 +%% (and earlier) of the endfloat package, because those versions +%% redefined the \enddocument command. + +% \end{macrocode} +% +% The options are introduced: +% +% \begin{macrocode} +\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} + +\ProcessKeyvalOptions* + +% \end{macrocode} +% +% For comparisons, zero, one, two and three are defined (|\z@|, |\@ne| and so on +% do not work for this). +% +% \begin{macrocode} +\def\pagesLTS@zero{0} +\def\pagesLTS@one{1} +\def\pagesLTS@two{2} +\def\pagesLTS@three{3} + +% \end{macrocode} +% +% The traditional behaviour is a reset of the page number to one, +% each time the page numbering scheme changes. The option +% |pagecontinue| changes this to a continuation with the +% number/name following the last page number/name of the same +% page numbering scheme. The user is informed accordingly. +% +% \begin{macrocode} +\ifpagesLTS@pagecontinue% + \PackageInfo{pageslts}{Option pagecontinue enabled\MessageBreak% + (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% + } +\else +% \end{macrocode} +% +% \pagebreak +% +% \begin{macrocode} + \PackageWarningNoLine{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!\MessageBreak% + } +\fi + +% \end{macrocode} +% +% The page number printed in \texttt{alph} or in \texttt{Alph} +% page numbering scheme had to be $>0$ and \nolinebreak{$<27$.}\ Now +% the \xpackage{alphalph} package allows to extend the +% numbering scheme (not only for pages). Because some users +% prefer aa, ab, ac, ad,\ldots\ and some aa, bb, cc, dd,\ldots, +% both schemes can be choosen via the options. +% The \texttt{fnsymbol} page numbering scheme was restricted to values +% $>0$ and \nolinebreak{$<10$.}\ The \xpackage{alphalph} package allows +% to extend this page numbering scheme, too. Option \texttt{fnsymbolmult} +% can be choosen with the \xpackage{pageslts} package. +% If no extension is whished (or another extension is whished +% and implemented manually), \xpackage{pageslts} can be called with +% options set to 0 (zero) and false: |alphMult=0|, |AlphMulti=0|, +% |fnsymbolmult=false|. +% +% \begin{macrocode} +\def\pagesLTS@ab{ab} +\def\pagesLTS@bb{bb} +\def\pagesLTS@ABi{AB} +\def\pagesLTS@BBi{BB} + +\ifx\pagesLTS@alphMult\pagesLTS@ab% + \ifpagesLTS@pagecontinue% \relax + \else + \PackageWarningNoLine{pageslts}{Option pagecontinue=false used,\MessageBreak% + but not alphMult=0.\MessageBreak% + Now setting alphMult=0.\MessageBreak% + } + \setkeys{pagesLTS}{alphMult=0} + \fi +\else + \ifx\pagesLTS@alphMult\pagesLTS@bb% + \ifpagesLTS@pagecontinue% \relax + \else + \PackageWarningNoLine{pageslts}{Option pagecontinue=false used,\MessageBreak% + but not alphMult=0.\MessageBreak% + Now setting alphMult=0.\MessageBreak% + } + \setkeys{pagesLTS}{alphMult=0} + \fi + \else + \ifx\pagesLTS@alphMult\pagesLTS@zero% + \PackageWarningNoLine{pageslts}{% + Option alphMult=0 found:\MessageBreak% + The pageslts package was used, but the option\MessageBreak% + alphMult was set to 0 (zero).\MessageBreak% + If you want the page numbers to be extended\MessageBreak% + after z, you have to organize this yourself now.\MessageBreak% + 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!\MessageBreak% + } + \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!\MessageBreak% + } + \setkeys{pagesLTS}{alphMult=ab} + \fi + \fi +\fi + +\ifx\pagesLTS@AlphMulti\pagesLTS@ABi% + \ifpagesLTS@pagecontinue% \relax + \else + \PackageWarningNoLine{pageslts}{Option pagecontinue=false used,\MessageBreak% + but not AlphMulti=0.\MessageBreak% + Now setting AlphMulti=0.\MessageBreak% + } + \setkeys{pagesLTS}{AlphMulti=0} + \fi +\else + \ifx\pagesLTS@AlphMulti\pagesLTS@BBi% + \ifpagesLTS@pagecontinue% \relax + \else + \PackageWarningNoLine{pageslts}{Option pagecontinue=false used,\MessageBreak% + but not AlphMulti=0.\MessageBreak% + Now setting AlphMulti=0.\MessageBreak% + } + \setkeys{pagesLTS}{AlphMulti=0} + \fi + \else + \ifx\pagesLTS@AlphMulti\pagesLTS@zero% + \PackageWarningNoLine{pageslts}{% + Option AlphMulti=0 found:\MessageBreak% + The pageslts package was used, but the option\MessageBreak% + AlphMulti was set to 0 (zero).\MessageBreak% + If you want the page numbers to be extended\MessageBreak% + after Z, you have to organize this yourself now.\MessageBreak% + 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!\MessageBreak% + } + \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!\MessageBreak% + } + \setkeys{pagesLTS}{AlphMulti=AB} + \fi + \fi +\fi + +% \end{macrocode} +% +% If |alph| or |Alph| or |fnsymbol| page numbers shall be continued, +% the \xpackage{alphalph} package is required. +% +% \begin{macrocode} +\ifx\pagesLTS@alphMult\pagesLTS@zero% \relax +\else \RequirePackage{alphalph}[2010/04/18]% v2.3 +\fi + +\ifx\pagesLTS@AlphMulti\pagesLTS@zero% \relax +\else \RequirePackage{alphalph}[2010/04/18]% v2.3 +\fi + +\ifpagesLTS@fnsymbolmult% +\RequirePackage{alphalph}[2010/04/18]% v2.3 +\fi + +% \end{macrocode} +% +% For the roman page numbering scheme, it is just the +% choice of an extension by \xpackage{pageslts} or not. +% +% \begin{macrocode} +\ifpagesLTS@romanMult% + \ifpagesLTS@pagecontinue% \relax + \else + \PackageWarningNoLine{pageslts}{Option pagecontinue=false used,\MessageBreak% + but also romanMult.\MessageBreak% + Now setting romanMult=false.\MessageBreak% + } + \setkeys{pagesLTS}{romanMult=false} + \fi +\fi +\ifpagesLTS@romanMult% + \PackageInfo{pageslts}{Option romanMult enabled\MessageBreak% + (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% + } +\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% + } +\fi + +% \end{macrocode} +% +% Same for the Roman page numbering scheme. +% +% \begin{macrocode} +\ifpagesLTS@RomanMulti% + \ifpagesLTS@pagecontinue% \relax + \else + \PackageWarningNoLine{pageslts}{Option pagecontinue=false used,\MessageBreak% + but also RomanMulti.\MessageBreak% + Now setting RomanMulti=false.\MessageBreak% + } + \setkeys{pagesLTS}{RomanMulti=false} + \fi +\fi +\ifpagesLTS@RomanMulti% + \PackageInfo{pageslts}{Option RomanMulti enabled\MessageBreak% + (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% + } +\else + \PackageWarningNoLine{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% + } +\fi + +% \end{macrocode} +% +% For the footnotesymbol page numbering scheme, it is also +% just the choice of a extension by \xpackage{pageslts} or not. +% +% \begin{macrocode} +\ifpagesLTS@fnsymbolmult% + \ifpagesLTS@pagecontinue% \relax + \else + \PackageWarningNoLine{pageslts}{Option pagecontinue=false used,\MessageBreak% + but also fnsymbolmult.\MessageBreak% + Now setting fnsymbolmult=false.\MessageBreak% + } + \setkeys{pagesLTS}{fnsymbolmult=false} + \fi +\fi +\ifpagesLTS@fnsymbolmult% + \PackageInfo{pageslts}{Option fnsymbolmult enabled\MessageBreak% + (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% + } +\else + \PackageWarningNoLine{pageslts}{% + Option fnsymbolmult is set to false:\MessageBreak% + The pageslts package was used, but the option\MessageBreak% + fnsymbolmult was set to false.\MessageBreak% + If you want the page numbering of the footnotesymbol\MessageBreak% + 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% + } +\fi + +% \end{macrocode} +% +% Now defining some variables, place-holders, and abbreviations: +% +% \begin{macrocode} +\def\pagesLTS@pnc{0} +\def\pagesLTS@called{0} +\def\pagesLTS@fns{fnsymbol} +\def\pagesLTS@alph{alph} +\def\pagesLTS@Alph{Alph} +\def\pagesLTS@AlphAlph{0} +\def\pagesLTS@hyper{0} +\def\pagesLTS@rerun{0} +\def\pagesLTS@eso{0} +\def\pagesLTS@esov{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% + was not called at the beginning of the document\MessageBreak% + (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% + } + +% \end{macrocode} +% +% It is checked whether writing into an \xfile{.aux}-file is allowed. +% The \xpackage{pageslts} package cannot be used without that! +% If it is allowed, we define |\pagesLTS@loaded| as |p@gesLTSnotlo@ded| +% for the next run. +% +% \begin{macrocode} +\if@filesw% \relax +\else + \PackageError{pageslts}{No auxiliary file allowed.}{% + The pageslts package was not allowed to write to an .aux file.\MessageBreak + This package does not work without access to an .aux file.\MessageBreak + Press Ctrl+Z to exit.\MessageBreak + } +\fi + +% \end{macrocode} +% +% \begin{macro}{\pagenumbering} +% \indent \qquad To keep the original meaning of |\pagenumbering|: +% +% \begin{macrocode} +\let\OrigPagenumbering\pagenumbering + +% \end{macrocode} +% \end{macro} +% +% Defining some new counters (and doing related things): +% +% \begin{macrocode} +\newcounter{CurrentPage} +\setcounter{CurrentPage}{1} +\def\theCurrentPageLocal{\arabic{pagesLTS.current.local.\pagesLTS@pnc}} +% \end{macrocode} +% +% The counter |pagesLTS.pagenr| is for saving the total page +% number of the last page in the \xfile{.aux} file. +% +% \begin{macrocode} +\newcounter{pagesLTS.pagenr} +% \end{macrocode} +% +% While generally +% |\pagesLTS@ifcounter{pagesLTS.current.local.\pagesLTS@pnc}| +% is used, for the beginning of the document +% |pagesLTS.current.local.0| is predefined. +% (A~|\pagesLTS@ifcounter{pagesLTS.current.local.\pagesLTS@pnc}| +% could be used for this, too, but we know that |pagesLTS.current.local.0| +% was not defined, so we can just do the definition here.) +% And the first local page gets the number one. +% +% \begin{macrocode} +\newcounter{pagesLTS.current.local.0} +\setcounter{pagesLTS.current.local.0}{1} +% \end{macrocode} +% +% And the same again for |pagesLTS.pnc.0|. +% +% \begin{macrocode} +\newcounter{pagesLTS.pnc.0} + +% \end{macrocode} +% +% \phantomsection +% \begin{macro}{\xroman}\label{xroman} +% When |\roman{...}| is used with a value $<1$, \LaTeX\ just ignores this +% (see subsection~\ref{ss:overflow}). Here we provide a command +% |\xroman{...}| \nolinebreak{(e\textbf{x}panded} roman), +% which gives the usual |\roman| numbers (i, ii, iii, iv,\ldots) +% for positive values, +% $-\left\vert \ldots \right\vert $ (i.\,e. -i, -ii, -iii, -iv,\ldots) +% for negative values, and 0 for all other values (which should be zero). +% +% \begin{macrocode} +\newcommand{\xroman}[1]{% + \ifnum\value{#1}>0% + \roman{#1}% + \else% + \ifnum\value{#1}<0% +% \end{macrocode} +% +% |\arabic{#1}| gives the arabic number of argument |#1|, +% which is negative here (for example $-7$), +% \textquotedblleft |-|\textquotedblright\ puts another minus +% sign in front of it (for example $--7$), |\number| removes +% all unnecessary preceding zeros, plus and minus signs +% (for example $7$), |\romannumeral| turns it into a |roman| +% number (for example vii), and +% \textquotedblleft |-|\textquotedblright\ puts the minus +% sign back in front of it (for example -vii). +% +% \begin{macrocode} + -\romannumeral\number-\arabic{#1}% + \else% + 0% + \fi% + \fi% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\XRoman} +% |\XRoman| does the same for uppercase |\Roman| numbers. +% |-\uppercase{\romannumeral\number-\arabic{#1}}| cannot be used, +% because the result in the example is |-\uppercase{vii}| and +% not |-VII|.\footnote{This does not matter for the print out, +% but for the display of the logical page numbers +% as well as the \xfile{.aux} file.} Therefore we have a look +% at \LaTeX's own |\@Roman\FOOcounter|,\\ +% |\def\@Roman#1{\expandafter\@slowromancap\romannumeral #1@}|,\\ +% and use |\@slowromancap|, which is a fully expandable macro, +% to do the trick for this: +% +% \pagebreak +% +% \noindent \textquotedblleft +% \begin{quote} +%\begin{verbatim} +%\def\@slowromancap#1{\ifx @#1% then terminate +%\else +%\if i#1I\else\if v#1V\else\if x#1X\else\if l#1L\else\if +%c#1C\else\if d#1D\else \if m#1M\else#1\fi\fi\fi\fi\fi\fi\fi +%\expandafter\@slowromancap +%\fi +%} +%\end{verbatim} +% \end{quote} +% \textquotedblright\ (1998/05/16 Version v1.1g LaTeX Kernel File~m +% ltcounts.dtx 105 Counters and Lengths). +% +% \begin{macrocode} +\newcommand{\XRoman}[1]{% + \ifnum\value{#1}>0% + \Roman{#1}% + \else% + \ifnum\value{#1}<0% + -\expandafter\@slowromancap\romannumeral\number-\arabic{#1}@% + \else% + 0% + \fi% + \fi% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\XXRoman} +% In older versions |\XXRoman| was used. For compatibility, it is forwarded to |\XRoman| +% and an error message is given. +% +% \begin{macrocode} +\newcommand{\XXRoman}[1]{\XRoman{#1}% + \PackageError{pageslts}{Old command \string\XXRoman\space found}{Replaced by \string\XRoman.}% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pagesLTS@ifcounter} +% We provide a way to create counters like +% \begin{itemize} +% \item[-] \DescribeMacro{pagesLTS.pnc. page numbering scheme } +% |pagesLTS.pnc.<page numbering scheme>|, e.\,g. |pagesLTS.pnc.Roman|, +% \item[-] \DescribeMacro{pagesLTS.double. page numbering scheme } +% |pagesLTS.double.<page numbering scheme>|, e.\,g. |pagesLTS.double.Roman|, +% \item[-] \DescribeMacro{PageCurrentLocal. page numbering scheme } +% |PageCurrentLocal.<page numbering scheme>|, e.\,g. |PageCurrentLocal.Roman|, +% \end{itemize} +% for all page numbering schemes, even those not supported +% by the current original |\pagenumbering| +% (1994/05/19 v1.1a LaTeX Kernel File w ltpageno.dtx 52 Page Numbering), +% which is defined as\\ +% \begin{quote} +%\begin{verbatim} +%\countdef\c@page=0 \c@page=1 +%\def\cl@page{} +%\def\pagenumbering#1{% +% \global\c@page \@ne \gdef\thepage{\csname @#1\endcsname +% \c@page}} +%\end{verbatim} +% \end{quote} +% +% \begin{macrocode} +\newcommand{\pagesLTS@ifcounter}[1]{% + \@ifundefined{c@#1}{\newcounter{#1}}{\relax}% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\lastpages} +% We provide a command to give the number of pages in a sector +% of a split page numbering scheme (see page~\pageref{pagesLTS.pnscheme.nr},\\ +% |pagesLTS.<page numbering scheme>.<number>.local.cnt|): +% +% \begin{macrocode} +\newcommand{\lastpages}[2]{% + \pagesLTS@ifcounter{pagesLTS.#1.#2.local.cnt}% + \arabic{pagesLTS.#1.#2.local.cnt}% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pagesLTS@writelabel} +% At last defining the writing of a label: +% +% \begin{macrocode} +\newcommand{\pagesLTS@writelabel}[1]{% + \addtocounter{page}{+1}% +% \end{macrocode} +% +% \noindent |\addtocounter{page}{+1}| because |\pagesLTS@putlabel| includes an\\ +% |\addtocounter{page}{-1}|, which is not necessary here.\\ +% Into the \xfile{.aux} file something like\\ +% |\newlabel{pagesLTS.Roman}{{}{VIII}{}{page.VIII}{}}|\\ +% is written, thus |\lastpageref{pagesLTS.Roman}| prints |VIII| and +% links to |page.VIII|. +% +% \begin{macrocode} + \pagesLTS@putlabel{pagesLTS.#1}{\thepage}{1} + \addtocounter{page}{-1}% + \ifx\pagesLTS@pnc\pagesLTS@zero% \relax +% \end{macrocode} +% +% i.\,e. if the current page numbering scheme is +% \textquotedblleft 0\textquotedblright, i.\,e. before the first +% |\pagenumbering{...}| command, do nothing, +% +% \begin{macrocode} + \else% + \addtocounter{page}{+1}% + \pagesLTS@putlabel{pagesLTS.#1.local}{\theCurrentPageLocal}{1} +% \end{macrocode} +% +% otherwise write into the \xfile{.aux} file something like\\ +% |\newlabel{pagesLTS.arabic.local}{{}{5}{}{page.8}{}}|,\\ +% thus |\lastpageref{pagesLTS.arabic.local}| prints |5| and +% links to |page.8|. Here (and in the example file) it is not +% \textquotedblleft print |8| and link to |page.8|\textquotedblright , +% because |\addtocounter{page}{3}| has been used, thus the page with +% \textquotedblleft number\textquotedblright\ (name) |8| is the +% \textbf{fifth} $(=8-3)$ page. +% +% \begin{macrocode} + \addtocounter{page}{-1}% + \fi% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\erroralphalph} +% \indent |\erroralphalph| extends the +% \textquotedblleft numbers\textquotedblright\ of counters +% to zero and negative values for representations usually +% not supporting this: |\alphalph|, |\AlphAlph|, and +% |\fnsymbolmult| of the \xpackage{alphalph} package.\\ +% |\alph|, |\Alph|, and |\fnsymbol| would not support +% \textquotedblleft numbers\textquotedblright\ below one.\\ +% |\arabic| already supports negative numbers and zero.\\ +% |\roman| and |\Roman| support neither negative numbers +% nor zero, but are expanded in this package +% (|\xroman| and |\XRoman|), see page~\pageref{xroman}.\\ +% +% \begin{macrocode} + +%% 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}}% + \else% + \ifnum\value{#2}<0% + -#1{\expandafter\@gobble\the\value{#2}}% + \else% + 0% + \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{macrocode} +% \end{macro} +% +% \begin{macro}{\expandPagenumbering} +% \indent Here the |\erroralphalph| command is called with the +% appropriate arguments for each page numbering scheme. +% +% \begin{macrocode} + +\newcommand{\expandPagenumbering}[1]{% + \let\Origthepage\thepage% + \def\pagesLTS@tmpC{arabic}% + \ifx\pagesLTS@pnc\pagesLTS@tmpC% \relax +% \end{macrocode} +% +% |\arabic| already supports negative numbers and zero +% (|-MAX...MAX|, where |MAX|\,$ = 2\,147\,483\,647$). +% +% \begin{macrocode} + \else% + \def\pagesLTS@tmpC{roman}% + \ifx\pagesLTS@pnc\pagesLTS@tmpC% + \ifpagesLTS@romanMult% +% \end{macrocode} +% +% |\erroralphalph{\roman}{page}| cannot be used, because +% |-\roman{\expandafter\@gobble\the\value{page}}| does not work. +% If option |romanMult| is not false, +% |\xroman| (see page~\pageref{xroman}) expands the usable +% roman page numbers to values below 1 (i, I, respectively), +% see subsubsection~\ref{sss:romanMult}. +% +% \begin{macrocode} + \renewcommand*{\thepage}{\xroman{page}}% + \fi% + \else% + \def\pagesLTS@tmpC{Roman}% + \ifx\pagesLTS@pnc\pagesLTS@tmpC% + \ifpagesLTS@RomanMulti% +% \end{macrocode} +% +% The same for |\Roman| page numbering, expanded by |\XRoman| +% (see page~\pageref{xroman}). +% +% \begin{macrocode} + \renewcommand*{\thepage}{\XRoman{page}}% + \fi% + \else% + \ifx\pagesLTS@pnc\pagesLTS@alph% +% \end{macrocode} +% +% |\alph| and |\Alph| page numberings are expanded to negative +% and zero values, and to values greater than +% \textquotedblleft z\textquotedblright\ or +% \textquotedblleft Z\textquotedblright\ with the +% \xpackage{alphalph} package.~-- +% If |\pagesLTS@alphMult| was zero, nothing is done. +% +% \begin{macrocode} + \ifx\pagesLTS@alphMult\pagesLTS@ab% + \renewcommand*{\thepage}{\erroralphalph{\alphalph}{page}}% + \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% + \fi% + \else% + \ifx\pagesLTS@pnc\pagesLTS@fns% +% \end{macrocode} +% +% Same for |\fnsymbol| page numbers. +% +% \begin{macrocode} + \ifpagesLTS@fnsymbolmult% + \renewcommand*{\thepage}{\erroralphalph{\fnsymbolmult}{page}}% + \fi% + \else% +% \end{macrocode} +% +% If the used page numbering scheme has not been recognized by the +% \xpackage{pageslts} package so far, we can do nothing, and problems +% might result.\\ +% +% \begin{macrocode} + \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% + \let\pagesLTS@tmpC\undefined% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pagenumbering} +% \indent Now for the \textbf{new} version of the |\pagenumbering| command: +% +% \begin{macrocode} +\renewcommand{\pagenumbering}[1]{% +% \end{macrocode} +% +% If the current page numbering scheme, |\pagesLTS@pnc|, or the +% requested page numbering scheme, |#1|, is |\pagesLTS@fns|, +% i.\,e. \texttt{fnsymbol}, the counter\texttt{pagesLTS.fnsymbol.local} +% is needed. If it does not exists yet, it is created here. +% +% \begin{macrocode} + \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% +% \end{macrocode} +% +% If the current page numbering scheme, |\pagesLTS@pnc|, and the +% requested page numbering scheme, |#1|, is the same one, nothing +% further is done, otherwise the real action begins. +% +% \begin{macrocode} + \ifx\pagesLTS@pnc\pagesLTS@tmpA% \relax + \else% +% \end{macrocode} +% +% The next code is executed, when we are at a page after the first one. +% This distinction is done for two reasons:\\ +% On the one hand, |\pagenumbering| could be called \textit{before} +% |\begin{document}| (where the current page should not be +% greater than one), and on the other hand we go one page back to +% aim all references to that page. Obviousely at the first page +% there is no going backward. +% +% \begin{macrocode} + \ifnum \value{CurrentPage}>1% + \addtocounter{page}{-1}% + \addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{-1}% +% \end{macrocode} +% +% For the case that the page numbering scheme is or will be splitted, +% like e.\,g. the Roman one in the |pageslts-example.tex|, a counter +% like +% |pagesLTS.Roman.1.local.count| +% (or |pagesLTS.Roman.2.local.count|, +% |pagesLTS.Roman.3.local.count|,\ldots ) is introduced and set to the +% number of the local page. +% +% \begin{macrocode} + \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}}% +% \end{macrocode} +% +% If the page numbering scheme is \xpackage{fnsymbol}, +% and if it \textit{was} used before, +% from said counter the number of pages of the preceding uses +% of the same page numbering scheme, |pagesLTS.\pagesLTS@pnc.done|, +% is subtracted (same as for the other schemes, see below). Instead of introducing a new +% counter (which can be problematic, when the number of available counters is limited), +% we borrow the \texttt{pagesLTS.pnc.0} counter, i.\,e. we save its value to |\pagesLTS@tmpa|, +% (ab)use the counter, and then set it back to its former value as saved in |\pagesLTS@tmpa|. +% +% \begin{macrocode} + \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}% + \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}% + \fi% +% \end{macrocode} +% +% If the page numbering scheme is \textit{not} \xpackage{fnsymbol}, +% a~numbered label is written: +% +% \begin{macrocode} + \else% + \pagesLTS@writelabel{\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}}% +% \end{macrocode} +% +% If the page numbering scheme was \textit{not} used before, +% +% \begin{macrocode} + \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}<2% +% \end{macrocode} +% +% an unnumbered label is also written: +% +% \begin{macrocode} + \pagesLTS@writelabel{\pagesLTS@pnc}% +% \end{macrocode} +% +% If the page numbering scheme \textit{was} used before, +% from said counter the number of pages of the preceding uses +% of the same page numbering scheme, |pagesLTS.\pagesLTS@pnc.done|, +% is subtracted. Instead of introducing a new +% counter (which can be problematic, when the number of available counters is limited), +% we again borrow the \texttt{pagesLTS.pnc.0} counter (see above). +% +% \begin{macrocode} + \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}% + \fi% +% \end{macrocode} +% +% The values are written to the \xfile{.aux} file +% (if writing is allowed: |\if@filesw|), +% because they must be available at the beginning of the document: +% +% \begin{macrocode} + \if@filesw% + \immediate\write\@auxout{\string + \pagesLTS@ifcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.cnt}}% + \fi% + \edef\pagesLTS@tmpB{\arabic{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}}% + \if@filesw% + \immediate\write\@auxout{\string + \setcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.cnt}{\pagesLTS@tmpB}}% + \fi% + \fi% +% \end{macrocode} +% +% For further code for the case of \xpackage{fnsymbol} please see below +% (|\lastpagereftext|, page~\pageref{lastpagereftextlabel}).\\ +% The last page number is saved, in case the same page +% numbering scheme is continued later. +% +% \begin{macrocode} + \pagesLTS@ifcounter{pagesLTS.double.\pagesLTS@pnc}% + \setcounter{pagesLTS.double.\pagesLTS@pnc}{\value{page}}% +% \end{macrocode} +% +% We went back one page, so we must go forward again: +% +% \begin{macrocode} + \addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{+1}% + \addtocounter{page}{+1}% +% \end{macrocode} +% +% The page numbering scheme |\pagesLTS@pnc| is now set to +% the new one, given by the user as argument with the +% |\pagenumbering{...}| command: +% +% \begin{macrocode} + \xdef\pagesLTS@pnc{#1}% +% \end{macrocode} +% +% The new page numbering scheme is now started for real: +% +% \begin{macrocode} + \OrigPagenumbering{#1}% +% \end{macrocode} +% +% If a page numbering scheme not known by the original +% |\pagenumbering{...}| command is used, an error will +% arise here - but maybe without error message.\\ +% +% If page numbering schem |\alph|, |\Alph|, or |\fnsymbol| is used, +% \xpackage{pageslts} extends the page numbers according to +% the given options, using the \xpackage{alphalph} package. +% |\arabic| does not need any expansion. +% |\roman| and |\Roman| at least receive a definition for +% zero. +% +% \begin{macrocode} + \expandPagenumbering{#1} +% \end{macrocode} +% +% Counters like |pagesLTS.pnc.Roman| are introduced: +% +% \begin{macrocode} + \pagesLTS@ifcounter{pagesLTS.pnc.\pagesLTS@pnc}% +% \end{macrocode} +% +% The saved number of times this page numbering scheme was used +% is increased by one: +% +% \begin{macrocode} + \addtocounter{pagesLTS.pnc.\pagesLTS@pnc}{1}% +% \end{macrocode} +% +% \indent Now defining the counter |pagesLTS.double.\pagesLTS@pnc|, +% if it did not exist already, adding~1, because this is +% the first page of it (or another one, if the scheme is +% continued): +% +% \begin{macrocode} + \pagesLTS@ifcounter{pagesLTS.double.\pagesLTS@pnc}% + \addtocounter{pagesLTS.double.\pagesLTS@pnc}{1}% +% \end{macrocode} +% +% The page number is continued, if the option |pagecontinue=false| +% is \textbf{not} set, otherwise it is reset to one. Note that neither +% the local nor the current counter are reset, as they contain +% the real \textit{values} and not the \textit{names} of the pages. +% +% \begin{macrocode} + \ifpagesLTS@pagecontinue% + \setcounter{page}{\value{pagesLTS.double.\pagesLTS@pnc}}% + \else% + \setcounter{page}{1}% + \fi% +% \end{macrocode} +% +% If it does not exist already, the counter +% |pagesLTS.current.local.\pagesLTS@pnc| +% (e.\,g. |pagesLTS.current.local.Roman|) is created. +% +% \begin{macrocode} + \pagesLTS@ifcounter{pagesLTS.current.local.\pagesLTS@pnc}% +% \end{macrocode} +% +% If |pagesLTS.double.\pagesLTS@pnc| of the current page numbering +% scheme is equal to one, this is the first page of this page +% numbering scheme. Then |pagesLTS.current.local.\pagesLTS@pnc| +% (which was zero) is set to one. +% +% \begin{macrocode} + \ifnum \value{pagesLTS.double.\pagesLTS@pnc}=1% + \setcounter{pagesLTS.current.local.\pagesLTS@pnc}{1}% + \fi% +% \end{macrocode} +% +% Otherwise, i.\,e. if |\value{CurrentPage}| is not |>1|, +% i.\,e. before the first page has shiped out: +% +% \begin{macrocode} + \else% + %% before the first page has shiped out +% \end{macrocode} +% +% The current page numbering scheme is defined by the +% argument of |\pagenumbering{...}|, which the user gave: +% +% \begin{macrocode} + \xdef\pagesLTS@pnc{#1}% +% \end{macrocode} +% +% \noindent and the page numbering scheme set by the original +% page numbering command +% (1994/05/19 v1.1a LaTeX Kernel File w ltpageno.dtx 52 Page Numbering), +% which resets the page number to one, +% but at the first page continuation does not make sense). +% Well, nearly the original page numbering command: +% |\OrigPagenumbering{\pagesLTS@pnc}| does not work, +% so we \textquotedblleft expand\textquotedblright\ the +% |\OrigPagenumbering| command: +% +% \begin{macrocode} + \countdef\c@page=0 \c@page=1 + \def\cl@page{} + \global\c@page \@ne + \global\def\thepage{\csname \expandafter @\pagesLTS@pnc \endcsname \c@page}% +% \end{macrocode} +% +% If a page numbering scheme is used, which is not known by +% \LaTeX, an error might arise here - but maybe without error message.\\ +% +% If page numbering scheme |\alph|, |\Alph|, or |\fnsymbol| is used, +% \xpackage{pageslts} extends the page numbers according to +% the given options, using the \xpackage{alphalph} package. +% |\arabic| does not need any expansion. +% |\roman| and |\Roman| at least receive a definition for +% zero. +% +% \begin{macrocode} + \expandPagenumbering{#1} +% \end{macrocode} +% +% We are at the first page, so the page counters are set to one: +% +% \begin{macrocode} + \pagesLTS@ifcounter{pagesLTS.pnc.\pagesLTS@pnc}% + \setcounter{pagesLTS.pnc.\pagesLTS@pnc}{1}% + \pagesLTS@ifcounter{pagesLTS.double.\pagesLTS@pnc}% + \setcounter{pagesLTS.double.\pagesLTS@pnc}{1}% + \pagesLTS@ifcounter{pagesLTS.current.local.\pagesLTS@pnc}% + \setcounter{pagesLTS.current.local.\pagesLTS@pnc}{1}% + \fi% +% \end{macrocode} +% +% Whether |\pagenumbering{...}| is called in the preamble, +% |\AtBeginDocument|, right after |\begin{document}|, +% or somewhere in the document, we want to remember +% \textit{whether} it was called at all: +% +% \begin{macrocode} + \gdef\pagesLTS@called{1}% + \fi% +% \end{macrocode} +% +% We do not need the temporary definitions any more. +% +% \begin{macrocode} + \let\pagesLTS@tmpA\undefined% + \let\pagesLTS@tmpB\undefined% + } + +% \end{macrocode} +% \end{macro} +% +% \pagebreak +% +% \begin{macro}{\lastpageref*} +% If \xpackage{hyperref} is used, but (some) references to some last page shall +% not be hyperlinked, a command |\lastpageref*| (analogous to |\pageref*|) is +% needed. Therefore we define (analogous to |\HyPsd@pageref| from +% the \xpackage{hyperref} package by \textsc{Heiko Oberdiek}) +% +% \begin{macrocode} +%% analogous to \HyPsd@pageref from the hyperref package by Heiko Oberdiek: +\def\lastpagereftxt#1{\pagesLTS@@pageref#1*\END} + +% \end{macrocode} +% +% Macro |\pagesLTSpageref| checks, whether a star is present (analogous to +% |\HyPsd@@pageref| again from the \xpackage{hyperref} package +% of \textsc{Heiko Oberdiek}): +% +% \begin{macrocode} +\def\pagesLTS@@pageref#1*#2\END{% + \ifx\\#2\\% no star + \pagesLTS@@@pageref{#1}% + \else% star + \expandafter\pagesLTS@@@pagerefstar% + \fi% +} + +\def\pagesLTS@@@pageref#1{\lastpagereftext{#1}} +\def\pagesLTS@@@pagerefstar#1{\lastpagereftextstar{#1}} + +% \end{macrocode} +% \end{macro} +% +% \phantomsection +% \begin{macro}{\lastpagereftext} \label{lastpagereftextlabel} +% \indent When |\lastpageref| is used somewhere inside the \texttt{txt} (text), +% i.\,e. not at the last page, it is defined as |\lastpagereftxt| (see above). +% When the page numbering scheme is \xpackage{fnsymbol}, and the \xpackage{hyperref} +% package has been loaded, a hyperref instead of a label is used for the reference +% to |pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}|. +% (And if the \texttt{pagesLTS.fnsymbol.local} counter did not exist yet, +% it is created here.)\\ +% +% \begin{macrocode} +\newcommand{\lastpagereftext}[1]{% + \def\pagesLTS@tmpA{#1}% + \def\pagesLTS@tmpB{pagesLTS.fnsymbol.local}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}% + \ifx\pagesLTS@hyper\pagesLTS@one% + \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}% + {\arabic{pagesLTS.fnsymbol.local}}% +% \end{macrocode} +% +% When the page numbering scheme is \xpackage{fnsymbol}, but the \xpackage{hyperref} package +% has \textit{not} been loaded, just the arabic number of the +% \texttt{pagesLTS.fnsymbol.local} counter is given (because there will be +% no hyperlink anyway). +% +% \begin{macrocode} + \else \arabic{pagesLTS.fnsymbol.local}% + \fi% +% \end{macrocode} +% +% Otherwise just the common |\pageref| is applied: +% +% \begin{macrocode} + \else% + \pageref{#1}% + \fi% +% \end{macrocode} +% +% We do not need the temporary definitions any more. +% +% \begin{macrocode} + \let\pagesLTS@tmpA\undefined% + \let\pagesLTS@tmpB\undefined% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\lastpagereftextstar} +% And the same for the starred version, where no hyperlink is generated: +% +% \begin{macrocode} +\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% + \ifx\pagesLTS@hyper\pagesLTS@one% + \pageref*{#1}% + \else% +% \end{macrocode} +% +% There is no |\pageref*| without \xpackage{hyperref}. +% +% \begin{macrocode} + \pageref{#1}% + \fi% + \fi% + \let\pagesLTS@tmpA\undefined% + \let\pagesLTS@tmpB\undefined% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\lastpagerefend} +% \indent When the \xpackage{hyperref} package is used and the page numbering scheme +% of the last page is \xpackage{fnsymbol}, |\lastpageref| is defined as +% |\lastpagerefend|. +% Hyperrefs instead of labels are used for the reference to +% \xpackage{fnsymbol} pages (including the last one).\\ +% +% Again it must be discriminated between unstarred form and starred form: +% +% \begin{macrocode} +\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}} + +% \end{macrocode} +% \end{macro} +% +% \pagebreak +% +% \begin{macro}{\l@stpagerefend} +% The unstarred form (i.\,e. with hyperlinks, if \xpackage{hyperref} is loaded, +% otherwise without hyperlinks): +% +% \begin{macrocode} +\newcommand{\l@stpagerefend}[1]{% + \def\pagesLTS@tmpA{#1}% + \def\pagesLTS@tmpB{pagesLTS.fnsymbol.local}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}% + \ifx\pagesLTS@hyper\pagesLTS@one% + \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}% + {\arabic{pagesLTS.fnsymbol.local}}% + \else \arabic{pagesLTS.fnsymbol.local}% + \fi% + \else% + \def\pagesLTS@tmpB{pagesLTS.fnsymbol}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}% + {\pagesLTS.lastpage}% + \else \pageref{pagesLTS.fnsymbol}% + \fi% + \else% + \def\pagesLTS@tmpB{LastPage}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \href{\#pagesLTS.fnsymbol.local.\pagesLTS@eso}% + {\pagesLTS.lastpage}% + \else \pageref{LastPage}% + \fi% + \else% + \def\pagesLTS@tmpB{VeryLastPage}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}% + {\pagesLTS.lastpage}% + \else \pageref{VeryLastPage}% + \fi% + \else% + \def\pagesLTS@tmpB{LastPages}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}% + {\arabic{pagesLTS.pagenr}}% + \else \pageref{LastPages}% + \fi% + \else% + \pageref{#1}% + \fi% + \fi% + \fi% + \fi% + \fi% +% \end{macrocode} +% +% We do not need the temporary definitions any more. +% +% \begin{macrocode} + \let\pagesLTS@tmpA\undefined% + \let\pagesLTS@tmpB\undefined% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@stpagerefendstar}% +% And the starred form, without hyperlinks, even if \xpackage{hyperref} is loaded, +% otherwise (i.\,e. without loaded \xpackage{hyperref}) this command is not called: +% +% \begin{macrocode} +\newcommand{\l@stpagerefendstar}[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% + \def\pagesLTS@tmpB{pagesLTS.fnsymbol}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \pageref*{pagesLTS.fnsymbol}% + \else \pageref{pagesLTS.fnsymbol}% + \fi% + \else% + \def\pagesLTS@tmpB{LastPage}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \pageref*{LastPage}% + \else \pageref{LastPage}% + \fi% + \else% + \def\pagesLTS@tmpB{VeryLastPage}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \pageref*{VeryLastPage}% + \else \pageref{VeryLastPage}% + \fi% + \else% + \def\pagesLTS@tmpB{LastPages}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \pageref*{LastPages}% + \else \pageref{LastPages}% + \fi% + \else% + \ifx\pagesLTS@hyper\pagesLTS@one% + \pageref*{#1}% + \else \pageref{#1}% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \let\pagesLTS@tmpA\undefined% + \let\pagesLTS@tmpB\undefined% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\overrideLTSlabel} +% |\overridelabel| from the \xpackage{undolabl} package just |\undonewlabel|s +% a~label and places a new |\label{#1}|, but we need to place a +% |\pagesLTS@putlabel{#1}{#2}|, therefore we need another command instead of +% (but somewhat similar to) |\overridelabel|: +% +% \begin{macrocode} +% somewhat analogous to \overridelabel from the undolabl package: +\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}\string\relax}% + \@overriddenmessage s{#1}% + \fi% + \fi% + \pagesLTS@putlabel{#1}{#2}{0}% + \@esphack% + } + +% \end{macrocode} +% \end{macro} +% +% \pagebreak +% +% \begin{macro}{\@pagesLTS@Prelim@EveryShipout} +% \indent Because we cannot make references to pages with \xpackage{fnsymbol} +% page \textquotedblleft numbers\textquotedblright\ manually +% with \xpackage{hyperref}, we use \nolinebreak{|\phantomsection|\,s} and +% refer to one of those. But because we do not know how many +% \nolinebreak{|\phantomsection|\,s} and \nolinebreak{|\section*|\,s} +% are introduced by the user (or other packages; +% cf.~\LaTeX~bug~2298: knowing level of |section*|, +% \ \url{http://www.latex-project.org/cgi-bin/ltxbugs2html?category=LaTeX&responsible=anyone&state=open&keyword=&pr=latex%2F2298&search=}), +% we cannot refer to the last one as we did with the pages. +% +% \begin{macrocode} +\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% + }% + \vbox to \z@{% + \hb@xt@\dimen\z@{% + \let\protect\relax +%% Code not from prelim2e package: %% +% \end{macrocode} +% +% Therefore each page with \xpackage{fnsymbol} page +% \textquotedblleft number\textquotedblright\ receives a +% |\phantomsection| and a label, which includes a number increased +% by one for each page. This is done for +% |pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.cont}| +% as well as +% |pagesLTS.fnsymbol|, |pagesLTS.\pagesLTS@pnc|, and +% |pagesLTS.\pagesLTS@pnc.local|.\\ +% In case an older label already existed, it is overwritten by an +% |\overridelabel| command. +% +% \begin{macrocode} + \ifx\pagesLTS@pnc\pagesLTS@fns% + \pagesLTS@ifcounter{pagesLTS.fnsymbol.cont}% + \addtocounter{pagesLTS.fnsymbol.cont}{1}% + \ifx\pagesLTS@hyper\pagesLTS@one% + \phantomsection% + \hypertarget{pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.cont}}{}% + \fi% + \ifnum \pagesLTS@esov=\pagesLTS@zero% + \label{pagesLTS.fnsymbol}% + \else% + \overridelabel{pagesLTS.fnsymbol}% + \fi% + \else% + \ifx\pagesLTS@hyper\pagesLTS@one% + \phantomsection% + \fi% + \if@filesw% + \overridelabel{pagesLTS.\pagesLTS@pnc}% +% \end{macrocode} +% +% We need to go forward one page (and later backward again), because +% |\overrideLTSlabel| calls a |\pagesLTS@putlabel|, and that one uses +% |\addtocounter{page}{-1}...\addtocounter{page}{+1}|, which is not +% needed here. +% +% \begin{macrocode} + \addtocounter{page}{+1}% + \overrideLTSlabel{pagesLTS.\pagesLTS@pnc.local}{\theCurrentPageLocal}% + \addtocounter{page}{-1}% + \fi% + \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. %% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\EveryShipout} +% \indent At the end of each shipout, the following commands are executed: +% +% \begin{macrocode} +\EveryShipout{% + \ifnum\value{page}>0% \relax + \else% + \ifnum\value{page}=0% + \PackageWarning{pageslts}{% + Counter `page' is zero!\MessageBreak% + If the page numbering scheme is not arabic\MessageBreak% + and further not extended\MessageBreak% + (see Page counter overflow in the pageslts\MessageBreak% + documentation), without other measures\MessageBreak% + this will lead to a counter overflow.\MessageBreak% + }% + \else% + \ifnum\value{page}<0% + \PackageWarning{pageslts}{% + Counter `page' is negative: `\the\value{page}'!\MessageBreak% + If the page numbering scheme is not arabic\MessageBreak% + and further not extended\MessageBreak% + (see Page counter overflow in the pageslts\MessageBreak% + documentation), without other measures\MessageBreak% + this will lead to a counter overflow.\MessageBreak% + }% + \else% + \PackageError{pageslts}{% + Counter `page' does not have a recognized value:\MessageBreak% + `\the\value{page}'\MessageBreak% + \@ehd \MessageBreak% + }% + \fi% + \fi% + \fi% +% \end{macrocode} +% +% If the |CurrentPage| is equal to one, this is the first shipout. +% +% \begin{macrocode} + \ifnum \value{CurrentPage}=1% This is the first shipout! +% \end{macrocode} +% +% |\AtBeginDocument| it is checked whether the \xpackage{hyperref} package is loaded,\\ +% |\@ifpackageloaded{hyperref}{\gdef\pagesLTS@hyper{1}}{}|.\\ +% |\@ifpackageloaded| cannot be used later than |\AtBeginDocument|.\\ +% Sebastian Bank found a~case, when this check is not sufficient. Using a class with\\ +% |\usepackage{lastpage}|\\ +% |\AtBeginDocument{\usepackage{hyperref}}|\\ +% leads to failed detection of the \xpackage{hyperref} package, because +% |\AtBeginDocument| \textit{first} the check for \xpackage{hyperref} is performed, +% and \textit{then} \xpackage{hyperref} is loaded. As mentioned above, +% |\@ifpackageloaded| cannot be used later, so here we do not check for the +% \xpackage{hyperref} package again, but for its |\Hy@Warning| command. +% In version~1.1h of the \xpackage{pageslts} package, it was checked for +% the |\hyperref| command, but as it turned out, \xpackage{tcilatex} \textit{is} +% defining that. If some other package or user is defining |\Hy@Warning|, +% \xpackage{pageslts} will falsely assume, that \xpackage{hyperref} has been loaded, +% but by my humble opinion, defining |\Hy@Warning| does not make sense and +% is bad style (except definition by the \xpackage{hyperref} package itself, +% of course). +% +% \begin{macrocode} + \@ifundefined{Hy@Warning}{% hyperref not loaded + }{% hyperref loaded + \gdef\pagesLTS@hyper{1}% + }% +% \end{macrocode} +% +% We check whether some page numbering scheme was defined by +% |\pagenumbering{...}| (\textbf{as it schould be!}): +% +% \begin{macrocode} + \ifx\pagesLTS@called\pagesLTS@zero% +% \end{macrocode} +% +% If it was not defined (i.\,e. |\pagesLTS@called| is zero), +% the user should be informed, that a |\pagenumbering{...}| +% is missing behind |\begin{document}|. +% Of course, it is possible that some package did some +% pages of output with |\AtBeginDocument|. In that case, +% one |\pagenumbering{...}| before |\begin{document}| and +% one |\pagenumbering{...}| (with the same argument, of course!) +% behind |\begin{document}| could help somewhat. When |\PackageError| +% was used here, the error message was not written to the screen and +% the \xfile{.log}-file, but into the document. Therefore we just make +% a note to give the error message later (|\AtEndDocument|). At that +% time unfortunately most of the document has already been compiled +% (or did not compile due to this error), but I do not konw how to +% change that. +% +% \begin{macrocode} + \global\def\pncmissing{1}% +% \end{macrocode} +% +% We save the current value of the page, +% +% \begin{macrocode} + \mathchardef\pagesLTS@tmpD=\arabic{page}% +% \end{macrocode} +% +% determine the current page numbering scheme, +% +% \begin{macrocode} +%% 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{macrocode} +% +% set the current page numbering scheme to~0 +% (because before the beginning of the document it should be~0), +% +% \begin{macrocode} + \def\pagesLTS@pnc{0}% +% \end{macrocode} +% +% and then issue a |\pagenumbering| command with the determined +% page numbering scheme as argument: +% +% \begin{macrocode} + \pagenumbering{\pagesLTS@tmpP}% +% \end{macrocode} +% +% This resets the page to one (if option |pagecontinue=false| +% was choosen), but because we do not start a new page numbering +% scheme here but manifest a page numbering scheme, which +% the user forgot to define, the page number should not have +% been reset to one. (This is the first page, but maybe the user +% wants it to have page number 2001?) Therefore we revert this here +% and set the page number to its value, which was saved before the +% |\pagenumbering| command. +% +% \begin{macrocode} + \setcounter{page}{\pagesLTS@tmpD}% + \fi% +% \end{macrocode} +% +% We are at the first page, so we put the label here. +% +% \begin{macrocode} + \pagesLTS@writelabel{0}% + \fi% +% \end{macrocode} +% +% If the current page numbering scheme |\pagesLTS@pnc| is +% |\pagesLTS@fns| (which is defined as \texttt{fnsymbol}), +% the label is set by \linebreak +% |\@pagesLTS@Prelim@EveryShipout| (see just above), +% and |\pagesLTS@esov| is set to the (real) number (not the name) of +% this page numbering scheme, |\arabic{pagesLTS.fnsymbol.cont}|.\\ +% When no more pages with \xpackage{fnsymbol} page +% \textquotedblleft number\textquotedblright\ are shiped out, +% the value remains fixed and we have our reference to the last page +% of the \xpackage{fnsymbol} page numbering range. +% (At least we will have that reference after some more work, +% see below). +% +% \begin{macrocode} + \ifx\pagesLTS@pnc\pagesLTS@fns% + \@pagesLTS@Prelim@EveryShipout% + \gdef\pagesLTS@esov{\arabic{pagesLTS.fnsymbol.cont}}% +% \end{macrocode} +% +% When another page numbering scheme was reused (in the example file +% \xpackage{Roman}), we also need to apply\\ +% |\@pagesLTS@Prelim@EveryShipout|, +% because otherwise we would get multiply definded labels. +% +% \begin{macrocode} + \else% + \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}>1% + \@pagesLTS@Prelim@EveryShipout% + \fi% + \fi% +% \end{macrocode} +% +% The |CurrentPage| as well as the |pagesLTS.current.local.\pagesLTS@pnc| +% are advanced by one (because one page was shiped out and the next is +% about to begin). +% +% \begin{macrocode} + \addtocounter{CurrentPage}{1}% + \addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{1}% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pagesLTS@putlabelhyper} +% \indent Here the labels are set, if the \xpackage{hyperref} package +% was loaded. Simply using |\label| would not work, because labels +% wait for the output routines to work, and there may not be any +% more invocations of the output routines. To force the write out +% we need to do an |\immediate| write. +% +% \begin{macrocode} +\newcommand{\pagesLTS@putlabelhyper}[2]{% + \ifHy@pageanchor \relax% + \else% +% \end{macrocode} +% +% If the \xpackage{hyperref} package is used, but pageanchors are disabled, +% the hyperlinking will not work. +% +% \begin{macrocode} + \PackageError{pagesLTS}{hyperref option pageanchor disabled}{% + The \string\lastpageref{#1} link doesn't work\MessageBreak% + using hyperref with disabled option `pageanchor'.\MessageBreak% + }% + \fi +% \end{macrocode} +% +% If use of the \xfile{.aux}-file is allowed, the label for +% \texttt{LastPage} is written into that file, the page +% reference depending on the options, which where set for +% the \xpackage{hyperref} package. +% +% \begin{macrocode} +%% 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% + } + +% \end{macrocode} +% \end{macro} +% +% \phantomsection +% \begin{macro}{\pagesLTS@putlabel}\label{pagesLTSputlabel} +% \indent Since the page has been put out, we are on the page after +% that page. We therefore subtract one from the page counter. +% +% \begin{macrocode} +\newcommand{\pagesLTS@putlabel}[3]{% + \addtocounter{page}{-1}% +% \end{macrocode} +% +% When the \xpackage{showkeys} package has been loaded in \texttt{draft} mode, +% in the margin for each label a box is displayed with the name of the label. +% \xpackage{showkeys} accomplishes this by redefining |\label|, but +% \xpackage{pageslts} does not use |\label|, but writes directly to the +% {\nobreak |\jobname|\xfile{.aux}-}\allowbreak file, and this is generally done +% \emph{after} the according page has shipped out, therefore no box can be placed +% on the \emph{preceding} page. At least \xpackage{pageslts} gives a warning, that +% \xpackage{showkeys} cannot present the respective label. +% +% \begin{macrocode} + \ifx\pagesLTS@SK\pagesLTS@one% + \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})}% + \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% +% \end{macrocode} +% +% If the \xpackage{hyperref} package is used, the format of the labels is somewhat longer. +% +% \begin{macrocode} + \ifx\pagesLTS@hyper\pagesLTS@one% + \pagesLTS@putlabelhyper{#1}{#2}% + \else% +% \end{macrocode} +% +% \pagebreak +% +% If the \xpackage{hyperref} package is not used, there will be no hyperlinks, +% and the label is written in the way of the old \xpackage{lastpage} package. +% But we must remember to undo the label first, if it already exists. +% +% \begin{macrocode} + \if@filesw% + \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}<2% + \immediate\write\@auxout{\string + \newlabel{#1}{{}{#2}}}% + \else% + \edef\pagesLTStmpA{#1}% + \edef\pagesLTStmpB{pagesLTS.\pagesLTS@pnc.local}% + \ifx\pagesLTStmpA\pagesLTStmpB% + \edef\pagesLTStmpA{#3}% + \ifx\pagesLTStmpA\pagesLTS@one% +% \end{macrocode} +% +% Only when the third argument of |\pagesLTS@putlabel| is $1$, +% we do need to undo the label. Otherwise there is no label to +% undo, and the \xpackage{undolabl} package would give an error. +% +% \begin{macrocode} + \immediate\write\@auxout{\string + \undonewlabel{#1}}% + \fi% + \fi% + \immediate\write\@auxout{\string + \newlabel{#1}{{}{#2}}}% + \fi% + \fi% + \fi% +% \end{macrocode} +% +% After the writeout we restore the page number again, +% since there might be other things still to be done. +% +% \begin{macrocode} + \addtocounter{page}{+1}% + } + +% \end{macrocode} +% \end{macro} +% +% \pagebreak +% +% \begin{macro}{\pagesLTS@putlabels} +% \indent |\pagesLTS@putlabels| is nearly identical to |\pagesLTS@putlabelV|: +% +% \begin{macrocode} +\newcommand{\pagesLTS@putlabels}{% + \addtocounter{page}{-1}% + \addtocounter{CurrentPage}{-1}% + \addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{-1}% +% \end{macrocode} +% +% If |\pagenumbering{...}| has not been used, +% |\pagesLTS@pnc| is still zero ($0$, |\pagesLTS@zero|), +% and the according warning message is given. +% +% \begin{macrocode} + \ifx\pagesLTS@pnc\pagesLTS@zero% + \PackageWarning{pagesLTS}{No page numbering scheme found:\MessageBreak% + \pagesLTS@messageNPN }% +% \end{macrocode} +% +% \noindent otherwise the numbered label is written, +% and if the page numbering scheme was not used before, +% the unnumbered label is written, too. +% +% +% \begin{macrocode} + \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% +% \end{macrocode} +% +% \noindent Before the label for the \texttt{LastPages} can be put, +% we must advance one page again, because |\pagesLTS@putlabel| itself +% goes back one page (and at its end forward again). +% +% \begin{macrocode} + \addtocounter{page}{+1}% + \pagesLTS@putlabel{LastPages}{\theCurrentPage}{1}% +% \end{macrocode} +% +% \noindent Here should follow a\\ +% |\addtocounter{page}{-1}|,\\ +% but we have to remember to increase the page counters again, +% which were decreased at the start of this |\pagesLTS@putlabels| +% command, and that would include\\ +% |\addtocounter{page}{+1}|,\\ +% therefore this two lines cancel each other and +% therefore just can be skipped. But the other counters have to +% be increased: +% +% \begin{macrocode} + \addtocounter{CurrentPage}{+1}% + \addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{1}% + } + +% \end{macrocode} +% \end{macro} +% +% \pagebreak +% +% \begin{macro}{\AtBeginDocument} +% \indent |\AtBeginDocument| we write into the \xfile{aux} file regarding +% the double loading of the package. +% Then it is checked whether the \texttt{endfloat} +% package is loaded, whether it is newer than March 1992 (i.\,e. at least +% April 1992 v2.0), in which case it is compatible with this +% \xpackage{pageslts} package.\\ +% If it is even newer than 1995/10/10, it is the recent version +% (as of the time of last revision of this documentation: +% 1995/10/11 v2.4i). +% +% \begin{macrocode} +\AtBeginDocument{% + \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}{1995/10/10}{% 1995/10/11 v2.4i + \relax}% +% \end{macrocode} +% +% If it is compatibel, but not the recent version, a warning is given: +% +% \begin{macrocode} + {\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% + }% + }% +% \end{macrocode} +% +% If it is so very old, that it is not compatible, +% an Error message is given: +% +% \begin{macrocode} + {\PackageError{pageslts}{Incompatible, very old endfloat package detected.}% + {The very old version 2.0 (and earlier) of the\MessageBreak% + endfloat package actually redefined the \ enddocument,\MessageBreak% + and so interferred drastically with the LaTeX2e commands\MessageBreak% + which make use of \ AtEndDocument.\MessageBreak% + Newer versions of the endfloat package exists\MessageBreak% + (at least: v2.4i as of 1995/10/11)\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 % + }% + }% + }% + }{}% +% \end{macrocode} +% +% It is checked whether the old \xpackage{lastpage} package was loaded.\\ +% (If it was loaded indeed, the |\lastpage@putlabel| is +% \textquotedblleft killed\textquotedblright , +% see subsection~\ref{ssec:lastpage}.) +% +% \begin{macrocode} + \@ifpackageloaded{lastpage}% + {\@ifpackagelater{lastpage}{2010/07/28}% 2010/07/29 v1.2a + {\@ifpackagelater{lastpage}{2011/08/07}% 2011/08/08 v1.2i + {\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}% + }% + }{}% +% \end{macrocode} +% +% Further it is checked whether the \xpackage{alphalph} package is loaded.\\ +% Unfortunately, |\@ifpackageloaded| cannot be used any later +% (cf.~\LaTeX\ bug~2335, Synopsis: Proposal for |\@ifpackageloaded|, \linebreak +% \url{http://www.latex-project.org/cgi-bin/ltxbugs2html?category=LaTeX&responsible=anyone&state=open&keyword=&pr=latex%2F2335&search=}), +% therefore the result must be saved: +% +% \begin{macrocode} + \@ifpackageloaded{alphalph}% + {\global\def\pagesLTS@AlphAlph{1}% +% \end{macrocode} +% +% The commands are defined accordingly. +% +% \begin{macrocode} + \newalphalph{\AlphMult}[mult]{\@Alph}{26}% + \newalphalph{\alphMult}[mult]{\@alph}{26}% + \newalphalph{\fnsymbolmult}[mult]{\@fnsymbol}{5}% + }{% \relax + } +% \end{macrocode} +% +% Further it is checked whether the \xpackage{hyperref} package is loaded. +% +% \begin{macrocode} + \@ifpackageloaded{hyperref}% + {\global\def\pagesLTS@hyper{1}% +% \end{macrocode} +% +% and whether the \xpackage{pdfpages} package is loaded: +% +% \begin{macrocode} + \@ifpackageloaded{pdfpages}% + {\PackageWarningNoLine{pageslts}{Package pdfpages detected.\MessageBreak% + Using hyperref with pdfpages can cause problems. See\MessageBreak% + ftp://ftp.ctan.org/tex-archive/\MessageBreak% + macros/latex/contrib/pax/\MessageBreak% + for project pax (PDFAnnotExtractor).% + }% + }{% \relax + }% +% \end{macrocode} +% +% The \xpackage{undolabl} package has been updated and now uses |\undonewlabel| with only +% one argument. +% +% \begin{macrocode} + \@ifpackageloaded{undolabl}% + {\@ifpackagelater{undolabl}{2010/07/14}% 2010/07/15 v1.0d + {\@ifpackagelater{undolabl}{2011/08/07}% 2011/08/08 v1.0j + {% 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 ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/undolabl/ \MessageBreak% + for a new version.\MessageBreak% + }% + } + }{\PackageError{pageslts}{Incompatible, obsolete version of undolabl package used.}{% + See ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/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 e.g.\MessageBreak% + ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/undolabl/ \MessageBreak% + Type X <return> to quit.\MessageBreak% + }% + } +% \end{macrocode} +% +% Additionally a version check of the available \xpackage{hyperref} +% package is performed and if need be a warning is issued: +% +% \begin{macrocode} + \@ifpackagelater{hyperref}{2011/04/16}{% 2011/04/17 v6.82g + \relax}{% + \PackageWarningNoLine{pageslts}{Old hyperref package detected:\MessageBreak% + There is a newer version of the\MessageBreak% + hyperref package available.\MessageBreak% + Please consider updating your version.\MessageBreak% + }% + }% + %% pageslts supports the use of the package hyperref by + %% Heiko Oberdiek (hyperref version 2011/04/17 v6.82g). + %% pageslts may work with earlier versions of this packages, + %% but this was not tested. + }% +% \end{macrocode} +% +% \pagebreak +% +% If no \xpackage{hyperref} package in use is detected, a warning is issued, too: +% +% \begin{macrocode} + {\PackageWarning{pageslts}{Package hyperref NOT detected.\MessageBreak% + pageslts would support hyperref. The page references\MessageBreak% + will NOT be hyperlinked!\MessageBreak }% + }% +% \end{macrocode} +% +% If the \xpackage{showkeys} package has been loaded in \texttt{draft} mode, +% warnings about missing label boxes will be issued (see p.~\pageref{pagesLTSputlabel}), +% but because it cannot be checked for \xpackage{showkeys} after |\AtBeginDocument|, +% the check must be done here and the result remembered. +% +% \begin{macrocode} + \@ifpackageloaded{showkeys}{% + \@ifpackagewith{showkeys}{final}{\relax}{\gdef\pagesLTS@SK{1}}% + }{% \relax + }% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AtEndDocument} +% \indent |\AtEndDocument| we first give the error message about the missing +% (i.\,e.~not found) page numbering scheme, which could not be given in |\EveryShipout|. +% +% \begin{macrocode} +\AtEndDocument{% + \ifx\pncmissing\pagesLTS@one% + \PackageError{pageslts}{pagenumbering scheme missing}{\pagesLTS@messageNPN }% + \fi% +% \end{macrocode} +% +% Then we put in a |\message| to show, in what order things (which were called) +% are done (see subsection~\ref{ssec:aed}). +% +% \begin{macrocode} + \message{^^J% + AED: pageslts setting LastPage ^^J}% +% \end{macrocode} +% +% After this we issue a |\clearpage| to put out all floats, +% which are still floatig, remember the page number (if |fnsymbol|), +% and after that we place the \texttt{LastPage} label. +% +% \begin{macrocode} + \clearpage% + \ifx\pagesLTS@pnc\pagesLTS@fns% + \def\pagesLTS@tmpA{\arabic{pagesLTS.fnsymbol.local}}% + \ifnum \pagesLTS@eso=\pagesLTS@tmpA% + \gdef\pagesLTS@rerun{0}% + \else% + \gdef\pagesLTS@rerun{1}% + \fi% + \if@filesw% + \immediate\write\@auxout{\string + \gdef\string\pagesLTS@eso{\pagesLTS@tmpA}}% + \fi% + \fi% + \pagesLTS@putlabel{LastPage}{\thepage}{1}% +% \end{macrocode} +% +% We do not need the temporary definition any more. +% +% \begin{macrocode} + \let\pagesLTS@tmpA\undefined% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AfterLastShipout} +% \indent |\AfterLastShipout| is a command from \textsc{Heiko Oberdiek's} +% \texttt{atveryend} package (see above). +% +% \begin{macrocode} +\AfterLastShipout{% +% \end{macrocode} +% +% If writing to the \xfile{.aux} file is allowed: +% +% \begin{macrocode} + \if@filesw% +% \end{macrocode} +% +% The number of pages with the \xpackage{fnsymbol} page numbering scheme, +% |\pagesLTS@esov|, is saved via the \xfile{.aux} file (if it is not zero): +% +% \begin{macrocode} + \ifx\pagesLTS@esov\pagesLTS@zero% + \else% + \immediate\write\@auxout{\string + \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}}% + \immediate\write\@auxout{\string + \setcounter{pagesLTS.fnsymbol.local}{\pagesLTS@esov}}% + \fi% +% \end{macrocode} +% +% If the \xpackage{hyperref} package is in use, and the page numbering scheme +% of the last page is \xpackage{fnsymbol}, everything is quite more complicated. +% Therefore |\lastpageref| is switched from simple |\lastpagereftxt| +% to the more difficult |\lastpagerefend|. +% +% \begin{macrocode} + \ifx\pagesLTS@hyper\pagesLTS@one% + \ifx\pagesLTS@pnc\pagesLTS@fns% + \immediate\write\@auxout{\string + \gdef\string\lastpageref{\string\lastpagerefend}}% + \fi% + \fi% + \fi% +% \end{macrocode} +% +% At the call of a |\pagenumbering{...}| command, everything +% for a split page numbering scheme is organized. For the last +% page numbering scheme, there is no |\pagenumbering{...}| command +% at the end, so we need to handle this here: +% +% \begin{macrocode} + \pagesLTS@ifcounter{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}}% +% \end{macrocode} +% +% And we are one page after the last one (|\AfterLastShipout|!), +% so we go back one page. (We again borrow the \texttt{pagesLTS.pnc.0} counter for the computations +% instead of defining yet another one.) +% +% \begin{macrocode} + \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}}% + \addtocounter{pagesLTS.pnc.0}{-1}% + \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@tmpD}% + \fi% + \if@filesw% + \immediate\write\@auxout{\string + \pagesLTS@ifcounter{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% +% \end{macrocode} +% +% We need to save (via the \xfile{.aux} file) the page name |\thepage| and +% the page number |\arabic{CurrentPage}| of the last page, +% in case the last page has \xpackage{fnsymbol} page numbering scheme. +% +% \begin{macrocode} + \addtocounter{page}{-1}% + \edef\pagesLTS@tmpA{\thepage}% + \if@filesw% + \immediate\write\@auxout{\string + \gdef\string\pagesLTS.lastpage{\pagesLTS@tmpA}}% + \fi% + \addtocounter{page}{+1}% + \addtocounter{CurrentPage}{-1}% + \def\pagesLTS@tmpB{\arabic{CurrentPage}}% + \if@filesw% + \immediate\write\@auxout{\string + \setcounter{pagesLTS.pagenr}{\pagesLTS@tmpB}}% + \fi% + \addtocounter{CurrentPage}{+1}% +% \end{macrocode} +% +% The \texttt{VeryLastPage} label is set here, and when +% |\lastpageref{VeryLastPage}| instead of |\lastpageref{LastPage}| is used, +% it should really point to the last page. +% |LastPage| and |VeryLastPage| should be identical, +% unless a package was active with output |\AtEndDocument| +% \textit{after} the \xpackage{pageslts} package. +% +% \begin{macrocode} + \message{^^J% + AED: pageslts setting VeryLastPage via AfterLastShipout ^^J}% + \pagesLTS@putlabel{VeryLastPage}{\thepage}{1}% +% \end{macrocode} +% +% The \texttt{LastPages} label is set here, and +% |\lastpageref{LastPages}| gives the total number of pages +% and points to the (very) last page. +% +% \begin{macrocode} + \message{^^J% + AED: pageslts setting LastPages via AfterLastShipout ^^J}% + \pagesLTS@putlabels% +% \end{macrocode} +% +% We do not need the temporary definitions any more. +% +% \begin{macrocode} + \let\pagesLTS@tmpA\undefined% + \let\pagesLTS@tmpB\undefined% + } + +% \end{macrocode} +% \end{macro} +% +% \pagebreak +% +% \begin{macro}{\AtEndAfterFileList} +% \indent |\AtEndAfterFileList{...}| is even later: +% \begin{quote} +% \textquotedblleft After the .aux file closing and reading \LaTeX{} prints the +% file list if requested by |\listfiles|. Then this hook is executed.\textquotedblright +% \end{quote} +% (\xpackage{atveryend} package of \textsc{Heiko Oberdiek}, v1.7 as of 2011/04/23)\\ +% Here it is used for a rerun hint.\\ +% For example if the page numbering scheme of the last page of the +% \textsf{pageslts-example.tex} file is changed to |fnsymbol| and two runs +% of \pdfLaTeX{} are done, \pdfLaTeX{} will be happy and will not complain +% about changed labels. But indeed, a \textit{third} run is necessary +% and indicated by the warning message below. +% +% \begin{macrocode} +\AtEndAfterFileList{% + \ifx\pagesLTS@rerun\pagesLTS@one% + \PackageWarningNoLine{pageslts}{% + Label(s) may have changed.\MessageBreak% + Rerun to get cross-references right.\MessageBreak% + }% + \fi% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% +% \newpage +% +% \section{Installation} +% +% \subsection{Downloads\label{ss:Downloads}} +% +% Everything should be available on \CTAN{}, \url{ftp://ftp.ctan.org/tex-archive/}, +% but may need additional packages themselves.\\ +% +% \DescribeMacro{pageslts.dtx} +% For unpacking the |pageslts.dtx| file and constructing the documentation it is required: +% \begin{description} +% \item[-] \TeX Format \LaTeXe, 1994/06/01, v2$\varepsilon $: \CTAN{} +% +% \item[-] document class \textsf{ltxdoc}, 2007/11/11, v2.0u, \CTAN{macros/latex/base/ltxdoc.dtx} +% +% \item[-] package \xpackage{holtxdoc}, 2011/02/04, v0.21, \CTAN{macros/latex/contrib/oberdiek/holtxdoc.dtx} +% +% \item[-] package \xpackage{hypdoc}, 2010/03/26, v1.9, \CTAN{macros/latex/contrib/oberdiek/hypdoc.dtx} +% +% \item[-] package \xpackage{geometry}, 2010/09/12, v5.6, \CTAN{macros/latex/contrib/geometry/geometry.dtx} +% +% \item[-] package \xpackage{ulem}, 2011/03/18, (no version number given), +% \CTAN{macros/latex/contrib/ulem/} +% \end{description} +% +% \DescribeMacro{pageslts.sty} +% The |pageslts.sty| for \LaTeXe\ (i.\,e. all documents using +% the \xpackage{pageslts} package) requires: +% \begin{description} +% \item[-] \TeX Format \LaTeXe, 1994/06/01, v2$\varepsilon $, \CTAN{} +% +% \item[-] package \xpackage{atveryend}, 2010/03/24, v1.5, \CTAN{macros/latex/contrib/oberdiek/atveryend.dtx} +% +% \item[-] package \xpackage{everyshi}, 2001/05/15, v3.00, \CTAN{macros/latex/contrib/ms/everyshi.dtx} +% +% \item[-] package \xpackage{kvoptions}, 2010/02/22, v3.7, \CTAN{macros/latex/contrib/oberdiek/kvoptions.dtx} +% +% \item[-] package \xpackage{rerunfilecheck}, 2011/04/15, v1.7, \CTAN{macros/latex/contrib/oberdiek/rerunfilecheck.dtx} +% +% \item[-] package \xpackage{undolabl}, 2011/08/08, v1.0j, \CTAN{macros/latex/contrib/undolabl/undolabl.dtx}\\ +% \end{description} +% +% \DescribeMacro{pageslts-example.tex} +% The |pageslts-example.tex| requires the same files as all +% documents using the \xpackage{pageslts} package, and additionally: +% \begin{description} +% \item[-] class \textsf{article}, 2007/10/19, v1.4h, from \textsf{classes.dtx}: \CTAN{macros/latex/base/classes.dtx} +% +% \item[-] package \xpackage{alphalph}, 2010/04/18, v2.3, \CTAN{macros/latex/contrib/oberdiek/alphalph.dtx} +% +% \item[-] package \xpackage{lipsum}, 2011/04/14, v1.2, \CTAN{macros/latex/contrib/lipsum/lipsum.dtx} +% +% \item[-] package \xpackage{showkeys}, 2007/08/07, v3.15, \CTAN{macros/latex/required/tools/showkeys.dtx} +% +% \item[-] package \xpackage{hyperref}, 2011/04/17, v6.82g, \CTAN{macros/latex/contrib/hyperref.zip} +% +% \item[-] package \xpackage{pageslts}, 2011/08/08, v1.2a, \CTAN{macros/latex/contrib/pageslts/pageslts.dtx}\\ +% (Well, it is the example file for this package, and because you are reading the +% documentation for the \xpackage{pageslts} package, it can be assumed that you already +% have some version of it~-- is it the current one?) +% \end{description} +% +% \pagebreak +% +% \DescribeMacro{papermas} +% The \xpackage{papermas} package is not required, but requires itself the +% the \xpackage{pageslts} package and can be considered as kind of add-on: +% \begin{description} +% \item[-] package \xpackage{papermas}, 2011/08/08, v1.0g, \CTAN{macros/latex/contrib/papermas/papermas.dtx} +% \end{description} +% +% \DescribeMacro{endfloat} +% The \xpackage{endfloat} package is not required, but because +% the \xpackage{pageslts} package is incompatibel with very old versions +% of the \xpackage{endfloat} package (see subsection~\ref{sec:endfloat}), +% here the recent one is listed: +% \begin{description} +% \item[-] package \xpackage{endfloat}, 1995/10/11, v2.4i, \CTAN{macros/latex/contrib/endfloat/endfloat.dtx} +% \end{description} +% +% \DescribeMacro{prelim2e} +% The \xpackage{prelim2e} package is not required either, but because +% |Prelim@EveryShipout| code was taken from that package, it is listed, too: +% \begin{description} +% \item[-] package \xpackage{prelim2e}, 2009/05/29, v1.3, \CTAN{macros/latex/contrib/ms/prelim2e.dtx} +% \end{description} +% +% \DescribeMacro{fancyhdr} +% \DescribeMacro{nccfancyhdr} +% Neither \xpackage{fancyhdr} nor \xpackage{nccfancyhdr} package is required +% (the \xpackage{lastpage} package used its predecessor \xpackage{fancyheadings}), +% but because they were mentioned, also they are listed here: +% \begin{description} +% \item[-] package \xpackage{fancyhdr}, 2005/03/22, v3.2, \CTAN{macros/latex/contrib/fancyhdr.zip} +% +% \item[-] package \xpackage{nccfancyhdr}, 2004/12/07, v1.1, \CTAN{macros/latex/contrib/ncctools/source/nccfancyhdr.dtx} +% \end{description} +% +% \DescribeMacro{lastpage} +% \DescribeMacro{totpages} +% \DescribeMacro{totcount} +% \DescribeMacro{nofm} +% \DescribeMacro{count1to} +% \DescribeMacro{zref} +% As possible alternatives in section \ref{sec:Alternatives} there are listed +% \begin{description} +% \item[-] package \xpackage{lastpage}, 2011/02/01, v1.2g , \CTAN{macros/latex/contrib/lastpage/lastpage.dtx} +% +% \item[-] package \xpackage{totpages}, 2005/09/19, v2.00, \CTAN{macros/latex/contrib/totpages/totpages.dtx} +% +% \item[-] package \xpackage{totcount}, 2011/01/25, v1.2, \CTAN{macros/latex/contrib/totcount/totcount.dtx} +% +% \item[-] package \xpackage{nofm}, 1991/02/25, v?.?, +% \url{ftp://tug.ctan.org/pub/tex-archive/obsolete/macros/latex209/contrib/misc/nofm.sty}, +% does not work with e.\,g. \xpackage{hyperref} +% +% \item[-] package \xpackage{count1to}, 2009/05/24, v2.1, \CTAN{macros/latex/contrib/ms/count1to.dtx} +% +% \item[-] package \xpackage{zref}, 2011/03/18, v2.21, \CTAN{macros/latex/contrib/oberdiek/zref.dtx} +% \end{description} +% +% \DescribeMacro{Oberdiek} +% \DescribeMacro{alphalph} +% \DescribeMacro{atveryend} +% \DescribeMacro{holtxdoc} +% \DescribeMacro{kvoptions} +% \DescribeMacro{rerunfilecheck} +% \DescribeMacro{zref} +% All packages of \textsc{Heiko Oberdiek's} bundle `oberdiek' +% (especially \xpackage{holtxdoc}, \xpackage{atveryend}, +% \xpackage{kvoptions}, \xpackage{alphalph}, \xpackage{zref}, \xpackage{rerunfilecheck}) +% are also available in a TDS compliant ZIP archive:\\ +% \CTAN{install/macros/latex/contrib/oberdiek.tds.zip}.\\ +% It is probably best to download and use this, because the packages in there +% should be both recent and compatible.\\ +% +% \vspace{2cm} +% +% \DescribeMacro{M\"{u}nch} +% A list of my packages can be found at \url{http://www.Uni-Bonn.de/~uzs5pv/LaTeX.html}.\\ +% +% \subsection{Package, unpacking TDS} +% +% \paragraph{Package.} This package is available on \CTAN{}. +% \begin{description} +% \item[\CTAN{macros/latex/contrib/pageslts/pageslts.dtx}]\hspace*{0.1cm} \\ +% The source file. +% \item[\CTAN{macros/latex/contrib/pageslts/pageslts.pdf}]\hspace*{0.1cm} \\ +% The documentation. +% \item[\CTAN{macros/latex/contrib/pageslts/pageslts-example.pdf}]\hspace*{0.1cm} \\ +% The compiled example file, as it should look like. +% \item[\CTAN{macros/latex/contrib/pageslts/README}]\hspace*{0.1cm} \\ +% The README file. +% \end{description} +% There is also a pageslts.tds.zip available: +% \begin{description} +% \item[\CTAN{install/macros/latex/contrib/pageslts.tds.zip}]\hspace*{0.1cm} \\ +% Everything in TDS compliant, compiled format. +% \end{description} +% which additionally contains\\ +% \begin{tabular}{ll} +% pageslts.ins & The installation file.\\ +% pageslts.drv & The driver to generate the documentation.\\ +% ltxdoc.cfg & The \LaTeX\ documentation configuration file,% +% \ also for generating the documentation.\\ +% pageslts.sty & The \xext{sty}le file.\\ +% pageslts-example.tex & The example file.% +% \end{tabular} +% +% \bigskip +% +% \noindent For required other packages, see the preceding subsection. +% +% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting +% \docstrip\ archive. The files are extracted by running the +% \xfile{.dtx} through \plainTeX: +% \begin{quote} +% \verb|tex pageslts.dtx| +% \end{quote} +% +% About generating the documentation see paragraph~\ref{GenDoc} below.\\ +% +% \paragraph{TDS.} Now the different files must be moved into +% the different directories in your installation TDS tree +% (also known as \xfile{texmf} tree): +% \begin{quote} +% \def\t{^^A +% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} +% pageslts.sty & tex/latex/pageslts.sty\\ +% pageslts.pdf & doc/latex/pageslts.pdf\\ +% pageslts-example.tex & doc/latex/pageslts-example.tex\\ +% pageslts-example.pdf & doc/latex/pageslts-example.pdf\\ +% pageslts.dtx & source/latex/pageslts.dtx\\ +% \end{tabular}^^A +% }^^A +% \sbox0{\t}^^A +% \ifdim\wd0>\linewidth +% \begingroup +% \advance\linewidth by\leftmargin +% \advance\linewidth by\rightmargin +% \edef\x{\endgroup +% \def\noexpand\lw{\the\linewidth}^^A +% }\x +% \def\lwbox{^^A +% \leavevmode +% \hbox to \linewidth{^^A +% \kern-\leftmargin\relax +% \hss +% \usebox0 +% \hss +% \kern-\rightmargin\relax +% }^^A +% }^^A +% \ifdim\wd0>\lw +% \sbox0{\small\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\footnotesize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\scriptsize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\tiny\t}^^A +% \ifdim\wd0>\linewidth +% \lwbox +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \end{quote} +% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's +% TDS installing feature, then some files can already be in the right +% place, see the documentation of \docstrip. +% +% \subsection{Refresh file name databases} +% +% If your \TeX~distribution (\teTeX, \mikTeX,\dots) relies on file name +% databases, you must refresh these. For example, \teTeX\ users run +% \verb|texhash| or \verb|mktexlsr|. +% +% \subsection{Some details for the interested} +% +% \paragraph{Unpacking with \LaTeX.} +% The \xfile{.dtx} chooses its action depending on the format: +% \begin{description} +% \item[\plainTeX:] Run \docstrip\ and extract the files. +% \item[\LaTeX:] Generate the documentation. +% \end{description} +% If you insist on using \LaTeX\ for \docstrip\ (really, +% \docstrip\ does not need \LaTeX), then inform the autodetect routine +% about your intention: +% \begin{quote} +% \verb|latex \let\install=y\input{pageslts.dtx}| +% \end{quote} +% Do not forget to quote the argument according to the demands +% of your shell. +% +% \paragraph{Generating the documentation.\label{GenDoc}} +% You can use both the \xfile{.dtx} or the \xfile{.drv} to generate +% the documentation. The process can be configured by the +% configuration file \xfile{ltxdoc.cfg}. For instance, put the following +% line into this file, if you want to have A4 as paper format: +% \begin{quote} +% \verb|\PassOptionsToClass{a4paper}{article}| +% \end{quote} +% +% \noindent An example follows how to generate the +% documentation with \pdfLaTeX : +% +% \begin{quote} +%\begin{verbatim} +%pdflatex pageslts.dtx +%makeindex -s gind.ist pageslts.idx +%pdflatex pageslts.dtx +%makeindex -s gind.ist pageslts.idx +%pdflatex pageslts.dtx +%\end{verbatim} +% \end{quote} +% +% \subsection{Compiling the example} +% +% The example file, \textsf{pageslts-example.tex}, can be compiled via\\ +% \indent |latex pageslts-example.tex|\\ +% or (recommended)\\ +% \indent |pdflatex pageslts-example.tex|\\ +% and will need \textit{at least} (!) three compiler runs to get +% all references right. +% +% \pagebreak +% +% \section{Acknowledgements} +% +% I (H.-Martin M\"{u}nch) would like to thank \textsc{Jeffrey P. Goldberg} +% for inventing the \xpackage{lastpage} package. This package first started +% as a revision of the \xpackage{lastpage} package, but it became obviouse +% that a replacement was needed to accomplish what this package does. +% Further I would like to thank \textsc{Heiko Oberdiek} for providing the +% |\erroralphalph| command as well as a~lot~(!) of useful packages +% (from which I also got everything I know about creating a file in +% \xfile{dtx} format, ok, say it: copying), \textsc{Martin Schr\"{o}der} +% for his \xpackage{prelim2e} package, from which I got the +% |Prelim@EveryShipout| code, \textsc{Ulrich Diez} for his code for the +% \xpackage{undolabl} package, which allows overwriting of labels, +% \textsc{Andres L\"{o}h} for the code to determine the current page +% numbering scheme, and the \Newsgroup{comp.text.tex} and +% \Newsgroup{de.comp.text.tex} newsgroups for their help in all things \TeX{}. +% +% \phantomsection +% \begin{History}\label{History} +% \begin{Version}{1994/06/17, \xpackage{lastpage}} +% \item \xpackage{lastpage} v0.99a: First shot by Jeffrey P. Goldberg. +% \end{Version} +% \begin{Version}{1994/06/25, \xpackage{lastpage}} +% \item \xpackage{lastpage} v0.1b: Last version number created by Jeffrey P. Goldberg. +% \end{Version} +% \begin{Version}{1994/07/20, \xpackage{lastpage}} +% \item \xpackage{lastpage} v0.1b (again): Documentation updated by Jeffrey P. Goldberg.\\ +% The main source code of the \xpackage{lastpage} package 1994/07/20 v0.1b was:\\ +% \begin{verbatim} +% \NeedsTeXFormat{LaTeX2e}[1994/06/01] +% \ProvidesPackage{lastpage}[1994/07/20 v0.1b +% LaTeX2e package for refs to last page number (JPG)] +% \def\lastpage@putlabel{\addtocounter{page}{-1}% +% \immediate\write\@auxout{\string +% \newlabel{LastPage}{{}{\thepage}}}% +% \addtocounter{page}{1}} +% \AtEndDocument{% +% \message{AED: lastpage setting LastPage}% +% \clearpage\lastpage@putlabel}% +% \endinput +% \end{verbatim} +% and then \xpackage{hyperref} and \xpackage{revtex} even redefine |\lastpage@putlabel|. +% \end{Version} +% \begin{Version}{2010/02/18, \xpackage{lastpage}} +% \item \xpackage{lastpage} v1.1: Proposed |LastPages| label by H.-Martin M\"{u}nch +% on \Newsgroup{comp.text.tex}, see e.\,g. +% \url{http://groups.google.com/group/comp.text.tex/msg/4407493da9c747f0?dmode=source}; +% now available in this \xpackage{pageslts} package. +% \end{Version} +% \begin{Version}{2010/05/15 v1.0 \xpackage{pagesLTS}} +% \item \xpackage{pagesLTS} Complete rewriting of the package, so as to work with +% \textbf{more than one page numbering scheme}; using |\AtVeryEnd| +% for \texttt{VeryLastPage}; upgrade from \xpackage{fancyheadings} to +% \xpackage{fancyhdr} package, then removed the need for a \xpackage{fancyhdr} +% package at all. +% \item Rewriting of the package, so as to work with the \xpackage{fnsymbol} +% page numbering scheme (even on the last page). +% \item Introduction of \xpackage{kvoptions} into this package. +% \item Check for incompatible \xpackage{endfloat} package. +% \item \xpackage{lastpage209.sty} for \LaTeX209. +% \item Replacement of |\filedate|, |-version|, |-name|,\ldots\ because +% of \LaTeX~bug 2705:\\ +% Synopsis: Possible problem with |\fileversion| and |\filedate|\\ +% \url{http://www.latex-project.org/cgi-bin/ltxbugs2html?category=LaTeX&responsible=anyone&state=anything&keyword=lastpage&pr=latex%2F2705&search=} +% \item \xpackage{alphalph} support included. +% \item Page numbering extension |\erroralph| by \textsc{Heiko Oberdiek} included. +% \item (Page-) Numbering extension for |roman| and |Roman| numbers included. +% \item Incompatible, old \xpackage{lastpage} package \textquotedblleft killed\textquotedblright. +% \item Example |pagesLTS-example.tex|. +% \item Alternatives listing (section \ref{sec:Alternatives}). +% \item Listing of \TeX\ sources (subsection \ref{ss:Downloads}). +% \item A~lot~(!) of details. +% \item Complete rewriting of the documentation. +% \item Everything in DTX framework. +% \item New package name: \xpackage{pagesLTS} for Last, Total, +% and page numbering Schemes pages. +% \end{Version} +% \begin{Version}{2010/06/01 v1.1(a) \xpackage{pagesLTS}} +% \item Abstract changed: Negative \texttt{roman} and \texttt{Roman} page +% numbers are now possible. +% \item Some references to other packages have been updated. +% \item Several typing mistakes have been corrected +% (and new ones have been included probably) - +% both in the \xfile{sty}le file as well as in this documentation. +% \end{Version} +% \begin{Version}{2010/06/03 v1.1b \xpackage{pagesLTS}} +% \item Corrected a bug in |\XXRoman|, where |\roman| instead of |\Roman| had been used. +% \item New \xpackage{papermas} package mentioned. +% \item Updated references to other packages. +% \item TDS locations updated. +% \item Several changes in the documentation and the Readme file. +% \end{Version} +% \begin{Version}{2010/06/24 v1.1c \xpackage{pagesLTS}} +% \item \xpackage{holtxdoc} warning in \xfile{drv} updated. +% \item Removed CRLF line endings from the \xfile{dtx} file. +% \item Corrected the location of the package at CTAN. +% (In this version \xfile{TDS} was still missing due to packaging error.) +% \item Corrected Message format in pagesLTS.\xfile{ins}. +% \item Updated references to other packages: \xpackage{hyperref}, \xpackage{undolabl}, and \xpackage{papermas}. +% \item Added a list of my other packages. +% \end{Version} +% \begin{Version}{2010/07/15 v1.1d \xpackage{pagesLTS}} +% \item Added the |\@ifclassloaded{revtex4}| code for |\lastpage@putlabel| (changed to +% |\pagesLTS@putlabelhyper|) from the \xpackage{hyperref} package \textbf{as comment}~- +% what is the meaning of that code? +% \item In the documentation added the explanation of the occurence of multiply definitions +% of the |LastPage| label whith \xpackage{lastpage}, \xpackage{pagesLTS}, \xpackage{hyperref} +% package (in that order). +% \item Corrected the given location of the \xpackage{pagesLTS.tds.zip} file at CTAN. +% \item Updated references to other packages: \xpackage{hyperref} and \xpackage{undolabl}. +% \item Updated to new version of \xpackage{undolabl} package [2010/07/15] v1.0d, +% which uses |\undonewlabel| with only one instead of two arguments. +% \item Added a warning message, if \xpackage{hyperref} \textit{and} \xpackage{pdfpages} are \textit{both} used. +% (Should not \xpackage{hyperref} give this warning?) +% \item The usual correction of typos and minor details in the documentation. +% \end{Version} +% \begin{Version}{2010/07/29 v1.1e \xpackage{pagesLTS}} +% \item Removed \xpackage{lastpage209.sty}, because it is now contained +% in the \xpackage{lastpage}\xfile{.dtx}\ file, v\,$\geq 1.2$a. +% \item Removed the |\@ifclassloaded{revtex4}| code for |\lastpage@putlabel|. +% \item Handling of \xpackage{lastpage} package adapted to updated version~1.2(a). +% \item There is a new version of the used \xpackage{geometry} package: 2010/07/13,~v5.5. +% \item Corrected error in \xpackage{lastpage} code [1994/07/20 v0.1b] given in \ref{History}~History. +% \item Version handling for \xpackage{undolabl} package updated. +% \item Included a |\CheckSum|. +% \item Some minor details. +% \end{Version} +% \begin{Version}{2010/08/08 v1.1f \xpackage{pagesLTS}} +% \item Version 1.1e had a bug: AlphAlph was replaced by alphalph (because that package is named like this), +% but this was done also in commands and definitions~- now reverted. +% \item The recent version of the Adobe Reader \sout{\ is}\uwave{\ was} 9.3.3 (instead of 9.3.1). +% \end{Version} +% \begin{Version}{2010/08/12 v1.1g \xpackage{pagesLTS}} +% \item Now the rerun warning is given \textit{after} e.\,g. the |\listfiles|, +% increasing the chance of the user to read it (trick found in +% Harald Harders' \xpackage{fnbreak} package, thanks!). +% \end{Version} +% \begin{Version}{2010/08/23 v1.1h \xpackage{pagesLTS}} +% \item Renamed |\XXRoman| to |\XRoman|. +% \item Reduced the number of needed counters. +% \item Removed wrong \% from the driver file. +% \item Changed the |\unit| definition (got rid of an old |\rm|). +% \item Without use of the \xpackage{hyperref} package, labels of type +% \texttt{pagesLTS.}\meta{page numbering scheme}\texttt{.local} +% became multiply defined. Now an |\undolabl| was inserted. +% \item Diverse details. +% \end{Version} +% \begin{Version}{2010/08/25 v1.1i \xpackage{pagesLTS}} +% \item Bug fix: \textsf{tcilatex} defines the |\hyperref| command, therefore +% for \xpackage{hyperref} package detection this had to be changed to +% |\Hy@Warning|. +% \end{Version} +% \begin{Version}{2010/09/12 v1.1j \xpackage{pagesLTS}} +% \item Bug fix: \LaTeX\ issued a \textquotedblleft \texttt{Label(s) may have changed.% +% Rerun to get cross-references right.}\textquotedblright -warning, +% even if labels had not changed but were overwritten. +% \item Starred version of |\lastpageref| for suppressing hyperlinks introduced. +% \item A lot of details. +% \end{Version} +% \begin{Version}{2010/09/22 v1.1k \xpackage{pagesLTS}} +% \item When no \texttt{fnsymbol} pagenumbering scheme is used, the respective +% counters are not defined, saving three counters. +% \item Updated to version 2010/09/13 v6.81n of the \xpackage{hyperref} package +% (which needs two more counters than the old 2010/06/18 v6.81g version). +% \item Moved the package from \texttt{.../latex/muench/pagesLTS/...} to +% \texttt{.../latex/pagesLTS/...}.\\ +% (Please make sure that the old version of the \xpackage{pagesLTS} package +% was properly uninstalled from your system.) +% \end{Version} +% \begin{Version}{2010/09/27 v1.1l \xpackage{pagesLTS}} +% \item Bug fix: |\PackageError{pagesLTS}{pagenumbering missing}{\pagesLTS@messageNPN }| +% had to be moved to the outside of |\EveryShipout|, because it wrote its +% message into the document instead to the screen and the \xfile{.log}-file. +% \item Updated to version 2010/04/24 v0.19 of the \xpackage{holtxdoc} package. +% \item \xpackage{lastpage} package has a new version: 2010/09/24 v1.2f. +% \end{Version} +% \begin{Version}{2011/02/01 v1.1m \xpackage{pagesLTS}} +% \item Added a new warning subsection about \xpackage{hyperref} and repeated page +% numbers. +% \item Bug fix: Missing \% after |-\romannumeral\number-\arabic{#1}| added. +% \item The \textquotedblleft new\textquotedblright\ version v2.4i of the +% \xpackage{endfloat} package is now even older than 15~years. +% \item Put a warning in the documentation as well as in the \xfile{log}-file and +% at the screen during compilation about the \xpackage{showkeys} package. +% (The labels of the \xpackage{pagesLTS} package cannot be shown by the +% \xpackage{showkeys} package.) +% \item Bug fix: In some situations a rerun warning was given even if no rerun +% was necessary. +% \item Replaced the list of my packages with a link to a web page list of those, +% which has the advantage of showing the recent versions of all those packages. +% \item There is a new version of the used \xpackage{geometry} package: 2010/09/12,~v5.6. +% \item There \sout{\ is}\uwave{\ was} a new version of the +% \xpackage{hyperref} package: 2010/12/16,~v6.81z. +% \item The recent version of the Adobe Reader \sout{\ is}\uwave{\ was} X (10.0.0) +% (instead of 9.3.3). Its handling of special page numbers was improved. +% \item The option \texttt{alphMult}\ \ is now set to \texttt{ab} by default. +% \item The option \texttt{AlphMulti}\ is now set to \texttt{AB} by default. +% \item There is a new version of the \xpackage{lastpage} package: 2011/02/01,~v1.2g. +% \item There is a new version of the used \xpackage{undolabl} package: 2011/02/01,~v1.0h. +% \item There \sout{\ is}\uwave{\ was} a new version of the \xpackage{papermas} package: 2011/02/01,~v1.0e. +% \item Some details. +% \end{Version} +% \begin{Version}{2011/03/16 v1.1n \xpackage{pagesLTS}} +% \item Bug fix: Handling of option |pagecontinue=false| changed. +% When |pagecontinue=false| was used, but also a +% |alphMult|, |AlphMulti|, |fnsymbolmult|, |romanMult| or |RomanMulti| option +% other than |0| or |false|, respectively, was used, the page numbering +% \textit{was} continued/extended. Now a warning is issued in case of such +% option clash and |pagecontinue=false| is heeded, disabling all continuation. +% \item Bug fix: |\ProvidesPackage{pagesLTS}| contained an older date (2010/09/27 of v1.1l +% instead of 2011/02/01 of v1.1m). +% \item Bug fix: The \xpackage{ulem} package is needed to generate the documentation from the +% \xfile{pagesLTS.dtx} file, but was not listed as necessary package. +% \item Bug fix: One reference to an outdated version of \xpackage{undolabl} package, +% replaced by the recent version. +% \item There \sout{\ is}\uwave{\ was} a new version of the \xpackage{hyperref} package: +% 2011/03/09,~v6.82d. +% \item The recent version of the Adobe Reader \sout{\ is}\uwave{\ was}\ X~(10.0.1) +% (instead of 10.0.0). +% \item Some minor details. +% \end{Version} +% \begin{Version}{2011/03/17 v1.1o \xpackage{pagesLTS}} +% \item There \sout{\ is}\uwave{\ was}\ a new version of the \xpackage{lipsum} package: +% 2011/02/08,~v1.1. +% \item Documentation and ReadMe bug fix: This \xpackage{pagesLTS} package is located at +% \CTAN{macros/latex/contrib/pageslts/} instead of \ldots/pagesLTS/. +% \item There is a new (possible) alternative package, \xpackage{totcount}, +% see section~\ref{sec:Alternatives}. +% \item Bug fix: There was a reference to \xpackage{lastpage} 1994/07/20, v0.1b, +% instead of the current version. +% \end{Version} +% \begin{Version}{2011/08/08 v1.2a} +% \item \textbf{Renamed the package from \xpackage{pagesLTS} to \xpackage{pageslts} +% (keeping family, prefix, internal commands,\ldots{} as |pagesLTS|).} +% Added checking against double loading as \xpackage{pagesLTS} and \xpackage{pageslts}. +% \item The \xpackage{holtxdoc} package was fixed (recent: 2011/02/04, v0.21), therefore +% the warning in \xfile{drv} could be removed. +% \item There is a new version of the \xpackage{ulem} package: 2011/03/18 +% (no version number given). +% \item There is a new version of the \xpackage{lipsum} package: 2011/04/14,~v1.2. +% \item There is a new version of the used \xpackage{hyperref} package: 2011/04/17,~v6.82g. +% \item |\AtEndAfterFileList| from the new version of the \xpackage{atveryend} package, +% 2011/04/23, v1.7, by \textsc{Heiko Oberdiek}, is now used for the rerun hint +% instead of appending to |\@dofilelist|. +% \item The recent version of the Adobe Reader is X~(10.1.0) (instead of 10.0.1). +% \item Now defining $2$: |\def\pagesLTS@two{2}| (for example for the +% \xpackage{thumbs} package) and $3$: |\def\pagesLTS@three{3}|. +% \item Replaced |\texttt{\textbackslash|\ldots|}| by +% \textbar \textbackslash \ldots \textbar{} in the \xfile{dtx} and by +% |\verb|\textbar \textbackslash \ldots \textbar{} in the example (where possible). +% \item When the \xpackage{alphalph} package is needed, it is loaded via |\RequirePackage| +% instead of crashing with an error message. +% \item There is a new version of the \xpackage{papermas} package: 2011/08/08,~v1.0g. +% \item There is a new version of the \xpackage{undolabl} package: 2011/08/08,~v1.0j. +% \item There is a new version of the \xpackage{lastpage} package: 2011/08/08,~v1.2i. +% \item A lot of details (also in the documentation). +% \end{Version} +% \end{History} +% +% \bigskip +% +% When you find a mistake or have a suggestion for an improvement of this package, +% please send an e-mail to the maintainer, thanks!\\ +% (Please see BUG REPORTS in the README.) +% +% \bigskip +% +% Note: \textsf{Y} is not missing in the following index, but no command beginning +% with this letter has been used in this \xpackage{pageslts} package. +% +% \pagebreak +% +% \PrintIndex +% +% \Finale +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/source/latex/pageslts/pageslts.ins b/Master/texmf-dist/source/latex/pageslts/pageslts.ins new file mode 100644 index 00000000000..33228778489 --- /dev/null +++ b/Master/texmf-dist/source/latex/pageslts/pageslts.ins @@ -0,0 +1,160 @@ +%% +%% This is file `pageslts.ins', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pageslts.dtx (with options: `install') +%% +%% This is a generated file. +%% +%% IMPORTANT NOTICE: +%% On the first page backslash pagenumbering should be called +%% (with the appropriate argument out of e.g. +%% * roman - Lowercase Roman numerals: i, ii, iii, iv,... +%% * Roman - Uppercase Roman numerals: I, II, III, IV,... +%% * arabic - Arabic numerals: 1, 2, 3, 4,... +%% * alph - Lowercase letters: a, b, c, d,... +%% * Alph - Uppercase letters: A, B, C, D,... +%% * fnsymbol - Footnote symbols: *, ^^86 (ddagger), ^^87 (dddagger), +%% ^^a7 (mathsection),... +%% ). 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 +%% of backslash pagenumbering, but in that case this package does not +%% see the change in the page numbering scheme and will make mistakes. +%% The package takes options. +%% +%% The usual disclaimers apply: +%% 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 +%% and the latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainer of this work is H.-Martin Muench +%% (Martin dot Muench at Uni-Bonn dot de). +%% +%% This package first started as a revision of the lastpage +%% package of Jeffrey P. Goldberg (jeffrey+news at goldmark dot org), +%% but it became obviouse that a replacement was needed. +%% +%% This work consists of the main source file pageslts.dtx +%% and the derived files +%% pageslts.sty, pageslts.pdf, pageslts.ins, pageslts.drv, +%% pageslts-example.tex. +%% +\input docstrip.tex + +\obeyspaces +\Msg{******************************************************} +\Msg{* Installation *} +\Msg{* Package: pageslts v1.2a 2011/08/08 LaTeX2e package *} +\Msg{* Refers to special pages' numbers/names (HMM) *} +\Msg{******************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +IMPORTANT NOTICE: +On the first page backslash pagenumbering should be called +(with the appropriate argument out of e.g. + * roman - Lowercase Roman numerals: i, ii, iii, iv,... + * Roman - Uppercase Roman numerals: I, II, III, IV,... + * arabic - Arabic numerals: 1, 2, 3, 4,... + * alph - Lowercase letters: a, b, c, d,... + * Alph - Uppercase letters: A, B, C, D,... + * fnsymbol - Footnote symbols: *, ^^86 (ddagger), ^^87 (dddagger), + ^^a7 (mathsection),... +). 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 +of backslash pagenumbering, but in that case this package does not +see the change in the page numbering scheme and will make mistakes. +The package takes options. + +The usual disclaimers apply: +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 +and the latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3c or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +The Current Maintainer of this work is H.-Martin Muench +(Martin dot Muench at Uni-Bonn dot de). + +This package first started as a revision of the lastpage +package of Jeffrey P. Goldberg (jeffrey+news at goldmark dot org), +but it became obviouse that a replacement was needed. + +This work consists of the main source file pageslts.dtx +and the derived files + pageslts.sty, pageslts.pdf, pageslts.ins, pageslts.drv, + pageslts-example.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{pageslts.ins}{\from{pageslts.dtx}{install}}% + \file{pageslts.drv}{\from{pageslts.dtx}{driver}}% + \file{ltxdoc.cfg}{\from{pageslts.dtx}{ltxdoc}}% + \usedir{tex/latex/pageslts}% + \file{pageslts.sty}{\from{pageslts.dtx}{package}}% + \usedir{doc/latex/pageslts}% + \file{pageslts-example.tex}{\from{pageslts.dtx}{example}}% +} + +\obeyspaces +\Msg{**************************************************************} +\Msg{* *} +\Msg{* To finish the installation you have to move the following *} +\Msg{* file into a directory searched by TeX: *} +\Msg{* *} +\Msg{* pageslts.sty *} +\Msg{* *} +\Msg{* To produce the documentation run the file `pageslts.drv' *} +\Msg{* through (pdf)LaTeX, e.g. *} +\Msg{* pdflatex pageslts.drv *} +\Msg{* makeindex -s gind.ist pageslts.idx *} +\Msg{* pdflatex pageslts.drv *} +\Msg{* makeindex -s gind.ist pageslts.idx *} +\Msg{* pdflatex pageslts.drv *} +\Msg{* *} +\Msg{* At least three runs are necessary e. g. to get the *} +\Msg{* references right! *} +\Msg{* *} +\Msg{* Happy TeXing! *} +\Msg{* *} +\Msg{**************************************************************} + +\endbatchfile + +\endinput +%% +%% End of file `pageslts.ins'. diff --git a/Master/texmf-dist/tex/latex/pageslts/pageslts.sty b/Master/texmf-dist/tex/latex/pageslts/pageslts.sty new file mode 100644 index 00000000000..efc29f2b8b5 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pageslts/pageslts.sty @@ -0,0 +1,1238 @@ +%% +%% This is file `pageslts.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pageslts.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% IMPORTANT NOTICE: +%% On the first page backslash pagenumbering should be called +%% (with the appropriate argument out of e.g. +%% * roman - Lowercase Roman numerals: i, ii, iii, iv,... +%% * Roman - Uppercase Roman numerals: I, II, III, IV,... +%% * arabic - Arabic numerals: 1, 2, 3, 4,... +%% * alph - Lowercase letters: a, b, c, d,... +%% * Alph - Uppercase letters: A, B, C, D,... +%% * fnsymbol - Footnote symbols: *, ^^86 (ddagger), ^^87 (dddagger), +%% ^^a7 (mathsection),... +%% ). 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 +%% of backslash pagenumbering, but in that case this package does not +%% see the change in the page numbering scheme and will make mistakes. +%% The package takes options. +%% +%% The usual disclaimers apply: +%% 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 +%% and the latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainer of this work is H.-Martin Muench +%% (Martin dot Muench at Uni-Bonn dot de). +%% +%% This package first started as a revision of the lastpage +%% package of Jeffrey P. Goldberg (jeffrey+news at goldmark dot org), +%% but it became obviouse that a replacement was needed. +%% +%% This work consists of the main source file pageslts.dtx +%% and the derived files +%% pageslts.sty, pageslts.pdf, pageslts.ins, pageslts.drv, +%% pageslts-example.tex. +%% +\NeedsTeXFormat{LaTeX2e}[1994/06/01] +\ProvidesPackage{pageslts}[2011/08/08 v1.2a + Refers to special pages' numbers/names (HMM)] + +%% Allows for things like\\ +%% |Page \thepage\ (\theCurrentPage; local: \theCurrentPageLocal) of % +%% \lastpageref{pagesLTS.roman}(\lastpageref{pagesLTS.roman.local}) + % +%% \lastpageref{pagesLTS.Roman}(\lastpageref{pagesLTS.Roman.local}) + % +%% \lastpageref{pagesLTS.arabic}(\lastpageref{pagesLTS.arabic.local}) + % +%% \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\\ +%% '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 + } + +\gdef\pagesLTS@loaded{p@gesLTSlo@ded} + +\RequirePackage{atveryend}[2011/04/23]% v1.7 +\RequirePackage{everyshi}[2001/05/15]% v3.00 +\RequirePackage{kvoptions}[2010/02/22]% v3.7 +\RequirePackage{undolabl}[2011/08/08]% v1.0j +\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 those packages, +%% but this was not tested. Please consider updating your packages +%% to the most recent version (if they are not already the most +%% recent version). + +%% The recent version of the endfloat package is v2.4i as of 1995/10/11. +%% The pageslts package is not fully compatible with version 2.0 +%% (and earlier) of the endfloat package, because those versions +%% redefined the \enddocument command. + +\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} + +\ProcessKeyvalOptions* + +\def\pagesLTS@zero{0} +\def\pagesLTS@one{1} +\def\pagesLTS@two{2} +\def\pagesLTS@three{3} + +\ifpagesLTS@pagecontinue% + \PackageInfo{pageslts}{Option pagecontinue enabled\MessageBreak% + (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% + } +\else + \PackageWarningNoLine{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!\MessageBreak% + } +\fi + +\def\pagesLTS@ab{ab} +\def\pagesLTS@bb{bb} +\def\pagesLTS@ABi{AB} +\def\pagesLTS@BBi{BB} + +\ifx\pagesLTS@alphMult\pagesLTS@ab% + \ifpagesLTS@pagecontinue% \relax + \else + \PackageWarningNoLine{pageslts}{Option pagecontinue=false used,\MessageBreak% + but not alphMult=0.\MessageBreak% + Now setting alphMult=0.\MessageBreak% + } + \setkeys{pagesLTS}{alphMult=0} + \fi +\else + \ifx\pagesLTS@alphMult\pagesLTS@bb% + \ifpagesLTS@pagecontinue% \relax + \else + \PackageWarningNoLine{pageslts}{Option pagecontinue=false used,\MessageBreak% + but not alphMult=0.\MessageBreak% + Now setting alphMult=0.\MessageBreak% + } + \setkeys{pagesLTS}{alphMult=0} + \fi + \else + \ifx\pagesLTS@alphMult\pagesLTS@zero% + \PackageWarningNoLine{pageslts}{% + Option alphMult=0 found:\MessageBreak% + The pageslts package was used, but the option\MessageBreak% + alphMult was set to 0 (zero).\MessageBreak% + If you want the page numbers to be extended\MessageBreak% + after z, you have to organize this yourself now.\MessageBreak% + 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!\MessageBreak% + } + \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!\MessageBreak% + } + \setkeys{pagesLTS}{alphMult=ab} + \fi + \fi +\fi + +\ifx\pagesLTS@AlphMulti\pagesLTS@ABi% + \ifpagesLTS@pagecontinue% \relax + \else + \PackageWarningNoLine{pageslts}{Option pagecontinue=false used,\MessageBreak% + but not AlphMulti=0.\MessageBreak% + Now setting AlphMulti=0.\MessageBreak% + } + \setkeys{pagesLTS}{AlphMulti=0} + \fi +\else + \ifx\pagesLTS@AlphMulti\pagesLTS@BBi% + \ifpagesLTS@pagecontinue% \relax + \else + \PackageWarningNoLine{pageslts}{Option pagecontinue=false used,\MessageBreak% + but not AlphMulti=0.\MessageBreak% + Now setting AlphMulti=0.\MessageBreak% + } + \setkeys{pagesLTS}{AlphMulti=0} + \fi + \else + \ifx\pagesLTS@AlphMulti\pagesLTS@zero% + \PackageWarningNoLine{pageslts}{% + Option AlphMulti=0 found:\MessageBreak% + The pageslts package was used, but the option\MessageBreak% + AlphMulti was set to 0 (zero).\MessageBreak% + If you want the page numbers to be extended\MessageBreak% + after Z, you have to organize this yourself now.\MessageBreak% + 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!\MessageBreak% + } + \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!\MessageBreak% + } + \setkeys{pagesLTS}{AlphMulti=AB} + \fi + \fi +\fi + +\ifx\pagesLTS@alphMult\pagesLTS@zero% \relax +\else \RequirePackage{alphalph}[2010/04/18]% v2.3 +\fi + +\ifx\pagesLTS@AlphMulti\pagesLTS@zero% \relax +\else \RequirePackage{alphalph}[2010/04/18]% v2.3 +\fi + +\ifpagesLTS@fnsymbolmult% +\RequirePackage{alphalph}[2010/04/18]% v2.3 +\fi + +\ifpagesLTS@romanMult% + \ifpagesLTS@pagecontinue% \relax + \else + \PackageWarningNoLine{pageslts}{Option pagecontinue=false used,\MessageBreak% + but also romanMult.\MessageBreak% + Now setting romanMult=false.\MessageBreak% + } + \setkeys{pagesLTS}{romanMult=false} + \fi +\fi +\ifpagesLTS@romanMult% + \PackageInfo{pageslts}{Option romanMult enabled\MessageBreak% + (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% + } +\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% + } +\fi + +\ifpagesLTS@RomanMulti% + \ifpagesLTS@pagecontinue% \relax + \else + \PackageWarningNoLine{pageslts}{Option pagecontinue=false used,\MessageBreak% + but also RomanMulti.\MessageBreak% + Now setting RomanMulti=false.\MessageBreak% + } + \setkeys{pagesLTS}{RomanMulti=false} + \fi +\fi +\ifpagesLTS@RomanMulti% + \PackageInfo{pageslts}{Option RomanMulti enabled\MessageBreak% + (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% + } +\else + \PackageWarningNoLine{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% + } +\fi + +\ifpagesLTS@fnsymbolmult% + \ifpagesLTS@pagecontinue% \relax + \else + \PackageWarningNoLine{pageslts}{Option pagecontinue=false used,\MessageBreak% + but also fnsymbolmult.\MessageBreak% + Now setting fnsymbolmult=false.\MessageBreak% + } + \setkeys{pagesLTS}{fnsymbolmult=false} + \fi +\fi +\ifpagesLTS@fnsymbolmult% + \PackageInfo{pageslts}{Option fnsymbolmult enabled\MessageBreak% + (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% + } +\else + \PackageWarningNoLine{pageslts}{% + Option fnsymbolmult is set to false:\MessageBreak% + The pageslts package was used, but the option\MessageBreak% + fnsymbolmult was set to false.\MessageBreak% + If you want the page numbering of the footnotesymbol\MessageBreak% + 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% + } +\fi + +\def\pagesLTS@pnc{0} +\def\pagesLTS@called{0} +\def\pagesLTS@fns{fnsymbol} +\def\pagesLTS@alph{alph} +\def\pagesLTS@Alph{Alph} +\def\pagesLTS@AlphAlph{0} +\def\pagesLTS@hyper{0} +\def\pagesLTS@rerun{0} +\def\pagesLTS@eso{0} +\def\pagesLTS@esov{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% + was not called at the beginning of the document\MessageBreak% + (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% + } + +\if@filesw% \relax +\else + \PackageError{pageslts}{No auxiliary file allowed.}{% + The pageslts package was not allowed to write to an .aux file.\MessageBreak + This package does not work without access to an .aux file.\MessageBreak + Press Ctrl+Z to exit.\MessageBreak + } +\fi + +\let\OrigPagenumbering\pagenumbering + +\newcounter{CurrentPage} +\setcounter{CurrentPage}{1} +\def\theCurrentPageLocal{\arabic{pagesLTS.current.local.\pagesLTS@pnc}} +\newcounter{pagesLTS.pagenr} +\newcounter{pagesLTS.current.local.0} +\setcounter{pagesLTS.current.local.0}{1} +\newcounter{pagesLTS.pnc.0} + +\newcommand{\xroman}[1]{% + \ifnum\value{#1}>0% + \roman{#1}% + \else% + \ifnum\value{#1}<0% + -\romannumeral\number-\arabic{#1}% + \else% + 0% + \fi% + \fi% + } + +\newcommand{\XRoman}[1]{% + \ifnum\value{#1}>0% + \Roman{#1}% + \else% + \ifnum\value{#1}<0% + -\expandafter\@slowromancap\romannumeral\number-\arabic{#1}@% + \else% + 0% + \fi% + \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{\lastpages}[2]{% + \pagesLTS@ifcounter{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 + \else% + \addtocounter{page}{+1}% + \pagesLTS@putlabel{pagesLTS.#1.local}{\theCurrentPageLocal}{1} + \addtocounter{page}{-1}% + \fi% + } + + +%% 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}}% + \else% + \ifnum\value{#2}<0% + -#1{\expandafter\@gobble\the\value{#2}}% + \else% + 0% + \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. %% + + +\newcommand{\expandPagenumbering}[1]{% + \let\Origthepage\thepage% + \def\pagesLTS@tmpC{arabic}% + \ifx\pagesLTS@pnc\pagesLTS@tmpC% \relax + \else% + \def\pagesLTS@tmpC{roman}% + \ifx\pagesLTS@pnc\pagesLTS@tmpC% + \ifpagesLTS@romanMult% + \renewcommand*{\thepage}{\xroman{page}}% + \fi% + \else% + \def\pagesLTS@tmpC{Roman}% + \ifx\pagesLTS@pnc\pagesLTS@tmpC% + \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% + \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% + \fi% + \else% + \ifx\pagesLTS@pnc\pagesLTS@fns% + \ifpagesLTS@fnsymbolmult% + \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% + \let\pagesLTS@tmpC\undefined% + } + +\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 + \else% + \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}% + \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}% + \fi% + \else% + \pagesLTS@writelabel{\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}}% + \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}<2% + \pagesLTS@writelabel{\pagesLTS@pnc}% + \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}% + \fi% + \if@filesw% + \immediate\write\@auxout{\string + \pagesLTS@ifcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.cnt}}% + \fi% + \edef\pagesLTS@tmpB{\arabic{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}}% + \if@filesw% + \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}% + \setcounter{pagesLTS.double.\pagesLTS@pnc}{\value{page}}% + \addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{+1}% + \addtocounter{page}{+1}% + \xdef\pagesLTS@pnc{#1}% + \OrigPagenumbering{#1}% + \expandPagenumbering{#1} + \pagesLTS@ifcounter{pagesLTS.pnc.\pagesLTS@pnc}% + \addtocounter{pagesLTS.pnc.\pagesLTS@pnc}{1}% + \pagesLTS@ifcounter{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% + \setcounter{pagesLTS.current.local.\pagesLTS@pnc}{1}% + \fi% + \else% + %% before the first page has shiped out + \xdef\pagesLTS@pnc{#1}% + \countdef\c@page=0 \c@page=1 + \def\cl@page{} + \global\c@page \@ne + \global\def\thepage{\csname \expandafter @\pagesLTS@pnc \endcsname \c@page}% + \expandPagenumbering{#1} + \pagesLTS@ifcounter{pagesLTS.pnc.\pagesLTS@pnc}% + \setcounter{pagesLTS.pnc.\pagesLTS@pnc}{1}% + \pagesLTS@ifcounter{pagesLTS.double.\pagesLTS@pnc}% + \setcounter{pagesLTS.double.\pagesLTS@pnc}{1}% + \pagesLTS@ifcounter{pagesLTS.current.local.\pagesLTS@pnc}% + \setcounter{pagesLTS.current.local.\pagesLTS@pnc}{1}% + \fi% + \gdef\pagesLTS@called{1}% + \fi% + \let\pagesLTS@tmpA\undefined% + \let\pagesLTS@tmpB\undefined% + } + +%% analogous to \HyPsd@pageref from the hyperref package by Heiko Oberdiek: +\def\lastpagereftxt#1{\pagesLTS@@pageref#1*\END} + +\def\pagesLTS@@pageref#1*#2\END{% + \ifx\\#2\\% no star + \pagesLTS@@@pageref{#1}% + \else% star + \expandafter\pagesLTS@@@pagerefstar% + \fi% +} + +\def\pagesLTS@@@pageref#1{\lastpagereftext{#1}} +\def\pagesLTS@@@pagerefstar#1{\lastpagereftextstar{#1}} + +\newcommand{\lastpagereftext}[1]{% + \def\pagesLTS@tmpA{#1}% + \def\pagesLTS@tmpB{pagesLTS.fnsymbol.local}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}% + \ifx\pagesLTS@hyper\pagesLTS@one% + \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}% + {\arabic{pagesLTS.fnsymbol.local}}% + \else \arabic{pagesLTS.fnsymbol.local}% + \fi% + \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% + \ifx\pagesLTS@hyper\pagesLTS@one% + \pageref*{#1}% + \else% + \pageref{#1}% + \fi% + \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}% + \ifx\pagesLTS@hyper\pagesLTS@one% + \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}% + {\arabic{pagesLTS.fnsymbol.local}}% + \else \arabic{pagesLTS.fnsymbol.local}% + \fi% + \else% + \def\pagesLTS@tmpB{pagesLTS.fnsymbol}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}% + {\pagesLTS.lastpage}% + \else \pageref{pagesLTS.fnsymbol}% + \fi% + \else% + \def\pagesLTS@tmpB{LastPage}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \href{\#pagesLTS.fnsymbol.local.\pagesLTS@eso}% + {\pagesLTS.lastpage}% + \else \pageref{LastPage}% + \fi% + \else% + \def\pagesLTS@tmpB{VeryLastPage}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}% + {\pagesLTS.lastpage}% + \else \pageref{VeryLastPage}% + \fi% + \else% + \def\pagesLTS@tmpB{LastPages}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}% + {\arabic{pagesLTS.pagenr}}% + \else \pageref{LastPages}% + \fi% + \else% + \pageref{#1}% + \fi% + \fi% + \fi% + \fi% + \fi% + \let\pagesLTS@tmpA\undefined% + \let\pagesLTS@tmpB\undefined% + } + +\newcommand{\l@stpagerefendstar}[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% + \def\pagesLTS@tmpB{pagesLTS.fnsymbol}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \pageref*{pagesLTS.fnsymbol}% + \else \pageref{pagesLTS.fnsymbol}% + \fi% + \else% + \def\pagesLTS@tmpB{LastPage}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \pageref*{LastPage}% + \else \pageref{LastPage}% + \fi% + \else% + \def\pagesLTS@tmpB{VeryLastPage}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \pageref*{VeryLastPage}% + \else \pageref{VeryLastPage}% + \fi% + \else% + \def\pagesLTS@tmpB{LastPages}% + \ifx\pagesLTS@tmpA\pagesLTS@tmpB% + \ifx\pagesLTS@hyper\pagesLTS@one% + \pageref*{LastPages}% + \else \pageref{LastPages}% + \fi% + \else% + \ifx\pagesLTS@hyper\pagesLTS@one% + \pageref*{#1}% + \else \pageref{#1}% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \let\pagesLTS@tmpA\undefined% + \let\pagesLTS@tmpB\undefined% + } + +\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}\string\relax}% + \@overriddenmessage s{#1}% + \fi% + \fi% + \pagesLTS@putlabel{#1}{#2}{0}% + \@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% + }% + \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}% + \ifx\pagesLTS@hyper\pagesLTS@one% + \phantomsection% + \hypertarget{pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.cont}}{}% + \fi% + \ifnum \pagesLTS@esov=\pagesLTS@zero% + \label{pagesLTS.fnsymbol}% + \else% + \overridelabel{pagesLTS.fnsymbol}% + \fi% + \else% + \ifx\pagesLTS@hyper\pagesLTS@one% + \phantomsection% + \fi% + \if@filesw% + \overridelabel{pagesLTS.\pagesLTS@pnc}% + \addtocounter{page}{+1}% + \overrideLTSlabel{pagesLTS.\pagesLTS@pnc.local}{\theCurrentPageLocal}% + \addtocounter{page}{-1}% + \fi% + \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. %% + } + +\EveryShipout{% + \ifnum\value{page}>0% \relax + \else% + \ifnum\value{page}=0% + \PackageWarning{pageslts}{% + Counter `page' is zero!\MessageBreak% + If the page numbering scheme is not arabic\MessageBreak% + and further not extended\MessageBreak% + (see Page counter overflow in the pageslts\MessageBreak% + documentation), without other measures\MessageBreak% + this will lead to a counter overflow.\MessageBreak% + }% + \else% + \ifnum\value{page}<0% + \PackageWarning{pageslts}{% + Counter `page' is negative: `\the\value{page}'!\MessageBreak% + If the page numbering scheme is not arabic\MessageBreak% + and further not extended\MessageBreak% + (see Page counter overflow in the pageslts\MessageBreak% + documentation), without other measures\MessageBreak% + this will lead to a counter overflow.\MessageBreak% + }% + \else% + \PackageError{pageslts}{% + Counter `page' does not have a recognized value:\MessageBreak% + `\the\value{page}'\MessageBreak% + \@ehd \MessageBreak% + }% + \fi% + \fi% + \fi% + \ifnum \value{CurrentPage}=1% This is the first shipout! + \@ifundefined{Hy@Warning}{% hyperref not loaded + }{% hyperref loaded + \gdef\pagesLTS@hyper{1}% + }% + \ifx\pagesLTS@called\pagesLTS@zero% + \global\def\pncmissing{1}% + \mathchardef\pagesLTS@tmpD=\arabic{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% + \def\pagesLTS@pnc{0}% + \pagenumbering{\pagesLTS@tmpP}% + \setcounter{page}{\pagesLTS@tmpD}% + \fi% + \pagesLTS@writelabel{0}% + \fi% + \ifx\pagesLTS@pnc\pagesLTS@fns% + \@pagesLTS@Prelim@EveryShipout% + \gdef\pagesLTS@esov{\arabic{pagesLTS.fnsymbol.cont}}% + \else% + \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}>1% + \@pagesLTS@Prelim@EveryShipout% + \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% + } + +\newcommand{\pagesLTS@putlabel}[3]{% + \addtocounter{page}{-1}% + \ifx\pagesLTS@SK\pagesLTS@one% + \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})}% + \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% + \ifx\pagesLTS@hyper\pagesLTS@one% + \pagesLTS@putlabelhyper{#1}{#2}% + \else% + \if@filesw% + \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}<2% + \immediate\write\@auxout{\string + \newlabel{#1}{{}{#2}}}% + \else% + \edef\pagesLTStmpA{#1}% + \edef\pagesLTStmpB{pagesLTS.\pagesLTS@pnc.local}% + \ifx\pagesLTStmpA\pagesLTStmpB% + \edef\pagesLTStmpA{#3}% + \ifx\pagesLTStmpA\pagesLTS@one% + \immediate\write\@auxout{\string + \undonewlabel{#1}}% + \fi% + \fi% + \immediate\write\@auxout{\string + \newlabel{#1}{{}{#2}}}% + \fi% + \fi% + \fi% + \addtocounter{page}{+1}% + } + +\newcommand{\pagesLTS@putlabels}{% + \addtocounter{page}{-1}% + \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 }% + \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% + \addtocounter{page}{+1}% + \pagesLTS@putlabel{LastPages}{\theCurrentPage}{1}% + \addtocounter{CurrentPage}{+1}% + \addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{1}% + } + +\AtBeginDocument{% + \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}{1995/10/10}{% 1995/10/11 v2.4i + \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 \ enddocument,\MessageBreak% + and so interferred drastically with the LaTeX2e commands\MessageBreak% + which make use of \ AtEndDocument.\MessageBreak% + Newer versions of the endfloat package exists\MessageBreak% + (at least: v2.4i as of 1995/10/11)\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}{2011/08/07}% 2011/08/08 v1.2i + {\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}% + }% + }{}% + \@ifpackageloaded{alphalph}% + {\global\def\pagesLTS@AlphAlph{1}% + \newalphalph{\AlphMult}[mult]{\@Alph}{26}% + \newalphalph{\alphMult}[mult]{\@alph}{26}% + \newalphalph{\fnsymbolmult}[mult]{\@fnsymbol}{5}% + }{% \relax + } + \@ifpackageloaded{hyperref}% + {\global\def\pagesLTS@hyper{1}% + \@ifpackageloaded{pdfpages}% + {\PackageWarningNoLine{pageslts}{Package pdfpages detected.\MessageBreak% + Using hyperref with pdfpages can cause problems. See\MessageBreak% + ftp://ftp.ctan.org/tex-archive/\MessageBreak% + macros/latex/contrib/pax/\MessageBreak% + for project pax (PDFAnnotExtractor).% + }% + }{% \relax + }% + \@ifpackageloaded{undolabl}% + {\@ifpackagelater{undolabl}{2010/07/14}% 2010/07/15 v1.0d + {\@ifpackagelater{undolabl}{2011/08/07}% 2011/08/08 v1.0j + {% 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 ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/undolabl/ \MessageBreak% + for a new version.\MessageBreak% + }% + } + }{\PackageError{pageslts}{Incompatible, obsolete version of undolabl package used.}{% + See ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/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 e.g.\MessageBreak% + ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/undolabl/ \MessageBreak% + Type X <return> to quit.\MessageBreak% + }% + } + \@ifpackagelater{hyperref}{2011/04/16}{% 2011/04/17 v6.82g + \relax}{% + \PackageWarningNoLine{pageslts}{Old hyperref package detected:\MessageBreak% + There is a newer version of the\MessageBreak% + hyperref package available.\MessageBreak% + Please consider updating your version.\MessageBreak% + }% + }% + %% pageslts supports the use of the package hyperref by + %% Heiko Oberdiek (hyperref version 2011/04/17 v6.82g). + %% 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 }% + }% + \@ifpackageloaded{showkeys}{% + \@ifpackagewith{showkeys}{final}{\relax}{\gdef\pagesLTS@SK{1}}% + }{% \relax + }% + } + +\AtEndDocument{% + \ifx\pncmissing\pagesLTS@one% + \PackageError{pageslts}{pagenumbering scheme missing}{\pagesLTS@messageNPN }% + \fi% + \message{^^J% + AED: pageslts setting LastPage ^^J}% + \clearpage% + \ifx\pagesLTS@pnc\pagesLTS@fns% + \def\pagesLTS@tmpA{\arabic{pagesLTS.fnsymbol.local}}% + \ifnum \pagesLTS@eso=\pagesLTS@tmpA% + \gdef\pagesLTS@rerun{0}% + \else% + \gdef\pagesLTS@rerun{1}% + \fi% + \if@filesw% + \immediate\write\@auxout{\string + \gdef\string\pagesLTS@eso{\pagesLTS@tmpA}}% + \fi% + \fi% + \pagesLTS@putlabel{LastPage}{\thepage}{1}% + \let\pagesLTS@tmpA\undefined% + } + +\AfterLastShipout{% + \if@filesw% + \ifx\pagesLTS@esov\pagesLTS@zero% + \else% + \immediate\write\@auxout{\string + \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}}% + \immediate\write\@auxout{\string + \setcounter{pagesLTS.fnsymbol.local}{\pagesLTS@esov}}% + \fi% + \ifx\pagesLTS@hyper\pagesLTS@one% + \ifx\pagesLTS@pnc\pagesLTS@fns% + \immediate\write\@auxout{\string + \gdef\string\lastpageref{\string\lastpagerefend}}% + \fi% + \fi% + \fi% + \pagesLTS@ifcounter{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}}% + \addtocounter{pagesLTS.pnc.0}{-1}% + \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@tmpD}% + \fi% + \if@filesw% + \immediate\write\@auxout{\string + \pagesLTS@ifcounter{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}% + \if@filesw% + \immediate\write\@auxout{\string + \gdef\string\pagesLTS.lastpage{\pagesLTS@tmpA}}% + \fi% + \addtocounter{page}{+1}% + \addtocounter{CurrentPage}{-1}% + \def\pagesLTS@tmpB{\arabic{CurrentPage}}% + \if@filesw% + \immediate\write\@auxout{\string + \setcounter{pagesLTS.pagenr}{\pagesLTS@tmpB}}% + \fi% + \addtocounter{CurrentPage}{+1}% + \message{^^J% + AED: pageslts setting VeryLastPage via AfterLastShipout ^^J}% + \pagesLTS@putlabel{VeryLastPage}{\thepage}{1}% + \message{^^J% + AED: pageslts setting LastPages via AfterLastShipout ^^J}% + \pagesLTS@putlabels% + \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.\MessageBreak% + }% + \fi% + } + +\endinput +%% +%% End of file `pageslts.sty'. diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index b4773398714..933a6c62f58 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -270,7 +270,7 @@ my @TLP_working = qw( onlyamsmath onrannual opcit optional ordinalpt orkhun ot-tableau othello othelloboard oubraces outline outliner overpic - pagecolor pagecont pagenote pagerange pagesLTS + pagecolor pagecont pagenote pagerange pageslts paper papercdcase papermas papertex paralist parallel paratype paresse parrun parselines parskip passivetex patch patchcmd patgen2-tutorial path pauldoc pawpict pax pbox pb-diagram diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 7eb0bb09df6..a8ac5e63a85 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -256,6 +256,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'cweb', "die 'skipping, programs'", 'cwpuzzle', "die 'skipping, in crossword package'", 'cyklop', "&MAKEcopy", + 'dejavu', "&MAKEcopy", 'deleq', "die 'skipping, nosell license'", 'deproc', "die 'skipping, for latex 2.09'", 'devanagr', "&MAKEdevanagr", @@ -589,7 +590,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'otibet', "&MAKEflatten", 'oxford', "die 'skipping, nosell license'", 'pageno', "die 'skipping, nosell license'", - 'pageslts', "die 'skipping, use pagesLTS'", + 'pagesLTS', "die 'skipping, use pageslts'", 'pandora', "&MAKEflatten", 'paradigm', "die 'skipping, too old, for BLUe'", 'pb-diagram', "&MAKEpbdiagram", diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc index d3d73f769e8..a5907e2967b 100644 --- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc @@ -478,7 +478,7 @@ depend pagecolor depend pagecont depend pagenote depend pagerange -depend pagesLTS +depend pageslts depend paper depend papercdcase depend papermas diff --git a/Master/tlpkg/tlpsrc/pageslts.tlpsrc b/Master/tlpkg/tlpsrc/pageslts.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/pageslts.tlpsrc |