summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/genmisc/shade.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/genmisc/shade.sty')
-rw-r--r--Master/texmf-dist/tex/generic/genmisc/shade.sty177
1 files changed, 177 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/genmisc/shade.sty b/Master/texmf-dist/tex/generic/genmisc/shade.sty
new file mode 100644
index 00000000000..a5500190e1a
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/genmisc/shade.sty
@@ -0,0 +1,177 @@
+A `frequently asked question' is that for possibilites to produce
+shaded boxes.
+
+Since the answers usually (just as recently) point either to PostScript
+\special's and PiCTeX it seems that a `simpler' and easier to use version
+is not readily available --- though I did not check this.
+
+A small and simple approach to shaded boxes is the use of a special font
+providing shaded rectangles, and some macros which automatically compose the
+desired box from these characters.
+
+Since, of course, the finest shading can be achieved by using single pixels
+for the pattern, the best shading pattern is *device dependent*.
+Furthermore, one generally defined shading pattern would imply the danger,
+that - because of rounding errors - at the boundaries (between two of the
+characters) `lines' would occur, and that the pattern would not look completely
+uniform. Consequently, since different fonts are to be used for different
+printers, the dvi file is *device dependent* in this sense, too, though the
+code - both for the macros and for the metafont description - is device
+independent.
+
+%%% SHADE.rdm
+%%% ReadMe file for SHADE.mf and SHADE.tex/sty
+%%% -------------------------------------------------------------------------
+%%% Version 1 - March 21, 1993
+%%% Peter Schmitt, Institute of Mathematics, University of Vienna
+%%% Strudlhofgasse 4, A-1090 Wien, Austria
+%%% e-mail A8131DAL@helios.edvz.univie.ac.at
+%%% schmitt@awirap.bitnet
+%%% -------------------------------------------------------------------------
+
+\magnification=\magstep1
+\parindent0pt \parskip 3pt
+\input shade.tex
+
+{\tt SHADE} is a \TeX\ tool that can be used to produce shaded boxes
+neither using PostScript nor Pic\TeX.
+
+% The syntax is:
+
+\shade{This text will appear on a shaded background!}
+
+The shading macro first packs its argument into an hbox.
+
+\shade{\vbox{\hsize 5cm
+ \leftskip=0pt plus 1fil\rightskip=0pt plus 1fil
+ \parfillskip=0pt
+ Then it measures the dimensions of this box and produces a
+ shaded box slightly larger then this box, using the font
+ shade produced by {\tt shade.mf}. Finally it
+ puts the box back and overlays it with the shaded box.
+ \par
+ }}
+
+Since the best shading is achieved at the lowest possible resolution,
+the font \shade{SHADE} is {\bf not device independent} --- it uses
+the printer resolution. Therefore the .dvi file is
+{\bf not device independent}, either.
+The macro code, however, {\bf is device independent}.
+This method was used because otherwise shading, and in particular
+the boundaries between two shading characters, could turn out to be not
+completely uniform.
+For the same reason, the font should only be used at its true size.
+
+The {\tt shade} package consists of three files:
+ {\tt shade.mf, % MetaFont file for shading font
+ shade.tex, % macro file be used with LaTeX, too
+ shade.rdm. % this file
+ % it can be processed by TeX as a demo file
+ }
+It was tested with a HP Laserjet II plus.
+
+\bye
+
+%%% end of SHADE.rdm %%%
+%%% SHADE.tex or SHADE.sty
+%%% Macros for use with font SHADE
+%%% -------------------------------------------------------------------------
+%%% Version 1 - March 21, 1993
+%%% Peter Schmitt, Institute of Mathematics, University of Vienna
+%%% Strudlhofgasse 4, A-1090 Wien, Austria
+%%% e-mail A8131DAL@helios.edvz.univie.ac.at
+%%% schmitt@awirap.bitnet
+%%% -------------------------------------------------------------------------
+
+\catcode`\:11
+
+\font\grey:=shade at 10truept
+
+\newbox\shade:box
+\newdimen\fill:boundary
+ \setbox0=\hbox{\grey:\char0\relax}\fill:boundary=\ht0
+\newcount\fill:level \newdimen\fill:size \newdimen\fill:goal
+
+\long\def\shade#1{\leavevmode
+ \setbox\shade:box=\hbox{#1}%
+ \def\shade:column{}\def\shade:row{}%
+ \fill:level=5 \fill:goal=\wd\shade:box
+ \advance\fill:goal by 2\fill:boundary
+ \let\shade:v\relax \Fill: \shade:row\shade:v
+ \fill:level=5
+ \fill:goal=\ht\shade:box \advance\fill:goal by \dp\shade:box
+ \advance\fill:goal by 2\fill:boundary
+ \let\shade:h\relax \Fill: \shade:column\shade:h
+ \fill:goal=\ht\shade:box \advance\fill:goal by \dp\shade:box
+ \setbox0=\vbox to\fill:goal{\offinterlineskip\grey:
+ \def\shade:h##1{%
+ \def\shade:v####1{\char####1##1\relax}%
+ \hbox to \wd\shade:box{\hss\shade:row\hss}}
+ \vss \shade:column \vss
+ }\ht0=\ht\shade:box \dp0=\dp\shade:box
+ \rlap{\box0}\box\shade:box
+ }
+\def\Fill: {\setbox0=\hbox{\grey:\char\fill:level\relax}\fill:size=\ht0
+ \fill:}
+\def\fill: #1#2{%
+ \ifdim \fill:size>\fill:goal
+ \advance\fill:level by-1
+ \ifnum \fill:level>-1 \let \fill:next = \Fill:
+ \else \let \fill:next = \fill:stop \fi
+ \else \edef#1{#1#2\the\fill:level}\advance\fill:goal by -\fill:size
+ \let \fill:next = \fill:
+ \fi \fill:next #1#2}
+\def\fill:stop#1#2{}
+
+\endinput
+
+%%% end of SHADE.tex/sty %%%
+%%% SHADE.mf
+%%% Font SHADE for use with SHADE.TEX/STY
+%%% -------------------------------------------------------------------------
+%%% Version 1 - March 21, 1993
+%%% Peter Schmitt, Institute of Mathematics, University of Vienna
+%%% Strudlhofgasse 4, A-1090 Wien, Austria
+%%% e-mail A8131DAL@helios.edvz.univie.ac.at
+%%% schmitt@awirap.bitnet
+%%% -------------------------------------------------------------------------
+
+mode_setup;
+magnification=1000;
+font_identifier "Shade";
+font_coding_scheme "Shade Style Matrix";
+font_size 10pt#;
+
+%%% a = side of smallest shaded square (3x3 pixels)
+ a#:=(3/pixels_per_inch)*1in#;
+ define_pixels(a);
+%%% greybox produces a shaded rectangle:
+%%% height 2^H*a
+%%% width 2^W*a
+%%% ...
+%%% it consists of WxH `unit squares': .*.
+%%% ...
+%%% its character code is 10*W + H
+%%% i.e., the first digit corresponds to the width and
+%%% the second digit corresponds to the height of the character
+
+def greybox (expr H, W) =
+ HH:=2**H; WW:=2**W;
+ beginchar(10*W+H, WW*a#, HH*a#, 0);
+ pickup pencircle scaled 1;
+ fill (1,1)--(1,3*HH)--(3*WW,3*HH)--(3*WW,1)--cycle;
+ pickup pencircle scaled 2;
+ for x = 0 step 3 until 3*HH : undraw (0,x)--(3*WW,x); endfor;
+ for x = 0 step 3 until 3*WW : undraw (x,0)--(x,3*HH); endfor;
+ endchar;
+ enddef;
+
+%%% produce characters for H and W from 0 to 5
+
+for ww = 0 upto 5 :
+ for hh = 0 upto 5 : greybox (hh,ww); endfor;
+ endfor;
+
+bye;
+
+%%% end of SHADE.mf %%%