% $Id: xfig.tex,v 1.4 1995/05/07 16:52:05 schrod Exp $ %------------------------------------------------------------ % Hacked together by Joachim Schrod % Put into public domain. % % Support for xfig pictures in plain TeX % orginally written for transfig 2.1.7 % support last checked for transfig 3.1.3 % % USAGE: % % To include xfig figures in plain TeX documents, just input these % macros and then input the (La)TeX file you got by exporting your % figure as `LaTeX picture' or by calling fig2dev with option `-L % latex'. No other ``language'' is supported by these macros; in % particular, `Combined PS/LaTeX' is not supported. % You can select the used types for text by redefining some macros: % \FigFontType (with equal `rm', `bf', `it', `sf', or % `tt') must expand to the external font name that's used for the % respective xfig font selection. % \FigFontDefault specifies the font that's used for the `Default' % font selection. That macro is only accessed if you use the new xfig, % or if you repaired the no-NFSS code of fig2dev (in texfonts.h, see % comments at \xfig@bindSetFigFont implementation below). % % At the start of each figure \pictureHook is evaluated, you might % want to bind that to some code that does document-specific setup. % Each figure is set in a group, so you can rebind other control % sequences in that hook. % ------------------------------------------------------------ % IMPLEMENTATION NOTES: % % The macros might not work in all circumstances, it's updated and improved % by need... % % In particular: % -- The font selection in \SetFigFont could be improved. % -- The environment code (\begin/\end) is very rough and should % check for erroneous input. % Code structure: % % After general setup, code from DEK that implements most parts of % LaTeX's picture environment is used. Then we add definitions for the % missing and xfig-specific tags. % % In Emacs, each section starts on a new page. % ============================================================ % standard setup: \ifx \CatEscape\undefined \chardef\CatEscape=0 \chardef\CatOpen=1 \chardef\CatClose=2 \chardef\CatIgnore=9 \chardef\CatLetter=11 \chardef\CatOther=12 \chardef\CatActive=13 % \active of plain.tex \chardef\CatInvalid=15 \chardef\CatAtCode=\catcode`\@ \chardef\CatUsCode=\catcode`\_ \fi \catcode`\@=\CatLetter % top level macro file \begingroup \catcode`\$=\CatIgnore \catcode`\:=\CatIgnore \message{xfig pictures, $Revision: 1.4 $} \endgroup % This macro file allocates registers and might be read in multiple % times, in groups. (Actually, this occured for the first time when we % wanted to use xfig pictures in Texinfo documents. There they are % typeset in a `tex' environment, and xfig is read in anew for each % figure.) As all register allocations are globally, we define some % macros that help us to define them only once. \def\xfig@newskip#1{% \ifx #1\undefined \csname newskip\endcsname #1\fi } \def\xfig@newdimen#1{% \ifx #1\undefined \csname newdimen\endcsname #1\fi } \def\xfig@newcount#1{% \ifx #1\undefined \csname newcount\endcsname #1\fi } \def\xfig@newbox#1{% \ifx #1\undefined \csname newbox\endcsname #1\fi } % ============================================================ %% First comes an implementation of the picture environment's features, %% by the Grand Wizard of TeX Arcana himself. This is from picture.tex, %% I deleted the \cpic macro and the squines. \makebox did not support %% position specifiers, I substituted the definition by the one from %% LaTeX2e. In addition, all register allocations are made with the %% macros defined above. % -------------------------------------------------- % Pictures (a subset of \LaTeX's conventions, plus squines) %% [start of change to DEK's code] %% %% At's catcode is changed above already. %% Allocation info for registers should go to log file. % \chardef\CatcodeAt=\catcode`\@ % \catcode`\@=11 % enable private control sequences % \def\wlog#1{} % don't put allocation info into the log %% [end of change] \xfig@newskip\hsssglue \hsssglue=0pt plus 1fill minus 1fill \def\hsss{\hskip\hsssglue} \xfig@newdimen\unitlength \xfig@newdimen\linethickness \xfig@newdimen\@picheight \xfig@newdimen\@xdim \xfig@newdimen\@ydim \xfig@newdimen\@len \xfig@newdimen\@save \xfig@newcount\@multicount \xfig@newcount\@xarg \xfig@newcount\@yarg \xfig@newbox\@picbox \xfig@newbox\@mpbox \font\tenln=line10 \font\tenlnw=linew10 \font\tencirc=lcircle10 \font\tencircw=lcirclew10 \xfig@newdimen\@halfwidth \def\thinlines{\let\linefont=\tenln \let\circlefont=\tencirc \linethickness=\fontdimen8\linefont \@halfwidth .5\linethickness} \def\thicklines{\let\linefont=\tenlnw \let\circlefont=\tencircw \linethickness=\fontdimen8\linefont \@halfwidth .5\linethickness} \thinlines \def\beginpicture(#1,#2)(#3,#4){\@picheight=#2\unitlength \setbox\@picbox=\hbox to#1\unitlength\bgroup \let\line=\@line \kern-#3\unitlength \lower#4\unitlength\hbox\bgroup\ignorespaces} \def\endpicture{\egroup\hss\egroup \ht\@picbox=\@picheight \dp\@picbox=\z@ \leavevmode\box\@picbox} \def\put(#1,#2)#3{\raise#2\unitlength\rlap{\kern#1\unitlength #3}\ignorespaces} \def\multiput(#1,#2)(#3,#4)#5#6{\@multicount=#5\relax \@xdim=#1\unitlength \@ydim=#2\unitlength \setbox\@mpbox=\hbox{#6}% \loop\ifnum\@multicount>0 \raise\@ydim\rlap{\kern\@xdim \unhcopy\@mpbox}% \advance\@xdim#3\unitlength \advance\@ydim#4\unitlength \advance\@multicount\m@ne \repeat\ignorespaces} \def\@ifnextchar#1#2#3{\let\@tempe=#1\def\@tempa{#2}\def\@tempb{#3}\futurelet \@tempc\@ifnch} \def\@ifnch{\ifx \@tempc \@sptoken \let\@tempd\@xifnch \else \ifx \@tempc \@tempe\let\@tempd\@tempa\else\let\@tempd\@tempb\fi \fi \@tempd} %% [start of change to DEK's code] %% %% \makebox is called with an optional argument, the position %% specifier. The code below is copied from the LaTeX2e beta-test %% release. \def\makebox(#1,#2){% \@ifnextchar[{\@makebox(#1,#2)}{\@makebox(#1,#2)[]}} \def\@nnil{\@nil} \def\@fornoop#1\@@#2#3{} \def\@tfor#1:=#2\do#3{\def\@fortmp{#2}\ifx\@fortmp\empty \else \@tforloop#2\@nil\@nil\@@#1{#3}\fi} \def\@tforloop#1#2\@@#3#4{\def#3{#1}\ifx #3\@nnil \let\@nextwhile\@fornoop \else #4\relax\let\@nextwhile\@tforloop\fi\@nextwhile#2\@@#3{#4}} \long\def\@makebox(#1,#2)[#3]#4{% \vbox to#2\unitlength {\let\mb@b\vss \let\mb@l\hss\let\mb@r\hss \let\mb@t\vss \@tfor\@tempa :=#3\do{% \if s\@tempa \let\mb@l\relax\let\mb@r\relax \else \expandafter\let\csname mb@\@tempa\endcsname\relax \fi}% \mb@t \hbox to #1\unitlength{\mb@l #4\mb@r}% \mb@b \kern\z@}} %% [end of change] \newif\ifneg \def\@line(#1,#2)#3{\@xarg=#1 \@yarg=#2 \@len=#3\unitlength \leavevmode \ifnum\@xarg<0 \reverseline \else \negfalse \@ydim=\z@\fi \ifnum\@xarg=0 \@vline \else\ifnum\@yarg=0 \@hline \else\@sline\fi\fi \ifneg\kern-\@len\else\@save=\@ydim\fi} \def\reverseline{\negtrue \kern-\@len \@xarg=-\@xarg \@ydim=\@len \multiply\@ydim\@yarg \divide\@ydim\@xarg \@yarg=-\@yarg} \def\@hline{\vrule height.5\linethickness depth.5\linethickness width\@len} \def\@vline{\kern-.5\linethickness\vrule width\linethickness \ifnum\@yarg<0 height\z@ depth\else depth\z@ height\fi\@len \kern-.5\linethickness} \def\@sline{\setbox\@picbox=\hbox{\linefont \count@=\@xarg \multiply\count@ 8 \ifnum\@yarg>0 \advance\count@\@yarg \advance\count@-9 \else \advance\count@-\@yarg \advance\count@ 55 \fi \char\count@}% \ifnum\@yarg<0 \@picheight=-\ht\@picbox \advance\@ydim\@picheight \else \@picheight=\ht\@picbox \fi \@xdim=\wd\@picbox \@save=\@ydim \loop\ifdim\@xdim<\@len \raise\@ydim\copy\@picbox \advance\@xdim\wd\@picbox \advance\@ydim\@picheight \repeat \advance\@xdim-\@len \kern-\@xdim \multiply\@xdim\@yarg \divide\@xdim\@xarg \advance\@ydim-\@xdim \raise\@ydim\box\@picbox} \def\vector(#1,#2)#3{\@line(#1,#2){#3}% \ifnum\@xarg=0 \@vvector \else\ifnum\@yarg=0 \@hvector \else\@svector\fi\fi} \def\@hvector{\ifneg\rlap{\linefont\char27}\else \smash{\llap{\linefont\char45}}\fi} % we have to smash because of font bug \def\@vvector{\ifnum\@yarg<0 \raise-\@len\rlap{\linefont\char63}% \else\setbox\@picbox=\rlap{\linefont\char54}\advance\@len-\ht\@picbox \raise\@len\box\@picbox\fi} \def\@svector{\setbox\@picbox=\hbox to\z@{\linefont \ifnum\@yarg<0 \count@=55 \@yarg=-\@yarg \else\count@=-9 \fi \ifneg\multiply\@xarg16 \multiply\@yarg2 \else\hss % \llap \ifnum\@xarg>2 \multiply\@xarg9 \multiply\@yarg2 \advance\count@29 \else\ifnum\@yarg>2 \multiply\@xarg16 \multiply\@yarg9 \advance\count@-20 \else\multiply\@xarg24 \multiply\@yarg3 \fi\fi\fi \advance\count@\@xarg \advance\count@\@yarg \char\count@ \ifneg\hss\fi}% \rlap \raise\@save\box\@picbox} \def\disk#1{\@len=#1\unitlength \count@='160 \@diskcirc} \def\circle#1{\@len=#1\unitlength \count@='140 \@diskcirc} \def\@diskcirc{\setbox\@picbox=\hbox{\circlefont\char\count@}\@xdim=\wd\@picbox \leavevmode \ifdim\@len>15.499\@xdim \@bigdc \else \@smalldc\fi} \def\@bigdc{\ifnum\count@<'160 \@bigcirc \else \@len=15\@xdim \@diskcirc\fi} \def\@smalldc{{\advance\@len-.5\@xdim \loop\ifdim\@xdim<\@len \advance\count@\@ne \advance\@xdim\wd\@picbox\repeat \hbox{\circlefont\char\count@}}} \def\@bigcirc{{\circlefont\count@=15 \setbox\@picbox=\hbox{\char\count@}\@xdim=\wd\@picbox \ifdim\@len>2.5\@xdim \@len=2.5\@xdim\fi \advance\@len-.125\wd\@picbox \loop\ifdim\@xdim<\@len \advance\count@ 4 \advance\@xdim.25\wd\@picbox\repeat \@ydim=.5\@xdim \advance\@ydim.5\linethickness \setbox\@picbox=\vbox{\hbox{\char\count@\advance\count@-3\char\count@}% \nointerlineskip \hbox{\advance\count@\m@ne\char\count@\advance\count@\m@ne\char\count@}}% \kern-\@ydim\lower\@ydim\box\@picbox}} \newif\ifovaltl \newif\ifovaltr \newif\ifovalbl \newif\ifovalbr \ovaltltrue \ovaltrtrue \ovalbltrue \ovalbrtrue \def\oval(#1,#2){\@xdim=#1\unitlength \@ydim=#2\unitlength {\circlefont \setbox\@picbox=\hbox{\char0} \ifdim\@xdim<\wd\@picbox \@xdim=\wd\@picbox\fi \ifdim\@ydim<\wd\@picbox \@ydim=\wd\@picbox\fi \@save=\@xdim \ifdim\@ydim<\@save \@save=\@ydim \fi \count@=39 \loop \setbox\@picbox=\hbox{\char\count@}\ifdim\@save<\wd\@picbox \advance\count@-4 \repeat \setbox\strutbox=\hbox{\vrule height\ht\@picbox depth\dp\@picbox width\z@ \kern\wd\@picbox}% \@save=.5\wd\@picbox \advance\@save-.5\linethickness \setbox0=\hbox to\@xdim{\ifovaltl\char\count@\else\strut\fi \kern-\@save\leaders\hrule height\ifovaltl\linethickness\else\z@\fi\hfil \leaders\hrule height\ifovaltr\linethickness\else\z@\fi\hfil\kern\@save \ifovaltr\advance\count@-3\char\count@\else\strut\fi\kern-\wd\@picbox}% \advance\count@\m@ne \setbox2=\hbox to\@xdim{\ifovalbl\char\count@\else\strut\fi \kern-\@save\leaders\hrule height\ifovalbl\linethickness\else\z@\fi\hfil \leaders\hrule height\ifovalbr\linethickness\else\z@\fi\hfil\kern\@save \ifovalbr\advance\count@\m@ne\char\count@\else\strut\fi\kern-\wd\@picbox}% \@save=\@ydim \advance\@save-\wd\@picbox \divide\@save 2 \setbox\@picbox=\vbox{\box0\nointerlineskip \hbox to\@xdim{\vrule height\@save width\ifovaltl\linethickness\else\z@\fi \hfil\ifovaltr\vrule width\linethickness\kern-\linethickness\fi}% \nointerlineskip \hbox to\@xdim{\vrule height\@save width\ifovalbl\linethickness\else\z@\fi \hfil\ifovalbr\vrule width\linethickness\kern-\linethickness\fi}% \nointerlineskip\box2}% \@save=.5\@ydim \advance\@save.5\linethickness \leavevmode \kern-.5\@xdim \kern-.5\linethickness \lower\@save\box\@picbox}} % ============================================================ %% More picture environment tags, output by fig2dev %% The framebox tag was missing in DEK's code. Below is a copy from %% the 1994/06/01 version of ltboxes.dtx. Actually, we need only the %% \@framepicbox tag. % \DescribeMacro\framebox % |\framebox| ... : like |\makebox|, except it puts a `frame' around % the box. The frame is made of lines of thickness % |\fboxrule|, separated by space |\fboxsep| from the % text -- except for |\framebox(X,Y)| ... , where the % thickness of the lines is as for the picture environment, % and there is no separation added. \def\framebox(#1,#2){% \@ifnextchar[{\@framebox(#1,#2)}{\@framebox(#1,#2)[]}% ] (Emacs) } \long\def\@framebox(#1,#2)[#3]#4{% \frame{\makebox(#1,#2)[#3]{#4}}} \long\def\frame#1{% \leavevmode \hbox{% \hskip-\linethickness \vbox{% \vskip-\linethickness \hrule height\linethickness \hbox{% \vrule width\linethickness #1% \vrule width\linethickness}% \hrule height\linethickness \vskip -\linethickness}% \hskip -\linethickness}} %% The dashbox tag was also missing. We copy it from ltpictur.dtx, %% 1994/05/22 v1.0e LaTeX Kernel (Picture Mode). The (missing) %% indentation is from there, not introduced by me. Sorry, but this %% must be emphasized. % \@wholewidth -> \linethickness % \@makepicbox -> \makebox \xfig@newdimen\@dashdim \xfig@newbox\@dashbox \xfig@newcount\@dashcnt \def\@whilenoop#1{} \def\@whilenum#1\do #2{\ifnum #1\relax #2\relax\@iwhilenum{#1\relax #2\relax}\fi} \def\@iwhilenum#1{\ifnum #1\let\@nextwhile\@iwhilenum \else\let\@nextwhile\@whilenoop\fi\@nextwhile{#1}} \def\dashbox#1(#2,#3){\leavevmode\hbox to\z@{\baselineskip \z@skip \lineskip \z@skip \@dashdim #2\unitlength \@dashcnt \@dashdim \advance\@dashcnt 200 \@dashdim #1\unitlength\divide\@dashcnt \@dashdim \ifodd\@dashcnt\@dashdim \z@ \advance\@dashcnt \@ne \divide\@dashcnt \tw@ \else \divide\@dashdim \tw@ \divide\@dashcnt \tw@ \advance\@dashcnt \m@ne \setbox\@dashbox \hbox{\vrule height \@halfwidth depth \@halfwidth width \@dashdim}\put(0,0){\copy\@dashbox}% \put(0,#3){\copy\@dashbox}% \put(#2,0){\hskip-\@dashdim\copy\@dashbox}% \put(#2,#3){\hskip-\@dashdim\box\@dashbox}% \multiply\@dashdim \thr@@ \fi \setbox\@dashbox \hbox{\vrule height \@halfwidth depth \@halfwidth width #1\unitlength\hskip #1\unitlength}\count@\z@ \put(0,0){\hskip\@dashdim \@whilenum \count@ <\@dashcnt \do{\copy\@dashbox\advance\count@ \@ne }}\count@\z@ \put(0,#3){\hskip\@dashdim \@whilenum \count@ <\@dashcnt \do{\copy\@dashbox\advance\count@ \@ne }}% \@dashdim #3\unitlength \@dashcnt \@dashdim \advance\@dashcnt 200 \@dashdim #1\unitlength\divide\@dashcnt \@dashdim \ifodd\@dashcnt \@dashdim \z@ \advance\@dashcnt \@ne \divide\@dashcnt \tw@ \else \divide\@dashdim \tw@ \divide\@dashcnt \tw@ \advance\@dashcnt \m@ne \setbox\@dashbox\hbox{\hskip -\@halfwidth \vrule width \linethickness height \@dashdim}\put(0,0){\copy\@dashbox}% \put(#2,0){\copy\@dashbox}% \put(0,#3){\lower\@dashdim\copy\@dashbox}% \put(#2,#3){\lower\@dashdim\copy\@dashbox}% \multiply\@dashdim \thr@@ \fi \setbox\@dashbox\hbox{\vrule width \linethickness height #1\unitlength}\count@\z@ \put(0,0){\hskip -\@halfwidth \vbox{\@whilenum \count@ <\@dashcnt \do{\vskip #1\unitlength\copy\@dashbox\advance\count@ \@ne }% \vskip\@dashdim}}\count@\z@ \put(#2,0){\hskip -\@halfwidth \vbox{\@whilenum \count@<\@dashcnt \do{\vskip #1\unitlength\copy\@dashbox\advance\count@ \@ne }% \vskip\@dashdim}}}\makebox(#2,#3)} % ============================================================ %% Then we must supply the LaTeX tags that are inserted by fig2dev. % \setlength is the LaTeX PC way of setting a register. \def\setlength#1#2{#1=#2\relax} % -------------------------------------------------- % \makeatletter is called to access private macros in the \SetFigFont % definition. Since we never expand that definition, we could ignore % the catcode change. But we should not define a macro with a nonsense % name... \ifx \makeatletter\undefined \def\makeatletter{\catcode`\@=11 } % <-- Space \fi % -------------------------------------------------- % The real hassle in that macro file is the font switch code. Once % there was an interface, in transfig 2.1.7 & 2.1.8: A macro named % \SetFigFont was used to select the type for texts. The macro % definition itself is written by fig2dev, it is part of the figure % code. % % Then transfig 3 was released and the interface disappeared. There's % still the macro \SetFigFont and the macro definition is still % written by fig2dev, but it may be defined with 3 arguments or with 5 % arguments, one cannot determine what's used. The second form is used % when NFSS is added to the defines of fig2dev and should be the % default. (After all, LaTeX2e subsumed NFSS.) The first form must be % used for LaTeX 2.09 w/OFSS. % % \SetFigFont is not defined if it is defined already when the figure % code is read. OK, one might think, let's define a plain TeX version. % (Actually, xfig.tex up to revision 1.3 did so.) But which interface % shall we use for our definition? In a typical installation one has % old documents with xfig pictures that were created with an old % fig2dev, we must therefore support the three-arg-variant. Newly % created figures will use the five-arg-variant, though. There is no % obvious way to determine which variant will be used in the % respective figure. % Please note that the information above -- and the one below about % the actual possible interfaces of \SetFigFont -- was determined by % looking at the output of example files and the code in setfigfont.c % and texfonts.h, as not even the comments in these files got updated % when the new \SetFigFont interface was introduced. (Sigh.) % % The changes were not even marked in the list of changes, I learned % about them when folks from the Net sent me complaints about revision % 1.1 of xfig.tex. (I hadn't installed xfig 3 at this time.) % % Do I really have to tell you what I think about these kinds of % changes, in terms of software quality? (Don't ask me when I'm in a % bad mood if you want polite answers.) % Well, here's the solution: As told above, I've analyzed the possible % expansions of \SetFigFont. I'll define macros for every cseq that's % in the expansion, one of these macros will bind \SetFigFont to % \SetFigFontOFSS or \SetFigFontNFSS, respectively. Let's have a look: % % OFSS: evaluates \@setsize. This macro has supposed to have 4 % arguments (type, baselineskip, font-setup, font-setup). Then the % type specifier is evaluated by a \csname. Passing nothing there will % effectively be a nop. % % NFSS: The \SetFigfont expansion uses more cseqs, but is more % regular, too. We may supply empty expansions for everything that % shall setup the font parameters: \reset@font, \fontsize (2 args), % \fontfamily & \fontseries & \fontshape (each 1 arg). Then % \selectfont is evaluated, here we bind the appropriate expansion of % \SetFigFont. % Now we may setup the macro definitions, evaluate one pseudo % \SetFigFont and \SetFigFont will be bound to the correct expansion. % % The first argument must be a number, as the OFSS \SetFigFont version % assigns it to a count register. \def\xfig@bindSetFigFont{% % OFSS \def\@setsize##1##2##3##4{\let\SetFigFont\SetFigFontOFSS}% % NFSS \let\reset@font\relax \def\fontsize##1##2{}% \def\fontfamily##1{}% \def\fontseries##1{}% \def\fontshape##1{}% \def\selectfont{\let\SetFigFont\SetFigFontNFSS}% % Now bind correct \SetFigFont by evaluating \SetFigFont. \SetFigFont{0}{}{}{}{}% } % -------------------------------------------------- % The interface of \SetFigFontOFSS: % #1 is the size (w/o pt), % #2 the baselineskip (w/o pt), % #3 a plain TeX type specifier. % If #3 is empty we assume that a default font should be taken. % This default font can be named by \FigFontDefault. Note, that % this parameter is not empty if you choose the font `Default' in % xfig. You have to chang texfonts.h accordingly. I did it % already for 2.1.7 and sent the diffs to the maintainer, but % obviously he dumped them since they did not appear in 3.x. % % It's a pity, that we can't use the plain TeX type specifier. We % demand an appropriate font scaled to the correct size. This is not % the best solution, but nowadays most DVI drivers generate the fonts on % the fly anyhow. \def\FigFontDefault{cmr10} \def\FigFontType{\FigFontDefault\space} \def\FigFontTyperm{cmr10} \def\FigFontTypebf{cmbx10} \def\FigFontTypeit{cmti10} \def\FigFontTypesf{cmss10} \def\FigFontTypett{cmtt10} \def\SetFigFontOFSS#1#2#3{% \font\FigFont \csname FigFontType#3\endcsname\space at #1pt \FigFont \baselineskip #2pt\relax } % The interface of \SetFigFontNFSS: % #1 is the size (w/o pt), % #2 the baselineskip (w/o pt), % #3 the NFSS font family (as a cseq), % #4 the NFSS font series (as a cseq), and % #5 the NFSS font shape (as a cseq). % % The current font state is reset before the arguments take effect. % The call to \SetFigFont doesn't use the full possibilities of NFSS; % only fixed combinations of arguments are supplied, as xfig itself % knows only about a fixed set of fonts (default, roman, bold, italic, % sans serif, and typewriter). % We map that interface back to the one of \SetFigFontOFSS. To do that % we redefine the NFSS font specifiers locally to create plain TeX % font specifiers. That's mostly easy, medium density (`md') series % and upright (`up') shape are ignored in plain anyhow. The default is % explicitely specified by \familydefault, we don't need to infer it. % But there is one exception: bold is specified as `roman bold', ie, % as `rmbf'. For that exception we just define a new FigFontType macro. \def\FigFontTypermbf{\FigFontTypebf} \def\SetFigFontNFSS#1#2#3#4#5{% \begingroup \let\familydefault\empty \def\rmdefault{rm}% \def\sfdefault{sf}% \def\ttdefault{tt}% \let\mddefault\empty \def\bfdefault{bf}% \let\updefault\empty \def\itdefault{it}% \xdef\FigFontSpec{#3#4#5}% \endgroup \SetFigFontOFSS{#1}{#2}{\FigFontSpec}% } % -------------------------------------------------- % Environments are enclosed in \begin{foo} ... \end{foo}. % I don't check if the call is ok -- this file is specific for % machine-generated code, that shall be correct by definition. % % We need to setup the correct \SetFigFont binding, as explained above. % And let's evaluate a hook to enable document specific adaptions. \def\begin#1{% \begingroup \def\end##1{% \csname end##1\endcsname \endgroup }% \xfig@bindSetFigFont \csname #1Hook\endcsname \csname begin#1\endcsname } % ============================================================ \catcode`\@=\CatAtCode \endinput %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % $Log: xfig.tex,v $ % Revision 1.4 1995/05/07 16:52:05 schrod % Determine \SetFigFont variant automatically. \OldXfig is not % looked at any more, \SetFigFontOld and \SetFigFontNew are renamed to % \SetFigFontOFSS and \SetFigFontNFSS. % % Revision 1.3 1995/04/17 00:01:08 schrod % Don't allocate registers anew if xfig.tex is read in the second % time. % % Revision 1.2 1995/03/16 01:15:51 schrod % Support output of transfig 3.1.1. % % Revision 1.1 1995/03/13 23:18:15 schrod % Started to manage this package with CVS. Made minor code cleanup. % % 94-06-10 js Initial revision. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Local Variables: mode: plain-tex TeX-master: t TeX-brace-indent-level: 4 page-delimiter: "^% ==*$" End: