diff options
Diffstat (limited to 'Master/texmf-dist/tex/plain/metatex/metatex.tex')
-rw-r--r-- | Master/texmf-dist/tex/plain/metatex/metatex.tex | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/plain/metatex/metatex.tex b/Master/texmf-dist/tex/plain/metatex/metatex.tex new file mode 100644 index 00000000000..bb35b5368cc --- /dev/null +++ b/Master/texmf-dist/tex/plain/metatex/metatex.tex @@ -0,0 +1,205 @@ +% METATeX.TeX (RMCG19940730) + +% METATeX.TeX communicates TeX and METAFONT +% Copyright (C) 2003, 2004 Ram\'on Casares +% +% This program is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 2 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the +% Free Software Foundation, Inc., +% 59 Temple Place, Suite 330, +% Boston, MA 02111-1307 USA + +%\message{V1.0 by RMCG 20031002} +\message{V1.1 by RMCG 20040812} % mptopdf -> mtmp2pdf + +\chardef\MToldatcatcode=\catcode`\@\catcode`\@=11 + +\newif\ifMTf@le % true if auxiliar.mf is found (second pass) +\newif\ifMTmf % true if second pass and MF (not MPost) has drawn the figures +\newwrite\MToutf@le +\newread\MTinf@le +\newbox\MTbox +\newbox\MTb@x +\newcount\MTn@ +\newdimen\MTxpos@ +\newdimen\MTypos@ + +\openin\MTinf@le=auxiliar.mf % First see if the mf file exists +\ifeof\MTinf@le \MTf@lefalse \else \MTf@letrue \fi +\closein\MTinf@le + +\def\MTendmark{} +{\obeylines\gdef\MTign@re#1 + {\def\next{#1}\ifx\next\MTendmark \let\next\endgroup \else % + \let\next\MTign@re\fi \next}} +{\obeylines\gdef\MTc@py#1 + {\def\next{#1}\ifx\next\MTendmark \let\next\endgroup \else % + \immediate\write\MToutf@le{\next}\let\next\MTc@py\fi \next}} + +{\obeylines\gdef\MTign@reline#1 + {\endgroup}} +{\obeylines\gdef\MTc@pyline#1 + {\immediate\write\MToutf@le{#1}\endgroup}} + +\def\MTsetupc@py{\def\do##1{\catcode`##1=12 }\dospecials + \catcode`\\=0 \let\\=\MTbackslash \obeyspaces\obeylines} + +\def\MTmf@mp{\ifeof\MTinf@le + \errhelp={It seems to me that file auxiliar.mf has not been processed, + or that file auxiliar.log was deleted.}% + \errmessage{File auxiliar.log not found}% + \else + \read\MTinf@le to \next % reads METAXXXX banner + \def\MT@mf{METAFONT}% + \def\MT@##1 ##2 ##3,##4\MT@@{##3}% #1 = This, #2 = is, #3 = METAFONT ? + \edef\MTmeta{\expandafter\MT@\next\MT@@}% + \message{(Drawings made by \MTmeta)}% + \ifx\MTmeta\MT@mf \MTmftrue \else \MTmffalse \fi + \fi} + +\def\MTl@gl@b{\MTloglabel } +\def\MTgetl@g{\ifeof\MTinf@le \let\next\relax + \errhelp={I was expecting to read a label location.}% + \errmessage{Unexpected end of auxiliar.log}% + \else \read\MTinf@le to \next + \ifx\next\MTl@gl@b \let\next\relax + {\catcode`\>=9 + \global\read\MTinf@le to \MTxpos@text + \global\read\MTinf@le to \MTypos@text }% + \else \let\next\MTgetl@g \fi\fi \next} + +\escapechar=-1 \edef\MTbackslash{\string\\}\escapechar=`\\ +\def\MTslashing{\begingroup \escapechar=-1 \edef\\{\string\\}% + \edef\{{\string\{}\edef\}{\string\}}\edef\#{\string\#}% + \edef\${\string\$}\edef\^{\string\^}\edef\_{\string\_}% + \edef\&{\string\&}\edef\~{\string\~}\edef\%{\string\%}% + \escapechar=`\\} +\let\MTendslashing=\endgroup + +\def\MTf@rst#1#2#3/{#1}\def\MTsec@nd#1#2#3/{#2} + +\ifMTf@le \message{Second TeX pass} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \openin\MTinf@le=auxiliar.log + \MTmf@mp + \ifMTmf % METAFONT has written auxiliar.log + \font\MTfont=auxiliar \def\MTchar{\MTfont\char\MTn@}% + \else % MetaPost has written auxiliar.log + \ifx\pdfliteral\undefined + \def\MTchar{\special{psfile=auxiliar.\number\MTn@}}% + \else + \input mtmp2pdf + \def\MTchar{\MPtoPDF{auxiliar.\number\MTn@}}% + %\input supp-pdf.tex % Context + %\let\oldfinMPgrap=\finishMPgraphic % to avoid centering + %\def\finishMPgraphic{\xdef\MPxoffset{0}\xdef\MPyoffset{0}\oldfinMPgrap}% + %\def\MTchar{\convertMPtoPDF{auxiliar.\number\MTn@}{1}{1}}% + \fi + \fi + \def\MTcode{\begingroup\MTsetupc@py\MTign@re{ }} + \def\MT:{\begingroup\MTsetupc@py\MTign@reline} + \def\MTline#1{} + \def\MTbeginchar(#1,#2,#3);{\setbox\MTb@x=\hbox{\MTchar}% + \wd\MTb@x=#1\ht\MTb@x=#2\dp\MTb@x=#3\setbox\MTbox=\vtop{\box\MTb@x}} + \def\MTlabel#1(#2)#3"#4";{\setbox\MTb@x\hbox{#4}\MTgetl@g + \MTxpos@=\MTxpos@text pt \MTypos@=\MTypos@text pt \dimen@=\dp\MTbox + \setbox\MTbox=\vtop{\unvbox\MTbox\nointerlineskip + \def\1{\MTf@rst#3cc/}\def\2{\MTsec@nd#3cc/}% + \vbox to 0pt{\advance\dimen@\MTypos@ \kern-\dimen@ + \if b\1\kern-\ht\MTb@x \else \if c\1\kern-0.5\ht\MTb@x \fi\fi + \hbox to 0pt{\kern\MTxpos@ + \if r\2\kern-\wd\MTb@x \else \if c\2\kern-0.5\wd\MTb@x \fi\fi + \box\MTb@x\hss}\vss}}} + \def\MTendchar;{\global\advance\MTn@1 } +\else \message{First TeX pass} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \let\MTfont=\nullfont + \let\MTchar=\relax + \tracinglostchars=0 + \immediate\openout\MToutf@le=auxiliar.mf + \def\MTcode{\begingroup\MTsetupc@py\MTc@py{ }} + \def\MT:{\begingroup\MTsetupc@py\MTc@pyline} + \def\MTline#1{\MTslashing\immediate\write\MToutf@le{#1}\MTendslashing} + \def\MTbeginchar(#1,#2,#3);{% + \MTline{beginchar(\number\MTn@,#1\#,#2\#,#3\#); \% line \the\inputlineno}% + \global\setbox\MTbox=\vtop{}\wd\MTbox=#1\ht\MTbox=#2\dp\MTbox=#3} + \def\MTlabel#1(#2)#3"#4";{{\setbox0=\hbox{#4}% + \def\1{\MTf@rst#3cc/}\def\2{\MTsec@nd#3cc/}% + \MTline{ MTlabel(#2)("\1","\2","#1",\the\wd0,\the\ht0,\the\dp0);}}} + \def\MTendchar;{\MTline{endchar;}\MTline{}\global\advance\MTn@1 } +\fi + +\MT:% Generated by METATeX +\MT: +\MT: mag:=\number\mag/1000; +\MT: +\MT: truept = pt/mag; truept# = pt#/mag; +\MT: truepc = pc/mag; truepc# = pc#/mag; +\MT: truein = in/mag; truein# = in#/mag; +\MT: truebp = bp/mag; truebp# = bp#/mag; +\MT: truecm = cm/mag; truecm# = cm#/mag; +\MT: truemm = mm/mag; truemm# = mm#/mag; +\MT: truedd = dd/mag; truedd# = dd#/mag; +\MT: truecc = cc/mag; truecc# = cc#/mag; +\MT: +\MT:if known prologues: % if mpost: +\MT: +\MT: mm#=2.84528; pt#=1; dd#=1.07001; bp#=1.00375; +\MT: cm#=28.45276; pc#=12; cc#=12.84010; in#=72.27; +\MT: +\MT: string extra_setup, extra_beginchar, extra_endchar; +\MT: extra_setup = extra_beginchar = extra_endchar = ""; +\MT: +\MT: def mode_setup = +\MT: proofing:=0; % no, we're not making proofs +\MT: fontmaking:=0; % no, we're not making a font +\MT: tracingtitles:=0; % no, don't show titles at all +\MT: scantokens extra_setup; +\MT: enddef; +\MT: +\MT: def beginchar(expr c,w_sharp,h_sharp,d_sharp) = +\MT: begingroup +\MT: charcode:=c; +\MT: w:=w_sharp*pt; h:=h_sharp*pt; d:=d_sharp*pt; +\MT: clearxy; clearit; clearpen; +\MT: pickup defaultpen; +\MT: drawoptions(); +\MT: scantokens extra_beginchar; +\MT: enddef; +\MT: +\MT: def endchar = +\MT: scantokens extra_endchar; +\MT: shipit; +\MT: endgroup +\MT: enddef; +\MT: +\MT:else: % mf +\MT: mode:=localfont; +\MT:fi +\MT: +\MT:mode_setup; +\MT: +\MT:def MTlabel(suffix i)(expr v,h,add,wd,ht,dp) = +\MT: x.i.l = x.i if h="c": - wd/2 elseif h="r": - wd fi; +\MT: y.i.t = y.i if v="c": + ht/2 elseif v="b": + ht fi; +\MT: x.i.r = x.i.l + wd; y.i.b = y.i.t - ht - dp; +\MT: if not (add=""): erase fill (x.i.l,y.i.t) -- +\MT: (x.i.l,y.i.b) -- (x.i.r,y.i.b) -- (x.i.r,y.i.t) -- cycle; fi +\MT: message"\\MTloglabel"; show x\\i/pt; show y\\i/pt; message""; +\MT:enddef; +\MT: + +\let\texbye=\bye +\outer\def\bye{\ifMTf@le \closein\MTinf@le \else + \MTline{end.}\immediate\closeout\MToutf@le \fi + \par\vfill\supereject\end} + +\catcode`\@=\MToldatcatcode |