You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
283 lines
9.7 KiB
283 lines
9.7 KiB
%%
|
|
%% This is file `lastpage.sty',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% lastpage.dtx (with options: `package')
|
|
%%
|
|
%% This is a generated file.
|
|
%%
|
|
%% Project: lastpage
|
|
%% Version: 2015/03/29 v1.2m
|
|
%%
|
|
%% Copyright (C) 2010 - 2015 by
|
|
%% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de>
|
|
%% Portions of code copyrighted by other people as marked.
|
|
%%
|
|
%% The usual disclaimer applies:
|
|
%% If it doesn't work right that's your problem.
|
|
%% (Nevertheless, send an e-mail to the maintainer
|
|
%% when you find an error in this package.)
|
|
%%
|
|
%% This work may be distributed and/or modified under the
|
|
%% conditions of the LaTeX Project Public License, either
|
|
%% version 1.3c of this license or (at your option) any later
|
|
%% 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 package was invented by
|
|
%% Jeffrey P. Goldberg (jeffrey+news at goldmark dot org).
|
|
%% I thought that a replacement was needed and therefore created the pageslts package,
|
|
%% https://www.ctan.org/pkg/pageslts
|
|
%% . Nevertheless, for compatibility with existing documents/packages as well as for
|
|
%% the low amount of resources needed by the lastpage package (no new counter!),
|
|
%% I updated this package.
|
|
%% Thanks go to Jeffrey P. Goldberg for allowing me to do this.
|
|
%%
|
|
%% This work consists of the main source file lastpage.dtx,
|
|
%% the README, and the derived files
|
|
%% lastpage.sty, lastpage.pdf,
|
|
%% lastpage.ins, lastpage.drv,
|
|
%% lastpage-example.tex, lastpage-example.pdf.
|
|
%%
|
|
%% In memoriam
|
|
%% Claudia Simone Barth + 1996/01/30
|
|
%% Tommy Muench + 2014/01/02
|
|
%% Hans-Klaus Muench + 2014/08/24
|
|
%%
|
|
\NeedsTeXFormat{LaTeX2e}[2014/05/01]
|
|
\ProvidesPackage{lastpage}%
|
|
[2015/03/29 v1.2m Refers to last page's name (HMM; JPG)]%
|
|
|
|
%% lastpage may work with earlier versions of LaTeX,
|
|
%% but this was not tested. Please consider updating
|
|
%% your LaTeX (and packages) to the most recent version
|
|
%% (if it is/they are not already the most recent version).
|
|
|
|
%% Allows for things like
|
|
%% Page \thepage{} of \pageref{LastPage}
|
|
%% to get
|
|
%% 'Page 7 of 9'.
|
|
%% For LaTeX 2.09 use lastpage209.sty.
|
|
%% For LaTeX 2e maybe consider upgrading to the pageslts package.
|
|
%% lastpage may work with earlier versions of LaTeX2e,
|
|
%% but this was not tested. Please consider updating your LaTeX
|
|
%% contribution to the most recent version (if it is not already
|
|
%% the most recent version).
|
|
|
|
%% The recent version of the endfloat package is v2.5d as of 2011/12/25.
|
|
%% The lastpage package is not fully compatible with version 2.0
|
|
%% (and earlier) of the endfloat package, because those versions
|
|
%% redefined the \enddocument command.
|
|
|
|
\def\lastpage@one{1}
|
|
\gdef\lastpage@hyper{0}
|
|
\gdef\lastpage@nameref{0}
|
|
\gdef\lastpage@LTS{0}
|
|
\def\lastpage@firstpage{1}
|
|
|
|
\AtBeginDocument{%
|
|
\@ifpackageloaded{tikz}{\gdef\lastpage@tikz{1}}{}%
|
|
\@ifpackageloaded{hyperref}{\gdef\lastpage@hyper{1}}{}%
|
|
\@ifpackageloaded{nameref}{\gdef\lastpage@nameref{1}}{}%
|
|
\@ifpackageloaded{pageslts}{%
|
|
\PackageWarning{lastpage}{Package pageslts found.\MessageBreak%
|
|
Therefore the lastpage package is no longer\MessageBreak%
|
|
necessary.%
|
|
}%
|
|
\gdef\lastpage@LTS{1}%
|
|
}{\PackageInfo{lastpage}{%
|
|
Please have a look at the pageslts package at\MessageBreak%
|
|
https://www.ctan.org/pkg/pageslts\MessageBreak%
|
|
!}%
|
|
}%
|
|
\@ifpackageloaded{pagesLTS}{%
|
|
\PackageWarning{lastpage}{%
|
|
Outdated pagesLTS package found.\MessageBreak%
|
|
Please replace by a recent version of\MessageBreak%
|
|
pageslts package, see e.g. at\MessageBreak%
|
|
https://www.ctan.org/pkg/pageslts\MessageBreak%
|
|
!\MessageBreak%
|
|
With pagesLTS as well as pageslts package\MessageBreak%
|
|
the lastpage package is no longer necessary.\MessageBreak%
|
|
}%
|
|
\gdef\lastpage@LTS{1}%
|
|
}{}%
|
|
\gdef\lastpage@putlabel{\relax}%
|
|
}
|
|
|
|
\newcommand{\lastpage@putl@bel}{%
|
|
\@ifundefined{Hy@Warning}{% hyperref not loaded
|
|
}{\gdef\lastpage@hyper{1}% hyperref loaded
|
|
}%
|
|
\ifx\lastpage@LTS\lastpage@one%
|
|
\else%
|
|
\ifx\lastpage@hyper\lastpage@one%
|
|
\lastpage@putlabelhyper%
|
|
\else%
|
|
\ifx\lastpage@nameref\lastpage@one%
|
|
\lastpage@putlabelNR%
|
|
\else%
|
|
\begingroup%
|
|
\addtocounter{page}{-1}%
|
|
\immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}}}%
|
|
\immediate\write\@auxout{\string\xdef\string\lastpage@lastpage{\thepage}}%
|
|
\immediate\write\@auxout{\string\gdef\string\lastpage@lastpageHy{}}%
|
|
\addtocounter{page}{+1}%
|
|
\endgroup%
|
|
\fi%
|
|
\fi%
|
|
\fi%
|
|
}
|
|
|
|
\newcommand{\lastpage@putlabelhyper}{%
|
|
\ifHy@pageanchor%
|
|
\else%
|
|
\PackageError{lastpage}{hyperref option pageanchor disabled}{%
|
|
The \string\pageref{LastPage} link doesn't work\MessageBreak%
|
|
using hyperref with disabled option `pageanchor'.\MessageBreak%
|
|
}%
|
|
\fi%
|
|
\begingroup%
|
|
\addtocounter{page}{-1}%
|
|
%% The following code is from the hyperref package %%
|
|
%% [2010/04/17 v6.80x; newer versions are available] %%
|
|
%% by Heiko Oberdiek (Big Thanks!). %%
|
|
\let\@number\@firstofone
|
|
\ifHy@pageanchor
|
|
\ifHy@hypertexnames
|
|
\ifHy@plainpages
|
|
\def\Hy@temp{\arabic{page}}%
|
|
\else
|
|
\Hy@unicodefalse
|
|
%% Code not from hyperref package: %%
|
|
%% The following lines are taken from the pageslts package, %%
|
|
%% which in turn got them from the hyperref package and %%
|
|
%% modified them. %%
|
|
%% Without the modification, after the first shipout "PD1" %%
|
|
%% is inserted each time |\pdfstringdef\Hy@temp{\thepage}| %%
|
|
%% is executed. %%
|
|
\ifnum \value{page}=1%
|
|
\ifx \lastpage@firstpage\lastpage@one
|
|
\def\Hy@temp{\thepage}%
|
|
\gdef\lastpage@firstpage{0}%
|
|
\else%
|
|
%% Code from hyperref package again: %%
|
|
\pdfstringdef\Hy@temp{\thepage}%
|
|
%% End of code from the hyperref package. %%
|
|
\fi%
|
|
%% The pageslts package would even check for fnsymbol page %%
|
|
%% numbering scheme and adapt the code correspondingly. %%
|
|
\else%
|
|
%% Code from hyperref package again: %%
|
|
\pdfstringdef\Hy@temp{\thepage}%
|
|
%% Code from pageslts package again: %%
|
|
\fi%
|
|
%% Code from hyperref package again: %%
|
|
\fi
|
|
\else
|
|
\def\Hy@temp{\the\Hy@pagecounter}%
|
|
\fi
|
|
\fi
|
|
\immediate\write\@auxout{%
|
|
\string\newlabel
|
|
{LastPage}{{}{\thepage}{}{%
|
|
\ifHy@pageanchor page.\Hy@temp\fi}{}}%
|
|
}%
|
|
%% End of code from the hyperref package. %%
|
|
\immediate\write\@auxout{%
|
|
\string\xdef\string\lastpage@lastpage{\thepage}}%
|
|
\ifHy@pageanchor%
|
|
\immediate\write\@auxout{%
|
|
\string\xdef\string\lastpage@lastpageHy{\Hy@temp}}%
|
|
\else%
|
|
\immediate\write\@auxout{%
|
|
\string\gdef\string\lastpage@lastpageHy{}}%
|
|
\fi%
|
|
\addtocounter{page}{+1}%
|
|
\endgroup%
|
|
}
|
|
|
|
\newcommand{\lastpage@putlabelNR}{%
|
|
\begingroup%
|
|
\addtocounter{page}{-1}%
|
|
\immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}{}{}{}}}%
|
|
\immediate\write\@auxout{\string\xdef\string\lastpage@lastpage{\thepage}}%
|
|
\immediate\write\@auxout{\string\gdef\string\lastpage@lastpageHy{}}%
|
|
\addtocounter{page}{+1}%
|
|
\endgroup%
|
|
}
|
|
|
|
\newcommand{\lastpage@fileswtest}[2]{%
|
|
\edef\lastpage@testa{#1}%
|
|
\edef\lastpage@testb{#2}%
|
|
\ifx\lastpage@testa\lastpage@testb% OK
|
|
\else%
|
|
\ifx\lastpage@tikz\lastpage@one%
|
|
\PackageWarning{lastpage}%
|
|
{The lastpage package was not allowed to write to an\MessageBreak%
|
|
.aux file. This package does not work without access\MessageBreak%
|
|
to an .aux file.\MessageBreak%
|
|
It is OK if the .aux file was already updated\MessageBreak%
|
|
by a previouse compiler run\MessageBreak%
|
|
and would not have changed anyway.\MessageBreak%
|
|
}%
|
|
\else%
|
|
\PackageError{lastpage}{No auxiliary file allowed}%
|
|
{The lastpage package was not allowed to write to an .aux file.\MessageBreak%
|
|
This package does not work without access to an .aux file.\MessageBreak%
|
|
Press Ctrl+Z to exit.\MessageBreak%
|
|
}%
|
|
\fi%
|
|
\fi%
|
|
}
|
|
\newcommand{\lastpage@fileswtestHy}{%
|
|
\ifHy@pageanchor%
|
|
\lastpage@fileswtest{\Hy@temp}{\lastpage@lastpageHy}%
|
|
\else%
|
|
\lastpage@fileswtest{\empty}{\lastpage@lastpageHy}%
|
|
\fi%
|
|
}
|
|
|
|
\AtEndDocument{%
|
|
\gdef\lastpage@putlabel{\relax}%
|
|
\ifx\lastpage@LTS\lastpage@one%
|
|
\else%
|
|
\@ifundefined{lastpage@lastpage}%
|
|
{\gdef\lastpage@lastpage{LastpagePackageError}%
|
|
% If there really is a page numbered (!) "LastpagePackageError",
|
|
% you will get the rerun warning whether it is necessary or not.
|
|
\PackageWarning{lastpage}{Rerun to get the references right}%
|
|
}{% already defined, nothing to be done.
|
|
}%
|
|
\@ifundefined{lastpage@lastpageHy}%
|
|
{\gdef\lastpage@lastpageHy{LastpagePackageError}%
|
|
}{% already defined, nothing to be done.
|
|
}%
|
|
\fi%
|
|
\if@filesw%
|
|
\message{^^JAED: lastpage setting LastPage^^J}%
|
|
\clearpage\lastpage@putl@bel%
|
|
\else%
|
|
\ifx\lastpage@LTS\lastpage@one%
|
|
\else%
|
|
\lastpage@fileswtest{\thepage}{\lastpage@lastpage}%
|
|
\ifx\lastpage@hyper\lastpage@one%
|
|
\lastpage@fileswtestHy%
|
|
\fi%
|
|
\fi%
|
|
\fi%
|
|
}
|
|
|
|
\endinput
|
|
%%
|
|
%% End of file `lastpage.sty'.
|
|
|