<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">%%%%%%%%  PAGEREFERENCE MACROS
%              May 2nd, 1994
% Peter Ungar, 914 723 7187, laxa@acfcluster.nyu.edu
% 109 Lee Road, Scarsdale, N.Y. 10583-5229
%
\long\def\COMMENT#1!E{}
%
% MACROS BEGIN HERE
\newwrite\inpr
\message{Is this the second pass? (y or n)}
\read16 to\answer
\if n\answer\immediate\openout\inpr=\jobname.pgn%
\def\wrx{\write\inpr}%
\def\plbl*#1*{\wrx{\noexpand\let\csname prec#1\endcsname=\folio}}
\def\pref*#1*{XX}
\fi
\if y\answer\closeout\inpr
\input \jobname.pgn
\def\plbl*#1*{}
\def\pref*#1*{\csname prec#1\endcsname}
\fi
% MACROS END HERE

\COMMENT

  We use the macros as follow. Suppose you want to refer to a page
where you say something about Pythagoras.  Put at the place to
which you want to refer
\plbl*pyth* Where you want to refer to this page, put
\pref*pyth* Here, in the place of pyth, one may use any sequence
of small and capital letters. Since the  sequence will end up as
part of a TEX control sequence, digits are unfortunately not
allowed. (If that is very burdensome, we suggest encoding digits
as capitals, A for 1 etc.)  In the second pass, the macros insert
a page number where there is a \pref.
 
  The macro \plbl (pagelabel), as defined when the answer to the
question, Is this the second pass, was n, writes the page number
into the file filename.pgn. To be precise, it creates a new
control sequence, consisting of \prec followed by the letters
identifying the label, which would result in \precpyth in the
example we gave, and sets it equal to the page number. In the
meanwhile, the \pref (page reference) macro is defined to print XX.
  For the second pass, we input the file of labels and the page
numbers they signify which we wrote in the first pass. The
pagenumber recording macro
\plbl is redefined as vacuous, and the page reference macro \pref
is set to insert the page number.

!E 


This is a test of the page reference macro pair,
$\backslash$plbl (pagelabel) and $\backslash$pref (pagereference)
control sequences. There is a pagelabel command, with no effect on
the tpyeset output, just before the period at the end of this
sentence\plbl*aaa*.

Reference to the page label on the next page: p.\pref*bb*;
reference to the pgae label on this page: p.\pref*aaa*.
\vfill
\eject Here is a second pagelabel, just before the
period\plbl*bb*. A reference to the first page label:
p.\pref*aaa*, and a reference to the second page page label:
p.\pref*bb*.

\end
</pre></body></html>