diff options
Diffstat (limited to 'support/hypertex/tanmoy/hyperbasics.new.tex')
-rw-r--r-- | support/hypertex/tanmoy/hyperbasics.new.tex | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/support/hypertex/tanmoy/hyperbasics.new.tex b/support/hypertex/tanmoy/hyperbasics.new.tex new file mode 100644 index 0000000000..874cda1850 --- /dev/null +++ b/support/hypertex/tanmoy/hyperbasics.new.tex @@ -0,0 +1,232 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% This file is written by Tanmoy Bhattacharya <tanmoy@qcd.lanl.gov> and % +% is in the public domain for what it is worth. It inserts \specials that % +% are interpreted by (a) the xhdvi hypertex dvi previewer, (b) nextstep % +% HyperTeXview.app dvi previewer, and (c) the dvipdf driver % +% For more info, see http://xxx.lanl.gov/hypertex/ % +% or ftp://xxx.lanl.gov/pub/hypertex/index.html % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Only \hyperdef, \hyperref , \href , and \hname are user callable. % +% Usage: \hyperdef\TeXcs{category}{name}{text} % +% Usage: \href{url}{text} % +% Usage: \hyperref{filename}{category}{name}{text} % +% or \hyperref\TeXcs{text} % +% where \TeXcs has been defined by a hyperdef. % +% % +% Note: The token following \hyperref is expanded completely first.% +% Really perverse forms like % +% \csname perverse\endcsname % +% will give an error % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% The following might be useful to other macros interfacing in. % +% Usage: \hyper@nchor{name="#myname" href="#refer"}{text} % +% Usage: \hyperlink{target_name}{text} % +% Usage: \hypertarget{myname}{text} % +% In cases where there is a possibility of premature expansion use % +% \hyper@\hyperpr@ref instead of \hyperref % +% and \hyper@\hyperpr@def instead of \hyperdef % +% These macros increase enormously in size when expanded, but the expanded% +% token sequence always ends in \hyperpr@ref and \hyperpr@def respectively% +% Macro writers might want to make use of the macro \hyperv@rsion % +% which is undefined in version 0 and is the version number otherwise % +% \hyper@nique is exactly like \hyperdef except no special are written % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Save the current catcode of @ and redefine @ to be a letter +% +\expandafter\edef\csname hypers@fe\endcsname{\catcode + `\noexpand @=\the\catcode`\@}% +\catcode`\@=11 +% +% Check if the file is already included +% +% hack to allow \allowoncemore +\ifx\hyper@utoprocess\hyper@ndefined +\else + \expandafter\hyper@utoprocess\fi +\ifx\hyperd@ne\hyper@ndefined + \global\let\hyperd@ne=\relax +\else + \hypers@fe + \errhelp{hyperbasics.tex needs to be included only once outside + of any {...} or \begingroup...\endgroup. You have tried to + include it more than once. If the previous include was indeed + outside any groupings, continue and all will be well.}% + \errmessage{Input this file only once!}% + \expandafter\endinput\fi +% +% Version number +% +\def\hyperv@rsion{9}% +% +% Check and input a previous .hrf file if it exists +% +\newread\hyperf@le +\def\hyperf@lename{\jobname.hrf}% +\immediate\openin\hyperf@le\hyperf@lename\relax +\ifeof\hyperf@le\relax + \immediate\closein\hyperf@le\relax +\else + \immediate\closein\hyperf@le\relax + \input \hyperf@lename +\fi +% +% Open a new .hrf file +% +\newwrite\hyperf@le +\immediate\openout\hyperf@le\hyperf@lename +%%%% +% MAIN SECTION +%%%% +% +% define a token register +% +\newtoks\hypert@ks +% +% Define a convenient macro to hold the character # +% +\edef\hypert@mp{\catcode`\noexpand\%=\the\catcode`\%} +\catcode`\%=12 +\def\hyperp@rcent{%} +\hypert@mp +\edef\hypert@mp{\catcode`\noexpand\#=\the\catcode`\#}% +\catcode`\#=12 +\def\hyperh@sh{#}% +\hypert@mp +\let\hypert@mp=\relax +\let\hyper@nd=\relax +\def\hyperbl@nk{ } +\def\hyperstr@pquote#1"#2\hyper@nd{% Call \hyperstr@pquote..."\hyper@nd + #1% #1 can not contain " + \ifx\hyper@nd#2\hyper@nd% #2 cannot contain \hyper@nd and + % must end in " if non-empty + \else\hyperp@rcent22\hyperstr@pquote#2\hyper@nd\fi}% +\def\hyperstr@pblank#1 #2\hyper@nd{% Call \hyperstr@pblank... \hyper@nd + #1% #1 cannot contain a space + \ifx\hyper@nd#2\hyper@nd% #2 canot contain \hyper@nd and + % and must end in blank if nonempty + \else\hyperp@rcent20\hyperstr@pblank#2\hyper@nd\fi} +% +\long\def\hyper@nchor#1#2{\edef\hyperm@cro{html:<A #1>}% + \special\expandafter{\hyperm@cro}% + {#2}\special{html:</A>}}% +% +\def\hyper@atm@ning#1->#2\hyper@nd{#2} +\def\hyperlink{\protect\hyperlink@} +\def\hyperlink@{{\catcode`\#=12 \catcode`\%=12 \catcode`\~=12 + \expandafter}\hyperlink@@} +\def\hyperlink@@#1{\protect\hyperlink@@@{#1}} +\def\hyperlink@@@#1{\edef\hypert@mp{#1}% + \edef\hypert@mp{\expandafter\hyper@atm@ning\meaning\hypert@mp + \hyper@nd}% + \edef\hypert@mp{\expandafter\hyperstr@pquote% + \hypert@mp"\hyper@nd}% + \edef\hypert@mp{\expandafter\expandafter\expandafter + \hyperstr@pblank\expandafter% + \hypert@mp\hyperbl@nk\hyper@nd}% + \hyper@nchor{href=\expandafter"\hypert@mp"}}% +% +\def\hypertarget#1{\edef\hypert@mp{#1}% + \edef\hypert@mp{\expandafter\hyper@atm@ning\meaning\hypert@mp + \hyper@nd}% + \edef\hypert@mp{\expandafter\hyperstr@pquote% + \hypert@mp"\hyper@nd}% + \edef\hypert@mp{\expandafter\expandafter\expandafter + \hyperstr@pblank\expandafter% + \hypert@mp\hyperbl@nk\hyper@nd}% + \hyper@nchor{name=\expandafter"\hypert@mp"}}% +% +\def\hyperref{\afterassignment\hyperr@f\let\hyperp@ram} +\def\hyperr@f{\ifx\hyperp@ram{\iffalse}\fi + \expandafter\expandafter\expandafter\hyperr@@ + \expandafter{% + \else + \iffalse}\fi + \ifx\hyperp@ram\hyper@ndefined + \message{Undefined reference}% + \def\hyperp@r@m{{}{undefined}{}}% + \else + \edef\hyperp@r@m{\hyperp@ram}% + \fi + \expandafter\expandafter\expandafter\hyperr@@ + \expandafter\hyperp@r@m + \fi}% +% refer to #1, \hyperh@sh#2.#3 or #1\hyperh@sh#2.#3 +% depending on what is blank/nonblank +\def\hyperr@@#1#2#3{\ifx\hyper@ndefined#1\hyper@ndefined + \hypert@ks\expandafter{\hyperh@sh#2.#3}% + \else + \ifx\hyper@ndefined#2#3\hyper@ndefined + \hypert@ks{#1}% + \else + \def\hypert@mp{#1}% + \hypert@ks\expandafter\expandafter\expandafter + {\expandafter\hypert@mp\hyperh@sh#2.#3}% + \fi + \fi + \expandafter\hyperlink\expandafter{\the\hypert@ks}}% +% +% \def\hyperREF#1{\hyperlink{#1}}% % Disabled as per pg's suggestion +% +\def\hyperdef#1#2#3{{\escapechar=`\\\relax + \edef\hypert@mp{\hyperstr@pquote#2.#3"\hyper@nd}% + \expandafter\ifx\csname hyperd@\meaning\hypert@mp + \endcsname + \relax + \expandafter\gdef\csname hyperd@\meaning\hypert@mp + \endcsname{}% + \gdef#1{{}{\hyperstr@pquote#2"\hyper@nd}% + {\hyperstr@pquote#3"\hyper@nd}}% + \immediate\write\hyperf@le{\def\noexpand#1{{}% + {\noexpand\hyperstr@pquote#2"\noexpand\hyper@nd}% + {\noexpand\hyperstr@pquote#3"\noexpand\hyper@nd}}}% + \xdef\hypert@mp{\global\let\noexpand\hypert@mp=\relax + \noexpand\hypertarget{\hypert@mp}}% + \global\hypert@ks={\hypert@mp}% + \else + \message\expandafter{'\hypert@mp' duplicate}% + \global\let\hypert@mp=\relax + \global\hypert@ks={\hyperdef{#1}{#2}{#3@}}% + \fi}\the\hypert@ks}% + +\def\hyper@nique#1#2#3#4{{\escapechar=`\\\relax + \edef\hypert@mp{\hyperstr@pquote#2.#3"\hyper@nd}% + \expandafter\ifx\csname hyperd@\meaning\hypert@mp + \endcsname + \relax + \gdef#1{{}{\hyperstr@pquote#2"\hyper@nd}% + {\hyperstr@pquote#3"\hyper@nd}}% + \global\let\hypert@mp=\relax + #4% + \else + \global\let\hypert@mp=\relax + \hyper@nique{#1}{#2}{#3@}{#4}% + \fi}}% + +%%% +% protection macros +%%% +\ifx\protect\hyper@ndefined\let\protect=\relax\fi +\let\hyper@@@@=\relax +\def\hyper@@{\let\hyper@@@=\relax}% +\hyper@@ +\def\hyper@{\relax\let\hyper@@@\noexpand\hyper@\noexpand}% +\def\hyperpr@ref{\hyper@@\hyperref} +\def\hyperpr@def{\hyper@@\hyperdef} + +% As per pg's suggestion +\let\href\hyperlink +\let\hname\hypertarget +% Hack to allow auto-processing +\def\allowoncemore{\def\hyper@utopr@cess{\let\hyper@utoprocess=\hyper@ndefined + \hypers@fe\endinput}}% +% +% Restore the catcode of @ +% +\hypers@fe +\endinput +% A line after endinput to avoid both msdos gremlins and an incomplete +% last line |