% This is labtex, v 0.9. % written by: Alan Hoenig, summer 1991-summer 1992. % Bitnet: ajhjj@cunyvm % Mail: 17 Bay Avenue, Huntington, NY 11743, USA % % You need the file LABTEX.MF in addition to this one. % If you've got this far, you have created a special figure font. Let's % pretend it's called figfont. At the start of your TeX document, % include the lines % \input labtex % \font\labtex=figfont % and wherever you wnat to include a figure enter % \fig$ % <label list> % \endfig % where $ represents the numeric position in the font occupied by your % figure. Each item in the list is one of the pointing commands defined % below coupled with the text of the label (eg. \blpoint{$(x,y)$}). % It's that simple. % \newif\ifdebug \debugfalse \newcount\labels {\catcode`.=12 \catcode`p=12 \catcode`t=12 \gdef\\#1.#2pt{\global\labels=#1 }}\let\glpf=\\ \def\getx#1{\setbox2=\hbox{\labtex\char0 \char#1}% \setbox0=\hbox{\labtex\char0{}\char#1}% \dimen0=\wd2 \advance\dimen0 by-\wd0 } \def\gety#1{\setbox2=\hbox{\labtex\char1 \char#1}% \setbox0=\hbox{\labtex\char1{}\char#1}% \dimen0=\wd2 \advance\dimen0 by-\wd0 } \def\getlpf#1{\setbox2=\hbox{\labtex\char2 \char#1}% \setbox0=\hbox{\labtex\char2{}\char#1}% \dimen0=\wd2 \advance\dimen0 by-\wd0 } \newbox\figbox % to hold figure for printing \newcount\coordcount \newcount\figcount \newdimen\x \newdimen\y \newdimen\figwd \newdimen\fight \newdimen\figdp \def\fig#1{% usage: \fig2, where 2 is the figure number \figcount=#1% \setbox\figbox=\hbox{\labtex \char\figcount }% \global\figwd=\wd\figbox \global\fight=\ht\figbox \global\figdp=\dp\figbox \zerobox\figbox% \setXYpointers{#1}% ensures \coordcount's value is the char whose kern % is \x; same for \y \hbox\bgroup\box\figbox % now add \point'ing commands and labels \vrule width0pt height\fight depth\figdp } \def\endfig{\kern\figwd\egroup} \def\zerobox#1{\wd#1=0pt \ht#1=0pt \dp#1=0pt} \newcount\scratch \newcount\totallabs \def\setXYpointers#1{\scratch=0 \totallabs=0% \coordcount=0 % start with fresh slate \loop\ifnum\scratch<#1% \getlpf\scratch \expandafter\glpf\the\dimen0 \advance\totallabs by\labels \advance\scratch by 1 \repeat \coordcount=\totallabs } \newdimen\extradx \newdimen\extrady \newtoks\everylabel \newbox\labelbox \newdimen\totalht \newdimen\labelht \newdimen\labelwd \newdimen\labeldp \newdimen\vertadjust \newdimen\horadjust% vertical adjustment of labels \def\getparameters#1{% #1 is text of label \global\vertadjust=0pt \global\horadjust=0pt \setbox\labelbox=\hbox{\the\everylabel #1}% \labelht=\ht\labelbox \labeldp=\dp\labelbox \advance\labelht by\extrady \advance\labeldp by\extrady \totalht=\labelht \advance\totalht by\labeldp \setbox\labelbox=\hbox{\the\everylabel \vrule width0pt height\labelht depth\labeldp \hskip\extradx #1\hskip\extradx}\labelwd=\wd\labelbox % \ifdebug \showthe\coordcount \fi \getx\coordcount \x=\dimen0 \advance\x by\horadjust \ifdebug \showthe\dimen0 \fi % \x before \horadjust \gety\coordcount \y=\dimen0 \advance\y by\vertadjust \ifdebug \showthe\dimen0 \fi % \y before \vertadjust \ifdebug \showthe\x \showthe\y \fi % after adjustments \advance\coordcount by1 } \def\down{\global\vertadjust= -} \def\up{\global\vertadjust= } \def\left{\global\horadjust= -} \def\right{\global\horadjust= } \def\reset{% puts ref pt of \labelbox at lower left, not at baseline \advance\y by \labeldp} \def\point#1{\getparameters{#1}% point to left end of Baseline \rlap{\kern\x \raise\y \box\labelbox}} \let\Bpoint=\point \let\Blpoint=\point \let\lBpoint=\point % synonyms \def\Brpoint#1{\getparameters{#1}% \advance\x by-\labelwd \rlap{\kern\x \raise\y \box\labelbox}} \let\rBpoint=\Brpoint \def\cpoint#1{\getparameters{#1}% OK \reset \advance\y by-.5\totalht \advance\x by-.5\labelwd \rlap{\kern\x \raise\y \box\labelbox}} \def\lpoint#1{\getparameters{#1}% OK \reset \advance\y by-.5\totalht \rlap{\kern\x \raise\y \box\labelbox}} \def\lbpoint#1{\getparameters{#1}% \reset \rlap{\kern\x \raise\y \box\labelbox}} \let\blpoint=\lbpoint \def\bpoint#1{\getparameters{#1}% \reset \advance\x by-.5\labelwd \rlap{\kern\x \raise\y \box\labelbox}} \def\rbpoint#1{\getparameters{#1}% \reset \advance\x by-\labelwd \rlap{\kern\x \raise\y \box\labelbox}} \let\brpoint=\rbpoint \def\rpoint#1{\getparameters{#1}% \reset \advance\y by-.5\totalht \advance\x by-\labelwd \rlap{\kern\x \raise\y \box\labelbox}} \def\trpoint#1{\getparameters{#1}% \reset \advance\y by-\totalht \advance\x by-\labelwd \rlap{\kern\x \raise\y \box\labelbox}} \let\rtpoint=\trpoint \def\tpoint#1{\getparameters{#1}% \reset \advance\y by-\totalht \advance\x by-.5\labelwd \rlap{\kern\x \raise\y \box\labelbox}} \def\tlpoint#1{\getparameters{#1}% \reset \advance\y by-\totalht \rlap{\kern\x \raise\y \box\labelbox}} \let\ltpoint=\tlpoint \endinput