[pdftex] How to find the current pdf page number?
Alexander Grahn
A.Grahn at fz-rossendorf.de
Fri Oct 21 11:18:33 CEST 2005
Dear Tigran,
The attached code might seem rather elaborate, but it determines the
physical page number quite reliably. It is a complete example for use
with LaTeX or pdfLaTeX.
Regards,
Alexander Grahn
\documentclass{book}
%%%%%%%% BEGIN put this to separate sty file if you wish %%%%%%%%
\RequirePackage{everyshi}
\RequirePackage{ifthen}
\makeatletter
%counter for physical page number
\newcount\@physpage
\EveryShipout{%
\global\advance\@physpage by 1%
}
%counter for label id
\newcount\@labelid%
%label making macro
\def\my at newlabel#1#2{{%
\global\expandafter\def\csname#1\endcsname{#2}}%
}%
%macro for writing labels to *.aux file
\def\@labeltoaux#1#2{%
\@bsphack\protected at write\@auxout{}{%
\string\my at newlabel{#1}{#2}%
}\@esphack%
}
%macro for expanding page label to physical page
\def\@getcurrpage#1{%
\expandafter\ifx\csname#1\endcsname\relax%
undefined%
\else%
\csname#1\endcsname%
\fi%
}
% user macro
\def\getcurrpage{%
\global\advance\@labelid by 1%
\@labeltoaux{@pagelabel\the\@labelid}{\noexpand\the\@physpage}%
\ifthenelse{\equal{\@getcurrpage{@pagelabel\the\@labelid}}{undefined}}{%
\ifthenelse{\isundefined{\my at warning}}{%issue warning only once, at end
\gdef\my at warning{}% of document
\AtEndDocument{%
\typeout{@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}%
\typeout{@@ Rerun to get cross-references right! @@}%
\typeout{@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}%
}%
}{}%
}{}%
\@getcurrpage{@pagelabel\the\@labelid}% return phys page no of current page
}
\makeatother
%%%%%%%% END put this to separate sty file if you wish %%%%%%%%
\def\p{Physical page number is \getcurrpage.\\}
\parindent=0pt
\begin{document}
\pagenumbering{alph}
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\newpage
\pagenumbering{roman}
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\newpage
\pagenumbering{arabic}
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p\p
\end{document}
More information about the pdftex
mailing list