diff options
Diffstat (limited to 'macros/plain/contrib/zztex/tex/zzps.tex')
-rw-r--r-- | macros/plain/contrib/zztex/tex/zzps.tex | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/macros/plain/contrib/zztex/tex/zzps.tex b/macros/plain/contrib/zztex/tex/zzps.tex new file mode 100644 index 0000000000..f90d6e7ab9 --- /dev/null +++ b/macros/plain/contrib/zztex/tex/zzps.tex @@ -0,0 +1,251 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Module: ZzTeX PostScript Facilities +% +% Synopsis: This module contains any and all facilities that rely on +% PostScript output. +% +% Author: Paul C. Anagnostopoulos +% Created: 21 January 1994 +% +% Copyright 1989--2020 by Paul C. Anagnostopoulos +% under The MIT License (opensource.org/licenses/MIT) +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Extra Encoded Characters +% ----- ------- ---------- + + +\def \PSbackslash {\char 134\relax} +\def \PSbar {\char 138\relax} +\def \PSbullet {\char 142\relax} +\def \PSbraceleft {\char 137\relax} +\def \PSbraceright {\char 139\relax} +\def \PScent {\char 148\relax} +\def \PScopyright {\char 145\relax} +\def \PScurrency {\char 149\relax} +\def \PSdagger {\char 140\relax} +\def \PSddagger {\char 141\relax} +\def \PSdollar {\char 131\relax} +\def \PSgreater {\char 133\relax} +\def \PSless {\char 132\relax} +\def \PSordfeminine {\char 155\relax} +\def \PSordmasculine {\char 156\relax} +\def \PSparagraph {\char 143\relax} +\def \PSperthousand {\char 157\relax} +\def \PSpolishL {\char "A1\relax} +\def \PSpolishl {\char "A2\relax} +\def \PSregistered {\char 146\relax} +\def \PSsection {\char 144\relax} +\def \PSsterling {\char 158\relax} +\def \PStrademark {\char 147\relax} +\def \PSunderscore {\char 136\relax} +\def \PSudquote {\char 135\relax} +\def \PSusquote {\char 160\relax} +\def \PSyen {\char 159\relax} + +% Import EPS File +% ------ --- ---- + + +% The illustration \special is compatible with DVIPSONE, and with TeXtures +% if clip? is false. +% The scale is interpreted as follows: +% <= 33.333: normal scale, 1.0 = 100% +% > 33.333: TeX scale factor, 1000 = 100% + +\def \specialimportartfile #1#2#3{% {name}{scale}{clip?} + \special{illustration #1 scaled #2 + \if #3clip\fi}} + +% This macro is a better variant of the preceding one. The scale +% argument is a true scale specified in points. + +\def \specialplaceepsfile #1#2#3{% {name}{scale}{clip?} + {\tdimena = #2% + \if \dimgtrp{\tdimena}{33.333pt}% % Compensate for bizarre + \multiply \tdimena by 1000\relax % design of scaled option. + \fi + \special{illustration #1 scaled \thefactor\tdimena + \if #3\space clip\fi}}} + +% This macro is used to import an EPS file for a glyph. The scale +% is specified as a percentage IN POINTS. + +\def \specialplaceglyph #1#2#3{% {name}{percentage}{clip?} + {\tdimena = #2% + \divide \tdimena by 100 + \special{illustration #1 scaled \thefactor\tdimena + \if #3\space clip\fi}}} + +% Read EPS Bounding Box +% ---- --- -------- --- + + +\definedimen{\zbbxorigin}{0pt} +\definedimen{\zbbyorigin}{0pt} + + +{\catcode`\%=\catother +\gdef \zpercent {%} +} % \catcode + +\edef \zboundingbox {\zpercent\zpercent BoundingBox} +\def \zatend {atend} +\definecount{\zbbstate}{0} + + +\def \zreadepsbb #1#2#3{% {\width}{\height}{file} + \def \zbbinfo {}% + \begingroup + \zsetepscatcodes + \openin \zreada #3\relax + \zbbstate = 0 + \loop + \read \zreada to \zline + \ifeof \zreada + \zbbstate = 2 + \else + \expandafter\zcheckbb \zline:.\zmark + \fi + \ifnum \zbbstate < 2 \repeat + \closein \zreada + \endgroup + \zsetbbsizes{#1}{#2}{#3}} + +\def \zsetepscatcodes {% + \catcoderange{0}{"1F}{\catcomment}% + \catcode `\^^I = \catspace + \catcode \endlinechar = \catendofline + \uncatcode{\false}{\false}{\false}% + \catcode `\: = \catother + \catcoderange{"7E}{"FF}{\catcomment}} + +\long \def \zcheckbb #1:#2#3\zmark{% + \def \znext {#1}% + \ifx \znext \zboundingbox + \zcheckatend #2#3()\zmark + \fi} + +\long \def \zcheckatend #1(#2)#3\zmark{% + \def \znext {#2}% + \ifx \znext \zatend + \zbbstate = 1 + \else + \gdef \zbbinfo {#1}% + \ifnum \zbbstate = 0 \zbbstate = 2\fi + \fi} + +\def \zsetbbsizes #1#2#3{% + \if \emptydefp{\zbbinfo}% + \warning{missbb}{Art file `#3' has no bounding box}% + #1 = 20pc #2 = 10pc + \else + \expandafter \zcalcbb \zbbinfo \zmark{#1}{#2}% + \fi} + +\def \zcalcbb #1 #2 #3 #4 #5\zmark#6#7{% + \calculate #6= {#3pt,-,#1pt,+,1pt}% + \calculate #7= {#4pt,-,#2pt,+,1pt}% + \global\zbbxorigin = #1pt + \global\zbbyorigin = #2pt\relax} + +% Rotate Boxes +% ------ ----- + + +\def \rotatebox #1#2{% {\box}{degrees} + \special{CTM: push rotate #2}% + \box #1% + \special{CTM: pop}} + +\def \rotatetext #1#2{% {text}{degrees} + \setbox \zboxa = \hbox{#1}% + \rotatebox{\zboxa}{#2}} + +% Colors +% ------ + + +\def \colorspecial #1{% + \if \allowcolor + \special{#1}% + \fi} + +% These commands are called in the output routine to make sure that +% everything added in the output routine is black. + +\def \zoutputbeginblack {% + \colorspecial{color push gray 0}} + +\def \zoutputendblack {% + \colorspecial{color pop}} + +% Color Block +% ---- ------ + + +\defineblock{\color}{\endcolor}{\false}{} + +%~block color Type +% \colorspec = {...} % Color specifier. +%~end + +\definetoks{\colorspec} + + +\def \color #1{% {type} + \beginblockscope{color}% + \global\increment \colordepth + \processdesign{\color}{#1}% + \global\increment \colornumber + \colorspecial{color push}% + \the\colorspec\zmark + \if \vmodep \vpenalty{\breaknever}\fi} + +\def \endcolor {% + \global\decrement \colordepth + \endblockscope{color}% + \colorspecial{color pop}} + + +\def \setcolor #1{% + \begingroup + \processdesign{\color}{#1}% + \the\colorspec\zmark + \endgroup} + +% Color specifiers: + +\def \cmykcolor #1 #2 #3 #4\zmark{% c m y k\zmark + \colorspecial{color cmyk #1 #2 #3 #4}} + +\def \graycolor #1\zmark{% gray\zmark + \colorspecial{color gray #1}} + +\def \rgbcolor #1 #2 #3\zmark{% r g b\zmark + \colorspecial{color rgb #1 #2 #3}} + +% Built-in colors: + +\def \colorblackdesign {% + \colorspec = {\graycolor 0}} + +\def \colorwhitedesign {% + \colorspec = {\graycolor 1}} + +\def \colorproofnotereddesign {% + \colorspec = {\rgbcolor .5 0 0}} + +% A useful shorthand: + +\def \colortext #1#2{% {color}{text} + \color{#1}#2\endcolor} + +% TeXtures +% -------- + + +\def \TeXtures {% + \input zztures\relax} |