summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/plain/gustlib/tp-crf.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/plain/gustlib/tp-crf.tex')
-rw-r--r--Master/texmf-dist/tex/plain/gustlib/tp-crf.tex115
1 files changed, 115 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/plain/gustlib/tp-crf.tex b/Master/texmf-dist/tex/plain/gustlib/tp-crf.tex
new file mode 100644
index 00000000000..164c86d2fed
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/gustlib/tp-crf.tex
@@ -0,0 +1,115 @@
+% ------------------------------------------------------------------
+% TP-CRF: cross-reference generic macros.
+% Author: Tomasz Przechlewski <ekotp@halina.univ.gda.pl>.
+% Date: 02.01.1997. Version 0.5
+%
+% This macros are described in detail in the article ,,Odsy{\l}acze'',
+% GUST bulletin, number 5, 1995
+% --------------
+% User commands:
+% --------------
+% \ref, \pageref = insert cross-reference, insert page number.
+% \defreference = define cross-reference.
+% \makecrfile = write references to auxilliary (*.crf) file.
+% \nocrfile = suppress writing to auxilliary file.
+% \nocrwarnings = suppress warning messages.
+%
+% ------------------------------------------------------------------
+
+\catcode`@=11
+
+\def\@crwrn#1{\if@crwrns\immediate\write16{#1}\fi}
+\def\@markmissingcr{\relax}
+%\def\@markmissingcr{{\bf ??}\@marginmarker}
+%\def\@marginmarker{\vadjust{\vbox to0pt{%
+%\kern-.77\normalbaselineskip
+%\hbox{{\it\kern\hsize\kern15pt?}}\vss}}}
+
+\newif\if@crwrns \global\@crwrnstrue % default
+
+\def\nocrfile{\global\@crfilefalse}
+\def\nocrwarnings{\global\@crwrnsfalse}
+
+\def\@car#1#2{#1} \def\@cdr#1#2{#2}
+
+\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname
+ #1\endcsname\relax#2\else#3\fi}
+
+\def\namedef#1{\expandafter \def\csname #1\endcsname}
+
+\def\newlabel#1#2{\@ifundefined{#1}{}%
+{\@crwrn{!WARNING: LABEL #1 REPEATED}}%
+\global\namedef{#1}{#2}}
+
+\newread\crfile
+
+\openin\crfile=\jobname.crf
+\ifeof\crfile
+ \@crwrn{FILE \jobname.crf NOT FOUND}
+ \else
+ \@crwrn{READING REFS FROM \jobname.crf}
+ \input \jobname.crf
+\fi
+
+\closein\crfile
+\newwrite\crfile
+
+\def\makecrfile{\@crwrn{STARTING CR-FILE: \jobname.crf}%
+\immediate \openout\crfile=\jobname.crf}
+\def\nocrfile{\@crwrn{CR-FILE \jobname.crf NOT CREATED}\def\crfile{-1}}
+
+\def\ref#1{\@nextcrf\@ifundefined{#1}{\@markmissingcr
+\@crwrn{!WARNING: UNDEFINED REFERENCE \string#1}}%
+{\edef\@tempa{\csname #1\endcsname}\expandafter \@car\@tempa}}
+
+\def\pageref#1{\@nextpcrf \@ifundefined{#1}{\@markmissingcr
+\@crwrn{!WARNING: UNDEFINED REFERENCE \string#1}}%
+{\edef\@tempa{\csname #1\endcsname}\expandafter \@cdr\@tempa}}
+
+\def\defreference#1#2{\@nextdrf
+\edef\save{\string\newlabel{#1}%
+{{#2}{\noexpand\folio}}}\write\crfile\expandafter{\save}%
+\ignorespaces}
+
+\newcount\@crfC \newcount\@pcrfC \newcount\@dcrfC
+
+\def\@nextdrf{\global\advance\@dcrfC1\relax}
+\def\@nextcrf{\global\advance\@crfC1}
+\def\@nextpcrf{\global\advance\@pcrfC1}
+\def\crstatistics{%
+\@crwrn{==============================}
+\@crwrn{= REFERENCE STATISTICS =======}
+\@crwrn{= refs defined.... \the\@dcrfC}
+\@crwrn{= refs used....... \the\@crfC}
+\@crwrn{= page refs used.. \the\@pcrfC}
+\@crwrn{==============================}}
+
+\outer\def\bye{\crstatistics\end}
+\catcode`@=12
+
+\endinput
+%%
+%% Example:
+%% =======
+%\input tp-crf
+%\makecrfile
+%
+%\newcount\SecC
+%\def\label#1{\defreference{#1}{\the\SecC}}
+%\def\sec#1{\vskip\baselineskip\global\advance\SecC1
+%\leftline{\bf\the\SecC.~#1}\par\nobreak\smallskip}
+%
+%\sec{First section}
+%\label{sec:first}
+%This is section~\ref{sec:first} on page~\pageref{sec:first}.
+%Compare section~\ref{sec:second} on page~\pageref{sec:second}.
+%
+%\vfill\eject
+%
+%\sec{Second section}
+%\label{sec:second}
+%This is section~\ref{sec:second} on page~\pageref{sec:second}.
+%Compare section~\ref{sec:first} on page~\pageref{sec:first}.
+%
+%\bye
+%%